问题描述
我的意思是这个控件:
当您单击此选项时,会显示带有颜色的选项卡控件,而不是常规选项。我怎样才能做到这一点?这是一个所有者绘制的组合框还是其他什么?我知道如何使用所有者绘制组合框绘制文本、矩形、图像等,但我不知道如何在那里添加控件。我还没有要显示的代码,因为我不知道该怎么做。我尝试过使用 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;
...
调试: