C语言调用WIN32 API学习之4创建单选框

上一节学习了创建复选框,下面我们来在窗口上创建单选框,并进行点击动作。

1,打开VC++6.0,点击 文件->打开工作空间 选择example1,点击确定,打开工程。

2,添加代码

首先增加定义全局变量

HWND button1,checkBox1,checkBox2;

int checkBoxValve;

更改回调函数如下

LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)//回调函数定义
{
switch(uMsg)
{
case WM_CREATE:
button1=CreateWindow("BUTTON","第一个按键",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_PUSHBUTTON,10,10,100,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//创建按键
checkBox1=CreateWindow("BUTTON","第一个复选框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_AUTOCHECKBOX,10,50,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//创建复选框
checkBox2=CreateWindow("BUTTON","第二个复选框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_AUTOCHECKBOX,10,100,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//创建复选框
radioBox1=CreateWindow("BUTTON","第一个单选框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_RADIOBUTTON,10,150,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//创建单选框
radioBox2=CreateWindow("BUTTON","第二个单选框",WS_VISIBLE|WS_CHILD|WS_BORDER|BS_RADIOBUTTON,10,200,150,30,hwnd,NULL,(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),NULL);//创建单选框
break;
case WM_COMMAND:
if((HWND)lParam==button1)//判断消息是否来自按键
{
MessageBox(NULL,"按键1按下","提示",MB_OK);//弹出提示窗体
}
if(((HWND)lParam) == checkBox1)
{
checkBoxValve=(int)SendMessage(checkBox1,BM_GETCHECK,0,0);
if(checkBoxValve)
MessageBox(NULL,"复选框1被选择","提示",MB_OK);//弹出提示窗体
else
MessageBox(NULL,"复选框1被取消选择","提示",MB_OK);//弹出提示窗体
}
if(((HWND)lParam) == checkBox2)
{
checkBoxValve=(int)SendMessage(checkBox2,BM_GETCHECK,0,0);
if(checkBoxValve)
MessageBox(NULL,"复选框2被选择","提示",MB_OK);//弹出提示窗体
else
MessageBox(NULL,"复选框2被取消选择","提示",MB_OK);//弹出提示窗体
}
if(((HWND)lParam) == radioBox1)
{
SendMessage(radioBox1,BM_SETCHECK,1,0);
SendMessage(radioBox2,BM_SETCHECK,0,0);
MessageBox(NULL,"单选框1被选择","提示",MB_OK);//弹出提示窗体

}
if(((HWND)lParam) == radioBox2)
{
SendMessage(radioBox1,BM_SETCHECK,0,0);
SendMessage(radioBox2,BM_SETCHECK,1,0);
MessageBox(NULL,"单选框2被选择","提示",MB_OK);//弹出提示窗体
}
break;
case WM_DESTROY://关闭窗口是系统发送的消息
PostQuitMessage(0);//发送退出消息GetMessage收到消息后将return 0,主函数退出消息循环
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);//不处理的消息交给系统处理。
}
return 0;
}

3,编译运行,按下按键试试,看看是否有响应

posted on 2017-04-26 09:14  _雪狼  阅读(696)  评论(0编辑  收藏  举报