更新时间:2016-02-05 19:16:30浏览次数:1+次
我们可以看到,单选按钮的分组,是通过WS_GROUP风格。组员就是在组长创建后创建的单选按钮。下面是我们实际的分组后的效果图:
下面是单选按钮分组的原理示意图:
我们看下面这个Tab键顺序图:
所以在理解Tab键顺序是非常关键的。如果再复杂点,我们只要时刻知道Tab键顺序和WS_GROUP风格,就不会凌乱了。
下面是完整的代码:
#include "windows.h"
#include <tchar.h>
// - 项目是Unicode字符集
TCHAR tip[]=_T("C++技术网http://www.cjjjs.com");
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static HWND h1,h2,h3,h4,h5,h6,h7;
switch (message)
{
case WM_CREATE:
{
h1 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|WS_GROUP,0,0,250,20,hwnd,(HMENU)1,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
h2 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,0,20,250,20,hwnd,(HMENU)2,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
h3 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|WS_GROUP,100,40,250,20,hwnd,(HMENU)3,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
h4 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,0,60,250,20,hwnd,(HMENU)4,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
h5 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,200,80,250,20,hwnd,(HMENU)5,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
h6 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON|WS_GROUP,0,100,250,20,hwnd,(HMENU)6,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
h7 = CreateWindow(_T("button"),tip,WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,0,120,250,20,hwnd,(HMENU)7,(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE),0);
SendMessage(h1,BM_SETCHECK,1,0);
SendMessage(h3,BM_SETCHECK,1,0);
SendMessage(h6,BM_SETCHECK,1,0);
return 0;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
break;//跳出到默认处理
}
return DefWindowProc(hwnd, message, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrev,LPSTR lpCmd,int iShow)
{
TCHAR ClassName[] = _T("MyClass");
TCHAR title1[] = _T("C++技术网http://www.cjjjs.com");
WNDCLASS wndClass;
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WinProc;
wndClass.lpszClassName = ClassName;
wndClass.lpszMenuName=NULL;
wndClass.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;
if(!RegisterClass(&wndClass))return 0;
HWND hwnd = CreateWindow(ClassName,title1,WS_OVERLAPPEDWINDOW,10,100,600,400,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
MSG msg;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
相关资讯