2

ComboBoxを生成するための次のコードがあります。

HWND h = CreateWindowEx("COMBOBOX", "Text", CBS_DROPDOWN | WS_CHILD, WS_EX_CLIENTEDGE, ParentWnd, 0, 0, 200, 24);

コンボボックスは私のフォームで問題なく作成されますが、次のようにサイズを変更しようとすると機能しません。

SetWindowPos(h, 0, 0, 0, NewWidth, OldHeight, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);

なぜこれが起こるのでしょうか?どういうわけか透明なコンボボックスの間違った部分のサイズを変更しているようです。

私は何日もいろいろなことを試みてきました、それはおそらく愚かなことですが、私はそれに指を置くことができません。

よろしくお願いいたします。AlainDescheneshttp ://www.arianesoft.ca

4

3 に答える 3

3

皆さん、私はそれを見つけました... 私の NewControlEx() C 関数には、正しく機能していないものがあります。利用した:

h$ = CreateWindowEx(0, "COMBOBOX", "TEXT", CBS_DROPDOWN | WS_CHILD, 10, 10, 400, 24, Parent.Handle, 0, Instance%, NULL);
SetWindowPos(h$, 0, 100, 100, 400, 32, SWP_NOZORDER | SWP_NOACTIVATE);
ShowWindow(h$, SW_SHOW);
InvalidateRect(h$, NULL, True);

これは正常に機能します。ご迷惑おかけして申し訳ありません。

元の wndproc を処理せず、すぐに返された WM_SIZE: イベント処理であることが判明しました。

よろしく、アラン・デシェーヌ http://www.arianesoft.ca

于 2009-06-11T04:08:10.207 に答える
0

コンボボックスのどの部分がサイズ変更されていませんか?テキストボックス、またはドロップダウン?

ドロップダウンは、 CB_SETDROPPEDWIDTHメッセージを使用してサイズを変更できます。

于 2009-06-11T03:14:36.603 に答える
0

サイズを変更した後、ウィンドウ全体を再描画していますか?

于 2009-06-11T03:06:15.857 に答える