■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API質問箱 Build28
1 名前:デフォルトの名無しさん :05/02/12 18:08:24
-過去スレ
Build27:http://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:http://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:http://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:http://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:http://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:http://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:http://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:http://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:http://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:http://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:http://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:http://pc2.2ch.net/test/read.cgi/tech/1073830065/
Build15:http://pc2.2ch.net/test/read.cgi/tech/1069339866/
Build14:http://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:http://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:http://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやーごめんなさい。」に巻き込まれた模様


2 名前:デフォルトの名無しさん :05/02/12 18:10:03
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/

3 名前:デフォルトの名無しさん :05/02/12 18:36:17
3

4 名前:デフォルトの名無しさん :05/02/12 18:39:33
4

5 名前:デフォルトの名無しさん :05/02/12 18:43:01
>>1


6 名前:デフォルトの名無しさん :05/02/12 21:05:56


7 名前:デフォルトの名無しさん :05/02/13 07:32:52
ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/984
>サービスでウインドウを作りたくねえよなぁww

サービスに「デスクトップとの対話をサービスに許可」という
チェック項目が存在する意味を理解できない方ですか?


8 名前:デフォルトの名無しさん :05/02/13 12:16:07
なるほど!デスクトップとの対話をサービスに許可するのは、
ネットワークサービスのためだったのか!!勉強になりました!!!

9 名前:デフォルトの名無しさん :05/02/13 12:23:31
前スレ
>>http://pc5.2ch.net/test/read.cgi/tech/1106103119/989

------------------------------------------------------
アンインストール情報は、
HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ UnInstall \
以下に保存します。
ここに DisplayString、UninstallString をはじめとするいくつかの値を適切に書き込んでおくと、
コンパネの「プログラムの追加と削除」からアンインストールできるようになります。
------------------------------------------------------

自分のメモのあるものです、確認していないので

10 名前:デフォルトの名無しさん :05/02/13 12:32:00
>>8
氏ね

11 名前:デフォルトの名無しさん :05/02/13 13:16:54
http://pc5.2ch.net/test/read.cgi/win/1099978949/

12 名前:前スレ989 :05/02/13 13:19:51
>>9
見つかりました。こんなところに保存されていたんですね…。
どうもありがとうございました。

13 名前:デフォルトの名無しさん :05/02/13 13:24:32
Installshield
http://www.java.com/ja/download/help/regkey_addremove.jsp
http://homepage1.nifty.com/softport/InstallFaq.htm


14 名前:デフォルトの名無しさん :05/02/13 13:28:06
1000 名前:デフォルトの名無しさん[sage] 投稿日:05/02/13(日) 06:37:30
Win32API質問箱 Build28
http://pc5.2ch.net/test/read.cgi/tech/1108199304/l50


良い1000の取り方だな。乙。

15 名前:デフォルトの名無しさん :05/02/13 14:44:10
サブクラス化したエディットコントロールでマウスの左クリックした
場所の位置を特定することはできるでしょうか?教えてください

16 名前:デフォルトの名無しさん :05/02/13 14:50:49
WM_LBUTTONDOWN

17 名前:デフォルトの名無しさん :05/02/13 14:51:49
よく読めボケ

18 名前:デフォルトの名無しさん :05/02/13 15:35:33
今ゲームを作っていて、ウィンドウのサイズをフルスクリーン表示は分からないので起動時に最大化で変更できないようにして作ってます。
文字などを表示する際、1024*768として表示させているのですが、この大きさはみんな同じなのでしょうか?
他の人にやって貰うとき小さいディスプレイの人だったら表示とかおかしくなってしまうのですか?

説明が下手ですいません^^;
分かる方教えて下さい。

19 名前:デフォルトの名無しさん :05/02/13 15:49:35
日本語の勉強先にした方がいいぞ


20 名前:デフォルトの名無しさん :05/02/13 15:54:20
ファイルからメモリに読み込んだ16×16ピクセルのBMPを並べて
640×480ピクセルのBMPイメージをメモリ上に作成し
それをウインドウに表示させたいんですがうまくいきません、どうしたらいいでしょうか?

以下ソース
#define FIELD_X 40
#define FIELD_Y 30
//変数
static HDC hMemDC_BG;  //作成する640×480イメージ用のDCハンドル
static HDC hMemDC_BG_BLOCK; //メモリに読み込む16×16のBMPのDCハンドル
static HBITMAP hBitmap; //メモリに読み込んだ16×16のBMPのBMPハンドル
static HBITMAP hBitmap_BG; //作成する640×480イメージ用のBMPハンドル
static BITMAP bitmap;
static BITMAP bitmap_BG;

void MakeBG(void)
{
int i;
int j;
for(i=0;i < FIELD_Y;i+=16)
{
for(j=0;j < FIELD_X;j+=16)
{
BitBlt(hMemDC_BG,j,i,bitmap_BG.bmWidth,bitmap_BG.bmHeight,hMemDC_BG_BLOCK,0,0,SRCCOPY);
}
}

}

21 名前:20続き :05/02/13 15:55:55
//プロシージャ-
case WM_CREATE:

hMemDC_BG = CreateCompatibleDC(NULL);
hMemDC_BG_BLOCK = CreateCompatibleDC(NULL);

hBitmap = LoadImage((HINSTANCE)GetWindowLong(hWnd,GWL_HINSTANCE),BMPFILE,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
SelectObject(hMemDC_BG_BLOCK,hBitmap);
GetObject(hBitmap,sizeof(BITMAP),&bitmap);

hdc = GetDC(hWnd);
hBitmap_BG = CreateCompatibleBitmap(hdc,640,480);
ReleaseDC(hWnd,hdc);
SelectObject(hMemDC_BG,hBitmap_BG);
GetObject(hBitmap_BG,sizeof(BITMAP),&bitmap_BG);

return 0;

case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
MakeBG(); //16×16のイメージを並べる関数
BitBlt(hdc,0,0,bitmap.bmWidth,bitmap.bmHeight,hMemDC_BG,0,0,SRCCOPY);
EndPaint(hWnd,&ps);
return 0;
}



22 名前:デフォルトの名無しさん :05/02/13 15:59:55
誰も実際に実行してみようとは思わないから、上手くいきません
とだけ書いても上手くいかないよ

23 名前:デフォルトの名無しさん :05/02/13 16:05:06
っていうかMakeBGのループが何回まわるか数えてみろ

24 名前:デフォルトの名無しさん :05/02/13 16:14:44
パターンブラシで塗りつぶせばいいんでないか?
Win9xだと制限があるからアレだけど。

25 名前:デフォルトの名無しさん :05/02/13 16:17:48
そうでした、実行結果も書かないと;
実行すると16×16のBMPが一個しか表示されません。

メモリ上に仮想イメージを上記のMake関数みたいなもので作成する方法がわかれば解決すると思うんですが・・・


26 名前:デフォルトの名無しさん :05/02/13 16:24:34
>>25
俺は>>23では無いが、まず>>23の言うことについて考えるのが良いと思う

27 名前:デフォルトの名無しさん :05/02/13 16:32:40
WM_PAINTも変だよ。

28 名前:デフォルトの名無しさん :05/02/13 16:39:42
確かにMake関数イカレてますね;
出直してきます、ありがとうございました

