Win32API質問箱 Build20

このエントリーをはてなブックマークに追加
>>951
遊びみたいだからズバリは言わないでおくけど、Spy++でメモ帳をよーく見てみよう。
953948:04/07/20 22:05
× WM_UP
○ WM_KEYUP
>>951
面倒くさいことしなくても(WPARAM)'A'でいいだろ
955948:04/07/20 22:11
>>952
もっと、ズバリと手取り足取り教えてください。
頭が悪いのでspy++見てもわかりません。
956948 ◆e.MQo98ta. :04/07/20 22:14
>>955
偽者

>>952
やってみます。
SendInputとか使わないの?
誰か頭悪い漏れに教えて下され。
16bitカラーのスクリーンをキャプチャした時、BITMAPINFO::bmiColors にセットすべき、
3つのDWORD値はどうやって取得すれば良いのですか。
>>935
名前付きイベント作ったほうが簡単じゃね?
>>958
キャプチャって何? スクリーンのDCからBitBltしてきた物? キャプチャライブラリの出力?
bmiColorsは3つのDWORD値などではないが、いったい何をセットする気だ?
そもそもそのHBITMAPは何なのだ? キャプチャの結果? それともそのコピー先?

俺も頭悪いから、おまえさんが何をしたいのかさっぱりわからん。
bmiColorsに三つっていったら、BI_BITFIELDSの事だろうと想像は付くが。
そんなマンドくせーフォーマット使うよか、24bitで受けた方が話は早いと思う。
>>958
試してないけど、ドキュメントには、

BYTE bmiBuffer[ sizeof(BITMAPINFO) + sizeof(RGBQUAD)*3];
BITMAPINFO* pBMI = (BITMAPINFO*) bmiBuffer;
ZeroMemory(pBMI, sizeof(bmiBuffer));
HDC hdc = GetDC(NULL);
GetDIBits(hdc, (HBITMAP) GetCurrentObject(hdc, OBJ_BITMAP),
 0, 100, NULL, pBMI, DIB_RGB_COLORS); // 0と100は適当

とかすれば BITMAPINFO を得られるようなことが書いてある。
963デフォルトの名無しさん:04/07/21 12:43
VirtualAllocができない。
VirtualAlloc(NULL,512000000,MEM_RESERVE | MEM_COMMIT,PAGE_READWRITE);
メモリー3G、XP−SP1でできない
NT−SP6ならOKだ。誰か助けてくれ!
>>963
512MB近くの連続領域は運が良くないと取れないと思うぞ。

32bit Windows ではユーザプロセスは標準では 2GB の仮想空間しか持
てない。その中に不連続に exe や DLL がマップされる。

Windows 2000 以降だったら、3GB モードを使えば確保できる確率は上
がるかも。
ウインドウの外枠を透明にすることってできますか?

子ウインドウの枠を消していろいろやりたいんですが・・・
WS_POPUP
>>966
ありがとです
EnumWindowsで取ったウインドーハンドルから
そのウインドーがどのプロセスのものか調べるにはどうやればできますか?
教えてください
タイトルバーに付いてるシステムボタン(クローズとか)を、
完全に無反応にすることって可能でしょうか?
(ボタンが機能する状態と、無反応の状態を切り替えたい)

押しても閉じない状態まではできるんですが、それでも
ボタンを押したままの状態だと制御がWINMAINに戻ってこなくて・・・
メイン部分を別スレッドにするとかしないとダメ?
GetSystemMenuして、SC_CLOSEを無効化
>>969
disableにするのはダメなの?
>>963
脇道にそれるけど512MB=512*1024*1024だからそれだとちょっと足りない。
>>970 >>971
ボタンをdisableやgrayedにして機能しなくすることはできたんですが、
これだとボタンの上でクリック(ドラッグ)すると、放すまで制御が
WINMAINに戻ってこないんですよね。
ボタン押されてもMAINのコードが止まらないようにしたいんですよ。
WM_NCHITTESTかな?
975948 ◆e.MQo98ta. :04/07/21 17:38
できた……。

>>968
GetWindowThreadProcessId()
>>975
ウインドーハンドルからプログラムのEXEファイルの名前が知りたいのです
それをやるにはどうやりますか?
GetModuleFileNameのような気がしたのでやってみます
違ってたらおしえてください
>976
MSのKBにまんまその回答があったなぁ。
GetModuleFileNameはローカルプロセス専用だった気がする。
>>977
それはモジュールハンドルやインスタンスハンドルを引数に取るんでウィンドウハンドルは無理です。
?
やっぱりGetWindowThreadProcessId()してOpenProcessしてEnumProcessModulesしてGetModuleFileNameExのような気がしてきた
キーボードの左キー(VK_LEFT)を押しながら、
'Z'キーを押した時っていうのはどう表現すればいいですか?
可能なのでしょうか
983デフォルトの名無しさん:04/07/21 21:43
SendMessageとPostMessageってどう違うの?
呼び出し側に制御をすぐに返すのとそうでないのはわかりますけど
それだけの違いではないですよね?
大雑把に言うと、
Sendはその内部で直にウインドウプロシージャを呼び出し、
Postはメッセージをキューに入れるだけで、そのうちGetMessageなどで処理されるのを期待する。
と、俺はこんな感じに捉えているのだが。
>>982
表現はできているじゃないか。

状態を取得したいなら GetKeyboardStatusとかそんなAPIがあった気がする。
>>985
WM_KEYDOWN内でGetAsyncKeyState()関数の組合せで出来ました。
ありがとう。
987デフォルトの名無しさん:04/07/21 22:59
>>984
それって>>983を言い換えただけジャン
>>987
のび太のくせに生意気だぞ
>>986
惜しい、その場合はGetKeyStateだ。
>>987
その違いが理解できないなら使い分ける必要は無い。
非同期と動機の違いで、
同期のSendMessageは戻り値を受け取る事が出来、
非同期のPostMessageは、優先順位に応じて最適なタイミングでの処理が期待できる。
いくつか質問させて下さい。

1.ウィンドウを移動できないようにするにはどうすればいいか?
 WM_MOVING等のイベント拾って無視しても無駄でした。

2.ウィンドウシェードをやりたいのですが、その方法は?
 ウィンドウサイズを0にしたりボーダー+キャプションの高さに
 しても無理でした。

よろしくお願いします。
次スレ立ててきてくれたら教える
993991:04/07/22 00:07
建てますた。よろしくお願いします。

Win32API質問箱 Build21
http://pc5.2ch.net/test/read.cgi/tech/1090422324/
>>991
1.WM_WINDOWPOSCHANGING
2.WM_WINDOWPOSCHANGING/WM_GETMINMAXINFOで妙なことしてなければ普通にサイズ変更するだけ。
埋め
生め
生き
998
今だ!999ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
やたー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。