VC窗口句柄与向窗口送消息!高手进来下!

2025-03-15 05:50:31
推荐回答(3个)
回答1:

::SendMessage(TWnd,WM_CLOSE,0,0);为什么这个窗口不会关闭?
两种情况:句柄获取不正确消息未送到,或者目标窗口重写了close消息,收到该消息并不关闭窗口。

枚举获取的窗口句柄不是0X1111111,而是0X2222222,为什么呢?
不同的进程(非本进程窗口)获取同一窗口句柄值可能会不一样。如果同一进程多次获得同一窗口句柄值不同的话,就是你获取句柄出错了。

自定义消息是没有返回类型的,它又不是函数……如果你说的是消息响应函数,只能说在一定条件下是(较新版本的mfc中,如果你通过mfc的映射方式就必须返回LRESULT,即long)。极端情况下,你可以写自己的库,任意规定消息函数的返回值,甚至你返回float型都是可以的。

回答2:

1. 可能 SendMessage(TWnd,WM_CLOSE,0,0) 中TWnd不正确。可能你没有恰当使用EnumWindows——通常在它简单枚举窗口时回调你的函数EnumWindowsProc,,在其中你可判断这是否是要找的窗口(如通过WindowText检查窗口标题)。
2. 很可能与1是同一个问题。
3. 对MFC不熟悉,但可想象这个返回值应该同 WndProc() 函数:"LRESULT, A 32-bit value returned from a window procedure or callback function"

回答3:

返回类型都是long的吗?
vs2005以后,这个是必须的。 vc6的版本是可以void的。