NPAPI 利用MFC 扩展CEdit 展示
1) 创建windowed的插件模式
2) 在插件上创建Dialog
3) 继承CEdit派生出MyCEditEx监听粘贴消息
4) 在Dialog创建MyCEditEx
5) 设置MyCEditEx最大输入长度和内容
1) 创建windowed的插件模式
略
2) 在插件上创建Dialog
m_hWnd=CreateDialogA(hlnstance,lpTemplate,hWndParent,(DLGPROC)DlgProc);
hInstance: GetModuleHandle("npsimple.dll")
lpTemplate : MAKEINTRESOURCE(IDD_INPUT)
hWndParent: 插件的窗口句柄
DlaProc: 对话框的消息响应函数
3) 继承CEdit派生出MyCEditEx监听粘贴消息
class MyCEditEx : public CEdit {}
重写WindowProc函数过滤掉粘贴消息:
头文件中声明:
virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
源文件中定义:
LRESULT MyCEditEx::WindowProc( UINT message, WPARAM wParam, LPARAM lParam){
switch (message) {
case WM_PASTE:
return 0;
}
return CEdit::WindowProc(message,wParam,lParam);
}
4) 在Dialog创建MyCEditEx
利用MFC库的create函数:
CWnd *m_cWnd = FromHandle(m_hWnd);
myEdit = new MyCEditEx();
myEdit->Create(WS_VISIBLE|ES_PASSWORD|WS_BORDER|WS_EX_STATICEDGE, CRect(0,0,width,height),m_cWnd,-1);
这里用了MFC函数,但是整个工程非MFC工程,所以使用前先对做一些MFC做的初始化工作,不然会出现异常:
AfxWinInit(GetModuleHandle("npsimple.dll"),NULL,::GetCommandLine(),0);
最后:
myEdit->ShowCaret();
5) 设置MyCEditEx最大输入长度和内容
设置最大长度:
myEdit->SetLimitText (maxNum);
获取内容:
myEdit->GetWindowText(buf,TEXTBOX_MAXLENGTH);