我想在无资源文件的情况下创建无模式对话框,请问专家如何操作?
我自编的代码如下:
class CInputDlg : public CDialog
{
DECLARE_DYNAMIC(CInputDlg)
public:
CInputDlg(CWnd* pParent = NULL);   // 标准构造函数
virtual ~CInputDlg();
// 对话框数据
//enum { IDD = IDD_INPUTDLG };
CString m_StrTitle;
DLGTEMPLATE m_dlgTempl;
DLGITEMTEMPLATE m_dlgItem[10];
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
void CreateMyDialog(void);
};
CInputDlg::CInputDlg(CWnd* pParent /*=NULL*/)
// : CDialog(CInputDlg::IDD, pParent)
{
m_dlgTempl.cx = 200;  
m_dlgTempl.cy = 50;  
m_dlgTempl.style = WS_CAPTION | WS_VISIBLE | WS_DLGFRAME | 
WS_POPUP | DS_MODALFRAME | DS_SETFONT |WS_MAXIMIZEBOX |
WS_MINIMIZEBOX |WS_SYSMENU;
m_dlgTempl.dwExtendedStyle = 0;
m_dlgTempl.x = 0;
m_dlgTempl.y = 0;
m_dlgTempl.cdit = 0;  
m_StrTitle = "无资源模板的对话框";
}
void CInputDlg::CreateMyDialog(void)
{
CreateDlgIndirect(&m_dlgTempl,this,NULL);
ShowWindow(SW_SHOW);
}

解决方案 »

  1.   

    還要注意:
    When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don't call the base class CDialog::OnCancel, because it calls EndDialog, which will make the dialog box invisible but will not destroy it. You should also override PostNcDestroy for modeless dialog boxes in order to delete this, since modeless dialog boxes are usually allocated with new. Modal dialog boxes are usually constructed on the frame and do not need PostNcDestroy cleanup.