MoveWindow 函数的可疑行为
MoveWindow(int x, int y, int nWidth, int nHeight,false) 甚至使用 SetWindowPos(&wndTopMost, m_iLeft, m_iTop, m_iWidth, m_iHeight, false);
由于我不想重新绘制窗口,因此我将 MoveWindow 的 repaint 参数传递为 false。但它重新粉刷了窗户。 如果我使用 LeadTool v 16,此行为工作正常,但在 v16.5 MoveWindow 函数中失去了其功能。不知道和LeadTool有什么关系。
期待有关此问题的任何帮助
MoveWindow(int x, int y, int nWidth, int nHeight,false) even used SetWindowPos(&wndTopMost, m_iLeft, m_iTop, m_iWidth, m_iHeight, false);
as i do not want to repaint my window, i am passing repaint parameter of MoveWindow with false. but it repaints the window.
This behavior works fine if i use LeadTool v 16, but in v16.5 MoveWindow function loose its functionality. do not know how it relates to LeadTool.
Looking forward for any help regarding of this issue
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当窗口需要重新绘制时,这不是(唯一)你的决定。当您收到
WM_PAINT
时,Windows 会告诉您必须绘制一个窗口。 “我不想”这个理由还不够。It's not (only) your call when a window should be repainted. When you get an
WM_PAINT
, windows tells you that a window must be painted. "I don't want to" is not enough reason.您要更改窗口的宽度或高度吗?如果是这样,并且目标窗口设置了 CS_HREDRAW 或 CS_VREDRAW 类样式位,则调整大小将导致完全重绘。 (简单的移动可能不会导致重新绘制,除非移动它会发现先前被其他窗口隐藏的部分窗口。)
顺便说一句,SetWindowPos 的最后一个参数是一组位,而不是 true/false,第一个参数是参数看起来很奇怪,它应该是一个普通的 HWND,而不是变量的地址。有关详细信息,请参阅 MSDN 上的 SetWindowPos。
Are you changing the width or height of the window? If so, and if the target window has the CS_HREDRAW or CS_VREDRAW class style bits set, then resizing will cause a full repaint. (A simple move likely won't cause a repaint unless moving it uncovers part of the window that was previously hidden by some other window.)
BTW, last parameter to SetWindowPos is a set of bits, not a true/false, and the first parameter looks odd, it should be a plain HWND, not the address of a variable. See MSDN on SetWindowPos for details.