摘要: 转自于:http://hi.baidu.com/max_new/blog/item/e2bbe607b1f127c57b8947c0.html许多软件,特别是占桌面面积不是很大的软件,通常都提供了一个常居顶端的功能(可能有的软件不是这么叫法,但作用是相同的),它的作用是保持窗口一直在其他窗口的上面,可以省去频繁切换窗口的动作。如果你想这么做,有一个API可以实现: SetWindowPos,声明是这样的: Private Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos" (By 阅读全文
posted @ 2013-03-12 22:36 归海一刀 阅读(850) 评论(0) 推荐(0) 编辑
摘要: 在窗口大小发生改变时,系统往窗口发送WM_SIZE消息,WPARAM指出窗口新的状态,LPARAM给出窗口新的大小。窗口的状态有三种:SIZE_MINIMIZE,SIZE_MAXIMIZE,SIZE_RESTORED。系统根据当前窗口的状态,在产生WM_SIZE消息时指定不同的WPARAM。然而,系统如何知道窗口当前的状态。很显然,系统必须用一些内存保存窗口当前的状态。保存在哪里呢? 用spy++观察一个窗口,很快就可以发现在窗口最大化、最小化、正常状态下,style的值是不同的。在最小化时,会多出WS_MINIMIZE,在最大化时会多出WS_MAXIMIZE,在正常状态下则没有这两个值。所以 阅读全文
posted @ 2013-03-12 21:58 归海一刀 阅读(773) 评论(0) 推荐(0) 编辑
摘要: 使用WM_MOUSEWHEEL 需要把CWnd设定为Focus ON_WM_MOUSEWHEEL( ) CWnd::OnMouseWheel afx_msg BOOL OnMouseWheel( UINT nFlags, short zDelta, CPoint pt ); 返回值:如果允许鼠标轮滚动,则返回非零值;否则返回0。 参数: nFlags 指明是否按下了虚拟键。这个参数可以是下列值的组合: · MK_CONTROL 如果CTRL键被按下,则设置此位。 · MK_LBUTTON 如果鼠标左键被按下,则设置此位。 · MK_MBUTTON 如果鼠标中键被按 阅读全文
posted @ 2013-03-12 09:34 归海一刀 阅读(223) 评论(0) 推荐(0) 编辑
摘要: WM_ACTIVE的消息参数wParam的低阶word指示窗口是被激活还是失去激活:WA_ACTIVE,被鼠标点击以外的方法激活;WA_CLICKACTIVE,由鼠标点击激活;WA_INACTIVE,失去激活;wParam的高阶word指示窗口是否被最小化;非零表示最小化;lPararm表示将激活的窗口句柄(WA_INACTIVE),或者将失去激活的窗口句柄(WA_CLICKACTIVE、WA_ACTIVE)。在标准Windows消息处理的章节中,曾指出处理WM_ACTIVE消息时,先要调用一个函数_AfxHandleActivate,此函数的原型如下: static void AFXAPI. 阅读全文
posted @ 2013-03-12 09:22 归海一刀 阅读(2523) 评论(0) 推荐(0) 编辑