gpt4 book ai didi

c++ - MFC:RadioButton 在 CWnd 的子类中不起作用(变灰)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:57 26 4
gpt4 key购买 nike

简介:我有一个派生自 CWND 的类(自定义窗口)。这个自定义类有一个单选按钮 (CButton) 和一堆其他静态控件。

问题:当创建单选按钮时,它是灰色的,点击它什么也不做。用于创建的代码非常简单:

m_radioButton->Create(_T("rButton1.1"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON , CRect(5,5,300,15), this,2001);

我试着添加

ON_BN_CLICKED(2001, method())

事件但未被触发。

我也有 ShowWindow() 和 EnableWindow() 方法,但这也不起作用。

问题:由于此类不是从 CDialog 派生的,因此 DDX 不可用。这可能是问题所在吗?有办法绕过它吗?我的消息映射只有 SIZE、CREATE 和 DESTROY,而不是 ON_BN_CLICKED。

欢迎提出任何建议。

旁注:这里是 MFC 新手,非常感谢您的帮助。

研究:我发现只有这个相关stack overflow question但这对我的情况没有帮助。也遇到了这个 cool page on mfc subclassing但它没有回答我的问题。

附带问题:因为我没有得到任何答案,这种情况不是很常见吗?如果我根本不从 CWND 派生而从 CDialog 或其他东西派生,这是否根本错误?

最佳答案

我试图复制场景,但无法重现。从 CWnd 派生应该没有任何问题。我在下面提供了示例代码,我创建了一个从 CWnd 派生的名为“CTestWindow”的自定义类,并在 CTestWindow 的 OnCreate() 中创建了一个功能区按钮。我可以单击单选按钮,并且也按预期调用了 method()。

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"), WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON , CRect(5,5,300,25), this,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,0,400,400),this,200,NULL) == -1){
return;
}
m_wndTest.SetWindowPos(NULL,120,120,500,500,SWP_SHOWWINDOW);

关于c++ - MFC:RadioButton 在 CWnd 的子类中不起作用(变灰),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36855492/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com