1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:54:24 ] スレ立てるまでもない、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質問箱 Build76 pc11.2ch.net/test/read.cgi/tech/1233622578/
285 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:07:53 ] newを使いたくないなら無理やり↓みたいにスコープ作ればよいのでは。 { Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",bitmap1.GetWidth()); }
286 名前:281 mailto:sage [2009/03/09(月) 22:22:46 ] >>285 レスありがとうございます。 デストラクタのタイミングを制御する必要がある時意外でも、 たとえば、デストラクタのタイミングを制御する必要がなく、いっけんnewを使う必要が無いような時も 自分のやり方だと Gdiplus::Graphics graphics1(hdc1); という風にスタックに確保する場面で 他の人は Gdiplus::Graphics*pGraphics1=new Gdiplus::Graphics(hdc1); という風にnewで確保しているようです。 この理由がわかりません。
287 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:53:01 ] >>286 クラスのインスタンスでも、基本的には変数と同じ使用方法でいいと思うけどね。 #関数内でのみの使用、永続的な使用等で切り分け わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが 実行されることを示したいからじゃない? ま、別にこだわる必要はなし。 下手にnewばかりしてメモリリークさせるなら>>281 の方が合理的なのは確か。
288 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:59:10 ] コンストラクタでGdiplusStartup呼んで、デストラクタでGdiplusShutdown呼ぶクラス一個つくって mainの頭に置こうぜ
289 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:02:40 ] >>286 サイズがデカいクラスをスタックにとりたくない場合はnewする場合はある。 Gdiplusがそこまでデカいかは知らんが。
290 名前:デフォルトの名無しさん [2009/03/09(月) 23:04:02 ] > Gdiplusがそこまでデカいかは知らんが。 実装依存
291 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:09:29 ] Gdiplusの実装とか
292 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:14:07 ] >>281 のエラーの出るコードをコンパイル実行するとメモリリーク発生だな 何でだろ?
293 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:15:15 ] >>289 言われてみれば、他作クラスはサイズが分からんから 念のためにヒープの方がいいかもな
294 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:19:49 ] readprocessmemory関数を使いたくてVB2005ExpressEditionでプログラムを組んでみたのですが、 エラーが出て動きません。なぜでしょうか??いろいろググってみたけどわかりませんでした。 やりたいことは単にプロセスのメモリを読みたいだけなんですが・・・ 「AccessViolationExceptionはハンドルされませんでした。 保護されているメモリに読み取りまたは書込み操作を行おうとしました。他のメモリ が壊れていることが考えられます。」 Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, ByRef lpdwProcessId As Long) As Long Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpszClassName As String, ByVal lpszWindowName As String) As Long Dim hProc As Long Dim PID As Long Dim threadid As Long hProc = FindWindow("Notepad", vbNullString) threadid = GetWindowThreadProcessId(hProc, PID) ←ここの処理でエラーになる
295 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:23:00 ] >>292 すでに>>285 が答えてるだろ bitmap1が関数の終わりで解放処理を行おうとするが その時にはGdiplusShutdownでgdiplusの環境が破棄されてるから正常に終了できない だからローカル変数のスコープを{}で狭い範囲に閉じ込めなければならない
296 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:25:43 ] >>294 大幅に間違ってる。とりあえず、リファレンスを見直せ。
297 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:26:33 ] HWND な変数に hProc なんて名前を付けるのはやめれ・・・
298 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:41:32 ] >>295 すまん、>>282 がそのものずばりのこといってるんだな、俺、ダメポ デストラクタが呼ばれる前にShutdownすれば、当然、メモリリーク出るわな Gdiplus::GdiplusShutdown(gdiToken); でShutdownさているのに プログラム終了時にGdiplus::Bitmap bitmap1のデストラクタ呼ぶんだからな
299 名前:281 mailto:sage [2009/03/09(月) 23:48:25 ] >>287 >>わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが >>実行されることを示したいからじゃない? 僕もそう思います。 >>288 それもいい方法だと思います。 >>289 newを使う理由が1つわかりました。ありがとうございます。 >>290 とりあえずスタックが壊れるほど大きくはなさそうです。 >>292 ,298 僕も282さんに聞くまで気付きませんでした。 >>293 慎重にやるならそれもいい方法ですね。 >>295 追加説明ありがとうございます。
300 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:01:49 ] >>293 他作クラスであってもスタック上に確保できるならサイズは調べられるだろ。 そうでないとそもそもコンパイル不能だ。 まあ、将来的に変更される可能性はあるが。 ちなみに手元の環境だとsizeof(Bitmap)は16で画像の実態は内部で保有してるポインタの先にある。
301 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:10:50 ] 他人が作ったライブラリの初期化と後始末を同じ関数内でやるのは細心の注意がいるね
302 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:11:28 ] >>300 更に言われてみれば、まともなメーカーが提供してるクラスだと 確かに馬鹿でかいクラスのオブジェクトをスタックに積む、なんて アホなクラスなんぞ無いはずだよな。。。 >コンパイル不能 StackOverflowってコンパイル時に分かるものだったっけ?
303 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:16:13 ] スタックにばかでかい配列取ろうとしたときは怒られるな
304 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:26:58 ] >>303 thx 警告レベルが低いせいかあまり見た記憶が無いな 今度試してみよう
305 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:06:06 ] >>280 >>276
306 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:14:17 ] ここは荒らしていいスレじゃなかったっけ
307 名前:デフォルトの名無しさん [2009/03/10(火) 13:11:43 ] OSではなくソフトウェアから、パフォーマンス オプションの「パフォーマンスを優先する」に設定することは可能でしょうか?そのようなAPIをご存知の方いますでしょうか?
308 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:25:29 ] OSもソフトウエア
309 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:30:44 ] >>307 そういうAPIがあるかどうかは知らんが、力技でいくなら、レジストリ書き換えて WM_SETTINGCHANGE を発行すれば?
310 名前:デフォルトの名無しさん [2009/03/10(火) 13:30:46 ] >>308 知らないならレスするなクズ
311 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:32:23 ] G(S)etPriorityClass
312 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:45:49 ] HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation をレジストリAPIで適切な値に書き換えて再起動。
313 名前:307 [2009/03/10(火) 13:54:40 ] ありがとうございます。レジストリ強制書き換えなら可能なのですね。APIでG(S)etPriorityClassでもできるのでしょうか?
314 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:59:41 ] システムの動作に関わるレジストリを勝手に書き換えるソフトか ウィルス並だな
315 名前:デフォルトの名無しさん [2009/03/10(火) 14:03:32 ] >>314 お前みたいなクズはウィルスよりたちが悪いぜ。
316 名前:デフォルトの名無しさん [2009/03/10(火) 14:17:00 ] >>315 知らないならレスするなクズ
317 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 22:48:00 ] WSHはCOMですか?
318 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 22:49:54 ] >>317 はい。API ではないのでスレ違いだと思われます。
319 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:17:54 ] ActiveScriptはぎりぎりこのスレの範疇にできるだろうけど、 WSHは外れていると思う。
320 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 02:09:42 ] ウィンドウのクライアント領域をドラッグしてウィンドウの位置を移動させたいんですが、ちょっとうまくいかないので質問。 WM_MOUSEMOVEでマウスボタンが押されていたらドラッグとみなし、SetWindowPosで前回位置との差分分移動としています。 しかし、これだとマウスが動くと同時にウィンドウがガタガタと元の位置辺りとマウス位置あたりに行ったり来たり を繰り返してしまって、とても汚いです。どういう風にやるとタイトルバーをドラッグした時のように綺麗に動くのでしょうか? ちなみにマウスの座標はクライアントでもスクリーンでもダメでした。
321 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 02:20:15 ] WM_NCHITTESTでHTCAPTION返せ
322 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 06:28:31 ] >>320 いい加減に書くとそうなる (移動した時にWM_MOUSEMOVEが発生するので、WM_MOUSEMOVE→移動→WM_MOUSEMOVE→・・・を繰り返してしまう)
323 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 07:45:14 ] WM_LBUTTONDOWNでフラグ立てて、WM_LBUTTONUPで落とすような 処理が必要じゃないの?
324 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:00:29 ] 知らない人はレスしなくていいです。
325 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:25:56 ] 前回位置との差分じゃなくてWM_LBUTTONDOWNが来た時のカーソル座標と現在のカーソル座標との差分を使うんだよ。 ていうかこんなのググればサンプルがすぐ見つかるんだから深夜に糞スレで質問するぐらいなら自分で探しなよ。
326 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:04:15 ] つーか>>321 で一発なのにな
327 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:24:15 ] >>325 そんなアホな処理しなくても>>321 でおk
328 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:50:14 ] むしろ>>321 でいいのにな
329 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:51:07 ] むしろ>>321 でいいのにな
330 名前:デフォルトの名無しさん [2009/03/11(水) 12:02:18 ] >>321 でいいとかマジで言ってるならアホすぎ
331 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:27:19 ] case WM_LBUTTONDOWN: ::PostMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION,i lParam); break;
332 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:42:23 ] タイトルバー以外の部分をドラッグしてウィンドウを移動させる hp.vector.co.jp/authors/VA023539/tips/window/005.htm
333 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:08:28 ] >>331 コンパイルエラーだろバカ
334 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:28:31 ] #define i
335 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:33:24 ] 333 はおそらく実際にコンパイルしてみたに違いないw
336 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:36:08 ] そんなもんコンパイルしなくても見ればわかるだろ JK
337 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:41:37 ] つーかこんな所に貼られたコードを安易にコンパイルして実行する奴なんて居るのか? 得体の知れないファイルを平気でクリックして実行するレベルだろ
338 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:44:38 ] >>337 このスレに貼られたコードの意味が分からない奴なんて居るのか?
339 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:47:51 ] >>338 居るよ >>337 とか
340 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:02:01 ] むしろこのスレに貼られたコードの意味が分かる奴なんて居るのか?
341 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:04:27 ] >>340 いるよ >>339 とか
342 名前:339 mailto:sage [2009/03/11(水) 15:07:17 ] いや俺は.netしか使ったことないから分かってないよw
343 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:07:39 ] NCHITTESTだと、どのボタンが押されたかとか、自作ライブラリとの親和性が低いとかあるので >>325 の方法で大方解決しました。ありがとうございました。 ところでGDI+の半透明描画や画像の回転機能を自分で作りたいんですが、あのライブラリは ハードの機能を使ったりしているんでしょうか?自分でちまちまピクセルごとの計算をしたら とてもゲームに使えるようなスピードにならない気もするんですが・・・
344 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:28:34 ] やってみたのか
345 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:31:31 ] やってみたのだ
346 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:39:54 ] これでいいのだ
347 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:11:23 ] まだやってないです やるとしたら、描画命令来るたびにロックするとかかな
348 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:22:55 ] >>343 GDI+はソフトウェア描画だよ。
349 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:34:05 ] >>330 何がアホなのか言ってみな
350 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:17:52 ] >>348 ソフトウェア処理だけど一応MMX/SSEなどは使ってるみたい まあゲームで使える速度じゃないのは言うまでも無いけど
351 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:34:55 ] ____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ < 何がアホなのか言ってみな | |r┬-| | \ `ー'´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // だっておwwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
352 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:37:31 ] ほらな 答えられない
353 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:04:05 ] >>348 ぐぐ そうですか バリバリフレームレート出まくってるゲームで描画が5割以上GDI+みたいなゲームってありますか? GDI+入れて組むのめんどくてどんなもんなのかよくわからんのです。知ってる人いたらラッキーなんで教えてくださいよ先輩
354 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:09:51 ] >>353 妄想レスだがフレームレート上げたいゲームならDirectXを普通に使うんじゃない?
355 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:34:18 ] [環境]非MFCでWin32API(VC2005でC++)です。 [質問]画面に入りきらないテキストを描画して、スクロールしたら、 上の方の文章を消して、下の方の文章を表示するプログラムが組めません。 [どこまでできたの?] DrawText作ってテキストを表示。 スクロールするだけのWindow。 スクロールした値は取れるので、それをDrawTextに反映させたいのですが、 どうやればいいでしょうか?
356 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:35:58 ] 素直にエディットコントロール使うんじゃだめなのか…
357 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:48:00 ] >>356 レスサンクス。 もっと、初期の段階だったらそれも考えれるのですが、、、ここの部分組んだらプログラム完成するんです、、、。 DrawTextの第4引数のRECT構造体の値があるんですが、 これって、マイナスの値入れるのは危険ですか? RECT rc; GetClientRect( hWnd, &rc ); rc.top -= 100;
358 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:48:54 ] GDI+の用途って画像ファイルの入出力とアンチエイリアスつきのベクタ描画ぐらいじゃね
359 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:01:11 ] >>357 問題はない。
360 名前:357 mailto:sage [2009/03/11(水) 21:04:13 ] >>359 レスありがとん。 それを聞いて安心しました。 あとは、テキストのたての長さを割り出す作業だけでいけそうです。 ありがとうございました。
361 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:48:35 ] メモリDCに最初から全部描いておいて、スクロールの都度、必要な部分だけBitBltする手もあるぞ
362 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:58:41 ] 早く数学を教えてください。 待て待て
363 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:49:25 ] >>354 それもそうですね。 >>358 GDIだけだと結構やりたいこと出来ないんですよ・・・
364 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:24:54 ] CloseHandleの戻り値って確認してる? 正しいハンドルを渡してもエラーになる場合ってどんなとき?
365 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:27:49 ] ::GetLastError()
366 名前:デフォルトの名無しさん [2009/03/11(水) 23:38:41 ] >>351 アホ乙w
367 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:15:36 ] >>364 通信系だと、通信不良とか?
368 名前:デフォルトの名無しさん [2009/03/12(木) 00:49:05 ] プロパティシートで psp.lParam=(LPARAM)Data; とlParamに構造体 DATAを設定しているのですが、 受取先の、Windowでは死んでいます。うまく受け渡しが できません。 psp.pszTemplate = "IDD_D"; psp.pfnDlgProc = (DLGPROC)Function0; psp.lParam=(LPARAM)Data; hpsp[0] = CreatePropertySheetPage(&psp); memset(&psh, 0, sizeof(PROPSHEETHEADER)); psh.dwSize = sizeof(PROPSHEETHEADER); psh.dwFlags = PSH_NOAPPLYNOW; psh.hInstance = hInst; psh.hwndParent = hDlg; psh.nPages = 1; psh.phpage = hpsp; psh.pszCaption = "設定"; (HWND)PropertySheet(&psh); うまく受け渡すにはどうしたらいいでしょうか
369 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 01:00:26 ] Dataの型は DATA か DATA* か? 前者なら間違い
370 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 01:01:18 ] 肝心の受け取り部分が書いてないが ((PROPSHEETPAGE*)lParam)->lParamにしてるか?
371 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 01:57:57 ] >>364 ディクス書き込みで、フラッシュ時に IO エラーが発生するとか、 ディスクフルになるとか。
372 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 08:34:59 ] >>371 ファイル書き込みは遅延書き込みありでキャッシュされているから、 CloseHandle()の戻り値では、アプリケーションからディスクI/O時の エラーは検出されないと思う。イベントログに上がるだけでは? キャッシュを書き戻す処理に関係なく、キャッシュとディスク上の配置は マップ管理されていると思うので、ディスクフルはWriteFile()の戻り値で エラーが返されるはず。 当然だが、オープンされていない間違ったハンドルを渡せばエラーが返る。
373 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 12:26:27 ] ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // >>366 そんなこと言うなよ。仲間だろ?wwwwwww | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / バ | | l||l 从人 l||l l||l 从人 l||l バ ン ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ン ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
374 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:11:18 ] ボタンの描画についての質問です。 グループボックスや、ラジオボタンが描画されるとき、文字列描画部分の背景色を透過することはできないでしょうか。 MSDNを読むとWM_CTLCOLORBTNはオーナードローのボタンでないと、意味が無いということで (実際無理でした) サブクラス化をして、WM_ERASEBKGNDを捕まえて何も処理せずにreturnしたり、 GetClassInfoEx → styleメンバに CS_OWNDC を OR演算 → 新しいクラス登録、その後 WM_CREATE でSetBkMode(hdc,TRANSPARENT)を試してみたりしましたが、どちらもできませんでした。 ボタンの描画自体はデフォルトの処理を任せたいのですが、何か方法はないでしょうか。
375 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:16:18 ] WS_EX_TRANSPARENTを指定してWM_CTLCOLOR〜でNULLブラシを返せば?
376 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:30:15 ] >>375 レス有難う御座います。 試してみましたが、変化が現れませんでした。
377 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:32:15 ] WM_CTLCOLORBTN or WM_CTLCLORSTATIC にて SetBakMode( hDC, TRANSPARENT); return (HBRUSH)GetStockObject( NULL_BRUSH);
378 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:50:07 ] >>377 コンパイルエラーだろバカ
379 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:56:37 ] STATICコントロールは WM_...STATIC で透過させることが出来ますが、 BUTTONコントロールはどうもうまくいかないみたいです・・・。 素直に諦めることにします。
380 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:03:33 ] 普通に可能なんだが・・・ ああ馬鹿なのね
381 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:21:27 ] 面倒だから煽らなくていいです
382 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:57:00 ] >>380 はわかってない馬鹿とみた
383 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:03:24 ] >>382 ん?悔しかったの?www
384 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:07:28 ] ラジオボタンやグループボックスの背景なら>>375 >>377 が書いてる方法で透過するだろ。 前にそういうコード書いたことあるし。
385 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 20:46:16 ] >>384 新しくプロジェクトを始めて、ダイアログベースではないウィンドウ上で試してみたら、成功しました。 リソースから作ったダイアログ上のタブコントロールの上にこれらのBUTTONコントロールを配置した時に、見栄えが悪かったため 最初の質問をさせていただきましたが、グループボックスをリソースからではなく、 WM_INITDIALOG内にて、親ウィンドウをタブコントロールとして生成したところ、やりたかったことを実現することが出来ました。 レスしてくれた方々、有難う御座いました。