トップページ⇒tech
995コメント264KB

Win32API質問箱 Build87

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/03/28(日) 10:23:58
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

過去スレ、関連リンクは>>2-10くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build86
http://pc12.2ch.net/test/read.cgi/tech/1265350980/
0002デフォルトの名無しさん2010/03/28(日) 10:25:04
85 ttp://pc12.2ch.net/test/read.cgi/tech/1262430441/
84 ttp://pc12.2ch.net/test/read.cgi/tech/1259478896/
83 ttp://pc12.2ch.net/test/read.cgi/tech/1256891725/
82 ttp://pc12.2ch.net/test/read.cgi/tech/1253699773/
81 ttp://pc12.2ch.net/test/read.cgi/tech/1249140049/
80 ttp://pc12.2ch.net/test/read.cgi/tech/1244057140/
79 ttp://pc12.2ch.net/test/read.cgi/tech/1240411224/
78 ttp://pc12.2ch.net/test/read.cgi/tech/1238289377/
77 ttp://pc12.2ch.net/test/read.cgi/tech/1235494464/
76 ttp://pc11.2ch.net/test/read.cgi/tech/1233622578/
75 ttp://pc11.2ch.net/test/read.cgi/tech/1231423602/
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
0003デフォルトの名無しさん2010/03/28(日) 10:25:44
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
0004デフォルトの名無しさん2010/03/28(日) 10:26:27
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0005デフォルトの名無しさん2010/03/28(日) 10:30:28
999 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/28(日) 10:19:24
hoge((bool)0,(HANDLE)0)
みたいなことはしてもいいと思う

HANDLEってvoid*だぞ
キャストする意味がない
0006デフォルトの名無しさん2010/03/28(日) 10:31:47
あ、ごめん
ソースコードの解読のしやすさの話ね
0007デフォルトの名無しさん2010/03/28(日) 11:50:36
ダイアログボックス呼び出しCreateDialog、リソーススクリプトに内容を記述、ダイアログ表示。
ウインドウ名や内容に ”文字” では無く、Char変数の内容を表示させたいのですができますかね?
0008デフォルトの名無しさん2010/03/28(日) 12:41:46
日本語でおk
0009デフォルトの名無しさん2010/03/28(日) 13:22:44
SetWindowText
WM_SETTEXT
001072010/03/28(日) 14:05:42
>>9
できました、ありがとうございます。
ダイアログボックス自体は変数の表示はできないって事なんですね。
0011デフォルトの名無しさん2010/03/28(日) 18:20:20
GdiplusのGraphics::Clearに矩形でクリッピングしたいんですが、何か方法ないですか?
Clearの直前にSetClipしても反映されませんでした。
0012デフォルトの名無しさん2010/03/29(月) 00:36:13
>>10
日本語でおk
0013デフォルトの名無しさん2010/03/29(月) 00:39:27
>>10
ヒント:「システム」ダイアログ
0014デフォルトの名無しさん2010/03/30(火) 00:53:48
とあるプラグイン(DLL)をロードした際、
そのプラグインは特定の条件化(バージョンチェックなど)で
不整合が発生した場合、自らをアンロードしたいのですが、
何か良いやり方はありませんか?

あるのであれば教えて頂きたいです。
0015デフォルトの名無しさん2010/03/30(火) 01:22:24
>>14
DLLをアンロードするAPIはFreeLibraryがあるが
DLLが自分自身をアンロードするのは普通にはできないと思う。
0016デフォルトの名無しさん2010/03/30(火) 01:27:37
dllmainでFALSEを返す
0017142010/03/30(火) 01:34:37
>>16
それができない状況です。

>>15
自分自身をアンロードはやはりできないですか。。
ExitProcess()しちゃうとプロセス自身が落ちてしまいますよね・・

