Windows api编程radio button消息处理

baidu_25885829 2015-02-23 11:50:55
HWND hGroupBox;
hGroupBox=CreateWindowEx(0,WC_BUTTON ,L"Group",WS_VISIBLE | WS_CHILD | BS_GROUPBOX,20,20,140,80,hMainWnd,(HMENU)IDB_GROUPBUTTON,hInst,NULL);
CreateWindowEx(0,WC_BUTTON,L"no",WS_VISIBLE|WS_CHILD|BS_AUTORADIOBUTTON,20,20,40,40,hGroupBox,(HMENU)IDB_RADIOBUTTON1,hInst,NULL);
CreateWindowEx(0,WC_BUTTON,L"yes",WS_VISIBLE|WS_CHILD|BS_AUTORADIOBUTTON,80,20,50,40,hGroupBox,(HMENU)IDB_RADIOBUTTON2,hInst,NULL);
怎么处理radio button被选中的消息
...全文
121 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2015-02-25
  • 打赏
  • 举报
回复
父窗口不要设置为GroupBox,如果设置到GroupBox那么其控件的消息将发送到GroupBox,使用代码创建,比较简单的方法将Radio的父窗口指定为this 另外的方案是创建一个你自己的GroupBox类A(才CWnd派生)代替GroupBox,在A中处理子控件的消息
worldy 2015-02-24
  • 打赏
  • 举报
回复
引用 2 楼 baidu_25885829 的回复:
在窗口过程中收不到Radio Button被选中的消息,因为Radio Button的父窗口是GroupBox
在GroupBox中处理消息或者传递给上层窗口
baidu_25885829 2015-02-24
  • 打赏
  • 举报
回复
上面我贴出了代码,没有用到SetPraent函数,只是在创建RadioButton按钮的时候把父窗口设置为GroupBox,目的是为了方便排版和组成一组单选按钮
worldy 2015-02-24
  • 打赏
  • 举报
回复
引用 4 楼 baidu_25885829 的回复:
1、要在GroupBox中处理消息,就要知道它的窗口过程,GroupBox是系统定义的控件,它的窗口过程怎么获得? 2、传递给上层窗口怎么做? 能讲的详细一点吗,我是新手,刚学API
难道你使用SetParent将控件一个个设置到GroupBox?
baidu_25885829 2015-02-24
  • 打赏
  • 举报
回复
#include"windows.h" BOOL initApplication(HINSTANCE hInstance);//注册窗口类 BOOL initInstance(HINSTANCE hInstance,int nShowCmd);//创建窗口 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nShowCmd) { MSG msg; if(!initApplication(hInstance)) return FALSE; if(!initInstance(hInstance)) return FALSE; while(GetMessage(&msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } LRESULT CALLBACK WindowProc(HWND hwnd,UNINT uMsg,WPARAM wParam,LPARAW lParam) { switch(uMsg){ case WM_CREATE: HWND hGroupBox; hGroupBox=CreateWindowEx(0,WC_BUTTON ,L"Group",WS_VISIBLE | WS_CHILD | BS_GROUPBOX,20,20,140,80,hMainWnd,(HMENU)IDB_GROUPBUTTON,hInst,NULL); CreateWindowEx(0,WC_BUTTON,L"no",WS_VISIBLE|WS_CHILD|BS_AUTORADIOBUTTON,20,20,40,40,hGroupBox,(HMENU)IDB_RADIOBUTTON1,hInst,NULL); CreateWindowEx(0,WC_BUTTON,L"yes",WS_VISIBLE|WS_CHILD|BS_AUTORADIOBUTTON,80,20,50,40,hGroupBox,(HMENU)IDB_RADIOBUTTON2,hInst,NULL); break default: return DefWindowProc(hwnd,uMsg,wParam,lParam); } }
baidu_25885829 2015-02-24
  • 打赏
  • 举报
回复
1、要在GroupBox中处理消息,就要知道它的窗口过程,GroupBox是系统定义的控件,它的窗口过程怎么获得? 2、传递给上层窗口怎么做? 能讲的详细一点吗,我是新手,刚学API
baidu_25885829 2015-02-23
  • 打赏
  • 举报
回复
在窗口过程中收不到Radio Button被选中的消息,因为Radio Button的父窗口是GroupBox
worldy 2015-02-23
  • 打赏
  • 举报
回复
窗口过程中处理WM_COMMAND消息

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