VC编程小技巧之编辑框

1.怎么让对话框中的编辑框接收对话框的消息


// 怎么让对话框中的CEdit控件类接收对话框的消息

1、在对话框中增加一个ID IDC_EDIT1CEdit1控件
2、通过ClassWizard 生成一个基于CEdit的新类CMyEdit,
CMyEdit  m_wndEdit;
3、在对话框OnInitDialog()中,将m_wndEdit子类化,使其能够接受对话框的消息。
m_wndEdit.SubclassDlgItem (IDC_EDIT1,this);

 

2.怎么防止密码被非法获取?

  [问题提出]
    这两天大家比较专注在获取Edit密码框的密码.在盗取时,我们怎么防范呢?
  
  [解决方法]
    此方法针对于通过SendMessage向此窗口发送WM_GETTEXTEM_GETLINE消息来取得密码.跟我来.
  
  [程式实现]
    方法非常简单,CWnd::DefWindowProc函数拦截得到的消息(Edit发的).
    建立名为My的对话框工程.建立一个Edit控件ID=IDC_EDIT1.建一个新类名为CMyProtectEdit,派生于CEdit.
    MyDlg.cpp中声明全局变量:BOOL g_bIdentity;
    BOOL g_bIdentity;

    MyProtecEdit.cpp:
    extern BOOL g_bIdentity;

    响应CMyProtectEditDefWindowProc函数:
    LRESULT CMyProtectEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
       // TODO: Add your specialized code here and/or call the base class
       // Edit的内容获取必须通过以下两个消息之一,不对其采用默认的处理:
       if(( message == WM_GETTEXT) || ( message == EM_GETLINE))
       {   //检查是否为合法
          if(!g_bIdentity)
          {   //非法获取,显示非法信息
             AfxMessageBox(_T("不能让你看我的密码,:( !"));
             return 0;
          )
          g_bIdentity = FALSE;//合法获取
       }
        
       return CEdit::DefWindowProc(message, wParam, lParam);
    }

    然后在MyDlg.cpp
    void CMyDlg::DoDataExchange(CDataExchange* pDX)
    {
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CGetPasswordDlg)
        // NOTE: the ClassWizard will add DDX and DDV calls here
       if( pDX->m_bSaveAndValidate)
       {
          g_bIdentity = TRUE;
       }      
       /

   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值