所以我有一个groupbox风格的按钮。我可以通过创建一个以groupbox为父级的按钮在其中放置一个按钮。但是,如果我这样做,groupbox将获得按钮单击消息而不是窗口。有什么方法可以拦截这些消息或将它们转发?
是 PasteBin上的一个示例,其中不是将按钮放在组合框中而是将其悬停在顶部,但这意味着我不能简单地制作组框和它的内容在一个命令中是不可见的(这是作弊,所以在某些时候可能会出错)。那么,有没有办法在按钮实际位于组框中的位置?
HWND hSoFGrp = CreateWindowEx(WS_EX_LEFT, "BUTTON", _T("Group Text"), WS_CHILD | WS_TABSTOP | WS_VISIBLE |
BS_GROUPBOX | BS_TEXT | BS_LEFT | BS_TOP,
0, 250, 150, 100, hwnd, (HMENU) 40,
GetModuleHandle(NULL), NULL);
HWND hSoFBtn = CreateWindowEx(WS_EX_STATICEDGE, "BUTTON", _T("Button"), WS_CHILD | WS_TABSTOP | WS_VISIBLE |
BS_PUSHBUTTON | BS_CENTER | BS_TEXT | BS_VCENTER | BS_MULTILINE,
100, 15, 48, 30, hSoFGrp, (HMENU) 41,
GetModuleHandle(NULL), NULL);
switch (msg)
{
case WM_COMMAND:
if (LOWORD(wParam) == 40)
{
//This would be messages from the groupbox
}
else if (LOWORD(wParam) == 41)
{
//This would be messages from the button if the groupbox wasn't intercepting them!
}
break;
}
那么,有可能吗?
答案 0 :(得分:0)
组框通常不用作其中明显包含的控件的父窗口。 HWND
s的层次结构不一定与可见的控件组织相匹配。相反,您应该使组框成为其分组控件的兄弟。
请注意,分组框应位于z分组的分组控件之前(上方);从组框标签激活助记符的方式将焦点移动到组中的第一个控件。即使组框控件将高于其分组控件a group box explicitly allows other controls to draw themselves over it。