假设2008生成的窗口类名是CDlg,其他类名是CX
::PostMessage()这个第一个参数要求的句柄怎么填。---------------------------------CX.app文件内-----------------------
#include "CDlg.h"
((CDlg*)AfxGetMainWnd())->PostMessage();这样编译没有问题,但是运行到这里会报错。
::PostMessage()这个第一个参数要求的句柄怎么填。---------------------------------CX.app文件内-----------------------
#include "CDlg.h"
((CDlg*)AfxGetMainWnd())->PostMessage();这样编译没有问题,但是运行到这里会报错。
#define UM_MYMESSAGE WM_USER+100//定义响应消息的函数,在BEGIN_MESSAGE_MAP后面加入
ON_MESSAGE(UM_MYMESSAGE,&CDlg::OnMyMessage)//声明函数 .h头文件
afx_msg LRESULT OnMyMessage(LPARAM , WPARAM);//定义函数 .cpp文件
LRESULT CDlg::OnMyMessage(LPARAM lParam,WPARAM pParam)
{
//加入其它代码
return ture;
}//使用
PostMessage(UM_MYMESSAGE);
第二种方法是用FindWindow去得到对话框的窗口HWND,然后用::PostMessage()
第一种方法的指针如何获得呢?
第二种有没有更好的方法获取HWND?
谢谢
BOOL PostMessage( HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
你先用FindWindow找到你想发给它消息的窗口的句柄,然后用上面::PostMessage发送就行了。
注意PostMessage前面要加::,表示调用的是API。
第二种有没有更好的方法获取HWND?
谢谢
===========
你的程序是基于对话框的,所以你上面用AfxGetMainWnd()是可以获得对话框的指针的。
获取HWND最方便的方法就是FindWindow(NULL,_T("窗口标题"));
直接PostMessage得有对话框的句柄。
========
FindWindow找的是窗口,它可以用在查找其它进程中,也可以用来找进程自身的窗口。
其实就你的程序而言,AfxGetMainWnd()是可以获得对话框的指针的。