Loading... # 引言 之前KMU-Counter中也用到了,但是最近在制作安装包时又遇到了这个,记录一下吧。 # 内容 比如说目录结构是这样的,以windows api窗口为例: - main.cpp - framework.h - framework.cpp - config.h - config.cpp 比如说我有一个当前窗口位置的变量,其中main中的`WndProc`中的消息,存在`WM_MOVE`和`WM_SIZE`,标识窗口移动和尺寸改变。部分代码如下。 其中`window_position`可以定义成一个全局变量,供`framework`和`main`使用,`config.h` ## config.h ``` extern int window_position[4]; ``` ## config.cpp ``` int window_position[4] = {9527, 114514, 640, 480}; // 这里的顺序是左边,定边,宽度,高度,这里随便定义的。 ``` ## main.cpp ```cpp case WM_MOVE: window_position[0] = LOWORD(lParam); window_position[1] = HIWORD(lParam); break; case WM_SIZE: window_position[2] = LOWORD(lParam); window_position[3] = HIWORD(lParam); break; ``` ## framework.cpp ``` #include "config.h" // 这里引入这个头文件 SetWindowPos(hwnd, NULL, window_position[0], window_position[1], window_position[2], window_position[3], SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_FRAMECHANGED); // 移动窗口到这个位置。 ``` # 结语 这玩意儿还是得多积累,现在这个时代学习成本降低了,因为存在GPT等AI,更方便学习和查错。 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏
4 条评论
我理解的当参数发生改变时,就在
case WM_MOVE:
进行了修改全局变量windows_position
是的,这里代码没有完全贴上,这实际上是消息处理代码中的一部分
在config.h中,使用extern关键字声明window_position变量,表明该变量在其他文件中定义,这样在包含config.h头文件的其他文件中就可以使用这个变量。在config.cpp中定义并初始化window_position,指定了窗口的初始位置和大小。在main.cpp的窗口消息处理函数WndProc里,当接收到WM_MOVE和WM_SIZE消息时,更新window_position变量的值。在framework.cpp中,通过包含config.h头文件,使用window_position变量的值来调用SetWindowPos函数,实现将窗口移动到指定位置。
YES!