29 名前:デフォルトの名無しさん :05/02/13 16:58:08
>>18
ディスプレイの大きさなどにもよるし、たとえ同じディスプレイでも画面のプロパティから自由に大きさを変えられる。
GetDeviceCapsのHORZRESとVERTRES

30 名前:デフォルトの名無しさん :05/02/13 18:02:39
GetDesktopWindow()して、GetClientRect()とか。

31 名前:デフォルトの名無しさん :05/02/13 19:02:24
画像を半透明にして表示させたいのですが、どうすればいんですか?

32 名前:デフォルトの名無しさん :05/02/13 19:11:28
>>31
APIスレ的にはWS_EX_LAYERED属性付き枠無しウィンドウに画像を表示させてSetLayeredWindowAttribute()。で、そのウィンドウを別のウィンドウに重ねる。

マジレスするとCreateDIBSectionでビットマップ作成して自前で合成

33 名前:69式フリーPG ◆hND3Lufios :05/02/13 19:14:28
http://www.codeproject.com/dialog/pellucid.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/setlayeredwindowattributes.asp
http://www.sm.rim.or.jp/~shishido/walpha.html

34 名前:デフォルトの名無しさん :05/02/13 19:28:04
>>31
DirectGraphicsを使う。

35 名前:デフォルトの名無しさん :05/02/13 20:07:10
GDI+も忘れないでね・・・

36 名前:デフォルトの名無しさん :05/02/13 21:51:51
>>20
ソースが汚く、分かりにくいかもしれないけど、参考にどうぞ。
ビットマップは、ソースと同じパスに置いて、
そのファイル名に合わせて、マクロを変更してください。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/210.txt

37 名前:デフォルトの名無しさん :05/02/13 22:29:40
おもいっきり猫でもわかるって書いてるがな

38 名前:デフォルトの名無しさん :05/02/13 22:56:43
今、RPGの戦闘で時間が溜まると行動できるというシステムを作ってます。
その時間は、SetTimerで時間をためているのですが、それを実行するとCPU使用率が100%になり重くなってしまいます。

他に時間をためれる関数は無いのでしょうか?

39 名前:デフォルトの名無しさん :05/02/13 23:01:33
>>38
そんな限定的な関数があってたまるか。

40 名前:デフォルトの名無しさん :05/02/13 23:03:39
次に誰かが行動できるまでの時間を計算してそれをタイマーの引数にすれば隠者ねーの

41 名前:デフォルトの名無しさん :05/02/13 23:06:29
タイマー用のスレッドをつくって、一定時間ごとのループをさせる。


42 名前:デフォルトの名無しさん :05/02/13 23:09:27
>>41
タイマーの間隔がおなじなら別スレッドだろうが負荷100%になるんじゃねーの

43 名前:デフォルトの名無しさん :05/02/13 23:12:12
>36
ありがとうございます

44 名前:デフォルトの名無しさん :05/02/13 23:19:34
>38
タイマー無限増殖病か?
いずれにしても愚か者

45 名前:デフォルトの名無しさん :05/02/13 23:29:18
>>42
セットタイマーってことは、メッセージ投げまくってるってことでは?
メッセージが投げられない分スレッドのほうが軽いと思うが

46 名前:デフォルトの名無しさん :05/02/14 00:08:31
>>36-37
ワロタ


47 名前:デフォルトの名無しさん :05/02/14 09:42:00
Editボックス内でのカーソルの位置を取得するAPIは
ありますでしょうか?


48 名前:デフォルトの名無しさん :05/02/14 11:06:19
あります。

49 名前:デフォルトの名無しさん :05/02/14 11:07:28
ありました。ありがとん

50 名前:デフォルトの名無しさん :05/02/14 14:56:43
一つ質問があるのですが、
RichEditCtrlは、任意の場所に文字列を挿入するということはできないのでしょうか?

もしできるなら、その際に使用する関数(方法)を教えていただきたいのですが。

宜しくお願いいたします。

51 名前:デフォルトの名無しさん :05/02/14 15:02:58
>>50
EM_REPLACESEL

