本例以兩個vc dialog
主要api:findwindow(lpc
tstrlpclassname,lpctstrlpwindowname )
//通過程序名得到程序handle
sendmessage(uintmessage,wparamwparam=0,lparamlparam=0)
//the result of the message processing; its value depends on the message sent.
主程式 server :其他均為預設.
mfc 建立一dialog 應用程式,工程名字:server
新增一button控制項command,並與之對應的函式oncommand
在serverdlg.h裡新增自己的訊息:#define wm_comm wm_user+10
函式 oncommand 新增**:
cstring str="client";
cwnd *pwnd=cwnd::findwindow(null,str);
if(pwnd)
pwnd->sendmessage(wm_comm,0,0);//通過sendmessage的後兩個引數
//wparam wparam, lparam lparam傳遞資訊
else messagebox("findwindow null");
mfc另 建立一dialog 應用程式,工程名字:client 在 其
oninitdialog裡最後新增**setwindowtext("client");
在client.h裡新增自己的訊息:#define wm_comm wm_user+10
新增訊息對映:
begin_message_map(csenderdlg, cdialog)
//}afx_msg_map
end_message_map()
給clientdlg.cpp新增自己的訊息處理函式onsendmsg(wparam wparam, lparam lparam)
// wparam lparam既是要傳遞的資訊
if(wparam==0 && lparam==0)
afxmessagebox("helloworld!");
給執行緒傳遞引數的方法
typedef struct tagmyparammyparam;
dword winapi mythreadproc(lpvoid param)
/*主線程內把要使用的視窗控制代碼賦給結構*/
myparam mp;
mp.hhost = m_hwnd; /*you master window handle*/
...
/*建立執行緒是把引數傳進去*/
dword dwid;
createthread(null,0,(lpthread_start_routine)mythreadproc,(void*)&mp,0,&dwid);
程序間通訊SendMessage
postmessage貌似只能用於程序內通訊,不同程序間通訊可以用sendmessage和共享記憶體等方式。這裡理出sendmessage的用法,方便日後查閱。傳送訊息的程序 char sztemp 1024 sprintf sztemp,layeredwindow d iwndid 視窗名 hwn...
SendMessage程序間簡單通訊問題
主要api findwindow lpctstrlpclassname,lpctstrlpwindowname 通過程序名得到程序handle sendmessage uintmessage,wparamwparam 0,lparamlparam 0 the result of the messag...
SendMessage程序間簡單通訊問題
程序間通訊常用有3種 1 利用剪貼簿實現程序資料交換.2 利用記憶體對映實現程序資料交換.3 利用訊息機制實現程序間資料共享.主要api findwindow lpctstrlpclassname,lpctstrlpwindowname 通過程序名得到程序handle sendmessage uin...