gpt4 book ai didi

c++ - 如何使用修改后的 DLGTEMPLATEEX 调用 CDialog::DoModal()

转载 作者:行者123 更新时间:2023-11-28 02:04:42 24 4
gpt4 key购买 nike

我知道我可以使用 DLGTEMPLATEEX 创建一个对话窗口内存中的模板使用 DialogBoxIndirectParam .

但是使用 MFC 我可以动态修改 CDialog 中的 DLGTEMPLATEEX吗?之前 DoModal叫什么?

最佳答案

我让它工作了。事实证明 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com