VC++中, 在鼠标已经按住窗口边缘, 要拖拽调整窗口大小的时候, 会发送啥消息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC++中, 在鼠标已经按住窗口边缘, 要拖拽调整窗口大小的时候, 会发送啥消息?相关的知识,希望对你有一定的参考价值。

就是说我可以拦着这个消息, 然后决定是否调整窗口大小, 如: 如果大小已经到默认的最小大小, 则直接返回, 不再调整大小.

WM_SIZE

比如

void CMainFrame::OnSize(UINT nType, int cx, int cy)

//CMDIFrameWndEx::OnSize(nType, cx, cy);
TRACE("cx=%d; cy=%d", cx, cy);

int x = 100; //--> desired size
int y = 100; //-->desired size
if (cx > 800)
MoveWindow(0, 0, x, y, TRUE); //->Move window
else
return;
追问

这不行, 我已经试过了, 调整的部分会黑.

追答

行啊。。。

追问

额....我的表达可能不太好, 然后理解得又不太对头....
可以是可以, 但是调整的部分是会黑的, 一个好好的程序你一调整然后就黑一块, 多难看啊, 这要当商业程序肯定是不行的(当然我这个不是商业的......但是也得好看呐). 就是说不像QQ的那样到一定大小以后就不会再变了.

追答

我这里运行没有黑一块啊。。。

追问

你这个是从大的变成小的, 不会黑, 但是会闪. 我的程序是从小的变大的, 所以会黑一下. 不信你试试.

参考技术A 响应WM_MOUSEDRAG、WM_MOUSEMOVE事件。追问

WM_MOUSEDRAG都没这个定义. MOUSEMOVE肯定是不行的.

参考技术B 为什么总喜欢用MFC呢???

Mac如何让调整窗口大小更简单

在使用Mac的时候,你能把鼠标的光标悬停在任何程序的边缘,当光标自动变成箭头样式后,按住鼠标左键你将能随意拖动来改变程序窗口的大小。但是,这里有个问题,我们有时候很难控制把鼠标光标移动在正确的窗口边缘位置上,鼠标移动快了,定位真难。

  我们现在如何解决呢?MacGG告诉你,其实在Mac系统里面有个小秘密功能没有开启,直接增加光标移动到边缘变成箭头这部分秘密区域,这部分区域越大,我们的鼠标就越容易定位这个位子。

  方法很简单,打开“终端”(Finder->应用程序->实用工具->终端),并且输入以下命令:

  defaults write -g AppleEdgeResizeExteriorSize 10

  注销系统,再次进入系统设定生效。你现在再试一下,是不是快接近窗口边缘的时候,鼠标光标已经变成箭头了。

  如果你想还原成原样,也很简单,再次打开“终端”(Finder->应用程序->实用工具->终端),并且输入以下命令:

  defaults delete -g AppleEdgeResizeExteriorSize

  再次注销系统就可以恢复原样了

 

  还有个小技巧,大家在拖动窗口边缘的时候同时按住Option或者shift键,看看有什么效果发生?

 

更简单的调整窗口大小,你也可以按住Option或者Shift(或者同时按住)点击并拖放窗口。使用后者按键并点击拖放可以让窗口两边垂直收缩同时会产生类似手风琴的特效。同时样板窗口会整体的等比例缩放。同时按住Option+Shift窗口会从中心点缩放。

以上是关于VC++中, 在鼠标已经按住窗口边缘, 要拖拽调整窗口大小的时候, 会发送啥消息?的主要内容,如果未能解决你的问题,请参考以下文章

VC 怎么动态改变控件大小

电脑应用拖到上边放大

在Word中,按住啥后拖动鼠标就可以改变窗口最大化的位置

unity3d 2D平面游戏实现鼠标拖拽物体移动

VC/MFC 无边框鼠标拉伸改变窗口大小

word表格快捷技巧 word表格快捷窍门