【发布时间】:2020-10-19 17:40:40
【问题描述】:
目的:用纯C检索当前前台窗口的类名。
我有以下代码来检索类名:
PWSTR win_class = NULL;
GetClassNameW(hwnd,&win_class,MAX_PATH);
if(win_class != NULL)
free(win_class);
我收到以下警告:
警告 C4047:“函数”:“LPWSTR”的间接级别不同 来自“PWSTR *”
警告 C4024:“GetClassNameW”:不同类型 对于形参和实参2
我有两个问题:如何解决这些警告,以及我应该如何创建if 条件来验证函数GetClassName 的结果并将win_class 的值设置为“未找到”以防万一函数找不到类名?
【问题讨论】:
-
man page 显示,
int GetClassNameW(HWND hWnd, LPWSTR lpClassName, int nMaxCount)需要一个LPWSTR参数来存储类名。 “如果函数成功,则返回值是复制到缓冲区的字符数,不包括终止的空字符。” 另外,我不认为free(win_class);是完成的方式一个东西。你怎么知道它是由malloc获得的?这是XY problem?