Win32API質問箱 Build34

このエントリーをはてなブックマークに追加
450858
http://pc8.2ch.net/test/read.cgi/tech/1120222322/l5

たのむ・・・・○rz。
451441:2005/08/15(月) 23:21:25
>>444
クラスのメンバ構成が違ったり、packが違ったりしたら、やばいだしょが。
452デフォルトの名無しさん:2005/08/16(火) 02:02:31
>>450
l5って言われてもどれか判らない罠。
まぁ、ハンドルで判るわけだが。
453デフォルトの名無しさん:2005/08/16(火) 02:49:43
>>450
VC6でやったら普通にWM_IME_STARTCOMPOSITIONきたけど?
もしかしてIMEをONにしないで文字入力してるとかじゃないよな?
454デフォルトの名無しさん:2005/08/16(火) 07:13:26
>>450
てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる
455デフォルトの名無しさん:2005/08/16(火) 10:20:50
名無しさんこんにちは。いつも楽しく拝見しています。

ReadConsoleInput でマウスイベントが拾えません。
入力のモードに ENABLE_MOUSE_INPUT は含めています。
どうしたらいいのでしょうか。
Windows2000 を使っています。
456デフォルトの名無しさん:2005/08/16(火) 15:36:58
タスクバーの長さを変えたいのですが、
過去ログ見てて出てきた

hwndTaskbar = FindWindow("Shell_TrayWnd", NULL);
SetWindowPos(hwndTaskbar,NULL,0,0,960,32,SWP_NOZORDER | SWP_NOSENDCHANGING);

でやると一瞬だけ変化して、すぐに戻ってしまいます。
ShowWindowは普通に持続するみたいなんでなんとかなるんじゃないかと思ったんですが (;´Д`)
どうすれば出来ますかね?
457デフォルトの名無しさん:2005/08/16(火) 16:14:16
しつこく繰り返せ
458デフォルトの名無しさん:2005/08/16(火) 18:49:28
>>457
そんなソフトを使いたいか?
ま、>>456の作ったソフトを使うわけじゃないが。
459デフォルトの名無しさん:2005/08/16(火) 19:04:44
まぁ当然の結果なんだろうけど、
実際にしつこく繰り返してみたらタスクバーがのびたり縮んだりを高速で繰り返して面白すぎることに
460858:2005/08/16(火) 19:20:33
>てかWM_IME_STARTCOMPOSITIONとWM_IME_ENDCOMPOSITIONはIMEのON/OFF時に飛んでくる

え、ってことは、日本語入力モードが切り替わったときなんですか?
変換可能な文字(即ち下線付き状態)を入力し始めたら、WMstartがきて、
変換可能な文字の状態を確定(単にリターンキー)したら、WMendがくる
んじゃないんですか??
461858:2005/08/16(火) 19:24:39
>>453
確かにVC++のサイトでは、WMIMESTRATCOMPOSITIONの説明が
多数掲載されていますね。そして、なんてことはない
特に意識することなく、メッセージ(&H10D)(0x010D)が発生していますよね。
でも、僕の場合、だめなんです。
112とか、84とか、133とかは、ちゃんときてますし、
200(マウスの移動)なんてのもしっかり発生しています。
(WndProcないで、Msg.ToString()をConsole.WriteLineして監視しました)
でも、肝心の、0x010Dとか、0x010Eとかがきてくれないんです。

(禁断の壷をインストールしたら、ものすごく快適になりました)
462デフォルトの名無しさん:2005/08/16(火) 19:26:18
>>456
WM_GETMINMAXINFO を何とかしてみるとか?
463858:2005/08/16(火) 19:37:13
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
Console.WriteLine(String.Format("{0,5:X}",m.Msg));
base.WndProc(ref m);
}
}
}

もう一度、新しいWindowsApplicationを作ってみました。
フォームにテキストボックスはりつけただけです。
ソースはこれだけです。
IMEを切り替えても(キーボードの左上の「半角/全角」ボタンを
連打しても)、010Dや、010Eはきません・・・(T_T)
464デフォルトの名無しさん:2005/08/16(火) 21:09:09
>>463
.NET(つかC#?)はよく分からんけど、それですべてのメッセージが来るわけ?
なんかフィルタリングされてるとかじゃないの?
465デフォルトの名無しさん:2005/08/16(火) 21:42:44
「マウスがどのウインドウ(オブジェクト)の上にいるか」といった情報を取得したいのですが、
とりあえずSetWindowsHookExのWH_MOUSE_LLでマウスのポジションなど取得出来るようになったのですが、
どのウインドウの上にいるか調べる方法で詰まっています。
何方かわかる方よろしくお願いします。
466858:2005/08/16(火) 21:43:42
467デフォルトの名無しさん:2005/08/16(火) 22:08:42
>>466
Win32ではメッセージはちゃんと飛んで、ちゃんと受け取れるので、
あとはC#スレにいったほうがいい。
たぶんコーディング方法を間違えてるとかだろ。
468デフォルトの名無しさん:2005/08/16(火) 22:10:30
>>465
spy++(VC++ツールにあるでしょう)で適当なFlameにカーソル当てたときのメッセージ見たところ
WM_SETCURSORで戻ってくるときに、hWndが何かしらのパラメータとして与えられていた
おそらく、コールバック関数のいわゆるLOWORD(wParam)か、HIWORDに入れられていると思う(uMsgの値により、変わる模様)

自分だったら、フレームが立ち上がったときのハンドルをGetWindowLongあたりで取得しといて、そのハンドル値と一致したら
それは、フォーカスされたhWndハンドルでってことで、なんちゃらかんちゃら・・・
とやってみると思う
469858:2005/08/16(火) 22:13:52
は、はい。