關於dll中接收訊息的問題

2021-08-24 21:38:36 字數 1575 閱讀 3928

關於dll中接收訊息的問題

由於接收訊息必須要有hwnd,也就是需要有個視窗對應才能接收訊息,但在dll中不需要這個視窗,卻又想要能夠接收訊息。

這樣的話,就可以在dll中建立乙個「訊息視窗(message-only視窗)」,這種視窗僅僅用於處理訊息,而不會被顯示出來。

在建立時指定createwindowex的引數hwndparent為hwnd_message. 或在建立視窗後setparent(hwnd, hwnd_message);即可建立一

個「訊息視窗」

bool initmessageonlywindow()

hinstance hinstance = null;

hinstance = getmodulehandle(null);

if (hinstance == null)

return false;

wndclass wndcls;

wndcls.cbcl***tra=0;

wndcls.cbwndextra=0;

wndcls.hbrbackground=(hbrush)getstockobject(black_brush);

wndcls.hcursor=loadcursor(null,idc_cross);

wndcls.hinstance=hinstance;

wndcls.lpfnwndproc=messageonlywinproc;

wndcls.lpszclassname="message-only window";

wndcls.lpszmenuname=null;

wndcls.style=cs_hredraw | cs_vredraw;

registerclass(&wndcls);

m_hwnd = createwindowex(0,"message-only window","message-only window",0,0,0,0,0,hwnd_message,0,hinstance,0);

if (m_hwnd == null)

return false;

return true;

lresult callback messageonlywinproc(

hwnd hwnd, // handle to window

uint umsg, // message identifier

wparam wparam, // first message parameter

lparam lparam // second message parameter

switch(umsg)

case wm_close:

destroywindow(hwnd);

break;

case wm_graphnotify:

dosomething();

break;

case wm_destroy:

postquitmessage(0);

break;

default:

return defwindowproc(hwnd,umsg,wparam,lparam);

return 0;

關於dll中接收訊息的問題

關於dll中接收訊息的問題 由於接收訊息必須要有hwnd,也就是需要有個視窗對應才能接收訊息,但在dll中不需要這個視窗,卻又想要能夠接收訊息。這樣的話,就可以在dll中建立乙個 訊息視窗 message only視窗 這種視窗僅僅用於處理訊息,而不會被顯示出來。在建立時指定createwindow...

關於接收訊息的問題(尚有疑問,未完待續)

由於接收訊息必須要有hwnd,也就是需要有個視窗對應才能接收訊息,但有些情況下不需要這個視窗卻又想要能夠接收訊息,找了下,大概有這麼些辦法 1 在乙個bcb版塊看到有個人提問在dll中不用視窗怎麼接收訊息的乙個回答 自定義乙個視窗控制代碼 申請 allocatehwnd 釋放 deallocateh...

Kafka 訊息不能接收的問題

應用系統上做了乙個操作後,後續操作未執行。操作之間的銜接是通過kafka訊息來通訊的 可能原因猜測 1.消費類掛掉了,沒有監聽?2.kafka故障?看下消費類所在的應用,發現有異常掛掉了。問題在此,重啟解決之。啟動日誌看到消費類正常建立監聽的資訊。手工推送乙個訊息,還是未收到。kafka自己啟動了乙...