52 名前:デフォルトの名無しさん :05/02/14 17:24:48
漢字変換のポップアップウィンドウを出したい(漢字変換をこちら側で指定したい)んだけど、
そうゆうライブラリある?
たとえば、
functionA(”とうきょう");
と漢字変換させたいひらがなを引数として渡せば、漢字変換される漢字のリストがわかるみたいなもの。

自作のテキストエディタを作りたいんです。

53 名前:デフォルトの名無しさん :05/02/14 18:01:45
ImmGetConversionList()

54 名前:デフォルトの名無しさん :05/02/14 18:44:46
LPCTSTRって
LONG ポインタ なんか なんか 文字列の略だと思ったんですが
CとTはなんですか?

55 名前:デフォルトの名無しさん :05/02/14 18:48:29
typedef const TCHAR FAR *LPCTSTR;

56 名前:デフォルトの名無しさん :05/02/14 18:53:13
>>54
Cはconst
TはUnicodeビルドだとLPCWSTRになる。


57 名前:デフォルトの名無しさん :05/02/14 19:04:45
>56
すみません、unicodeビルドというのがよくわからないんですが
TもしくはWは文字コードによって変わるということでしょうか?

58 名前:デフォルトの名無しさん :05/02/14 19:35:46
>>57
#ifdef UNICODE
typedef CHAR TCHAR;
#define TEXT(s) s
#else
typedef WCHAR TCHAR;
#define TEXT(s) L ## s
#endif
typedef CONST TCHAR FAR *LPCTSTR;
こういう風になっていて、UNICODEを定義してビルドするのがUnicodeビルド。
プログラムで使用する文字列をUnicodeにするかどうか選べる。
さらにAPIも〜Aと〜Wを切り替えるようにできている。(というよりこれのためにTCHARがあるような)

59 名前:デフォルトの名無しさん :05/02/14 21:19:44
test

60 名前:デフォルトの名無しさん :05/02/14 21:20:39
test

61 名前:デフォルトの名無しさん :05/02/14 21:24:16
|  先生! 「WinAPIの設計は明らかに時代遅れ」って主張している人がいるんですが、
 \ WinAPIは本当に時代遅れなんですか? 無駄だから覚えないほうがいいんですか?
     ̄ ̄ ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
           ∧_∧ ∩
        ( ´∀`)/
       _ / /   /
      \⊂ノ ̄ ̄ ̄ ̄\
        ||\        \
        ||\|| ̄ ̄ ̄ ̄ ̄||
        || ̄ ̄ ̄ ̄ ̄||
http://www.ziyu.net/~rent/tree/wforum.cgi?id=C_lan&mode=all_read&no=2355&page=10

62 名前:デフォルトの名無しさん :05/02/14 21:30:01
たとえそれが真実だとしても、代替手段はない。

63 名前:デフォルトの名無しさん :05/02/14 21:32:35
>>61
その話の本質は、「ふたりはプリキュア〜」でそ。

64 名前:デフォルトの名無しさん :05/02/14 21:37:37
メモリモデルの設計はwin登場の当時は画期的だったが…。
でも、古いスタイルのメモリ割り当てより優れているし、winアプリ設計には必要な知識だ。全てを知る必要はないが。

65 名前:デフォルトの名無しさん :05/02/14 21:38:00
十数年前から互換性を保っているのだけが取り柄。

MacやLinuxなんて悲惨だぞ。

66 名前:デフォルトの名無しさん :05/02/14 21:40:58
From 赤坂玲音
>また、僕が時代遅れであると言うのは Win32 API の設計です。
>Win32 で作られたプログラムや、その開発者が時代遅れと言うわけではないので、この点は誤解しないでください。

>最後に、開発スタイルについて少し。
>個人に対して言えば、どうぞあなたの好きな言語とAPIを使ってくださいという程度です。
>しかし、組織でどの言語と API を使うかを決断するには、好き嫌いの次元ではいけません。
>プロジェクト管理者であれば、好みではなく純粋に生産性、移植性、安全性、目的、チームのレベル、
>教育のし易さなど、様々な観点から採用するプラットフォームを決断する必要があります。

From 齎禍
>確かに、Win32APIは時代遅れ感が滲み出てますね。
>フラグは使い過ぎ、キャストは乱用する、エラー処理は統一されていない・・・
>正直、これを現代風に上手くラップするには、相当な知識と技量が必要だと感じますね。

67 名前:デフォルトの名無しさん :05/02/14 21:50:06
便利で操作性のよいアプリが作れるなら何でもいい

68 名前:デフォルトの名無しさん :05/02/14 22:08:07
WinAPIを勉強したからといって、
次世代の何かがでたときに、足かせになるとは思えんのだがな。


69 名前:デフォルトの名無しさん :05/02/14 22:21:34
BASIC使いがCで躓いたり、C使いがJAVA(C++?)で躓いたりってのはあるっぽいけど
個人的にはWinAPIは覚えた方が良いと思われ(少なくとも、今勉強するなら)

70 名前:デフォルトの名無しさん :05/02/14 23:26:31
MessengerPlusのポップアップ通知みたいな動きってどうやればいい?
タイマー使ってMoveWindowか?

71 名前:デフォルトの名無しさん :05/02/15 00:10:53
>>69
それは単に順応能力がない人間の責任であって開発環境の問題ではないと思う。

仕事であろうと趣味であろうとひとつのパラダイムに縛られるのはすごくもったいないとは感じる。
そういう俺はWinAPI派なんだけどな。だってWindowsの標準的なクラスライブラリって無いじゃん。
有っても高価だったりするし。
フリーなライブラリはわりと特定の機能に特化されてたりして今ひとつなんだよな。
強力なクラスライブラリはUnix由来のポータビリティ優先でWindowsっぽさが無くて重かったりとか。

72 名前:デフォルトの名無しさん :05/02/15 00:22:31
言語などに縛られる必要はない

目的を達成できればいい。

73 名前:デフォルトの名無しさん :05/02/15 00:34:40
とりあえず、WinFSとかまではWIN32APIはありだと思う
WinFSってちょっとしか調べてないけど、どんなんだろ

74 名前:デフォルトの名無しさん :05/02/15 00:39:53
SHBrowseForFolder() でフォルダ選択ダイアログを表示できますが
このダイアログの表示位置を指定(例えばデスクトップのセンターに)
する方法はありますか?

75 名前:デフォルトの名無しさん :05/02/15 01:00:52
>>73
WinFXだよ。
WinFSはファイルシステム。

76 名前:デフォルトの名無しさん :05/02/15 01:06:27
>>75
う、よく間違える。

77 名前:デフォルトの名無しさん :05/02/15 01:07:18
WinFSは未実装

78 名前:デフォルトの名無しさん :05/02/15 01:14:29
WinFSが一番期待してたんだけど
次期Winに魅力が無くなってしもたよ(´・ω・`)

79 名前:デフォルトの名無しさん :05/02/15 06:41:33
次世代ネタは次世代スレで

80 名前:デフォルトの名無しさん :05/02/15 07:14:23
>>74
できるよ。

81 名前:デフォルトの名無しさん :05/02/15 09:34:17
OSは2K、VB6+SP6で指定時間内の間、
インターネットを閲覧出来ないようなプログラムを作ろうと思っています。
ですが、どういう風にすれば「ネットが出来なくなる」かが、分かりません。
VBでは不可能でしょうか?


82 名前:デフォルトの名無しさん :05/02/15 09:40:28
>>81
ExitWindowsEx(EWX_POWEROFF, 0)

83 名前:デフォルトの名無しさん :05/02/15 09:47:37
>>81
モデム側で何とかすべきじゃね?
モデムを家電用のタイマーと連動させておくとか。

84 名前:デフォルトの名無しさん :05/02/15 10:44:33
ケーブルを抜き差しするロボットアームを

85 名前:81 :05/02/15 11:38:29
やっぱしムリですかね?
子供のネットの時間規制かけたいと頼まれたもんで。
家電タイマーとかがついてると「あからさまに怪しい」って疑われるので、
それはパスしたいんですよ。

「夜はトラフィック込んでてつながりにくい〜」と錯覚させるように、
こっそり忍ばせたいので。。。

ルータ越しに繋いでるんでLANボードの動作を停止させるとかでもいいんだけど、
実行中のプロセスだろうから止めれるのかな〜とか。


86 名前:デフォルトの名無しさん :05/02/15 12:02:06
そんなせこいことせずにきっぱりと親が子供に言い聞かせるべきだな

87 名前:デフォルトの名無しさん :05/02/15 12:13:49
ポリシー(実体は多分レジストリ)の設定で
インターネット接続の可否って決定できるような気はする。
再起動が必要な可能性はある。
また、めっせーじが「この操作は管理者によって禁止」
とか出ると思う。

あと、ネットワークデバイスを無効にするとか、
ぱっと思いついただけだが、やりようはナンボでもありそう。

88 名前:デフォルトの名無しさん :05/02/15 12:14:14
pDevMode->dmCopies=100;
hPrinterDC.CreateDC(〜,pDevMode);
StartDoc(hPrintedDC,〜);
hfont=CreateFont(1000,0,〜);
SelectObject(hPrinterDC, hfont);
SetTextColor(hPrinterDC, RGB(255,0,0));
TextOut(hPrinterDC, 0, 0, "インターネットはX時からX時まで");
EndDoc(hPrinterDC);

89 名前:デフォルトの名無しさん :05/02/15 12:17:55
>>85
>ルータ越しに繋いでるんでLANボードの動作を停止させるとかでもいいんだけど、
なら、デフォルトゲートウェイ消すとか

というか、その手のフィルタリングソフトって探せばいくらでもありそうな希ガス



90 名前:デフォルトの名無しさん :05/02/15 12:21:26
インターネット設定で、ありえないプロキシを指定するとか。

IEだけ殺せればいいなら、コンパネのインターネット設定で
制御できる項目をいじるのが良い。
全部まとめてならTCP/IPの設定あたりがいいかな。

91 名前:デフォルトの名無しさん :05/02/15 12:24:28
つーか、そう言うせこいことをやっててばれたら子供に嫌われる悪寒。
寧ろ、きちんと言い聞かせるなりして露骨にモデムの電源落とす方が躾にはなる。
勿論、頭ごなしに禁止するのが一番いかんのだが。

92 名前:デフォルトの名無しさん :05/02/15 12:27:30
そう言う障害を乗り越えようと色々いじり倒して、将来の技術者が育つんだよ。

93 名前:デフォルトの名無しさん :05/02/15 12:32:44
WinSock(orIPHelper)での話です。
自分のローカルIPはすぐに調べられたのですが、
グローバルIPはどのようにすれば調べられるのでしょうか?
また、調べられた結果、火壁との兼ね合いはどうなるのでしょう?
宜しくお願いします。

94 名前:デフォルトの名無しさん :05/02/15 12:34:42
意味不明

95 名前:デフォルトの名無しさん :05/02/15 12:42:57
>>93
UPnP対応ルータからならとれる、はず。

96 名前:デフォルトの名無しさん :05/02/15 12:48:36
自室にPCやTV、ゲーム機を与えないほうがいいよ。
引き篭もる動機を与えることになる。

ネットやPCが無かったら、引き篭もりなんか出来ないんだから。

97 名前:93 :05/02/15 12:50:55
ローカルIPアドレスは
char ac[80];
gethostname(ac, sizeof(ac));
gethostbyname(ac);
で調べられるのですが、グローバルIPアドレス(*1)
(ルータのWAN側IPアドレス≠MACアドレス)
はどうやって知ればいいのかが分かりません。
また知ることができたとしてもクライアントが*1でLAN外部から繋げた時
火壁が問答無用でメッセージを排除してしまうものなのでしょうか?

98 名前:デフォルトの名無しさん :05/02/15 12:57:41
そういう形の接続でのWAN側アドレスは、一般的にはルータの設定画面から知るしかない
HTTPなりtelnetなりでその画面を呼び出して解析汁

最後の文は相変わらず意味不明

99 名前:デフォルトの名無しさん :05/02/15 13:01:49
サブクラス化したエディットコントロールにn個の要素を持つ配列aを
表示してるのですが、配列aのx番目の要素にフォーカスかキャレットが
来たのことを判別する方法はありますか?教えてください

100 名前:デフォルトの名無しさん :05/02/15 13:05:14
>>97
だーかーらー、UPnP使わないと取得できないんだってば。
UPnP詳しいことは知らんけど。
それ以外の方法だと、グローバルにそういうサービス立てるか
ルータのWEB設定画面から返された文字列を解析とか
そういう汚い汎用性に欠ける方法しか思いつかん。

101 名前:デフォルトの名無しさん :05/02/15 13:08:45
グローバルIPアドレスを入力してください
というウィンドウを出す

102 名前:デフォルトの名無しさん :05/02/15 13:10:38
>>97
OSが管理してない情報はAPIを使っても取得できません

103 名前:デフォルトの名無しさん :05/02/15 13:43:43
tracertでたどる

104 名前:81 :05/02/15 15:20:15
>>84
当初、NICを無効にするのもアリかなーって思ったんだけど、
それらしきやり方見つからなかったので。。。

>>90
インターネットの設定をレジストリで換えるってのはやってみたんですが、
IEを開いてる状態で、レジストリのほうのプロキシ換えても、
その最初に開いてるIEには反映されないんですよ。

105 名前:デフォルトの名無しさん :05/02/15 15:26:19
>104
予言しよう
そういう育て方するとガキは引きこもる
うちの弟同じ事やられて切れて引きこもり中

106 名前:デフォルトの名無しさん :05/02/15 15:36:17
>>104
>インターネットの設定をレジストリで換えるってのはやってみたんですが、
直接レジストリじゃなくて InternetSetOption 関数とか使うべきだろうね。
開いてるIEにまで適用されるかどうかは知らない。

107 名前:デフォルトの名無しさん :05/02/15 15:38:38
うちの弟 = 自分
だけどな。

108 名前:デフォルトの名無しさん :05/02/15 15:45:00
>>104
NICを無効にするなら、
INetConnectionのDisconnectとか

↓のAPIでゴソゴソやるとか
SetupDiGetClassDevs
SetupDiEnumDeviceInfo
SetupDiSetClassInstallParams
SetupDiCallClassInstaller

109 名前:デフォルトの名無しさん :05/02/15 15:46:49
>>104
>IEを開いてる状態で、レジストリのほうのプロキシ換えても、
>その最初に開いてるIEには反映されないんですよ。
設定を変更するスクリプトをSYSTEM権限の
スタートアップサービスとかにすればいいじゃん
というかスレ違い

110 名前:デフォルトの名無しさん :05/02/15 15:55:59
class thrbase{
protected:
virtual unsigned WINAPI ThreadProc(void);
public:
static unsigned WINAPI ThreadCall(void* p);
};

unsigned WINAPI thrbase::ThreadCall(void* p){
return reinterpret_cast<thrbase*>(p)->ThreadProc();
}
unsigned WINAPI thrbase::ThreadProc(void){
return 0;
}

スレッド関数をメンバ化するために作った静的関数ThreadCallと、その処理内容ThreadProcが↑
そこでこのThreadProcをオーバーライドして使いまわしたいのです。

ThreadProcにvirtualをつけて継承しようとすると、ビルドは問題無く通るものの
実行してみるとUnhandled exceptionが出てうまく動きません。

どうか知恵を授けてぐたさい。

111 名前:デフォルトの名無しさん :05/02/15 16:01:42
そこだけではわからん

112 名前:デフォルトの名無しさん :05/02/15 16:01:48
FATAL ERROR: このスレの住人はC++が出来ません。

113 名前:デフォルトの名無しさん :05/02/15 16:10:03
↓継承先のクラスです。

#include "stdafx.h"
#include "thrbase.h"

class potato : public thrbase{
unsigned WINAPI ThreadProc(void);
};
unsigned WINAPI potato::ThreadProc(void){
MessageBox(0,TEXT("test"),0,MB_OK);
return 0;
}


スレッドはWinMainから_beginthreadexで呼び出しています。
_beginthreadex(0, 0, &potato::ThreadCall, &dwID, 0, &dwID);

114 名前:111 :05/02/15 16:16:16
4番目の引数はそのスレッドオブジェクトのアドレスを渡すんじゃないの?

115 名前:デフォルトの名無しさん :05/02/15 16:16:51
potatoのインスタンスをどこで渡しているのやら

116 名前:デフォルトの名無しさん :05/02/15 16:17:01
beginthreadexの。

117 名前:デフォルトの名無しさん :05/02/15 16:20:40
>>114-116
beginthreadexの方かっ。。。

…と言われてもすぐにわからないへたれなので今からマニュアルと格闘してきます。
ありがとうございます。

118 名前:デフォルトの名無しさん :05/02/15 17:02:06
リソースファイルってどうやって埋め込むの?

119 名前:デフォルトの名無しさん :05/02/15 17:05:54
リソースファイルは埋め込まない
リソースファイルに基づいてリソースを埋め込む
何が知りたいかよく分からんが、

HELP hHelp;
hHelp=Google( TEXT("リソーススクリプト") );

120 名前:デフォルトの名無しさん :05/02/15 17:08:51
埋め込むのは梨花のお仕事

121 名前:デフォルトの名無しさん :05/02/15 18:04:01
>>113

>beginthreadex(0, 0, &potato::ThreadCall, &dwID, 0, &dwID);

potato::ThreadCallに&がついとる。
(staticな)メンバ関数のアドレスは通常のC関数と同じく&いらんよ

beginthreadex(0, 0, potato::ThreadCall, &dwID, 0, &dwID);
でおk
WinAPIっつーよりC++の基本的問題というか

122 名前:デフォルトの名無しさん :05/02/15 18:05:06
>>121
ばか

123 名前:121 :05/02/15 18:06:32
って全然おkじゃないや。
>>115で指摘されてるけどインスタンス渡してないし。
C++の基本がわかってない予感が。

124 名前:デフォルトの名無しさん :05/02/15 19:54:32
VC8からは&が必須になっている希ガス

125 名前:デフォルトの名無しさん :05/02/15 21:44:20
Outlookのデータ(メールやアドレス帳)に外部アプリケーションからアクセスしようとすると
アクセス確認ダイアログが出てくるため、これを自動で「はい」ボタンを押してくれる
プログラムを作成しているのですが、下記のようなプログラムでうまくいきません。

ボタンを連打するとたまに反応する程度で、ループさせても閉じてくれません。
ほかにもWM_LBUTTONDOWN、WM_LBUTTONUPを使用したりALT+Yを送る等
しましたが、こちらの環境ではうまくいきませんでした。
なお、「いいえ(&N)」、「ヘルプ(&H)」に対しては正常に効きます。

ネットで調べてみたものの、ClickYesというアプリ(?)使用することで解決している人が多いようですが
自分で作成したいと思っているので、どなたか力を貸してもらえないでしょうか?
よろしくお願いします。

Express ClickYes
http://www.contextmagic.com/express-clickyes/

126 名前:125 :05/02/15 21:44:50
ソースです。
Private Sub Click_Yes()
Dim wnd As Long
Dim wndYes As Long

wnd = FindWindow(vbNullString, "Microsoft Outlook")

If wnd <> 0 Then
wndYes = FindWindowEx(wnd, 0, "Button", "はい(&Y)")
End If

SendMessage ByVal wnd, ByVal WM_COMMAND, ByVal (BN_CLICKED * &H10000 + GetDlgCtrlID(wndYes)), wndYes

End sub

Private Sub Command_Click
Call Click_Yes()
End Sub

環境
OS :WinXP Pro
言語:VB6.0
その他:Outlook2000

127 名前:デフォルトの名無しさん :05/02/15 21:51:39
CreateProcessで作成されるプロセスのメインスレッドに
メモリマップトファイルで共有メモリをつくり、そこにアセンブラのコードを書き込んで、
それを実行させることはできますか?
つまり
・メインスレッドの開始のアドレスを取得し、
・そのアドレスのコードを書き換え、共有メモリのコードにジャンプさせ、
・自分の関数を処理させた後、
・再び開始アドレスに元のコードを戻し、
・そこにジャンプさせる

開始アドレスの取り方とか、そのためのAPIとか、そういうことをやっているページとか、
ヒントをいただけないでしょうか。
よろしくお願いします。


128 名前:デフォルトの名無しさん :05/02/15 22:08:32
出来ません

129 名前:デフォルトの名無しさん :05/02/15 23:17:44
それはいやです。

130 名前:デフォルトの名無しさん :05/02/15 23:17:58
>>125>>127
通報しますた

131 名前:デフォルトの名無しさん :05/02/15 23:36:53
MSDNに堂々と書いてあるけど?

132 名前:デフォルトの名無しさん :05/02/16 00:03:20
>>130
理由言ってみ?

133 名前:デフォルトの名無しさん :05/02/16 00:31:53
>>81
俺ならネット関連のAPIをフックして常に失敗したことにする。
タスクトレイとかから見えなくするのに一工夫いるかもしれない。

134 名前:デフォルトの名無しさん :05/02/16 00:50:16
>>131
どこでしょうか?

135 名前:デフォルトの名無しさん :05/02/16 11:57:01
結果報告です。
他プロセスのウィンドウへのSendMessage(パラメータでアドレスlpIntを渡す)
について以下の2パターンを試したところ、1はNG、2はOKでした。

1.プロセス毎メモリ空間(0x04000000〜0x41ffffff)の利用
lpIntLocal = (int *)API.HeapAlloc(ph1, API.HEAP_ZERO_MEMORY, 80);//メモリのアロケート
hMyWnd = API.FindWindow (null, "Test"); //自ウィンドウハンドルの取得
ReturnValue = API.GetWindowThreadProcessId (hMyWnd, &hProc); //自プロセスハンドルの取得
lpInt = (int*)API.MapPtrToProcess(lpIntLocal, hProc); //他プロセス受け渡し可能なアドレスの取得
  ※自プロセス以外を指定してMapPtrToProcessを実行するとエラー発生。

2.メモリマップファイル領域(0x42000000〜0x7fffffff)の利用
hFileMap = API.CreateFileMapping (0xffffffff, 0, API.PAGE_READWRITE, 0, 80, 0);
lpInt = (int*)API.MapViewOfFile (hFileMap, API.FILE_MAP_WRITE, 0, 0, 0);

136 名前:デフォルトの名無しさん :05/02/16 11:57:46
ここの引用です
ttp://bbs.wince.ne.jp/ch1/mqbbs.cgi?UMODE=BETA&FILE=bbs.log.120


137 名前:デフォルトの名無しさん :05/02/16 13:33:16
目的のハンドルからWM_GETTEXTで文字は取得できるのですが
EM_GETSELTEXTだと取得できません。なぜでしょうか?

138 名前:137 :05/02/16 13:47:51
解決しました

139 名前:デフォルトの名無しさん :05/02/16 14:42:12
リッチエディットってエディットコントロールに比べて激烈に読み込み動作遅いんだけどなんで?

140 名前:デフォルトの名無しさん :05/02/16 15:10:23
テキスト以外の情報も入ってるから

141 名前:デフォルトの名無しさん :05/02/16 16:46:13
シャットダウンまであと何秒っていうダイアログあるじゃない
あれってどうやってだすの?

142 名前:デフォルトの名無しさん :05/02/16 16:53:24
ダイアログ

143 名前:デフォルトの名無しさん :05/02/16 18:03:32
変数x←テキストデータ
変数xの中身をいじらないでエディットコントロールに転送したときに
等間隔(1文字おきとか)に空白入れる方法ありますか?教えてください

144 名前:デフォルトの名無しさん :05/02/16 20:17:16
エディットコントロールに転送するときに
変数xの中身をいじらないで等間隔(1文字おきとか)に空白入れる方法ありますか?

ってことかな?
変数yを作ってxをコピーしていじれば?

145 名前:デフォルトの名無しさん :05/02/16 20:21:11
空白入れ・転送用の関数でも作ってローカルな変数で処理するとか?
やってることは>>144と同じようなもんだが。

146 名前:デフォルトの名無しさん :05/02/16 20:34:37
>>143
なんかフラグをたてれば勝手にやってくれるといいなー
なーんて甘いことは考えてないよな


一文字ごとといっても、半角・全角は気をつけるように。

147 名前:143 :05/02/16 20:46:52
文字間の間隔をフォントの設定で変えれませんか?

148 名前:デフォルトの名無しさん :05/02/16 20:57:10
強いて言うならSetTextCharacterExtraだろうか。

149 名前:デフォルトの名無しさん :05/02/16 20:58:28
>>147
GDIを直接呼べばそういうこともできるが、ただのエディトコントロールにはそういう機能はない。
リッチエディットコントロールでならできるかもしれない。IEコンポーネントなら間違いなくできる。

どんどん敷居が上がっていく罠。

150 名前:デフォルトの名無しさん :05/02/16 21:04:33
もうね、エディットコントロール作っちゃいなさいよ

151 名前:デフォルトの名無しさん :05/02/16 21:10:17
継承

152 名前:デフォルトの名無しさん :05/02/16 21:39:14
でもなんだかんだ言ったってスマートなやり方ではないけど、
1番最初に144が言っていた1文字おきに空白を入れる方法が1番楽。
Unicodeを使えば全角・半角を気にする必要も無い。
std::vector<WCHAR>やstd::wostringstreamも便利。

153 名前:デフォルトの名無しさん :05/02/16 21:42:50
Unicodeでも2文字で一文字表すのなかったっけ?

154 名前:143 :05/02/16 21:43:07
とりあえず>>148でできますた。どうも

155 名前:デフォルトの名無しさん :05/02/16 21:59:21
>>153
どんなエンコーディングルールでも、「2文字で1文字表す」ってのはまず無いと思う。
2バイトで1文字とか、2ワードで1文字とかならともかく。

156 名前:デフォルトの名無しさん :05/02/16 22:09:58
サロゲートペアがあるだろ。

157 名前:デフォルトの名無しさん :05/02/16 22:11:21
>>153
サロゲートのこと?
現在のところ、日本語にサロゲートを使う文字は
存在しなかったと思う・・・。

将来的にはわからんが。

158 名前:デフォルトの名無しさん :05/02/16 22:14:15
×エディットコントロール
○エジットコントロール

159 名前:デフォルトの名無しさん :05/02/16 22:18:38
それを突き詰めていくとこうなるわけで
×エディットコントロール
×エジットコントロール
○EditControl

160 名前:デフォルトの名無しさん :05/02/16 22:19:43
サロゲートではなくて寧ろ結合文字では?
実装がどうなってるのかはしらんが。

161 名前:デフォルトの名無しさん :05/02/16 22:25:22
>>156
「吉」の上が「土」になってるやつは、UTF-16だとサロゲートペアになるようだけど、
これはD840+DFB7の2ワードで1文字を表しているわけで、別に2文字なわけではない。

162 名前:デフォルトの名無しさん :05/02/16 23:19:40
WH_GETMESSAGEのフックで取得したメッセージを
ウィンドウプロシージャに渡す前に破棄したいのですが
どうすればいいんでしょうか?

今はメッセージをWM_NULLに書き換えることで対処しています。

163 名前:デフォルトの名無しさん :05/02/16 23:34:54
>>162
渡さなければいいんじゃないの?

164 名前:デフォルトの名無しさん :05/02/16 23:38:00
その場でreturnしたらまずい理由でもあるのか?

165 名前:デフォルトの名無しさん :05/02/16 23:39:20
>>162
CallNextHookEx呼ばすにreturnしとけば?

166 名前:162 :05/02/17 05:19:50
WH_GETMESSAGEの場合は、その場でreturnしても
メッセージは流れてしまいます。
後ろのフックには処理が渡らないので、Spy++からは
見えなくなりますが。

167 名前:デフォルトの名無しさん :05/02/17 05:46:04
フックで対象ウィンドウのプロセスにDLL突っ込んでそこからサブクラス化、とか。

168 名前:デフォルトの名無しさん :05/02/17 07:18:15
既に別の目的でサブクラス化はしているのですが、そのアプリケーションでは
目的のメッセージ(WM_SYSKEYDOWN)は元々ウィンドウプロシージャには
渡さずにメッセージループ内で処理しているようです。

なので、PeekMessageの段階でキューからそのメッセージだけを直接的に
削除する手段はないかと探していたのですが、どうもWM_NULLに置き換える
という方法が一般的なようです。

以下、CodoGuruのWM_NULLの説明より
WM_NULL also is used to filter messages in the WH_GETMESSAGE hook. Returning 0 from a hook does not prevent you from processing a message. Replacing a message with WM_NULL will filter the message properly.

169 名前:デフォルトの名無しさん :05/02/17 09:34:56
教えてください。
msecのウエイトってどうやってやればいいんですか?
該当するAPIってあるんですか?

170 名前:デフォルトの名無しさん :05/02/17 09:40:15
>>169
元スレに断らずに移動するような香具師には教える気はありません。
つーか、MSDN位読めや。

171 名前:デフォルトの名無しさん :05/02/17 09:47:28
>>170
それはスイマセンでした。
MSDN読んでも分からないので教えて下さい。

172 名前:デフォルトの名無しさん :05/02/17 10:04:12
読んでも分からないやつに教えても無駄だと思われ

どこを読んでいいか分からないなら別だろうけどな

173 名前:デフォルトの名無しさん :05/02/17 10:13:08
SetTimerを使えばいいんですかねぇ〜?
マイコン関連だとウエイト関数が用意されているんで、使い方が
良く分からないんです。

174 名前:デフォルトの名無しさん :05/02/17 12:17:14
わりと最近同じような質問見たけどな。
とりあえずウェイトしたい時間と要求する精度をはっきりさせれ。


175 名前:デフォルトの名無しさん :05/02/17 12:20:35
それほど精度を問わないなら既に>170に答えがある罠。

176 名前:デフォルトの名無しさん :05/02/17 12:34:07
>>174
目的は、_outp()を使ってパラレルポートから通信用のパルス信号を出力したいんですが、
パルス幅を作る為にウエイトしたいんです。パルスは"L"が4.7us、"H"が4.0usです。
パルスの出力方法として、具体的に他の方法があるのでしたら教えて下さい。


177 名前:デフォルトの名無しさん :05/02/17 12:39:28
どこがmsecなのかと小一時間(以下略

で、
>パルスは"L"が4.7us、"H"が4.0usです。
ってどこがどうパルスなのかと小一時間(以下略

つーか素直にこっちに行け。
制御系なら俺に聞いてもいいぜ(6)
http://pc5.2ch.net/test/read.cgi/tech/1099574832/


178 名前:デフォルトの名無しさん :05/02/17 12:49:58
Windowsアプリからそんなに正確に出せるか甚だ疑問だな。
ミリ秒だって不安なのに・・・

179 名前:デフォルトの名無しさん :05/02/17 12:58:47
Sleep(0)でぶん回してパフォーマンスカウンタで経過時間確認するしか思いつかん

180 名前:デフォルトの名無しさん :05/02/17 17:23:25
>>179


181 名前:デフォルトの名無しさん :05/02/17 17:27:52
パフォーマンスカウンタがずれる場合があるからなぁ。

182 名前:デフォルトの名無しさん :05/02/17 18:01:24
http://www.linux.or.jp/JF/JFdocs/IO-Port-Programming/high-resolution.html#AEN160
>ポートアドレス 0-0x3ff の範囲にある大抵のポートへの I/O 命令は
>実際のところほぼ正確に 1 マイクロ秒かかります。だから例えば
>パラレルポートを直接扱っている場合なら、ディレイを作るためには
>そのポートに対して inb() をいくつか追加するだけでいいわけです。

183 名前:デフォルトの名無しさん :05/02/17 18:01:52
パフォーマンスカウンタがずれたのではなく、
ユーザの計時関数呼び出しの間隔がずれただけではないか?
そもそもどうやってCPUのカウンタがずれたと確認するのかと小一時間

184 名前:デフォルトの名無しさん :05/02/17 18:04:38
どうやって、って他のカウンタも併用するに決まってるじゃん。
http://crystalmark.info/special/clock.html

185 名前:デフォルトの名無しさん :05/02/17 18:18:38
>>184
おいおい・・・、相当に痛いな。ワロタ

186 名前:デフォルトの名無しさん :05/02/17 18:25:05
・・・アホ過ぎる。文系臭漂いまくりだな。
己自身に絶対価値を付与するあたりが、まるで朝日新聞のようだ。

187 名前:デフォルトの名無しさん :05/02/17 18:29:10
98年頃のMSJにus単位の正確なウェイトを実現する方法が載ってたな。
あの雑誌は凄く面白かったから、今でも全巻欲しいと思ってる。
英語版ならWebでも読めるが。

っていうか、その精度のウェイトを求めるなら、間にPICとかを挟んで
そっちに制御させるべき。

188 名前:デフォルトの名無しさん :05/02/17 18:34:09
<vector>インクルードしたらエラーでるんだけど何で?

189 名前:デフォルトの名無しさん :05/02/17 18:44:33
>>188
スレ違い。
VCスレででも聞け。
まぁ恐らくはCでコンパイルしようとしているか警告が出ただけじゃないかとは思うのだが。

190 名前:デフォルトの名無しさん :05/02/17 20:20:35
GetGlyphOutlineで文字"列"を描画しようとしているのですが、
GetGlyphOutlineW(Unicode)をGGO_GRAY8_BITMAPでコールしたとき、ホワイトスペース系の
文字はGLYPHMETRICSのgmBlackBoxXおよびgmBlackBoxYに実際の幅が入りません。
ですからスペースだけは別にGetTextExtentPoint32で幅を取りにゆく方法もありますが、
本当にそうやって幅を取得すべき文字は半角/全角スペースだけでよいのか、わかりません。
すばらしい解決策がありましたら、ご享受願います。
あ、gmCellIncXでいいのか、事故解決しました。スマソ。

191 名前:デフォルトの名無しさん :05/02/17 22:03:27
>>190
自己解決してるようだが補足しておくと、gmBlackBoxXとgmBlackBoxYは
文字の大きさじゃないぞ。
文字を表すピクセルを囲む最小限の矩形の大きさだ。

だからスペースのようにピクセルが存在しないものは0になる。

文字送りはスペースに限らずgmCellIncXとgmCellIncYで行う。

192 名前:デフォルトの名無しさん :05/02/17 22:10:42
BlackBoxで文字進めてたら、「---」が直線になっちゃうわな。

193 名前:190 :05/02/17 22:59:00
>>191-192
疑問が解消して、スッキリしました。どうもすみません。

194 名前:74 :05/02/18 01:24:31
>>80
いろいろ悩んでみたんですが、どうも自己解決できません。
小細工するのでしょうか?厨でスマソ

195 名前:デフォルトの名無しさん :05/02/18 01:29:07
>>194
80じゃないし想像ですまんが
コールバック関数使ってBFFM_INITIALIZEDのときにMoveWindowで動かしてやればいいと思う

196 名前:sage :05/02/18 11:17:02
WindowsXPで、

SystemParametersInfo(SPI_SETNonClientMetrics 0,
&NonClientMetrics, SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE );

とすると、タイトルバーの縦サイズがWindows2000等よりも大きい為に、
タスクトレイのアイコンが勝手に大きくなってしまいます。

WindowsXPのタイトルバー縦サイズ・・・25
Windows2000のタイトルバー縦サイズ・・・18

SystemParametersInfoを設定しても、アイコンが大きくならないようにする方法を
ご存知でしたら教えて頂けないでしょうか。
よろしくお願いいたします。

197 名前:デフォルトの名無しさん :05/02/18 17:08:37
win32APIをつかったプログラムに自作のクラスを使いたいんですが
どうしたらいいでしょうか?
構造体とかC++だと使えないからPOINTとか使えないと思うんですが
WinMainとかプロシージャ-とかはそのまま使えますか?

198 名前:デフォルトの名無しさん :05/02/18 17:12:10
??わけわかめ

199 名前:デフォルトの名無しさん :05/02/18 17:19:33
>>197
C++でも構造体は使える。
それどころかstructとclassの違いはデフォルトでpublicかprivateか、それだけ。

200 名前:デフォルトの名無しさん :05/02/18 17:52:48
structって、継承できたっけ?

201 名前:デフォルトの名無しさん :05/02/18 18:23:08
MFCとか、class CPoint : public tagPOINT{...};
なんてことを平気でやってるな。

202 名前:デフォルトの名無しさん :05/02/18 18:23:55
どうも何か勘違いしていたようなんで出直してきます;

203 名前:デフォルトの名無しさん :05/02/18 19:06:58
>>201
何かまずいの?

204 名前:デフォルトの名無しさん :05/02/18 19:20:00
>>203
201 は 200 へのレスだろ

205 名前:デフォルトの名無しさん :05/02/18 20:37:20
MIDIの再生をmidiOutShortMsgで行う際に、演奏する楽器を選択出来るようにしたいのですが、
楽器の名前一覧を取得するAPIはありますか?
関係しそうなAPIはmidiOutGetDevCapsしか見つかりませんでした。
http://www.microsoft.com/japan/msdn/library/ja/jpmltimd/html/_win32_midioutgetdevcaps.asp
どうも、MIDIOUTCAPSには無さそうなのですが……

206 名前:デフォルトの名無しさん :05/02/18 20:49:09
>>205
ないよ。


207 名前:デフォルトの名無しさん :05/02/18 20:54:14
MMOを作ろう!企画を立ち上げました。協力できる人はこちら
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm

2chスレ
http://game10.2ch.net/test/read.cgi/mmominor/1108379282/l50

くすぶってないで、自分の力を試してみよう!!

208 名前:デフォルトの名無しさん :05/02/18 21:01:17
いくらまで出せるんだ?

209 名前:デフォルトの名無しさん :05/02/18 22:13:44
>>206
どもです。
リソースファイルにでも書き込んでおきます。

210 名前:デフォルトの名無しさん :05/02/18 23:20:25
>>205
midiOutShortMsgで音源にプログラムチェンジメッセージ送るだけじゃないのか?
楽器の名前はGM規格準拠の音源なら0から127まで楽器の配置は決まってる。


211 名前:デフォルトの名無しさん :05/02/18 23:43:33
>>210
>楽器の名前一覧を取得するAPIはありますか?

212 名前:デフォルトの名無しさん :05/02/19 00:11:55
ネットで調べ物してたら、変なリンクが引っかかった…
http://www.symantec.com/region/jp/avcenter/security/content/12095.html
GDI+のバグより、LoadImageの方がよっぽどヤダ

213 名前:デフォルトの名無しさん :05/02/19 01:53:16
質問なんですが、今複数の画像を読み込みなんかも描画する物を作ってます。
画像の描画なんですが、普通
a = (HBITMAP)LoadImage(NULL, "test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
b = (HBITMAP)LoadImage(NULL, "test1.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
c = (HBITMAP)LoadImage(NULL, "test2.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
と読み込んで
SelectObject(hMemDC, a);
BitBlt(hdc, 0, 0, 100 100, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, b);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, c);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);

みたいな感じで描画するみたいですが、

a = ( HBITMAP )LoadImage( NULL , "test.bmp" , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION );
SelectObject(BhMemDC, a);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
a = ( HBITMAP )LoadImage( NULL , "test1.bmp" , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION );
SelectObject(BhMemDC, a);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);
a = ( HBITMAP )LoadImage( NULL , "test2.bmp" , IMAGE_BITMAP , 0 , 0 , LR_LOADFROMFILE | LR_CREATEDIBSECTION );
SelectObject(BhMemDC, a);
BitBlt(hdc, 0, 0, 100, 100, hMemDC, 0, 0, SRCCOPY);

みたいな感じで描画してはいけないのでしょうか?
処理速度などはどうなのですか?
分かる方お願いします。

214 名前:デフォルトの名無しさん :05/02/19 02:56:53
別に、その方法でも良いし
処理速度は、ほとんど変わらないけど…

DeleteObjectしたり、SelectObjectで
戻ってきた値をSelectObjectしなおしたり
しなくても良いのか?


215 名前:デフォルトの名無しさん :05/02/19 05:46:05
>>213
なんでそんなこと気にすんの?

216 名前:デフォルトの名無しさん :05/02/19 10:35:27
ペンやブラシの色を問わず背景の反転色で描画したいときは
SetROP2 で R2_NOT を指定すればいいことを知ったのですが
Rectangle などの図形描画には使えるのですが
DrawText などの文字描画では色が反転されません。
反転色で文字列を描くにはどうすればいいのでしょうか。

217 名前:デフォルトの名無しさん :05/02/19 12:29:21
OPAQ

218 名前:デフォルトの名無しさん :05/02/19 12:52:14
>>214
ども^^
下の方法だと時間がたつにつれ重くなったんで・・・・
原因はなにかなと思って聞いてみました。

219 名前:デフォルトの名無しさん :05/02/19 12:57:51
そりゃGDIオブジェクト解放せずにだだ漏れさせてりゃ重くもなるわな。

220 名前:デフォルトの名無しさん :05/02/19 13:06:03
解放って、最後に
ReleaseDC(hwnd,work_hdc);
DeleteDC(BhMemDC);
DeleteObject(Bitmap);
みたいな感じに書くんですよね?

221 名前:デフォルトの名無しさん :05/02/19 13:16:12
WNDCLASSEX構造体のlpszClassNameってなんでしょう?

222 名前:デフォルトの名無しさん :05/02/19 13:18:50
LPSZ型の変数

223 名前:デフォルトの名無しさん :05/02/19 13:21:01
>>222
ごめんなさい、質問の仕方がまずかったですね
WNDCLASSEX構造体のlpszClassNameってプログラム中ではどういった働きをするんですか?
あと、普通はどういう内容にするのでしょう?

224 名前:デフォルトの名無しさん :05/02/19 13:22:34
(アプリ名)MainWindowClass

みたいにしておくと、外部プロセスからアプリを探すときに
楽かもしれんね。

225 名前:デフォルトの名無しさん :05/02/19 13:25:04
>>220
考え方としてはそう。
わかってると思うけど、その三行だけでは、213に書かれた内容に対応したものにはならないから

とりあえずタスクマネージャのGDIオブジェクトの列を出しておくと、わかりやすいよ

226 名前:デフォルトの名無しさん :05/02/19 13:28:07
>>224
ありがとうございますっ!

227 名前:デフォルトの名無しさん :05/02/19 13:36:06
>>221
CreateWindow(Ex)で使うだろ。
と言う俺もアトム派。

228 名前:デフォルトの名無しさん :05/02/19 13:42:50
>>225
そうなんですか?
一応GDIオブジェクトの列を表示にしましたが、どれがそうなのかワカラナイです^^;
なにが足りないのでしょうか?

229 名前:デフォルトの名無しさん :05/02/19 14:05:49
センス

230 名前:デフォルトの名無しさん :05/02/19 14:16:52
GDIオブジェクトの列分かりました^^
凄い勢いであがていきます・・・・


231 名前:デフォルトの名無しさん :05/02/19 16:04:26
エディットボックスでENTERキーを押すとポーンとエラー音が出るのを止める
にはどうしたらいいんですか?

232 名前:デフォルトの名無しさん :05/02/19 16:33:45
>>228
214さんがサラリとかいてあるのだが・・・

作ったオブジェクトは、SelectObjectしたままでは消せない。
ので、
一番最初にSelectObjectしたときの返り値を保存しておく(*)。
消すときには、保存しておいたものをSelectObjectし、
作ったオブジェクトは、全部Selectされてない状態にする。
そうしてから消す。
*返り値に何が入ってるかはちゃんと勉強しておいてね

しかし、きちんと消してないなら
213の上も下もGDIが酷いことになりそうな気がするんだが・・・


233 名前:231 :05/02/19 16:34:00
解決しちゃいますたごめんなさいorz

234 名前:デフォルトの名無しさん :05/02/19 16:34:45
>>230
概出
http://web.h-is.com/~gaia/bbs/test/read.cgi/uo_tool/1085572740/155


235 名前:デフォルトの名無しさん :05/02/19 16:36:33
>>233
解決報告するだけマシ

236 名前:デフォルトの名無しさん :05/02/19 17:04:31
CreateProcessでターゲットプロセスのメインスレッドが
WinMainやmainなどのエントリーポイントに突入するところでフックするには
どうすればよいでしょう?


237 名前:デフォルトの名無しさん :05/02/19 17:11:55
カーネルサンダースおじさんを襲う

238 名前:デフォルトの名無しさん :05/02/19 17:17:31
同じプログラムを複数個起動している際にそれぞれのウインドウハンドルを取得したいのですが、
FindWindowで取得しようとすると必ず後に起動したウインドウハンドルしか取得してくれないのですが、
このような場合はどのようにしたら良いのでしょうか?

239 名前:デフォルトの名無しさん :05/02/19 17:21:12
>>238
EnumWindows

240 名前:デフォルトの名無しさん :05/02/19 17:21:35
>>238
EnumWindows

241 名前:デフォルトの名無しさん :05/02/19 17:22:02
>>239
ありがとうございます。便利な関数あるもんですね・・・

242 名前:デフォルトの名無しさん :05/02/19 17:22:33
FindWindowExでもよくね?

243 名前:239か240 :05/02/19 17:24:44
>>242
あまりよくない

244 名前:デフォルトの名無しさん :05/02/19 17:52:42
>>243
242じゃないが、どんな問題があり得ます?

245 名前:243 :05/02/19 18:17:30
>>244
FindWindowExの仕様がGetWindowに似てるから

246 名前:デフォルトの名無しさん :05/02/19 18:41:20
>>245
なるほど、こういうのですね……。ありがとうございました。

>すべての子ウィンドウを取得する場合、EnumChildWindows 関数を使った方が
>GetWindow 関数をループ処理で呼び出すよりも信頼性の高い結果が得られます。
>GetWindow 関数を呼び出してウィンドウを列挙すると、無限ループに陥ったり、
>すでに破棄されているウィンドウのハンドルを参照する危険性がでてきます。

247 名前:デフォルトの名無しさん :05/02/19 18:43:49
>>241
便利と思えるとはある意味幸せな人だ。
ウィンドウ間・プロセス間で協調しなければならないマルチタスクOSなら
こういう関数が当たり前に提供されていなければ、
話にならない気がするがどうだろうか?

248 名前:デフォルトの名無しさん :05/02/19 18:58:23
どうでしょう?

249 名前:デフォルトの名無しさん :05/02/19 19:49:01
当たり前のものが当たり前にあるから便利なんだろうと思う。
あるはずのものが無かったりするとイライラする。
特にVBとか使ってるとそう思う。

250 名前:デフォルトの名無しさん :05/02/19 21:01:05
>>247
>>249
279の方に賛成かな


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.