分类: WINDOWS
2010-02-01 19:21:14
从一个窗口Dialog1发送字符串到另一个窗口Dialog2:
(1)在Dialog1中调用:
char *name = “shenxiaocheng”;
HWND hWnd = ::FindWindow(NULL, “Flash Download”);
::SendMessage(hWnd, WM_ADDFPA, (WPARAM)name, (LPARAM)0);
注:FindWindow的第一个参数是窗口类名,第二个参数是窗口的标题
SendMessage的第一个参数是窗口句柄,第二个参数是消息,第三四个参数是传递给消息处理函数的参数
(2)在Dialog2的头文件中:
定义:
#define WM_ADDFPA WM_USER+1
如果有多个自定义消息,则相应的为WM_USER+2, WM_USER+3...
在
//{{AFX_MSG(CFdownload)
…
//}}AFX_MSG
之间加:
afx_msg LRESULT addfpa(WPARAM iParam1, LPARAM iParam2);
(3)在Dialog2的cpp文件中:
在
BEGIN_MESSAGE_MAP(CFdownload, Cdialog)
//{{AFX_MSG_MAP(CFdownload)
…
//}}AFX_MSG_MAP
END_MESSAGE_MAP
之间加:
ON_MESSAGE(WM_ADDFPA, addpa)
将消息与处理函数关联起来
(4)在Dialog2的cpp文件中添加函数:
afx_msg LRESULT Cfdownload::addfpa(WPARAM iParam1, LPARAM iParam2)
{
//处理传过来的字符串(char *)iParam1
return 0;
}
总结:
在窗口Dialog1中获得Dialog2的句柄,然后根据该句柄用SendMessage发送一个消息给Dialog2,顺带着点信息,在窗口Dialog2中收到的消息后,根据消息的映射查看到该消息的处理函数,用该函数去处理收到的消息和顺带的信息。