如何向一无窗体的类发送消息
我创建了一个类CA::CWnd,此类无窗体,但想在其他类中向A类发送消息。
A类创建如下:
m_A = new CA;
int bRet;
RECT rect;
rect.left = rect.top = 110;
rect.bottom = rect.right = 110;
bRet = m_A->Create(NULL,"AAAA",WS_CHILD,rect,this,3000);
if(bRet)
{
}
但在A类中取句柄时:HWND m_hwnd = GetSafeHwnd();
m_hwnd始终为0。
但向A类发消息则要用到句柄:PostMessage(hwnd,WM_USER_XXXX, uEvent, (LPARAM) this);
自然此处hwnd无值可赋了。
那怎么向无窗体的类发送消息呢?
是采用其他取句柄函数代替GetSafeHwnd(),还是采用其他发送消息函数代替PostMessage()?
请大家帮忙,或给点提示。
谢谢!
问题点数:100、回复次数:9Top
1 楼guard2002(Chief Killer Offic)回复于 2004-09-04 15:55:27 得分 0
一般hwnd为窗口,且可以是任何类型的屏幕对象
如果不是窗口,是不是不能发送/接受消息呀?Top
2 楼beyondtkl(大龙驹<*好久没来了,兄弟们好吧。*>)回复于 2004-09-04 16:00:35 得分 20
hWnd 为目的方的句柄 可以为窗口,或者窗口内的控件的句柄
如果没有句柄 是不能发的Top
3 楼banjo(3天看问题)回复于 2004-09-04 16:06:44 得分 20
消息分发一般使用窗口句柄
当然还有线程消息,你也可以使用线程消息。
具体的可以查看msdn,有例子
Top
4 楼crystal521(【云淡风轻】)回复于 2004-09-04 16:22:31 得分 20
GzTop
5 楼guard2002(Chief Killer Offic)回复于 2004-09-04 16:27:06 得分 0
那如果没有窗口,怎样才能取到hWnd值呢?Top
6 楼guard2002(Chief Killer Offic)回复于 2004-09-04 16:38:53 得分 0
范了个弱智的错误!!
问题解决。
如首贴写法是可以的,应该在Create后再取句柄就能取到,并能正常发送消息。
谢谢大家支持!
Top
7 楼laiyiling(陌生人[MVP])回复于 2004-09-04 16:40:21 得分 20
m_A->SendMessage()Top
8 楼huwei001982(凶猛的小狗)回复于 2004-09-04 16:50:14 得分 20
原来是继承自CWnd的类啊
我还以为是非 CWnd 类呢Top
9 楼lifeequation(果皮)回复于 2004-09-04 17:33:07 得分 0
不用句柄也可以啊,SendMessage()是CWnd类的成员函数,得到对象就可以调用了
Top




