ANumericUpDown
には 2 つのハンドル/コントロールがあります。外側のスピンボックスと内側の編集テキスト ボックスのようなコントロールです。
内側のテキスト ボックス コントロールのハンドルを取得する必要があります。NumericUpDown.Handle
外側のハンドルを指定します。
私が Google で見つけた最も近いものは、このフォーラムの会話です。秘訣はUDM_GETBUDDY = WM_USER+106 = 0x0400+106
、バディ ウィンドウ (この場合はテキスト編集) のハンドルを返すメッセージを使用することです。
最初の出力は次のようなものでした。
control.Capture = true;
IntPtr outer = User32.GetCapture();
IntPtr inner = new IntPtr(User32.SendMessage(outer, (0x0400 + 106), 0, 0));
しかし、OPはこれが機能していないと言ったので、誰かが使用することを提案しましたGetWindow(outer, GW_CHILD)
。どこGW_CHILD = 5
control.Capture = true;
IntPtr outer = User32.GetCapture();
IntPtr inner = User32.GetWindow(outer, 5);
これらの方法の両方について、私は常に最終的に になりますがinner = 0
、これは明らかに正しい答えではありません。ただし、OPは方法2が機能しているように見えたので、何か間違ったことをしている可能性があります.
ちなみに、「キャプチャ」メカニズムは役に立たないようです。単純に使用できます。
IntPtr outer = control.Handle;
これは同じものを返します。
それで、内側のテキストボックスハンドルを取得する方法についてのアイデアはありますか?