15,979
社区成员
发帖
与我相关
我的任务
分享
#include <pshpack2.h>
typedef struct {
WORD dlgVer;
WORD signature;
DWORD helpID;
DWORD exStyle;
DWORD style;
WORD cDlgItems;
short x;
short y;
short cx;
short cy;
/*
sz_Or_Ord menu;
sz_Or_Ord windowClass;
WCHAR title[titleLen];
WORD pointsize;
WORD weight;
BYTE italic;
BYTE charset;
WCHAR typeface[stringLen];
*/
} DLGTEMPLATEEX;
#include <poppack.h>
BOOL GetDialogResourceSize(HINSTANCE hInstance, LPCTSTR lpResName, SIZE *lpSize, WORD wLanguage = 1033)
{
if (lpSize != NULL) {
HRSRC hResInfo = FindResourceEx(hInstance, RT_DIALOG, lpResName, wLanguage);
if (hResInfo != NULL) {
HGLOBAL hResData = LoadResource(hInstance, hResInfo);
if (hResData != NULL) {
DLGTEMPLATE *pdt = (DLGTEMPLATE *)LockResource(hResData);
if (pdt != NULL) {
DLGTEMPLATEEX *pdtx = (DLGTEMPLATEEX *)pdt;
if (pdtx->dlgVer == 1 && pdtx->signature == 0xFFFF) {
lpSize->cx = pdtx->cx;
lpSize->cy = pdtx->cy;
} else {
lpSize->cx = pdt->cx;
lpSize->cy = pdt->cy;
}
return TRUE;
}
}
}
}
return FALSE;
}
SIZE size = { 0 };
// 主程序 EXE 直接傳 NULL,然後對話框名稱或者 ID 即可,如需指定語言比如 2052 傳最後一個參數。
if (GetDialogResourceSize(NULL, (LPCTSTR)IDD_DIALOG, &size)) {
printf("%d, %d.\n", size.cx, size.cy);
}