server 发表于 2024-3-17 19:11:43

又有掉头发的结构体出现了。


联合体 union 还没支持。 结构体的预处理 呢??

typedef struct _NOTIFYICONDATAA {
DWORD cbSize;
HWNDhWnd;
UINTuID;
UINTuFlags;
UINTuCallbackMessage;
HICON hIcon;
#if ...
CHARszTip;
#else
CHARszTip;
#endif
DWORD dwState;
DWORD dwStateMask;
CHARszInfo;
union {
    UINT uTimeout;
    UINT uVersion;
} DUMMYUNIONNAME;
CHARszInfoTitle;
DWORD dwInfoFlags;
GUIDguidItem;
HICON hBalloonIcon;
} NOTIFYICONDATAA, *PNOTIFYICONDATAA;

609177738 发表于 2024-3-17 20:49:14

szTip(宏条件分支的变量名称都一样) 和联合体   直接别名类型输出名 就行了

server 发表于 2024-3-17 21:24:57

609177738 发表于 2024-3-17 20:49
szTip(宏条件分支的变量名称都一样) 和联合体   直接别名类型输出名 就行了 ...

各种方式都试了;
CommCtrl.h
CommCtrl.lib
都引用了,就是编译不通过,提示未标识 TASKDIALOGCONFIG

TaskDialogIndirectTASKDIALOGCONFIG config = { 0 };
config.cbSize = sizeof(TASKDIALOGCONFIG);
config.hwndParent = NULL;
config.pszWindowTitle = L"标题";
config.pszMainInstruction = L"主提示";
config.pszContent = L"内容";
config.dwCommonButtons = TDCBF_OK_BUTTON;

HRESULT hr = TaskDialogIndirect(&config, NULL, NULL, NULL);

if (SUCCEEDED(hr))
{

}


Xelloss0618 发表于 2024-3-17 22:16:04

用「别名类型:本地结构」可以封装,就是很多类型需要定义或改成属性读写方法。
TASKDIALOGCONFIG 最低系统要求是Windows Vista,这种API和结构体,一般是需要定义一下版本宏才能调用
@视窗.预定义宏 "WINVER=0x0600,_WIN32_WINNT=0x0600"
页: [1]
查看完整版本: 又有掉头发的结构体出现了。