我想把Edit控件的EM_SETPASSWORDCHAR和EM_GETPASSWORDCHAR消息用自己写的一个函数处理,用消息映射怎么写呢
是不是把ON_EM_SETPASSWORDCHAR(ID××, OnSetPW)加在下面代码中间就行了BEGIN_MESSAGE_MAP(CstarseeDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()我们作业要做个防范星号密码查看的东西,是不是把这两个消息的处理函数用自己写的空函数代替就行了,没有学过MFC,谢了

解决方案 »

  1.   

    VCwenqinglin:那个属性用PostMessage (hwnd,EM_SETPASSWORDCHAR,0,0)能重置
    就是星号密码查看器给编辑框发个EM_SETPASSWORDCHAR消息,星号密码就显示成明文了
    现在要阻断EM_SETPASSWORDCHAR这个消息的处理,是不是要用消息映射?
      

  2.   

    刚试了下,没有ON_EM_SETPASSWORDCHAR,
    EM_SETPASSWORDCHAR的消息映射要怎么写
      

  3.   

    Tr0j4n:这个具体怎么写呢?
    网上有人说,EM表示 EDIT MESSAGE 的意思,这个消息是这个控件内部的winproc来执行响应的,不使用函数的方式来执行功能。
      

  4.   

    在网上找了个这个,不过好像是C++ Builder里的,VS提示'VCL_MESSAGE_HANDLER': identifier not found
    在VC里有类似的代码么?
    ----------
        public:
            __fastcall TBugEyesEdit(TComponent* Owner);
            void __fastcall BugEyes(TMessage &Msg);//自定义消息处理函数
            BEGIN_MESSAGE_MAP   //消息影射
                  VCL_MESSAGE_HANDLER(EM_GETPASSWORDCHAR,TMessage,BugEyes)
                  VCL_MESSAGE_HANDLER(WM_GETTEXT,TMessage,BugEyes)
                  VCL_MESSAGE_HANDLER(EM_SETPASSWORDCHAR,TMessage,BugEyes)
            END_MESSAGE_MAP(TEdit) //结束消息影射
      

  5.   

    搞定了,重写了PreTranslateMessage(),把EM_SETPASSWORDCHAR消息屏蔽了