如何在设置颜色时让组合框显示像 VS' 这样的选项卡控件?

问题描述

我的意思是这个控件:

enter image description here

当您单击此选项时,会显示带有颜色的选项卡控件,而不是常规选项。我怎样才能做到这一点?这是一个所有者绘制的组合框还是其他什么?我知道如何使用所有者绘制组合框绘制文本、矩形、图像等,但我不知道如何在那里添加控件。我还没有要显示代码,因为我不知道该怎么做。我尝试过使用 CreateWindow() 中的值在 WM_DRAWITEM调用 DRAWITEMSTRUCT.rcItem 之类的方法,但我无法在 groupBox 的客户区域内创建控件,按钮位于控件后面。>

解决方法

看起来您正在寻找CBN_DROPDOWN

当组合框的列表框即将可见时发送。这 组合框的父窗口通过 WM_COMMAND 消息。

一些代码:

HWND hWndComboBox = CreateWindow(
       WC_COMBOBOX,TEXT(""),WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,10,20,70,17,hWnd,(HMENU)IDB_COMBOX,hInstance,NULL);

...
 case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // Parse the menu selections:
            switch (wmId)
            {         
            case IDB_COMBOX:
            {
                switch (HIWORD(wParam))
                {
                case CBN_DROPDOWN:
                {
                    CHOOSECOLOR cc;                 // common dialog box structure 
                    static COLORREF acrCustClr[16]; // array of custom colors                
                    static DWORD rgbCurrent;        // initial color selection

                    // Initialize CHOOSECOLOR 
                    ZeroMemory(&cc,sizeof(cc));
                    cc.lStructSize = sizeof(cc);
                    cc.hwndOwner = hWnd;
                    cc.lpCustColors = (LPDWORD)acrCustClr;
                    cc.rgbResult = rgbCurrent;
                    cc.Flags = CC_FULLOPEN | CC_RGBINIT;
                    ChooseColor(&cc);
            
                }
                    break;
                ...

调试:

1