很简单,不知道谁想要分???
很简单的一个问题:(SDK编程)我希望自己创建的Static控件能够接受到鼠标点击的消息以便移动控件,我已经把Static控件属性设为SS_NOTIFY,并且知道在STN_CLICKED消息中处理,但是我现在不知道把代码放在哪里才能接受到消息,哪位大虾伸伸手,帮帮忙,穷人送上20分祝你天天快乐。
我曾经把STN_CLICKED放在WM_COMMAND消息下面,觉得不对(其实就是不对),但是MSDN上说 The parent window of the control receives this notification message through the WM_COMMAND message.所以我就放在那里了。
问题点数:20、回复次数:7Top
1 楼blueport(蓝色港口)回复于 2001-03-11 22:28:00 得分 10
你可以看我的代码!!www.feelby.net的VC专题下有下栽.
(是关于系统托盘的,不过原理是一样的.也是notification message .Top
2 楼joke100(咱们去SLEEP吧...)回复于 2001-03-11 22:34:00 得分 0
WM_NOTIFY嘛。。。。。。。。。。。。。。
WM_NOTIFY与WM_COMMAND是不同的喔
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
...
switch(msg)
{
case WM_COMMAND :
...
break;
case WM_NOTIFY : // 在这儿,老兄
...
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
break;
}
return 0;
}Top
3 楼Soft_Zealot(令狐冲)回复于 2001-03-11 22:34:00 得分 0
我进不去www.feelby.net网站,能不能简单讲解一下Top
4 楼Soft_Zealot(令狐冲)回复于 2001-03-11 22:53:00 得分 0
TO zero100:
好像不行,我加入了WM_NOTIFY消息,但是调试发现程序根本不处理此消息。另外如何处理STN_CLICKED消息呢,它们之间的结构是什么?我现在总是搞不清楚。Top
5 楼Soft_Zealot(令狐冲)回复于 2001-03-11 22:57:00 得分 0
因为按照msdn的说法,应该结构是这样:
case WM_NOTIFY:
{
.......
switch(...)
{
case STN_CLICKED:
.......
但是我觉得这肯定不对,因为参数在这期间改变了。
Top
6 楼Soft_Zealot(令狐冲)回复于 2001-03-12 08:12:00 得分 0
我已经解决了问题,在形如下面的语句中可以得到预期的效果:
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
...
switch(msg)
{
case WM_COMMAND :
{
...
return 0;
default: //这里,因为有若干个Static,id从0到n,所以放在这里可以少写很多case id
......
}
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
break;
}
return 0;
}
不过我仍然没有找到STN_CLICKED消息在哪个地方处理?
哪位大虾知道吗?Top
7 楼Fesd(傻蛋)回复于 2001-03-12 10:44:00 得分 10
LRESULT CALLBACK WndProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
...
switch(msg)
{
case WM_COMMAND :
OnCommand(hwnd,(int)LOWORD(wParam),(HWND)lParam,(UINT)HIWORD(wParam))
}
}
LRESULT OnCommand(HWND hwnd,int nID, HWND hWndControl, UINT codeNotify)
{
if((nID == YOUR_STATIC_ID)&&(codeNotify == STN_CLICKED))
{//Do your Work here
}
}Top




