鏀惰棌 (0) +1 璧� (0) +1 韪� (0) +1
鏀惰棌鎴愬姛鏌ョ湅鏀惰棌>>

正在阅读:感悟VB细水长流话API(五-2)感悟VB细水长流话API(五-2)

2004-02-14 09:34 出处:电脑爱好者 作者:张鸿 责任编辑:zwg
非常简单的事情。不过如果像上面一样做,是不是单单改个Z位置也要计算窗口位置和大小?最后一个参数又是干什么用的呢?wFlags可以让SetWindowPos忽略或执行某种行为。这里给出一部分: SWP_DRAWFRAME和SWP_FRAMECHANGED:强制发送 WM_NCCALCSIZE消息给窗口 SWP_HIDEWINDOW:隐藏窗口 SWP_NOACTIVATE:不激活窗口 SWP_NOMOVE:保持当前位置(忽略x和y) SWP_NOREDRAW:窗口不自动重画 SWP_NOSIZE:保持当前大小(忽略cx和cy) SWP_NOZORDER:保持窗口在列表的当前位置(忽略hWndInsertAfter) SWP_SHOWWINDOW:显示窗口   这些参数可以使用Or运算组合,所以如果你不希望改变窗口位置和大小,你只需要给最后一个参数传递(SWP_NOMOVE Or SWP_NOSIZE)即可。如下: SetWindowPos Me.hWnd, HWND_TOPMOST, 0&, 0&, 0&, 0&, SWP_NOMOVE Or SWP_NOSIZE   这里的x、y、cx、cy的值将被忽略。其他值的组合,你可以自己去试试。   好了,这个看起来好像有点复杂的API已经变得很清晰,那么轮到上一话的收尾。   WM_NCCALCSIZE消息是在计算窗口的客户区大小时被发送的,它主要是让程序可以收到该消息后重新计算客户区的大小。我们先不管它是不是也能像许多以WM_开头的消息一样由我们发送给程序让它产生作用,但它使用起来的复杂程度让我宁可选择改变窗体大小再改回去。当我们改变窗口的大小时,很明显的就是它一定会重新计算客户区大小以调整外观。既然这个函数可以强制发送WM_NCCALCSIZE消息,那么我们就应该试一试。 SetWindowPos Me.hwnd, 0&, 0&, 0&, 0&, 0&, SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOMOVE Or SWP_FRAMECHANGED   为了不改变窗口大小、位置和Z顺序(就是要窗口保持原状),我使用SWP_NOSIZE Or SWP_NOZORDER Or SWP_NOMOVE,让它忽略前面所有的参数,最后加个 Or SWP_FRAMECHANGED 就是让它重新计算客户区大小。把上面的一行放到前一话中更改风格的那一句下面,再执行程序,成功了! 它已经能够正常刷新! 就是这样,问题马上变得这么简单。还有什么疑问吗?没有,好,那么我们下一期再见。
键盘也能翻页,试试“← →”键

相关文章

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
鎵嬫満璁块棶鍥炲埌椤堕儴