實現程序間資料共享除了常用的記憶體檔案對映外,對於一些非檔案的資料共享可以直接使用訊息wm_copydata。
如果需要在程序a傳遞資料到程序b,簡單的實現如下:
在程序a中:
cstring strdatatosend = _t( "hello" ); //需要傳遞的資料
hwnd hwndreceived; //程序b的接收資料視窗物件
//copydatastruct結構是wm_copydata傳遞的資料結構物件
copydatastruct cpd;
cpd.dwdata = 0;
cpd.cbdata = strdatatosend.getlength(); //傳遞的資料長度
cpd.lpdata = (void*)strdatatosend.getbuffer(cpd.cbdata); //傳遞的資料位址
sendmessage( hwndreceived, wm_copydata, 0, (lparam) & cpd );
strdatatosend.releasebuffer();
在目標程序b中,先手動建立好函式宣告和實現
begin_message_map(cmywnd, cwnd)
//}afx_msg_map
end_message_map()
對映函式:
bool cmywnd::oncopydata(cwnd* pwnd, copydatastruct* pcopydatastruct)
還可以參考msdn文章using data copy
用WM COPYDATA實現程序通訊
用wm copydata的前提 1,知道接收訊息程序的控制代碼。2,接收訊息程序過載了wm copydata訊息對映 傳送端 void csenddlg onbnclickedsend 接收端 宣告afx msg bool oncopydata cwnd pwnd,copydatastruct pc...
WM COPYDATA 程序間傳遞引數的問題
我們首先定義下面的結構,define buffer size max path 4 struct for loading report typedef struct report info report info,preport info 注意report info結構中的字元為字元陣列,這樣可以保...
使用 WM COPYDATA 在程序間共享資料
訊息作用 在程序間共享資料 內部通過建立記憶體對映檔案 訊息介紹 需要用到的資料結構 型別 typedef struct tagcopydatastruct copydatastruct,pcopydatastruct 結構體引數說明 dwdata ulong 儲存乙個數值,可以用來作標誌等 lpd...