c – MFC:RadioButton在CWnd子类中不起作用(灰显)
发布时间:2020-12-16 06:51:47 所属栏目:百科 来源:网络整理
导读:简介:我有一个从CWND派生的类(自定义窗口).这个自定义类有一个单选按钮(CButton)和一堆其他静态控件. 问题:当创建单选按钮时,它显示为灰色,单击它不会执行任何操作. 用于创建的代码非常简单: m_radioButton-Create(_T("rButton1.1"),WS_CHILD | WS_VISIBL
简介:我有一个从CWND派生的类(自定义窗口).这个自定义类有一个单选按钮(CButton)和一堆其他静态控件.
问题:当创建单选按钮时,它显示为灰色,单击它不会执行任何操作. m_radioButton->Create(_T("rButton1.1"),WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON,CRect(5,5,300,15),this,2001); 我试着添加
事件,但没有被触发. 我也有ShowWindow()和EnableWindow()方法,但这也没有用. 问题:由于此类不是从CDialog派生的,因此DDX不可用.这可能是问题吗?有办法解决它吗?我的消息映射只有ON_BN_CLICKED以外的SIZE,CREATE和DESTROY. 欢迎任何建议. 侧面注意:MFC新手在这里,非常感谢您的帮助. 研究:我发现只有这个相关的stack overflow question,但这对我的情况没有帮助.也遇到了这个cool page on mfc subclassing,但它没有回答我的问题. 侧面问题:由于我没有得到任何答案,这种情况是不是很常见,如果我根本不是从CWND派生出来并从CDialog或其他东西衍生出来,这是根本错误吗? 解决方法
我试图复制场景,但无法重现.从CWnd派生不应该是任何问题.我在下面提供了示例代码,我创建了一个名为“CTestWindow”的自定义类,该类来自CWnd,并在CTestWindow的OnCreate()内创建一个功能区按钮.我可以单击单选按钮,方法()也按预期调用.
IMPLEMENT_DYNAMIC(CTestWindow,CWnd) BEGIN_MESSAGE_MAP(CTestWindow,CWnd) ON_WM_CREATE() ON_BN_CLICKED(2001,method) END_MESSAGE_MAP() int CTestWindow::OnCreate(LPCREATESTRUCT lpCreateStruct) { CButton *m_radioButton = new CButton; if (CWnd::OnCreate(lpCreateStruct) == -1) return -1; if(!m_radioButton->Create(_T("rButton1.1"),25),2001)){ return -1; } return 0; } void CTestWindow::method(){ AfxMessageBox(_T("I m clicked")); } 查找以下用于创建自定义窗口实例的代码: CString strMyClass; try { strMyClass = AfxRegisterWndClass( CS_VREDRAW | CS_HREDRAW,::LoadCursor(NULL,IDC_ARROW),(HBRUSH) ::GetStockObject(WHITE_BRUSH),::LoadIcon(NULL,IDI_APPLICATION)); } catch (CResourceException* pEx) { AfxMessageBox(_T("Couldn't register class! (Already registered?)")); pEx->Delete(); } if(m_wndTest.Create(strMyClass,_T("Custom Window"),WS_OVERLAPPEDWINDOW | WS_VISIBLE,CRect(0,400,400),200,NULL) == -1){ return; } m_wndTest.SetWindowPos(NULL,120,500,SWP_SHOWWINDOW); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |