MFC ActiveX控件 ,嵌入网页中。现在发现一个问题,怎么动态改变自己大小啊?比如让网页传递大小参数,来决定控件在网页里显示时的大小。另外,这个控件是用来加密的,怎么怎么屏蔽除了键盘以外的其他消息啊?在线等啊

解决方案 »

  1.   

    yjgx007 谢谢你呀,就是类似“支付宝”的效果:https://alipay.com/。
     class CXXXXPropPage : public COlePropertyPage
    {
    DECLARE_DYNCREATE(CNaLanActiveXPropPage)
    DECLARE_OLECREATE_EX(CNaLanActiveXPropPage)// Constructor
    public:
    CNaLanActiveXPropPage();// Dialog Data
    //{{AFX_DATA(CNaLanActiveXPropPage)
    enum { IDD = IDD_PROPPAGE_NALANACTIVEX };
    // NOTE - ClassWizard will add data members here.
    //    DO NOT EDIT what you see in these blocks of generated code !
    //}}AFX_DATA
    .......
    }
    COlePropertyPage是继承自CDialog我就是在对话框(IDD_PROPPAGE_NALANACTIVEX )上添加了一个CEdite控件,并把它的属性设为PassWord.
    呵呵,很简陋吧。我对ActiveX不熟悉的。现在第一个问题基本解决了,只是要防止木马,怎么屏蔽一些消息呀?不如我只要键盘消息。
      

  2.   

    那个控件是为了防止其它程序hook这个password输入框的,因此,除了键盘消息,像WM_GETTEXT消息是无效的.
    不知道理解得对不对, 如果你要开发一个这样的ActiveX控件, 就要自定义Edit的消息, 当遇到WM_GETTEXT时返回一个空值, 而不用系统默认的返回值:The DefWindowProc function copies the text associated with the window into the specified buffer and returns the number of characters copied. 
      

  3.   

    我也是这样想的,但是只屏蔽WM_GETTEXT吗?木马主要是用WM_GETTEXT吗?还有其它的要屏蔽的吗?我们老板好像是说要屏蔽除了键盘以外的所有消息的
      

  4.   

    我在普通对话框程序里添加了继承自CEdit 的新类CSafe。然后子CSafe,并在重载DefWindowProcLRESULT CSafeEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    if ((message==WM_GETTEXT)||(message==EM_GETLINE))
    {
    return 0;
    }

    return CEdit::DefWindowProc(message, wParam, lParam);
    }
    完全可以了,
    但是在ActiveX怎么不可以啊?
      

  5.   

    在ATL中的控件(CEdit, CButton, etc.)使用都是通过CContainedWindow完成的。
      

  6.   

    建议你跟一下DefWindowProc函数,看看有没有进入,只要在这里直接返回你不处理的消息即可。
      

  7.   

    我想问问MFC ActiveX控件动态改变大小 是怎么解决的?