注册 登录
编程论坛 VC++/MFC

CheckRadioButton怎么木有用啊

々NARUTO 发布于 2012-12-12 21:16, 855 次点击
程序代码:
#include <windows.h>
#include "resource.h"
#include "CDlg.h"
LRESULT CALLBACK WndProc(
                         HWND hwnd,      // handle to window
                         UINT uMsg,      // message identifier
                         WPARAM wParam,  // first message parameter
                         LPARAM lParam   // second message parameter
);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
    TCHAR szClsName[]=TEXT("ClassName");
    CDLG dlg;
    WNDCLASS wndcls;
    wndcls.cbClsExtra=NULL;
    wndcls.cbWndExtra=DLGWINDOWEXTRA;
    wndcls.hbrBackground=(HBRUSH)COLOR_WINDOW;
    wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndcls.hInstance=hInstance;
    wndcls.lpfnWndProc=WndProc;
    wndcls.lpszClassName=szClsName;
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_HREDRAW|CS_VREDRAW;
    dlg.RegisterClass(&wndcls);
    dlg.BuildWindow(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,NULL);
    dlg.ShowWindow(nShowCmd);
    return dlg.Run();
}
LRESULT CALLBACK WndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    switch(uMsg)
    {
    case WM_CREATE:
        CheckRadioButton(hwnd,IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);  //CheckRadioButton
        return 0;
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
注:CDlg是我自己封装的类,为何 我在WM_CREATE消息中加了CheckRadioButton(hwnd,IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);  但是RADIO1木有被选中的标记呀?
为方便大家分析错误
我把工程 文件发上来
只有本站会员才能查看附件,请 登录
4 回复
#2
々NARUTO2012-12-12 21:28
本人在寄宿学校,学校里没网上, 等回家后 有答案的 绝对结账
#3
yuccn2012-12-12 21:52
LRESULT CALLBACK WndProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
{
    static BOOL bInit = FALSE;

    switch(uMsg)
    {
    case WM_CREATE:
        break;
    case WM_PAINT: // 在Paint中处理咯,用静态变量作为初始化的标志就行,这样就行了。Create 估计是窗口没有初始化完成吧
        if (!bInit) {
            CheckRadioButton(hwnd,IDC_RADIO1,IDC_RADIO2,IDC_RADIO1);  //CheckRadioButton
            bInit = TRUE;
        }
        break;

    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
#4
yuccn2012-12-12 21:53
估计窗口还没有完成的时候,你就设置空间check状态,导致不成功吧。
在Paint中处理,窗口一定是已经初始化完毕了的
#5
々NARUTO2012-12-14 13:58
回复 4楼 yuccn
版主  真是热心啊 !
1