你的位置:火星电竞·(CHINA)官方网站 > 新闻资讯 > 火星电竞CHINA但由于这些音问是在窗口变化完成后发送的-火星电竞·(CHINA)官方网站
火星电竞CHINA但由于这些音问是在窗口变化完成后发送的-火星电竞·(CHINA)官方网站
发布日期:2024-07-11 07:42    点击次数:192

在窗口位置变化历程的早期,系统会发送 WM_WINDOWPOSCHANGING 音问。这个和 WM_WINDOWPOSCHANGED 音问不同火星电竞CHINA,WM_WINDOWPOSCHANGED 音问发生在窗口位置变化之后。

一个要津的分离(除了时辰以外)是,您不错通过处分 WM_WINDOWPOSCHANGING 音问和修改 WINDOWPOS 结构来影响窗口的现象改换。

不才面的例子代码中,咱们不错通过处分 WM_WINDOWPOSCHANGING 音问,完毕逼迫窗口改换大小。

BOOL OnWindowPosChanging(HWND hwnd, WINDOWPOS *pwp){pwp->flags |= SWP_NOSIZE;/* Continue with default handling */return FORWARD_WM_WINDOWPOSCHANGING(hwnd, pwp, DefWindowProc);}HANDLE_MSG(hwnd, WM_WINDOWPOSCHANGING, OnWindowPosChanging);

在引入 WM_WINDOWPOSCHANGING 音问之前,气象必须在其 WM_SIZE 和 WM_MOVE 处分气象中强制实施窗口大小收敛,但由于这些音问是在窗口变化完成后发送的,因此当窗口改换为一个大小时,咱们会发现窗口在会醒目,然后 WM_SIZE 处分气象将其交流为更好的大小。通过截获 WM_WINDOWPOSCHANGING 窗口大小的变化,不错在交流大小之前强制实施收敛,从而幸免醒目。

WM_WINDOWPOSCHANGING 和 WM_WINDOWPOSCHANGED 这敌手足仅仅更通用的 *CHANGING / *CHANGED 方法的一个示例。(其他示例包括 WM_STYLECHANGING / WM_STYLECHANGED 和 LVN_ITEMCHANGING / LVN_ITEMCHANGED。

*CHANGING 一半在变化发生之前发送,手脚一般轨则,您不错改换示知的参数以强制实施某种类型的收敛。从 *CHANGING 示知复返后,将发生本色改换,然后您会收到 *CHANGED 以指引改换已完成。

淌若你显着了这个国法,则不错合伙默契,将悉数此类音问”三军覆灭”。

追念

Windows 客户端建造历程中,淌若处分不妥,则容易发生用户界面醒主义情况。竣工主义者会搜索枯肠斟酌各式作念法摒除醒目,咱们在 拓扑梅尔聪惠办公谈台 (Topomel Box) 的建造阶段就滥用了大皆的时辰,吸收了各式奇淫手段来最大化减少醒目。正所谓:慢工,出细活,咱们仅仅思给您带来最佳的东西。

终末

Raymond Chen的《The Old New Thing》是我超过可爱的博客之一火星电竞CHINA,内部有许多对于Windows的小学问,对于遍及Windows平台建造者来说,如实十分有匡助。本文来自:《Use WM_WINDOWPOSCHANGING to intercept window state changes》



相关资讯