我知道我可以使用 DLGTEMPLATEEX 创建一个对话窗口内存中的模板使用 DialogBoxIndirectParam .
最佳答案
我让它工作了。事实证明 MFC 有它自己的未记录的类:CDialogTemplate
。我找到了 this page使用以下代码设置字体及其大小。然后可以按照 CDialogTemplate
类方法中的逻辑访问 DLGTEMPLATEEX
-- 使用调试器进入 SetFont
方法:
#include <afxpriv.h> //Needed for CDialogTemplate
int CSimpleDialog::DoModal()
{
CDialogTemplate dlt;
int nResult;
// load dialog template
if (!dlt.Load(MAKEINTRESOURCE(CSimpleDialog::IDD))) {
return -1;
}
// set your own font, for example “Arial”, 10 pts.
dlt.SetFont("Arial", 10);
// get pointer to the modified dialog template
LPSTR pdata = (LPSTR)GlobalLock(dlt.m_hTemplate);
// let MFC know that you are using your own template
m_lpszTemplateName = NULL;
InitModalIndirect(pdata);
// display dialog box
nResult = CDialog::DoModal();
// unlock memory object
GlobalUnlock(dlt.m_hTemplate);
return nResult;
}
关于c++ - 如何使用修改后的 DLGTEMPLATEEX 调用 CDialog::DoModal(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38019340/