程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 關於對話框

關於對話框

編輯:關於VC++

問:程序是基於對話框的,我顯示兩個對話框,一個在另一個後面,下面是我的做法:

CMyApp::InitInstance ()
{
   ...
   CMyDialog1 dlg1;
   m_hMainWnd = &dlg1;
   int result = dlg1.DoModal ();
   CMyDialog2 dlg2;
   result = dlg2.DoModal ();
   ...
}

在上面的代碼中,首先一個對話框得到了適當地調用,但第二個對話框卻沒有,比如:調用 dlg2.DoModal()返回-1,當我逐步跟蹤時我發現WM_QUIT被加入到消息隊列 中,我不知道 為什麼會這樣.

答:1)因為MFC需要m_hMainWnd成員函數必須指向一個帶有效窗口句柄的對象,如果沒有,它將 會自己給自己發送WM_QUIT消息來中斷自己.

2)我知道為什麼會這樣,當你設置m_pMainWnd指向dlg1時,MFC認為你的Dialog1是主窗口. 當用戶關閉對話框時,MFC認為用戶想退出程序,因為m_pMainWnd指向的窗 口被關閉了.

你認為不工作是因為應用程序在兩個DoModal()調用後會退出.InitInstance()會返回 m_pMainWnd在向導中已經被使用,你不能去象你那樣的使用.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved