現在Visual Studio .NET 2003 と SDKにてタイトルにある通り、
レバーコントロールの上にコンボボックスを配置しようとしています。
そこで、WM_CREATEのタイミングで下記のようなコードを書いています。
REBARINFO rbinfo = {0}; REBARBANDINFO band = {0}; static const TCHAR *ComboList[/url] = {_T("item1"), _T("item2"), _T("item3"), NULL}; HWND hrebar, hcombo; HINSTANCE hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); //レバーコントロールの作成 hrebar = CreateWindowEx(WS_EX_TOOLWINDOW, REBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | RBS_DBLCLKTOGGLE | RBS_BANDBORDERS | CCS_NODIVIDER, 0, 0, 0, 0, hWnd, (HMENU)IDC_REBAR, hinst, NULL); rbinfo.cbSize = sizeof(REBARINFO); SendMessage(hrebar, RB_SETBARINFO, 0, (LPARAM)&rbinfo); //コンボボックスの作成 hcombo = CreateWindow(_T("COMBOBOX"), _T(""), WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST | WS_VSCROLL, 0, 0, 0, 300, hrebar, (HMENU)IDC_COMBO, hinst, NULL); SendMessage(hcombo, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), TRUE);//...........................(1) for(i = 0;ComboList;i++) SendMessage(hcombo, CB_INSERTSTRING, -1, (LPARAM)ComboList); SendMessage(hcombo, CB_SETCURSEL, 0, 0); //レバーバンドの追加 band.cbSize = sizeof(REBARBANDINFO); band.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE; band.fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS; band.cyMinChild = 25; band.cx = 140; band.hwndChild = hcombo; SendMessage(hrebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&band);
上記のコードの(1)の部分で、コンボボックスにDEFAULT_GUI_FONTを設定しています。
しかしこのフォントを設定するとなぜか、コンボボックスのリストが開きません。
いえ、開くことは開くのですが、ほんの数ピクセル申し訳程度に開いているように見えます。
ですが、この(1)の行をコメントアウトすると、問題無く開けます。
出来ればコンボボックスでDEFAULT_GUI_FONTを使用したいと思っております。
どこがいけないのでしょうか分かる方よろしくお願いします。