![](/img/trans.png)
[英]A Dialog derived from CDialog returns -1 after DoModal (MFC/C++)
[英]How to call CDialog::DoModal() with modified DLGTEMPLATEEX
我知道了。 事實證明,MFC為此有其自己的未記錄類: CDialogTemplate
。 我發現此頁面包含以下代碼來設置字體及其大小。 然后,可以按照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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.