レバーコントロール上のコンボボックス

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
へろりくしょん

レバーコントロール上のコンボボックス

#1

投稿記事 by へろりくしょん » 15年前

いつもお世話になっております。
現在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を使用したいと思っております。
どこがいけないのでしょうか分かる方よろしくお願いします。

“C言語何でも質問掲示板” へ戻る