コンボボックスのリストをクリックできない
Posted: 2013年10月02日(水) 18:02
Windows7
Win32API
MinGW g++
C++11使用
以下のような手順でコンボボックスを作成したのですが、
combobox = ::CreateWindowEx (
WS_EX_LEFT | WS_EX_ACCEPTFILES,
"COMBOBOX",
"",
WS_CHILD | WS_VISIBLE | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_HASSTRINGS | CBS_NOINTEGRALHEIGHT,
700,
500,
100,
500,
hWnd,
( HMENU ) g_id++,
g_hInst,
nullptr
) ;
for ( auto &elem : { "qwe", "rty", "uio", "p@" } )
{
::SendMessage ( combobox, CB_ADDSTRING, 0, ( ::LPARAM ) elem.c_str () ) ;
}
※実際はクラスにまとめていますが展開しました。。
クリックでリストをドロップさせることは出来たのですが、リストをクリックしても、選択されずにフリーズしたような状態になってしまいます。WM_COMMANDメッセージも受け取りません。
しかし、付属のエディットボックスに入力することは出来ます。このばあいはWM_COMMANDメッセージを受け取ります。
また、十字キーを用いると問題なく選択できます。
この状態になると、コンボボックスのあるウインドウ全体のマウス関連のイベントがまったく発生しなくなり(メニューも開けない)ますが、タイマーイベントは受け取っています。(完全にフリーズしているわけではない)
ウインドウを非アクティブウインドウにする(ほかのウインドウをクリック)するか、クリックを5回くらい連打すると元に戻りますが選択できていません。
また、CBS_DROPDOWNではなくCBS_SIMPLEを指定すると問題なく選択できます。
ほかのコントロール(BUTTON,STATIC,LISTBOX,EDIT)は正常に動作しています。
どうすればマウスで選択できるようになるのでしょうか。
どなたかご教授よろしくお願いします。
Win32API
MinGW g++
C++11使用
以下のような手順でコンボボックスを作成したのですが、
combobox = ::CreateWindowEx (
WS_EX_LEFT | WS_EX_ACCEPTFILES,
"COMBOBOX",
"",
WS_CHILD | WS_VISIBLE | CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_HASSTRINGS | CBS_NOINTEGRALHEIGHT,
700,
500,
100,
500,
hWnd,
( HMENU ) g_id++,
g_hInst,
nullptr
) ;
for ( auto &elem : { "qwe", "rty", "uio", "p@" } )
{
::SendMessage ( combobox, CB_ADDSTRING, 0, ( ::LPARAM ) elem.c_str () ) ;
}
※実際はクラスにまとめていますが展開しました。。
クリックでリストをドロップさせることは出来たのですが、リストをクリックしても、選択されずにフリーズしたような状態になってしまいます。WM_COMMANDメッセージも受け取りません。
しかし、付属のエディットボックスに入力することは出来ます。このばあいはWM_COMMANDメッセージを受け取ります。
また、十字キーを用いると問題なく選択できます。
この状態になると、コンボボックスのあるウインドウ全体のマウス関連のイベントがまったく発生しなくなり(メニューも開けない)ますが、タイマーイベントは受け取っています。(完全にフリーズしているわけではない)
ウインドウを非アクティブウインドウにする(ほかのウインドウをクリック)するか、クリックを5回くらい連打すると元に戻りますが選択できていません。
また、CBS_DROPDOWNではなくCBS_SIMPLEを指定すると問題なく選択できます。
ほかのコントロール(BUTTON,STATIC,LISTBOX,EDIT)は正常に動作しています。
どうすればマウスで選択できるようになるのでしょうか。
どなたかご教授よろしくお願いします。