フラグか何か持って処理をさせないという微妙な方式を採用するしかないのかな。
とりあえずもう少し意見があるかも知れないのでしばらく待ってみます。
0018デフォルトの名無しさん2010/03/30(火) 01:39:25
>>17
ロードする方のプロセスに手を入れられるなら、
そっちでアンロードするように実装すべき。
0019デフォルトの名無しさん2010/03/30(火) 02:28:03
TeminateProcessが実行された後って、普通はシステムがリソース全て開放することが保証されているよね?
でも、通知領域にアイコン持つプロセスにそれを実行したとき、通知領域のアイコンが表示されたままになる。
これはアイコンリソースが開放されてないからじゃないの?
0020デフォルトの名無しさん2010/03/30(火) 06:52:32
はい
0021デフォルトの名無しさん2010/03/30(火) 07:17:30
CPU名を簡単に取得する方法を教えてください
0022デフォルトの名無しさん2010/03/30(火) 07:49:53
>>19
通知領域はexplorer.exeのプロセス内だ
0023デフォルトの名無しさん2010/03/30(火) 20:22:50
>>14
FreeLibraryAndExitThread
0024デフォルトの名無しさん2010/03/30(火) 21:02:18
スレッドなのね
0025デフォルトの名無しさん2010/03/30(火) 23:15:24
737 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 15:40:38
CPU名を取得するにはどうしたらよいのでしょうか?

738 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/19(金) 15:41:47
>>737
WMI使うのが簡単。

739 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 16:18:58
めんどくせーから、ソース晒してくれ

740 名前:デフォルトの名無しさん[] 投稿日:2010/03/19(金) 16:29:46
>>738
簡単なサンプルを教えていただけないでしょうか?

741 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/19(金) 16:31:24
とりあえずおぱいうp
0026デフォルトの名無しさん2010/03/31(水) 00:37:45
>>21
プロンプト出してユーザー自身に使ってるCPU名を入れさせろ
0027デフォルトの名無しさん2010/03/31(水) 08:28:25
>>21
mov eax,80000002h;...80000004h
cpuid
0028デフォルトの名無しさん2010/03/31(水) 19:39:55
char name[49];
unsigned char index;
int reg[4];

for(index = 0, num = 0x80000002L; num <= 0x80000004L; index += 4, num++)
{
 __cpuid(reg,num);
 memcpy(&name[index],reg,sizeof(int) * 4);
}
name[48] = '\0';

