微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正在用SetWindowPos移动一个窗口的“正常方法”来做?

我想知道如果为了移动一个(MS Windows的)窗口的Win32 API 20像素的权利和40像素向下,下面的函数调用将是如何做到这一点:

SetwindowPos( /* hWnd */ hChildDlg2,/* hWndInsertAfter */ (HWND) -1,/* X */ 20,/* Y */ 40,/* cx */ -1,/* cy */ -1,/* uFlags */ SWP_NOSIZE | // Ignore cx,cy SWP_NOZORDER // and hWndInsertAfter );

我问,因为在我看来,可能只有HWND和x和y作为参数的函数

WriteFile错误文件指针重新定位

GetLastError 127

提示inputwindows全局组

上下文无法使用cuDNN无,致命错误:cudnn.h:没有这样的文件或目录

用Windows API加载一个ttf字体

是的,这是正常的方式,窗口将得到一个WM_WINDOWPOSCHANGING消息(参数已更改)也有旧的MoveWindow但它不太灵活,实际上强制您设置大小。

要正确地保存和恢复窗口大小,你应该分别使用GetwindowPlacement和SetwindowPlacement 。

是的,这几乎是如何完成的。 您应该更喜欢使用SetwindowPos()因为它可以让您对窗口的移动/调整大小有相当程度的控制。

我通常像这样使用它(我写的一个小框架的一部分):

// Window member function void Window::Move(int x,int y) { if(hwnd != 0) { ::SetwindowPos(hwnd,x,y,SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE); } }

还有一个MoveWindow()函数可以做几乎相同的事情。 使用SetwindowPos()函数, 现在它比其他任何东西都更方便了 。

你的意思是像MoveWindow ?

它需要hwnd,x,y,width,height,因为没有SWP_NOSIZE标志,使用它来移动窗口实际上更加复杂,因为你也必须获取大小。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