用API编写BS_RADIOBUTTON如何实现互斥的有关问题

用API编写BS_RADIOBUTTON怎么实现互斥的问题?
本帖最后由 VisualEleven 于 2013-10-10 16:08:39 编辑
我是新手,现在需要用API写程序,我直接用WIN API在窗口上创建3个BS_RADIOBUTTON按钮,为什么鼠标点击的时候不能实现互斥呢?请坛子里的兄弟们指教一下,谢谢!
创建代码:
case WM_CREATE:
{
    ::CreateWindowExW(NULL, L"Button", L"RADIO 1",WS_CHILD | WS_VISIBLE |         BS_RADIOBUTTON | WS_GROUP, 10, 20, 100, 20, hWnd, (HMENU)ID_ONE, 
((LPCREATESTRUCTW)lParam)->hInstance, NULL);

::CreateWindowExW(NULL, L"Button", L"RADIO 2",WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 40, 100, 20, hWnd, (HMENU)ID_TWO, ((LPCREATESTRUCTW)lParam)->hInstance, NULL);

::CreateWindowExW(NULL, L"Button", L"RADIO 3",WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON, 10, 60, 100, 20, hWnd, (HMENU)ID_THR, ((LPCREATESTRUCTW)lParam)->hInstance, NULL);

return 0;

}


点击处理代码如下:
case WM_COMMAND:
{
::SendMessageW((HWND)lParam, BM_SETCHECK,(WPARAM)!::SendMessageW((HWND)lParam, BM_GETCHECK, 0, 0), 0);

break;
}
radiobutton api

------解决方案--------------------
我简单试了下,几个要点,
1、不能设置auto.
2、每一组互斥的按钮必须ID连续,否则得自己去写循环判断当点击某个radio时该让哪个按钮设置为TRUE,哪个设置为false
3、当一组按钮一致时可以以大致下面方式

switch(ID)
{
//第一个互斥组
  case IDC_RADIO1:
  case IDC_RADIO2:
  case IDC_RADIO3:
  {
   CheckRadioButton(hwnd,组中第一个ID,组中最后1ID,哪个选中)//自己搜用法
  }
//第二个继续类似
}