MFC CDialogEx.DoModal 彈出Dialog顯示圖示

無名_四葉草發表於2020-04-04

今天做MFC時,A畫面彈出B畫面,B畫面的圖示不顯示。A畫面是顯示的。

但是B畫面的圖示就是不顯示。查詢了原因,終於明白了,記錄一下。

原因一:Dialog的Border設定不正確,應該設定為Resizing。

原因二:沒有新增設定的程式碼:

A畫面是新建工程自動生成的程式碼,自動的新增了“OnInitDialog”方法,和“m_hIcon”變數。

而我們新建一個Dialog時,是不會,自動生成的。

所以只需要下面三步:

1)在Dialog.h檔案新增m_hIcon變數

protected:
	HICON m_hIcon;


 

2)在Dialog.cpp檔案構造方法裡對m_hIcon變數進行賦值。

FaceImg::FaceImg(CWnd* pParent /*=NULL*/)
	: CDialogEx(FaceImg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}


2)在Dialog.cpp檔案裡新增OnInitDialog方法設定顯示圖示

 

BOOL FaceImg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  Add extra initialization here
	// このダイアログのアイコンを設定します。アプリケーションのメイン ウィンドウがダイアログでない場合、
	//  Framework は、この設定を自動的に行います。
	SetIcon(m_hIcon, TRUE);			// 大きいアイコンの設定
	SetIcon(m_hIcon, FALSE);		// 小さいアイコンの設定

	return TRUE;  // return TRUE unless you set the focus to a control
	// EXCEPTION: OCX Property Pages should return FALSE
}


 

相關文章