printf(_T("%hs\n"),name);
0029デフォルトの名無しさん2010/03/31(水) 19:41:15
最後の間違えた
s/printf/_tprintf/
0030デフォルトの名無しさん2010/03/31(水) 19:42:41
numの宣言も忘れたがもういいや
0031デフォルトの名無しさん2010/04/01(木) 07:59:58
例えば
LARGE_INTEGER liX = 0;
ではなく、
LARGE_INTEGER liX = { 0 };
とするのは、なぜなんでしょうか?
LARGE_INTEGERが共用体だからですか?
0032デフォルトの名無しさん2010/04/01(木) 09:15:37
>>31
ttp://akky.cjb.net/mfc/initstru.html
0033デフォルトの名無しさん2010/04/01(木) 09:44:53
LARGE_INTEGER共用体の最初の要素が構造体だから
0034デフォルトの名無しさん2010/04/01(木) 13:21:57
>>32
あー
そういう意味だったんですね
0035デフォルトの名無しさん2010/04/01(木) 16:44:10
vc++9.0でのお話なのですが、
ZeroMemory()という関数は純粋なWindowsAPIではないという認識でよろしいでしょうか?
宣言をたどっていくと…RtlZeroMemory(WinNT.h)→memset(String.h)になってるので…
CRT依存したくない場合は、自作するのがベターって事ですかね。
0036デフォルトの名無しさん2010/04/01(木) 17:31:36
kernel32.dllにはRtlZeroMemoryがありkernel32.libには__imp__RtlZeroMemory@8があるので宣言さえすれば使える
#undefしてもよいしマクロ展開させないためにスペースをあけてもよい
RtlZeroMemory (
0037デフォルトの名無しさん2010/04/01(木) 17:42:13
>>36
ありがとうございます。スッキリしました!
0038デフォルトの名無しさん2010/04/01(木) 18:20:17
SecureZeroMemoryとかなんとか
0039デフォルトの名無しさん2010/04/01(木) 22:03:28
SecureZeroMemoryは高速化版がある
0040デフォルトの名無しさん2010/04/02(金) 09:48:57
exe や dll が .NET マネージコード化案マネージコード化を判別する方法ありますか?
0041デフォルトの名無しさん2010/04/02(金) 10:03:30
定義次第。
0042デフォルトの名無しさん2010/04/02(金) 10:35:51
確実ではないが一般に
mscoreee.dll:_CorDllMain,_CorExeMain系関数をインポートしていればマネージドコードを含む
さらにその他のdllもインポートしている場合マネージド/アンマネージド混在の可能性が高い
何もインポートしていないならマネージド/アンマネージドに無関係なデータ/リソースモジュールの可能性が高い
それ以外の場合はアンマネージドモジュールの可能性が高い

COM参照など間接的な物はほぼ判定不能
0043デフォルトの名無しさん2010/04/02(金) 11:23:59
んー、そうですか。
ちょっとがんばってみます。

マネージドコードで判断するときは
リフレクション使ってファイル読んだときに
アンマネージドであれば例外を出してくれる陽南でかんたんにわかるようなんですけどね。
0044デフォルトの名無しさん2010/04/02(金) 17:57:26
ngenが.netアセンブリの判定やってるから参考にしてみれば
しらんけど
0045デフォルトの名無しさん2010/04/02(金) 19:15:52
フックDLLを書いてるときにふと気になったけど
共有セクションってどこまで適用されるの?ウィンドウステーション?
0046デフォルトの名無しさん2010/04/03(土) 07:01:16
あるプロセスが開いてるファイルハンドルを取得して、強制的にクローズするにはどうすればいいの?
0047デフォルトの名無しさん2010/04/04(日) 23:46:00
質問です。IDE(VC++2008 Express)固有の話なのですが、
とあるクラスを作成後、動作確認中、作成した自作クラスのコンストラクタ内の処理の途中で
ブレイクポイントを仕掛けたのですが、どうもブレイクしてくれません。

※正確には、コンストラクタと、publicメンバ関数の2箇所にブレイクポイントをしかけました。
 しかしコンストラクタのブレイクポイントは無視され、publicメンバの方だけで止まります。

これは仕様なんでしょうか。ご存知の方いらっしゃいましたらよろしくお願いいたします。

0048デフォルトの名無しさん2010/04/04(日) 23:46:53
おい
殺されたいのかお前は
スレタイ100回声に出して読め
0049デフォルトの名無しさん2010/04/05(月) 00:10:28
>>48
ゴメン。しかも自分の勘違いだった
0050デフォルトの名無しさん2010/04/05(月) 00:21:32
まぁまぁ
0051デフォルトの名無しさん2010/04/05(月) 03:49:34
Win32APIじゃ無いかもしれないけど、現在接続しているUSBカメラの焦点距離を知る方法
ってありませんか?
0052デフォルトの名無しさん2010/04/05(月) 06:21:07
はい
0053デフォルトの名無しさん2010/04/05(月) 13:00:20
あります
0054デフォルトの名無しさん2010/04/05(月) 13:14:04
この辺かな
WIA_DPC_FOCUS_DISTANCE/WIA_DPC_FOCAL_LENGTH
0055デフォルトの名無しさん2010/04/05(月) 14:30:07
DOSコマンドのroute printで表示される情報と同じものを取得するAPIを教えてください
0056デフォルトの名無しさん2010/04/05(月) 15:05:38
ありません
0057デフォルトの名無しさん2010/04/05(月) 15:09:28
知らないならレスしないで下さい。ウザいだけです。。。
0058デフォルトの名無しさん2010/04/05(月) 15:20:51
煽っても何も出て来ませんよ
0059デフォルトの名無しさん2010/04/05(月) 15:27:24
http://www.wmifun.net/sample/win32_ip4routetable.html
http://www.geekpage.jp/programming/iphlpapi/
0060デフォルトの名無しさん2010/04/05(月) 15:28:22
scanfで数字を複数受け取るにはどうするの?
0061デフォルトの名無しさん2010/04/05(月) 15:36:40
>>60
>>48
0062デフォルトの名無しさん2010/04/05(月) 15:53:29
>>58
でてきましたよどじ

>>59
ありがとうございますありがとうございます。
あなたは神です。こんな糞まみれのスレで初めてみた神です。
0063デフォルトの名無しさん2010/04/05(月) 15:53:59
知らないならレスしないで下さい。ウザいだけです。。。

0064デフォルトの名無しさん2010/04/05(月) 15:55:04
コンソールプログラムとDOSプログラムを混同するな
0065デフォルトの名無しさん2010/04/05(月) 16:00:05
うるさいブタ共だなあ
0066デフォルトの名無しさん2010/04/05(月) 16:17:46
>>59
これ Win32API じゃないだろ
0067デフォルトの名無しさん2010/04/05(月) 16:59:17
>>66
いや参考になった。
へるぱAPIで取得できました。

しかし、しかし。
Presistent Routesだけ欲しい場合に判断に困ってます。
dwForwardProto辺りで何とか識別できそうかなっておもってたんですがダメっぽいですぅ
0068デフォルトの名無しさん2010/04/05(月) 17:16:27
ttp://www.youtube.com/watch?v=_NO0AdDjMnY
0069デフォルトの名無しさん2010/04/05(月) 17:25:29
っていうか、GetIpForwardTableじゃUSBとかのLANで接続してないとPersistent Routesを取れないや
まあ接続されてないんだからActive Routesに表示されないのは当然なんだが・・・
これPersistent Routesを取得する方法をさっさと教えてください。
0070デフォルトの名無しさん2010/04/05(月) 19:20:14
最近UNC等を調べ始めたものです。

引数やDnDでファイル名を取得するとき、
ローカルのファイルだと C:\file.ext
ネットワーク上のファイルだと \\PCNAME\share\file.ext
で受け取りますよね。

UNCが説明されているあるサイトで \\PCNAME\C:\file.ext
のような表記を見かけたのですが、
(http://e-words.jp/w/UNC.html)
このように取得する方法ってありますか?
0071デフォルトの名無しさん2010/04/05(月) 20:22:01
>>70
管理共有でもなきゃ、その記述が間違い。
0072デフォルトの名無しさん2010/04/05(月) 20:22:28
って見てみたら管理共有じゃん。
0073デフォルトの名無しさん2010/04/05(月) 20:23:25
まずは落ち着け
0074デフォルトの名無しさん2010/04/05(月) 20:28:43
そこのサイトの説明は適当過ぎだな。
偶々Cドライブを「C$」という名前で共有した結果なだけだろうに。
0075デフォルトの名無しさん2010/04/05(月) 20:29:46
XP VC++2008、他プロセスの指定メモリアドレスの内容を見たいのだけど
そのプロセスハンドル取得してReadProcessMemory使ってもうまく表示してくれません
GetLastErrorみたらERROR_ACCESS_DENIEDって出たけどOpenProcessToken等の操作で変わるものでも無いので
どうすれば表示されるのか分からないので教えてください
0076デフォルトの名無しさん2010/04/05(月) 20:35:52
どうすればって、普通にやればできるだろ。
0077デフォルトの名無しさん2010/04/05(月) 20:37:28
単にReadableじゃないのでは
0078デフォルトの名無しさん2010/04/05(月) 20:41:56
単にアドレスがおかしいとか。
0079デフォルトの名無しさん2010/04/05(月) 20:44:24
・ハンドルのアクセス権の問題
・指定アドレスの有効性の問題
・指定アドレスのアクセス権の問題

どれかしかない
0080デフォルトの名無しさん2010/04/05(月) 20:46:23
まとめると、>>75が悪い、ってことだな。
0081デフォルトの名無しさん2010/04/06(火) 11:28:50
ヘルパーAPIでPersistent Routesのリスト取得や追加や削除を教えてえええええええええええ><
Active Routesに対してならできるがそれじゃ意味がないぽ><
0082デフォルトの名無しさん2010/04/06(火) 23:32:12
WMIのWin32_IP4PersistedRouteTableでも使えば
0083デフォルトの名無しさん2010/04/07(水) 04:30:11
アプリの実行環境がコンソールかGUIかってのはAPIとは直接関係ないだろ。
どっちでも同じAPIを呼んで同じ情報が取得できるはず。
0084デフォルトの名無しさん2010/04/07(水) 16:36:08
mmsystem.hをインクルードすると大量のエラーが出てコンパイルできません。
コンパイラはicl 11.0、OSはWindows XP 64bitです。
0085デフォルトの名無しさん2010/04/07(水) 19:09:19
デスクトップのディスプレイの明るさを変えるapiはありませんか?ノートPCならIOCTLのブライトネストでかえれるらしいのですが。osはxpです
0086デフォルトの名無しさん2010/04/07(水) 19:29:55
VGAの色補正ならドライバをリバースエンジニアリングすれば出来ない事もないけど
ディスプレイの調整は、そのインターフェースがあるなんて聞いた事無い
0087デフォルトの名無しさん2010/04/07(水) 19:42:22
ある
0088デフォルトの名無しさん2010/04/07(水) 20:21:20
>>85
Vista以降ならある。
0089デフォルトの名無しさん2010/04/08(木) 08:30:15
ありがとうございます。xpにはやはりなさそうですか。助かりました。
0090デフォルトの名無しさん2010/04/08(木) 12:05:40
FindNextFile() でCドライブ配下の全てのファイルをカウントするだけのプログラムを作成してみました。
PC起動時の初回と2回目以降に実行し他場合、処理速度が100倍ぐらい違うのですが、どうしてでしょうか?
0091デフォルトの名無しさん2010/04/08(木) 12:11:31
Cache
0092デフォルトの名無しさん2010/04/08(木) 12:52:23
WinMainでDialogBoxを呼び出してモーダルダイアログを出します。
そのモーダルダイアログのボタンを押したときモードレスダイアログを出したいのですが、
メッセージループが表面上にないので、IsDialogMessage() 関数を追加する方法が分かりません。
どうようにすればいいでしょうか?
0093デフォルトの名無しさん2010/04/08(木) 13:47:10
メッセージループを追加する
0094922010/04/08(木) 15:51:22
#include <windows.h>

INT_PTR CALLBACK SubProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_CLOSE:
DestroyWindow(hWnd);
return TRUE;
}
return FALSE;
}

