- 1 名前:デフォルトの名無しさん mailto:age [2007/09/08(土) 21:41:22 ]
- スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/)の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
- 281 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:23:21 ]
- >>280
「あはは死ね」だと思った。
- 282 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:42:50 ]
- >>279
あはは死ね
- 283 名前:262 mailto:sage [2007/09/18(火) 02:02:37 ]
- >>279
猫は「apiの使い方の外枠をつかむ」目的に限定した方がいいです。 コードは問題ありすぎ……。 (コーディングに関しては、オライリーの牛本を参照してください。) ページが見づらいのは「書籍を買ってくれ」って事なのかね?
- 284 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 02:10:05 ]
- >>262は死ね
- 285 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 02:50:39 ]
- みんな死ななくていいよ
- 286 名前:デフォルトの名無しさん [2007/09/18(火) 04:08:18 ]
- ツールバーのちらつき対策で質問があります。
ウィンドウサイズを変更するとツールバーがちらついて困ってます。 メインウィンドウは仮想画面化してるのですが、ツールバー部分はHDCがなくてちらついてしまってます。 書き換えタイミングを0.1秒単位にづらすとかはやりましたが軽減できてもちらつき自体をなくす事はできませんでした。 どういった解決方法があるでしょうか?ご教授お願いします。
- 287 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 04:10:29 ]
- 子ウィンドウをクリッピング領域からはずす
- 288 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 04:14:22 ]
- 背面消去をなくす
- 289 名前:286 [2007/09/18(火) 04:30:28 ]
- >>287
すみません。クリッピング領域から外すということは書き換えないってことでしょうか。。 今のサイズ変更部分はこうなってます。 case WM_SIZE: MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE); break; 出来ればもう少し詳しくお願いできないでしょうか・・・orz
- 290 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 04:32:17 ]
- ツールバー作成時に
WS_CLIPCHILDRENとWS_CLIPSIBLINGSを追加 試してない
- 291 名前:290 mailto:sage [2007/09/18(火) 04:34:01 ]
- ごめん超勘違いしてた
俺のは忘れろ
- 292 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 10:27:18 ]
- >>286
うろ覚えだが メインウィンドウのクラスのスタイルから、CS_HREDRAW、CS_VREDRAWをはずすか、 またはメインウィンドウのWM_ERASEBKGNDで何もしないように対処すればよいと思われ
- 293 名前:286 mailto:sage [2007/09/18(火) 10:33:24 ]
- >>292
既にそれは、やってしまってるんです。。 それでもちらつくんですよね。。 今も悩んでいて、面倒臭いですが一つ一つのボタンにハンドルを持たせればクリアできるのはないかと考え、 プログラム作成中です。
- 294 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 10:50:11 ]
- 気になるのなら自前で描くしかない
- 295 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 10:59:43 ]
- ちらつくのは所詮描画の問題なので、普通に考えれば
メインウィンドウの背景(WM_ERASEBKGND)、メインウィンドウの描画(WM_PAINT)、 ツールバーの背景、ツールバー自身の描画 のいずれかで無駄な背景初期化を行っているくらいしかないと思うのだが メインウィンドウの仮想画面化とかツールバー部分のHDCって何? あとボタンにハンドルに持たせるとかも意味が分からない ツールバーの描画で何か特別なことやってる?
- 296 名前:286 mailto:sage [2007/09/18(火) 11:13:46 ]
- >>295
ツールバーにHDCみたいなのあればメモリ上にメモリDC取ってちらつき対策できないかと考えてました。 ハンドルというかボタン一つ一つにHWND型で持たせてクリアしようかと。。ツールバーの場合、ツールバーのHWND 単体でサイズ変更してるため、ちらついてるんじゃないかと考えています。
- 297 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 11:42:52 ]
- >>296
ツールバーはOS標準のコントロールなんだから単体で対処可能なちらつき対処くらいやってるだろ そんなことに力をそそぐくらいなら、>>292あたりもう一度見直したほうがいいのでは? スタイル設定したつもりが反映されていないとか メッセージハンドラを定義してみたけど名前が違ってたりして呼び出されてないとか 実はメインウィンドウの子のビューがツールバーと重なっていて、ビューの背景消去が問題だとか
- 298 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:03:26 ]
- 標準コントロールはちらつき対策なんて元から考えていないが、
対処くらいやっているだろうとか考えられてしまうそのおめでたい頭がうらやましい。
- 299 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:26:19 ]
- そもそもツールバーってちらついたっけ?
VC2005+MFC+WinXPSP2だと、ToolBarのみとReBar+ToolBarの構成で作れるが、 どちらもちらつきは発生しなかったぞ。 昔のMFC自前実装の奴(ペイントとか)はちらつくけど。
- 300 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:31:11 ]
- >>298
いや言い方はよくなかったもしれないけど、そんな高度なことを議論する つもりはなくて、普通メインウィンドウのリサイズで気になるほどちらついたり はしないんじゃないのってことを言ったつもりだった そうでないと、ツールバーを使う人は全員描画のカスタイズをしないといけなく なるけど、自分でもそんなコードは書いたことがないし、それで特に気になったこともない >>286の気にしているのがどの程度なのかは知らないので断言はできないけど
- 301 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:33:25 ]
- ちらつく理由を考え、それがあってるか検証し、
それを元に対策を考える。
- 302 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:51:23 ]
- >>299
言われるまで気づかなかったが、最近の標準コントロールはちらつかないな。 Explorerのウィンドウをムキになってリサイズしてみたが悔しいほどちらつかないw ツールバーよりウィンドウの幅が狭くなったときに出る>>のマークだけがちらついてる。
- 303 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:02:01 ]
- チラリズム
- 304 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:39:06 ]
- WM_SIZE時、TOOLBARにWM_SIZEを送る
クライアント部分は子ウィンドウにしてToolbarと重ねない
- 305 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 13:58:03 ]
- 専門用語でフリッカーと言うんだよ
- 306 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 14:26:04 ]
- >case WM_SIZE:
>MoveWindow(hTool, 0, 0, LOWORD(lParam), 50, TRUE); >break; なんかこの辺が間違ってる気が
- 307 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 14:30:39 ]
- >>298
死ね
- 308 名前:286 [2007/09/18(火) 19:24:40 ]
- >>306
サイズ変更時に書き換えなさいって命令なので、その部分をカットすればちらつきませんが、 その場合、サイズ変更時ツールバーが変になってしまうので・・・。 検証の結果、ボタン一つ一つにHWNDを持たせるか、>>294さんの言うようにオーナードローで描くか。 現在は、この2択です。もっと簡単にできないか、考えて見ますね。
- 309 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:33:51 ]
- >>308
あほは死ね
- 310 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:51:28 ]
- MoveWindow の最後の引数ってなんだっけ。
- 311 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:53:58 ]
- ∩_
〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) /
- 312 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:56:22 ]
- >>310
ググれよ。カス。
- 313 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:34:30 ]
- >>310が一番的確な解決方に導いていると思うぞ
- 314 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 20:38:02 ]
- ∩_
〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ <こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) / >>313 >>308 最後の引数には気付いている。 おかしいのは最後の引数ではない。
- 315 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:18:15 ]
- そもそもツールバーをAPIで作ったときにMoveWindowなんて書いた記憶が無い件
- 316 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:55:03 ]
- そもそもメインウィンドウは仮想画面化してるとか
ツールバー部分はHDCがないとか言う不思議君だから リサイズでMoveWindowくらいするだろう
- 317 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 23:47:20 ]
- 検証もせずに批判ばかりする奴より、検証しようと努力してる奴の方が俺は好感を持つ。
- 318 名前:182 mailto:sage [2007/09/18(火) 23:51:20 ]
- すみません
GetLocaleInfo() でファイルの言語を取得できるようになったんですが、 .net で作ったexeの場合、自分で取得すると「日本語」が返ってくるんですが 「ファイルのプロパティ」だと「ニュートラル言語」になってるんですが、 どうすりゃ取れるんでしょうか。
- 319 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 23:57:10 ]
- >>317
正解が既に>>304で出てるのに無視されてるからじゃないの? >>308 ツールバーのリサイズはMoveWindowでなく、WM_SIZEを直接SendMessageする ttp://msdn2.microsoft.com/en-us/library/aa932759.aspx
- 320 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:38:22 ]
- >>319
MoveWindowはダメとかSendMessageとか命令の問題じゃない気がするが・・・ 試しに俺が検証してみた。 * ツールバーを作成する */ hTool = CreateWindowEx( WS_EX_TOOLWINDOW, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | WS_THICKFRAME, 0,0,0,0, hWnd, (HMENU)IDR_TOOLBAR, hInst, NULL); ボタン略。 >case WM_SIZE: >SendMessage(hTool, WM_SIZE, wParam, lParam); >break; ちらついてるじゃねーか。orz
- 321 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:45:18 ]
- >>320
俺も今試してみたが(WinXP SP2)、特にちらつきはないぞ? //ツールバー作成部分(ボタンは2個) hToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE, ID_TOOLBAR, 2, hInst, IDB_TOOLBAR, tbb, 2, 0, 0, 16, 15, sizeof(TBBUTTON)); //他は省略 ベースはVC2005のWin32アプリのウィザード生成物で、ツールバー処理追加以外に以下を修正 ×wcex.style = CS_HREDRAW | CS_VREDRAW; ○wcex.style = 0; ×wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); ○wcex.hbrBackground = (HBRUSH)NULL; なお、WM_SIZEの追加コードは (a)SendMessage(hToolBar, WM_SIZE, wParam, lParam); (b)MoveWindow(hToolBar, 0, 0, LOWORD(lParam), 50, TRUE); の両パターンを試したがどちらも問題はなし
- 322 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:12:26 ]
- >>321
ちらつきの考え方の違いかな。。 ウィンドウの枠、右部分を(マウス左)ドラッグして左右に振ってみて欲しい。 ツールバーのボタンがちらついてない? 俺もCreateWindowExとCreateToolBarExだと違いがあるのかと思って両方試してみたが 両方ともちらつかないか?俺も気になってきたw
- 323 名前:322 mailto:sage [2007/09/19(水) 02:27:21 ]
- 補足
ちらつきが分かりやすいように、ラージサイズのアイコン使用中。
- 324 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:28:22 ]
- ちらしの裏にでも書いてろ低脳
- 325 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:31:20 ]
- Vista使えばちらつきなんて気にならん
- 326 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 02:34:06 ]
- >>322
OSは何? こちらで試したプログラムでは、メニューの文字はわずかにちらつくが、ツールバーは それよりずっと安定していて目で認識できる範囲のちらつきはない ボタンのデザインはグレーの背景に手書きで1、2と書いてあるだけなので 目立ちにくいかもしれないが、少なくともメニューと同じくらいちらついてくれれば確実に分かる
- 327 名前:322 mailto:sage [2007/09/19(水) 02:40:27 ]
- >>326
環境 (WinXP SP2) ボタンのデザインは、既存のBMP。フォルダアイコンのラージサイズを貼り付けてる。 tbBmp.hInst = HINST_COMMCTRL; tbBmp.nID = IDB_STD_LARGE_COLOR; /* 標準の大サイズのアイコンを使う宣言
- 328 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 09:38:55 ]
- ちらつくのはいちいち消して(バックグラウンド塗りつぶし)描くからだよ
もともと全部描きなおすタイプならけさんでいい
- 329 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:07:36 ]
- 再度試してみた
背景消去を行わない(ウィンドウクラスの背景ブラシをNULLにするか、WM_ERASEBKGNDを無視) とした場合でも、クラスのスタイルにCS_HREDRAW | CS_VREDRAW が残っていると、ボタン部分が かすかにちらつく(メニュー文字のちらつきの半分程度) >>322や>>286の言ってるちらつきがこれってことはないのか?
- 330 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:19:23 ]
- WS_CLIPCHILDRENしてるか?
- 331 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:39:11 ]
- Visual Basic 6.0ってありましたよね?
あの言語でIsNumericって関数があったんですけど、 あれをVC++側で実装する場合、 OLE関連の関数群に存在するのでしょうか? もし、存在するなら、その名称を教えていただきたいです。
- 332 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 17:44:40 ]
- >>331
市ね
- 333 名前:182 mailto:sage [2007/09/19(水) 18:06:08 ]
- >>318
VerLanguageName() で自己解決しました。 LangID は LocaleID の下位4バイトでした。 帰ります。
- 334 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:19:25 ]
- >>331
VariantChangeTypeで数値関連の種類に変換できるか試せば、 同じような動作になると思う。
- 335 名前:デフォルトの名無しさん [2007/09/19(水) 21:14:29 ]
- Win98からVistaまで動作するプログラムを作ろうと思ってます。
Vistaのフォルダ書き込み権限を取得するために、ConvertStringSidToSidを 使っているんですが、Win98でこのプログラムを動作させようとすると ConvertStringSidToSidがないとエラーになってしまいます。 ConvertStringSidToSidを使いつつ、両方のOSで動作するようにするためには どうすればいいんでしょうか?
- 336 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:16:52 ]
- >>335
LoadLibrary, GetProcAddress
- 337 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:17:21 ]
- むり
- 338 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 21:20:28 ]
- >>336
ありがとうございます。 試してみます。
- 339 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:23:04 ]
- > Win98からVistaまで動作するプログラムを作ろうと思ってます
ムダな努力だと思うがどうよ? 依頼主からの指示?
- 340 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:51:17 ]
- 98-Me
2000-XP Vista と3種類のリリースに分けて作る方が得
- 341 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:02:59 ]
- 最初にOSのバージョン調べて、それを元に挙動変えるのはだめなん?
- 342 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:10:52 ]
- 98でSIDとかあったっけ
- 343 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:18:23 ]
- > Win98からVistaまで動作するプログラムを作ろうと思ってます
Win16で作れば、Win3.1から動くのが作れます。 冗談はともかく、Win98,Me対応は面倒な筈です。 OSのバージョン依存部分に1枚皮を被せて、呼び分ける必要があります。 OS依存部分を別DLLにして、LoadLibraryするとか。
- 344 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 02:03:21 ]
- >>343
> Win16で作れば、Win3.1から動くのが作れます。 残念ながら64bit版Windowsで動きません。
- 345 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:09:00 ]
- .Netでつくる
- 346 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:51:25 ]
- Win95って.netインストールできないんじゃなかった?
- 347 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 03:53:24 ]
- >>343はWin98からと言ってるから問題ない
- 348 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 04:19:38 ]
- まだ98つかってる香具師いるのか
- 349 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:48:08 ]
- 買い換えるまでWin98という奴はいるだろ
- 350 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 06:40:37 ]
- オレは win98 + winXP。去年から win98 -> vista と思っているが、評判が
よくないので、ママ。win98 機は gateway なんだが、keyboard に慣れていて ホレ今も、それと coding にも使っている。hardoff で見つけた 6GB HDD で 動かしていて、元の HDD は後生大事にとってある。時々換装しないといけない が、今年はやってない。フラットケーブルが煎餅みたいに割れそう。
- 351 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 06:44:20 ]
- Win98をWebに繋ぐなんて最早犯罪だろ。
- 352 名前:デフォルトの名無しさん [2007/09/20(木) 07:09:11 ]
- ダブルバッファリングのコードを書いたつもりでしたが、上手くいきません。
InvalidateRect()関数によってWM_Paintが要請されるまで、描画が行われない予定 なのですが、InvalidateRect()を呼び出さずにもWM_Paintが発行されているようで、 TextOutによる文字列が描画されてしまいます。ご教授お願いします。 ttp://sakuratan.ddo.jp/uploader/source/date52297.txt
- 353 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:21:51 ]
- >>335
もう見てないかもしれんが、俺のプログラムでは同様の事例で リンカーオプション「/DELAYLOAD」を使っている
- 354 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:44:06 ]
- 見てるよ
ずーっと見てる 君を見てる
- 355 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:48:07 ]
- 質問に答えろぉぉぉおおお!
- 356 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:50:29 ]
- >>355
m9(^Д^)プギャー アホスギ
- 357 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:52:40 ]
- >>352
せいぜい、WM_PAINT内でii.hScreenを使っていいかどうかを見る フラグでも用意しておくしかないと思う。
- 358 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:55:20 ]
- >>352
とりあえず、ダブルバッファがどうとか考える前にメッセージを理解してくれ
- 359 名前:352 mailto:sage [2007/09/20(木) 08:03:57 ]
- サンプルがわるかたかな・・・。
hScreenに描画している限り無効領域は発生せず、 WM_Paintは発行されないと思ってたんだけど、その認識が間違ってるのかな。
- 360 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:05:23 ]
- >>359
fとWindowProcは同じスレッド?
- 361 名前:352 mailto:sage [2007/09/20(木) 08:07:38 ]
- >>360
fという関数は、WM_Createで行うとエラーがでる部分を退避させるため だけに暫定処置として作りました。
- 362 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:20:11 ]
- ああすまん、WM_CREATE内から呼んでいるね。
ってそれだとWM_CREATE内から呼んでいることに変わりはないだろ。
- 363 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:26:04 ]
- どう見てもAPI以前のレベルです、本当にありがとうございました。
- 364 名前:352 mailto:sage [2007/09/20(木) 08:31:52 ]
- 一応、猫でもわかるのサンプルみて作ったつもりなんだけど、
なんで描画されるんだろ。
- 365 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 08:40:02 ]
- >>359
ウィンドウ作った時点じゃ、最初から無効領域
- 366 名前:352 mailto:sage [2007/09/20(木) 09:32:48 ]
- >>365
なるほど!動作確認の仕方が間違っていたのですね。 おかげさまで問題を解決することができそうです。 ありがとうございました。
- 367 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 09:34:31 ]
- 重なっている上のウィンドウが移動したり、新しくウィンドウが作られたり、
そのウィンドウがリサイズしたりして、新たに描画しなければならないところが無効領域。 InvaridateRectは、そういった条件にかかわらず無効領域にするAPIだから。
- 368 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:21:27 ]
- >366
この手のタイプは、「できませんでした。教えてください。」ってまた来るんだよな・・・orz
- 369 名前:デフォルトの名無しさん [2007/09/20(木) 13:29:37 ]
- 教えて頂きたいのですが、MDIにおいて、
親ウインドウと子ウィンドウの透過率を変えることは可能でしょうか? 親ウィンドウに色のついた透明な子ウィンドウを重ねたいのです。 (一旦メモリデバイスにコピーした後、AlphaBlend()により色を付ける方法は 成功しました。) SetWindowLong(),UpdateLayeredWindow()などが関連してくると思うのですが。
- 370 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 13:40:03 ]
- 子ウィンドウをレイヤードウィンドウすることはできない
- 371 名前:デフォルトの名無しさん [2007/09/20(木) 13:49:17 ]
- >370
やはり、そうでしたか。WS_CHILDとWS_EX_LAYEREDのスタイルを合わせると ウィンドウが作れないんですよね。 ここから推測するに、親ウィンドウ(透過率255)、 子ウィンドウ(透過率127)のようなことも出来ないとなりますね。 現在のAlphaBlend()とUpdateLayeredWindow()を上手く使ってって方法を 取っていきます。
- 372 名前:デフォルトの名無しさん [2007/09/20(木) 20:46:07 ]
- GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、
アプリのウィンドウがアクティブでないときにGetKeyboardStateすると、 上手く情報を取得してくれません・・・、解決するにはどうすればよいでしょうか? ウィンドウをアクティブにしたフリをして、GetKeyboardStateを動かすこととか出来ないですかね? キー入力はフックしていて、キーボードでキーが入力されると、 アプリのウィンドウがアクティブでないときでも、 イベントが呼ばれてGetKeyboardStateが走る仕組みです。 動作・開発環境は以下の通りです。 OS : WindowsXP SP2 .net framework 1.1 言語 : C# 宜しくお願い致します。
- 373 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:49:24 ]
- >GetKeyboardStateで、現在のキーボードの状態を取得しているのですが、
ドキュメントにちゃんと書かれているとおり、 GetKeyboardState は現在のキーボードの状態を取得するAPIではありませんので、 別のやり方、たとえば GetAyuncKeyboardState を使うなどに変えた方が良いでしょう。
- 374 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 20:50:17 ]
- >>373
GetAsyncKeyboardState
- 375 名前:デフォルトの名無しさん [2007/09/20(木) 21:05:51 ]
- >>373-374
GetAsyncKeyStateですよね? 試してみます。ありがとうございました!
- 376 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 21:30:16 ]
- 335です。
>>353さんの方法で出来ました。 ありがとうございました。
- 377 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:00:05 ]
- WinSock関連での質問です。
TCPによる接続でconnection関数を利用していますが、 対象のホストを見つけられない場合は、 一定時間処理が停止しています。 これの対処法を、皆さんはしていますか? スレッド側に投げて対処? それとも、connectionよりいい関数があるんでしょうか?
- 378 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:28:19 ]
- 非ブロックソケット
- 379 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:29:06 ]
- >>377
スレッド 非ブロック 非同期
- 380 名前:377 mailto:sage [2007/09/21(金) 00:04:40 ]
- >>378-379
スレッド案で非同期化を試みます。 ありがとうございました!
- 381 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 00:14:20 ]
- SHBrowseForFolder() で質問です。
BROWSEINFO.hwndOwner に設定したウィンドウに対してモーダルで ダイアログが開きますが、他にモードレスのウィンドウがあるとき、 それらは無効にならずにフォーカスを奪えてしまいます。 全ウィンドウに対してモーダルで開いて欲しいのです。 しょうがないので SHBrowseForFolder() の前後に 「hwndOwner と同じプロセスの全有効ウィンドウを無効/有効にする」 というのを入れたら希望する動作になったんですが、 なにかオフィシャルな手段は提供されてないんでしょうか。
|

|