- 1 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 09:56:18 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build75 pc11.2ch.net/test/read.cgi/tech/1231423602/
- 281 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:06:09 ]
- エスパーさん、出番ですよ
- 282 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:06:36 ]
- 不定値のまま色使ってるとか。
- 283 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:12:06 ]
- >>279
→は改行文字が文字化けしてるんだろうね だとしたら文字コードの問題
- 284 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:14:48 ]
- そのエディタではタブが矢印で表示されるんだろ
>>280だな
- 285 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:46:47 ]
- 釣れた釣れた
- 286 名前:デフォルトの名無しさん [2009/02/09(月) 23:31:53 ]
- どんなネタでも必ず釣れるスレですね
- 287 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 23:36:18 ]
- そ・・・壮大な釣りだった。。。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 01:09:47 ]
- 簡単に釣れるので、釣りの練習に使うといいよ
特に初心者の釣り師にオススメ
- 289 名前:デフォルトの名無しさん [2009/02/10(火) 01:13:17 ]
- ここで釣り釣り言ってるのは小学生かなんか?
釣りの意味分かってないんだろうね 「ぷろぐらみんぐ」は小学生にはまだむずかしいから、おとなしくおうちでかめんらいだーごっこやってな?
- 290 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 01:41:24 ]
- ここまで俺の自演
- 291 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 02:52:50 ]
- すっかりキチガイ坊やになつかれたな
どんな糞にも丁寧に罵声を浴びせた結果がこれだ
- 292 名前:デフォルトの名無しさん [2009/02/10(火) 03:42:52 ]
- 宿題スレでもマルチしてた香具師だな
- 293 名前:デフォルトの名無しさん [2009/02/10(火) 10:21:37 ]
- WM_CHAR他WM_IME_CHARから送られてきた文字をUTF-8に変換して保持し、ウィンドウ内に描画するには
WM_CHAR.WM_IME_CHAR ↓ 文字コード変換 ↓ ☆配列等へ保持 ↓ ☆から文字コード変換 ↓ ウィンドウ内に描画 しか方法はありませんか?
- 294 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 10:25:42 ]
- WM_CHAR時にはバッファに保存とInvalidateだけして後でまとめて描画だな
- 295 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 12:45:22 ]
- >>293
9xを捨ててUNICODEにしても良ければ、 WM_IMECHAR無視してWM_CHAR 1つでも困らないと思う。 もっと言えば、中でUTF-8にして保持するなら、WM_CHARよりも UTF-32でやってくるWM_UNICHAR 1つのほうがやりやすいはず。ただしXPからだけど。 それとIMM API関数などを使って変換文字列を取得するのとどっちがいいかは微妙なとこだが。
- 296 名前:デフォルトの名無しさん [2009/02/10(火) 14:17:39 ]
- MDIアプリで、フォーカスを持ってる子ウィンドウのハンドルを取得するにはどうすればよいでしょうか。
GetActiveWindow()、GetForegroundWindow()的なのがあるとありがたいのですが…
- 297 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 14:23:54 ]
- >>296
WM_MDIGETACTIVE
- 298 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 14:32:53 ]
- >>297
どうもです。 ついでにお願いします。そのメッセージの結果をAPIで取りたいのですがどう呼べばよいでしょうか。 プラグイン的なものからなのでAPIを呼ぶしかできないのです。
- 299 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 14:34:25 ]
- >>298
SendMessage
- 300 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 14:49:38 ]
- 釣れた釣れた
- 301 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 14:54:00 ]
-
___ ━┓ / ― \ ┏┛ / (●) \ヽ ・ / (⌒ (●) / /  ̄ヽ__) / /´ ___/ | \ | |
- 302 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:38:01 ]
- >>296
HWND hActiveWnd; // hClient を Client Window Handle として、 hActiveWnd = (HWND)SendMessage( hClient, WM_MDIGETACTIVE, 0, 0); で、自分は使っている。hClient の意味が分からないなら、「猫でも 分かるプログラミング」を見るように。コードは古いが、意味合いは 分かるでしょう。
- 303 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 18:54:26 ]
- >送られてきた文字をUTF-8に変換して保持し
どーしても保持する必要があるなら仕方ないが、オレなら必要になった時にUTF-8に変換する
- 304 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 22:57:38 ]
- UpdateLayeredWindowでULW_ALPHAとULW_COLORKEYを同時に使うって出来ないんですか?
それがダメでも、ピクセル単位で完全透過部分と半透過部分を共存させた1つのウィンドウを作る方法ってありますか?
- 305 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:03:46 ]
- >>304
何のためにHDCとBLENDFUNCTIONが引数にあるのかを考えれば判るだろ
- 306 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:28:51 ]
- >>304
アルファ値が0のピクセルはリージョンのように完全に透過するが。
- 307 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 23:36:00 ]
- >>108が分る人いませんか?
- 308 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 00:06:04 ]
- いません
- 309 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 00:59:16 ]
- >>306例えば完全透過がそのあるビットマップがh_bmpに入ってるとして、どう呼び出したらうまく透過するのか
見せてもらえませんか?家のではどう見ても透過してないんですが・・・ ちなみにこうやってます。 WS_EX_LAYEREDスタイルを追加; HDC hdc = ::GetDC(NULL); my_hdc bmpdc = ビットマップのDC; POINT zero = {0,0}; SIZE bsize = {画像の幅,高さ}; DWORD flags = ULW_COLORKEY|ULW_ALPHA; COLORREF colkey = RGB(255,255,255); BLENDFUNCTION bf; bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0; bf.AlphaFormat = AC_SRC_ALPHA; bf.SourceConstantAlpha = 255; ::UpdateLayeredWindow(ウィンドウハンドル,hdc,ウィンドウの左上のPOINT*,&bsize,bmpdc,&zero,colkey,&bf,flags); ::ReleaseDC(NULL,hdc);
- 310 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:25:29 ]
- WS_EX_LAYERED | WS_EX_TRANSPARENT
- 311 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:28:28 ]
- >>309
UpdateLayeredWindow は obsolete SetLayeredWindowAttributes を使おう
- 312 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:30:21 ]
- ttp://azumaya.s101.xrea.com/wiki/index.php?%B3%D0%BD%F1%2FWin32%20API%2F%A5%EC%A5%A4%A5%E4%A1%BC%A5%C9%A5%A6%A5%A3%A5%F3%A5%C9%A5%A6%A4%F2%BA%EE%A4%EB
ttp://msdn.microsoft.com/ja-jp/library/ms997507.aspx
- 313 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:45:21 ]
- > UpdateLayeredWindow は obsolete
(゚Д゚)ハァ?
- 314 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 01:58:38 ]
- >>108
それっぽい情報というとこれくらいかなあ social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/5cc9a772-5174-4180-a1ca-173dc81886d9/ 結局原因はよくわからないみたいだけど、 もし、同じ現象なら、文字セットをマルチバイト文字セットにするか、 targetver.h 内の _WIN32_WINNT の定義を #define _WIN32_WINNT 0x0500 にしてやると回避できるみたいだけど
- 315 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 02:04:06 ]
- とある知らないEXEがUNICODEビルドなのかANSIビルドなのか区別する方法ってありますか?
- 316 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 02:13:49 ]
- インポートしてるAPIを見ればある程度推測できる
- 317 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 02:21:56 ]
- そんなもん区別して何がしたいんだ
- 318 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 02:33:22 ]
- あとはIsWindowUnicodeとか、EXE(モジュール)単位ではないけど。
- 319 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 02:54:12 ]
- APIにしまつ
- 320 名前:デフォルトの名無しさん [2009/02/11(水) 08:55:22 ]
- >>315
メモ帳で開いて確認しる 終わったら上書き保存をお忘れなく\(^o^)/
- 321 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 10:17:23 ]
- >>315
最近、ANSIビルドのソフトをいじって、キー入力・表示・コピペはUnicodeに 対応させたものを作った。Unicodeなファイル名は扱えないが、これって 何ビルドだろうね。
- 322 名前:デフォルトの名無しさん [2009/02/11(水) 10:29:00 ]
- >>321
ANSIビルドでかまわない。 __wargv
- 323 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 10:37:04 ]
- >>310それはマウスヒットテストに使うのでは?
>>311実際にどうなります?画像に合わせてウィンドウの形を変えたいんですが・・・? >>312それらはもう見てその通りにやってるつもりだったんですが・・・うーん
- 324 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 10:52:54 ]
- >その通りにやってるつもりだったんですが
「プログラムは、間違いなく自分がコーディングした通りに動く。 しかし、それが自分が想定した通りであるとは限らない。」
- 325 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 10:54:00 ]
- >>322
それが判断基準? あ、もちろんIsWindowUnicodeはTRUE返すから。じゃないとWM_CHARで Unicodeが受け取れない。APIもA/W両方インポートしてる。(が、Win9xでも動く。)
- 326 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 11:11:56 ]
- >>324そんなこと言うくらいなら指摘して欲しいんですが?
- 327 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 11:23:27 ]
- うぜぇ
- 328 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 11:54:21 ]
- やってるつもりだったんならそれでいいじゃん。解決
- 329 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 13:37:29 ]
- どう考えてもここは324の方がウザイと思うが
お前それ言いたかっただけちゃうんかと
- 330 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 13:46:05 ]
- 反応してる奴もうざい
- 331 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 14:32:40 ]
- >>329
例の基地害だろ、もう構うな
- 332 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 14:48:10 ]
- >>325
ハイブリッド、でいいんじゃね?まあ俺もそういうの作ったことあるけど。 例えばXPのEditコントロールはANSIでもUnicodeの動作をするバグがあるので Win9xでも動くように作ろうとすると、全体的にはANSIだけど部分的にA/W切り替える必要性が出てくるんだよな。 というかこのバグを無視してANSIアプリのくせにVisualStyle対応してるソフトが多すぎ。
- 333 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 16:01:14 ]
- >>332
バグについて詳しく
- 334 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 16:14:02 ]
- ググレカス
- 335 名前:カイロ mailto:sage [2009/02/11(水) 16:24:29 ]
- シリアル通信の受信プログラムがうまく出来ません。。
<やりたいこと> COM3:送信側で、Tera Termで、文字を送信 COM4:受信側 コマンドプロンプトで、作ったプログラムを動かして受信し、受信した文字を表示する。 <受信プログラムの流れ> @COM4をオープン A通信設定 B受信するまで、待つ C受信したら、文字を表示。 ●受信するまで、待つことが出来ず、フフフ・・・といった文字列が 表示されてしまいます。 どうしたら、受信するまで待つように出来るのでしょうか?
- 336 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 16:57:44 ]
- >>335
フフフ・・・
- 337 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:00:41 ]
- これはウゼェwww
- 338 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:00:44 ]
- 待つって日本語で書かれても。
コードさらせないのか、待ってるとこだけでも。 フフフ・・はデバッグ環境での未初期化のバッファ
- 339 名前:カイロ mailto:sage [2009/02/11(水) 17:11:00 ]
- 返事ありがとうございます。
以下コードの抜粋です。 ReadFileの第5引数(最後の引数)にNULLを入れると、受信するまで待つんだと思ったんですが、 送信していないのに、受信した文字列が表示されます。 ☆ポートを開いているところ int errorCode; HANDLE handle; handle = CreateFile("COM4", // ファイル名: COMポート名を指定 GENERIC_READ | GENERIC_WRITE, // アクセスモード: 読み書き 0, // 共有モード: 共有しない NULL, // セキュリティ記述子: 取得したハンドルを子プロセスへ継承しない OPEN_EXISTING, // 作成方法: ファイルを開いたときに指定したファイルが存在していなければエラーとする FILE_FLAG_OVERLAPPED, // 非同期 I/O を許す//☆同期にしてみるFILE_ATTRIBUTE_NORMAL, // ファイル属性: 特に指定しない NULL // テンプレートファイルのハンドル: 特に指定しない ); ☆通信設定するところ。(省略) ☆受信するところ。 char data[14]; DWORD dwRead; DWORD dwErrors; COMSTAT ComStat; ClearCommError(handle, &dwErrors, &ComStat); ReadFile(handle, data, sizeof(data), &dwRead, NULL); printf("受信した文字列%s", &data);
- 340 名前:デフォルトの名無しさん [2009/02/11(水) 17:12:28 ]
- IPアドレスコントロールから値を取得するには
どんな関数を使えばいいですか?IPは入力欄が4つあるので、どうやって 取得するんですか?
- 341 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:15:12 ]
- >>339
dwReadを確認してないみたいだけど?
- 342 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:15:33 ]
- >>339
エラーチェックぐらいしろよ
- 343 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:15:50 ]
- IPM_GETADDRESSとか無かったっけ?
- 344 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:16:14 ]
- 343は>>340な
- 345 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:17:12 ]
- >>340
Win32 and COM Development - User Interface - Windows Controls - Control Library とりあえず、WindowsSDKのドキュメントの上記辺りを一通り目を通しておけ。
- 346 名前:デフォルトの名無しさん [2009/02/11(水) 17:20:44 ]
- >>345
面倒だから教えてよ
- 347 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:22:54 ]
- やだよばか
- 348 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:26:28 ]
- >>339
待機とは関係ないんだが FILE_FLAG_OVERLAPPEDを指定したら ReadFileの最後はNULLじゃ駄目なんじゃないか
- 349 名前:カイロ mailto:sage [2009/02/11(水) 17:28:52 ]
- >341
>dwReadを確認してないみたいだけど? dwReadは、読み取ったバイト数が入るんですよね。 どうやって確認すればいいのでしょうか? 聞いてばかりで、すみません。
- 350 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:29:01 ]
- 関係なくはないけどな
- 351 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:29:35 ]
- >>348が真理
つかGetLastErrorぐらいしろ
- 352 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:32:44 ]
- つーかウォッチ式に @err,hr を入れとけ
- 353 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 17:38:10 ]
- >>349
dwReadが0だったらどうなると思う?
- 354 名前:カイロ mailto:sage [2009/02/11(水) 17:46:09 ]
- >>348
>待機とは関係ないんだが >FILE_FLAG_OVERLAPPEDを指定したら >ReadFileの最後はNULLじゃ駄目なんじゃないか 調べてみたら、通信プログラムでは、 FILE_FLAG_OVERLAPPEDではなく、 属性なしの FILE_ATTRIBUTE_NORMALを指定するのが正しいようですね。 >>353 >dwReadが0だったらどうなると思う? 0だったら、まだ、受信してない状態ってことですか?
- 355 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:01:04 ]
- FILE_FLAG_OVERLAPPEDはブロッキングしたくない時に使うんだよ。
- 356 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:08:16 ]
- >>354
dataを1バイトにして、dwReadが0以外のときに表示するようにしてみたら?
- 357 名前:カイロ mailto:sage [2009/02/11(水) 18:49:06 ]
- >>356
>dataを1バイトにして、dwReadが0以外のときに表示するようにしてみたら? やってみました。 以下、修正後のソースの一部です。 ☆ポートを開いているところ handle = CreateFile("COM4", // ファイル名: COMポート名を指定 GENERIC_READ | GENERIC_WRITE, // アクセスモード: 読み書き 0, // 共有モード: 共有しない NULL, // セキュリティ記述子: 取得したハンドルを子プロセスへ継承しない OPEN_EXISTING, // 作成方法: ファイルを開いたときに指定したファイルが存在していなければエラーとする FILE_ATTRIBUTE_NORMAL, // ファイル属性: 特に指定しない NULL // テンプレートファイルのハンドル: 特に指定しない ); ☆受信するところ。 char data[1]; DWORD dwRead; DWORD dwErrors; COMSTAT ComStat; while(1) { ClearCommError(handle, &dwErrors, &ComStat); ReadFile(handle, data, sizeof(data), &dwRead, NULL); if(dwRead != 0) { printf("%c", data[0]); } }
- 358 名前:カイロ mailto:sage [2009/02/11(水) 18:49:39 ]
- 続き・・・
なんとか、待機するところまでは、うまくいきました。 Tera Termで入力した文字が、表示されました。 ありがとうございます。 ですが、表示された文字が文字化けしていて、以下のような感じで、表示されます。 解決方法をどなたか、教えてください。 Bャツ・・・・・
- 359 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:55:07 ]
- ClearCommErrorって毎回チェックしないといけないんだっけ?
- 360 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:57:56 ]
- マルチバイト文字を送信してるように見える
- 361 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 18:59:05 ]
- ヌルターミネートしてないからだろ
受信したバイトの最後にゼロ入れとけ
- 362 名前:360 mailto:sage [2009/02/11(水) 19:01:20 ]
- マルチバイト文字じゃなくて、シングルバイトじゃない文字
- 363 名前:カイロ mailto:sage [2009/02/11(水) 19:15:15 ]
- 自己解決いたしました!!
テラターム側のボーレートの値が受信プログラムで設定した値と違っていたので、 文字化けしていたようです。 同じ値にしたら、ちゃんとした文字が出るようになりました!! これで、すべて解決しました!! みなさま、どうもありがとうございました。 数ヶ月前から、出来ずに困っていたのですが、 なんとか、動くものが出来ました。 よかったです。(TーT)
- 364 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:16:25 ]
- まあオメデトウ
そして死ね
- 365 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:22:47 ]
- >>364
死ねは酷くね? せめて成仏しろとか永眠しなさいと地獄に落ちろ、位にしといてやれよ。
- 366 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:34:18 ]
- フフフ…
- 367 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:34:44 ]
- ウッゼ
- 368 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 19:49:07 ]
- 釣れた釣れた
- 369 名前:デフォルトの名無しさん [2009/02/11(水) 19:56:01 ]
- >>314
ありがとうございます!、出来ました。 #define _WIN32_WINNT 0x0500に変更で解決しました。 本当にありがとうございました。
- 370 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:27:20 ]
- 相手のボーレート自動で判断してあわせてくれるシリアル通信ソフトあるけど
合ってるかどうかってどうやって判断してるんだろう
- 371 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 20:31:04 ]
- IME の前後参照変換に対応するため、WM_IME_REQUEST の IMR_DOCUMENTFEED を
拾うルーチンを書きました。が、XP や Vista + ATOK なら期待通り動作するのですが、 Vista + MS-IME では全く機能しません。 TSF 絡みっぽいところまでは推測がつくのですが、その先がさっぱりです。 そのあたりの仕組みについて記述している資料があれば、教えてください。
- 372 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:11:37 ]
- >>370
分からんけど。 例えば、相手が送ってくるデータが分かっていれば、 ボーレートを色々変えてみて正しく読めるのを探すとか?
- 373 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:17:10 ]
- >>314>>369
それで解決したなら、後からメンバが増えたせいだな。 msdn.microsoft.com/en-us/library/bb760256.aspx _WIN32_NTが0x501以上だとlpReservedメンバが追加されるが、 これはNULLじゃないといけないと書いてある。 ところが、108のコードではそれが欠けていたのでうまくいかなかった。 まあ、良くある話だ。_WIN32_NTほかバージョン定義をきちんと定義して自己防衛するしかない。
- 374 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:20:27 ]
- NULLじゃないといけないReservedなメンバをわざわざ追加して互換性無くすとか
MSが何をしたいのかさっぱり分からん
- 375 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:34:31 ]
- >>371
IMR_DOCUMENTFEED固有の話はないけれど。 d.hatena.ne.jp/NyaRuRu/20070308 d.hatena.ne.jp/NyaRuRu/20070309
- 376 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 21:53:34 ]
- >>373
そんな単純な話でもない もともと>>314の参照先はちゃんと0初期化してて マルチバイトでは動作するのに、Unicode では 動作しないって質問だし、自分でやってみても うまくいかなかった OSはVistaなのでOS側の問題とかはないはずなんだけど
- 377 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:03:12 ]
- >>375
ありがとうございます。なるほど、テキストストアっぽい単語が関係ありそうですね。
- 378 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:07:09 ]
- >>376
うおすまん、リンク先まで読んでいなかった。
- 379 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:13:08 ]
- >>376
manifestが無くてcomctl32.dll ver5系を使ってたってオチだろ 多分ver5系はcbSizeにTOOLINFO::lpReservedのサイズを含めてはいけない
- 380 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:30:45 ]
- >>379
まさにそのとおりでした なんか昨日から気になってたんだけど、ようやくスッキリした ありがとう
- 381 名前:デフォルトの名無しさん mailto:sage [2009/02/11(水) 22:33:44 ]
- 結局、TOOLINFO::lpReservedってそういう時わざと失敗させるために、構造体のサイズを変えるべく入れただけのような気がしてきた
NULL以外の適当な値を入れても動くみたいだし
|

|