INT_PTR CALLBACK MainProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_INITDIALOG:
CreateDialog((HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), "SubDLG", hWnd, SubProc);
return TRUE;
case WM_CLOSE:
EndDialog(hWnd, TRUE);
return TRUE;
}
return FALSE;
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hprev, LPSTR cmd, int show) {
DialogBox(hInst, "MyDLG1", NULL, MainProc);
return EXIT_SUCCESS;
}

>メッセージループを追加する
どこに追加すればいいでしょう…
0095デフォルトの名無しさん2010/04/08(木) 15:55:17
ダイアログプロシージャ内
それで問題があるならスレッドを起動する
0096922010/04/08(木) 17:15:01
いやその。。。
ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、
スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。

0097デフォルトの名無しさん2010/04/08(木) 17:51:17
>>96
> WinMainでDialogBoxを呼び出してモーダルダイアログを出します。

これを止めて
モードレスダイアログ MainProc側 生成 → メッセージループ (EndDialog() 呼び出しの確認だけ ちょこっと工夫)

メッセージループ内
 MainProc側
  何らかのトリガーで SubProc側生成
0098デフォルトの名無しさん2010/04/08(木) 20:20:06
リモートのIPアドレスからコンピューター名を得る方法ありますか?
自分も相手もWindows(XP以降)です
正しくはコンピューター名じゃなくてUNC名ですが
0099デフォルトの名無しさん2010/04/08(木) 20:21:33
>どこに追加すればいいでしょう…

どこでもいい
君のプログラムにとって必要な場所に追加する

>ダイアログプロシージャ内に入ったときはDispatchMessageが呼ばれているし、

DispatchMessageから呼ばれたプロシジャの中でDispatchMessageを呼んではいけないという規則は無い
自分でイベントループを回すとはそういうこと

>スレッド立てたらメインスレッドのメッセージは読めないと思うんですが。。。

読める
0100922010/04/08(木) 20:28:31
お陰さまで、解決しました。
WinMainのモーダルダイアログを、モードレスにし、自分でメッセージループを回すことで、
サブ側もタブストップ効くようになりました。

ありがとうございました。


0101デフォルトの名無しさん2010/04/08(木) 20:35:06
メッセージループとイベントループってどっちが正しいの?
■ このスレッドは過去ログ倉庫に格納されています