- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
简介:我有一个派生自 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/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!