解决方案 »

  1.   

    在窗口过程中收不到Radio Button被选中的消息,因为Radio Button的父窗口是GroupBox
      

  2.   


    在GroupBox中处理消息或者传递给上层窗口
      

  3.   

    1、要在GroupBox中处理消息,就要知道它的窗口过程,GroupBox是系统定义的控件,它的窗口过程怎么获得?
    2、传递给上层窗口怎么做?
    能讲的详细一点吗,我是新手,刚学API
      

  4.   

    #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);
               }
    }
      

  5.   


    难道你使用SetParent将控件一个个设置到GroupBox?
      

  6.   

    上面我贴出了代码,没有用到SetPraent函数,只是在创建RadioButton按钮的时候把父窗口设置为GroupBox,目的是为了方便排版和组成一组单选按钮
      

  7.   

    父窗口不要设置为GroupBox,如果设置到GroupBox那么其控件的消息将发送到GroupBox,使用代码创建,比较简单的方法将Radio的父窗口指定为this另外的方案是创建一个你自己的GroupBox类A(才CWnd派生)代替GroupBox,在A中处理子控件的消息