分享

4

 mymin1989 2011-04-20
改变标准控制行为最简单的方法是使用MFC的“窗口子类”的特性,例如:
1   在对话框中定位一个编辑控制,ID为IDC_EDIT1
2   编写一个新的CEdit的派生类,类名为CNonNumberEdit。对它
的WM_CHAR消息进行映射,编写如下代码
void CNonNumberEdit::OnChar(UNIT nChar,.......)
{
    if(!isdigit(nChar))
{
   CEdit::OnChar(nchar,...);
}
}
3   按如下方式在对话框类或窗体视图类的头文件中为类CNonNumberEdit声明一个数据成员
private:
          CNonNumberEdit  m_nonNumberEdit;
4   如果当前所处理的是对话框类,重载OnInitDialog函数,加代码
m_nonNumberEdit.SubclassDlgItem(IDC_EDIT1,this);
5   如果是窗体视图类,重载OnInitalUpdate
if(m_nonNumberEdit.m_hwnd==NULL)
{
   m_nonNumberEdit.SubclassDlgItem(IDC_EDIT1,this);
}
类Cwnd::SubclassDlgItem成员函数保证了所有的消息再被发送给控制的内置窗口过程
之前都要经过应用程序框架的消息分发系统进行。被称为“动态子类”
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多