NPAPI 利用MFC 擴充套件CEdit 展示

2021-06-11 04:58:15 字數 1528 閱讀 7672

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("np******.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)

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("np******.dll"),null,::getcommandline(),0);
最後:

myedit->showcaret();
5) 設定myceditex最大輸入長度和內容

設定最大長度:

myedit->setlimittext (maxnum);
獲取內容:

myedit->getwindowtext(buf,textbox_maxlength);

MFC擴充套件DLL 小結

1 在dll中啟動多執行緒,用 beginthread 不能使用afxbeginthread 2 dll中與客戶程式之間通訊可以有2中方法 1 通過訊息,在dll中增加乙個自定義訊息,此訊息的id注意不能和客戶端程式中的訊息重複。在客戶端程式中將視窗控制代碼傳給dll,在客戶端寫上此訊息的響應函式,...

MFC介面擴充套件庫

bcgcontrolbar專業版是mfc的乙個擴充套件庫,您可以用來構建類似於microsoft office microsoft visual studio和其他一些知名產品的高階使用者介面。這個擴充套件庫包含了150多個經過精心設計,測試和具有完備文件的mfc擴充套件類。我們的控制項能夠輕鬆的融...

利用MFC獲取網頁內容

include include include include include include include include using namespace std string gethtml cstring url pfile close delete pfile session.close ...