c语言要畛粳棠奈获取桌面窗口的大小可以使用GetWindowRect()。该函数返回指定窗口的边框矩形的尺寸,通过计算窗口左上角的坐标和右下角的坐标值可以计算出窗口的大小,具体可以参考以下内容。
工具/原料
VS2017
一、需要的API函数
1、GetWindowRect函数原型如下:BOOL GetWindowRect(HWND hWnd,LPRECT lpRect);第一个参数是窗口句柄。第二个参数是RECT的结构体指针。
2、RECT结构体的定义如下图所示。
3、将左上角和右下角的x轴坐标相减即可获取宽度。将左上角和右下角的y轴坐标相减即可获取高度。
二、以记事本为例
1、这里以获取记事本程序的窗口大小为例。首先在电脑上运行记事本,按WIN+R打开运行输入notepad,即可打开记事本程序。
2、运行后,先要获取记事本的窗口句柄,通过FindWindow函数即可。第一个参数是窗口类,记事本的窗口类为notepad,后面是窗口标题,可以设置也可以不设置。
3、接下来定义 rect 结构体变量,然后调用GetWindowRect()来将左上角和右下角的坐标保存到rect结构体变量中,然后计算出高度和宽度。
4、最后输入宽度和高度的大小即为窗口的大小。
5、总的代码及运行效果如下图所示。//添加上Api函数调用声明文件#include <tchar.h>#include <windows.h>int main(){ //获取无标题记事本的窗口句柄 HWND hwnd_notepad = FindWindow(_T("notepad"), 0); if (hwnd_notepad == 0) { MessageBox(0, _T("dont run notepad"), _T("error"), MB_OK); return 0; } //获取窗口大写 RECT rect; GetWindowRect(hwnd_notepad, &rect); LONG height = rect.bottom - rect.top; LONG width = rect.right - rect.left; //输出窗口大小信息 TCHAR tzbuf[256] = { 0 }; wsprintf(tzbuf, _T("%s%d\n%s%d"), _T("height="), height, _T("width="), width); MessageBox(0, tzbuf, _T("notepad window size"), MB_OK); return 0;}