Do not work DoModal() for font change:
-
Idea: to compensate font change by inverse change of CDialog's font, to make controls look same. It wors for modeLess Creation, but for Modal - ActiveX - in my case Windowless ActiveX- do not created after ew template use. Where is error or bot made some work? Private members get in Macro defining CDialog function, that called GetDoModalData() to get Them, Functionality of creation Cdialog with font change placed in inheritable class class CDlgHead : public CBitmapDialog , public CDialogCreatorHelper //CDialog All works except for ActiveX-Windowless - as I tested:
//Call as: CDlgHead dlg; dlg.GetDoModalData(); dlg.Create_WithFont(IDD_Form_1,pParent,0,-1); //0 - Create ModeLess, 1 Modal, //-1 - compensate font size automatically class CDlgHead : public CBitmapDialog , public CDialogCreatorHelper //CDialog { public: //------------------------------------------- //Definitions: DEFINE_DoModalData; } #define DEFINE_DoModalData \ virtual void GetDoModalData() { \ pCopy_m_lpszTemplateName = &m_lpszTemplateName; \ pCopy_m_hDialogTemplate = &m_hDialogTemplate; \ pCopy_m_lpDialogTemplate = &m_lpDialogTemplate; \ pCopy_m_nIDHelp = &m_nIDHelp; \ pCopy_m_pParentWnd = &m_pParentWnd; \ pCopy_m_hWndTop = &m_hWndTop; \ }; class CDoModalData { public: CDoModalData() { //GetDoModalData(); }; LPCTSTR* pCopy_m_lpszTemplateName; HGLOBAL* pCopy_m_hDialogTemplate; LPCDLGTEMPLATE* pCopy_m_lpDialogTemplate; UINT* pCopy_m_nIDHelp; CWnd** pCopy_m_pParentWnd; HWND* pCopy_m_hWndTop ; virtual void GetDoModalData()=0; }; /* pCopy_m_lpszTemplateName = &m_lpszTemplateName; // name or MAKEINTRESOURCE pCopy_m_hDialogTemplate = &m_hDialogTemplate; // indirect (m_lpDialogTemplate == NULL) pCopy_m_lpDialogTemplate = &m_lpDialogTemplate; // indirect if (m_lpszTemplateName == NULL) */ template class CDialogCreatorHelper :public CDoModalData { public: CDialogCreatorHelper(void) { //dlg_T::GetDoModalData(); }; ~CDialogCreatorHelper(void){}; virtual void GetDoModalData() =0 ; CString m_FontName; int m_FontSize; //CDialog* pDialog; //int Create(int IDD,CDialog* pDialog, CWnd* pParentW