MFC 對話框不顯示,返回-1 原因


 

DoModal失敗原因

1、MFC

通常對話框不顯示的原因有

1 父窗口HWND無效

2 在ONINITDIALOG里用了ENDDIALOG

3 無效的對話框資源ID

4 使用沒有注冊的的自定義控件

5 對話框的某些控件創建失敗,如RICHEDIT,要加上AfxInitRichEdit(); (我就是這個原因,加了richedit控件,沒有調用這個函數

最有可能出現的是第3條,因此,又經過仔細分析了對話框中的各個資源的ID,終於找到了問題,原來是出在一個菜單欄的ID上面, 在對話框的屬性的菜單欄中有一個ID(因為這個對話框是復制過來的,而且原來的對話框有菜單欄的,但是現在這個對話框沒有),所以呢,ID雖然存在,但 是,現在的程序中並沒有對應的資源,所以,通過講菜單欄那項設置為空,這樣,程序就OK了。

 

 

writeFlash依賴於ResZH,在這個已有有工程里面,新建了一個窗口,調用:


int nResponse = dlg.DoModal();后發現返回為-1,
不能彈出顯示對話框,后來核對了一下resource.h,本工程里面有兩個,對於同一個宏
#define IDD_LOGIN_DIALOG                178
#define IDD_LOGIN_DIALOG                177
兩個值不一致。改為一致就可以了。
 
( MFC 資源管理器刪除控件是不會更改resource.h的,需要手動刪除
 
RichEdit是開發中經常使用到的控件,其版本自1.0起,歷經好幾年,好幾次的更新, 
RichEdit 1.0 功能

    基本非Unicode編輯、 剪切/復制/粘貼文件流
    字符/段落格式屬性的基本集
    基於消息的接口加OLE接口:IRichEditOle和IRichEditOleCallback
    垂直文本和輸入法支持 (僅適用於FE生成)。
    所見即所得的編輯使用打印機標准
    不同版本不同的腳本
    常用控件通知再加上一些新的
    純文本和rtf格式文件
    為Windows畫筆的使用啟用筆和理解的手勢

RichEdit 2.0 添加

    Unicode內部+能夠讀寫使用代碼頁
    國際線斷 算法
    向上/向下查找。麥哲倫鼠標支持。
    多級撤消
    雙向(2.1版)和FE支持包括水平的2/3輸入法,雙字體、鍵盤鏈接、智能字體應用
    自動超鏈接識別。Word用戶界面
    簡單的/豐富的、 單行/多行、 可擴展的 架構
    密碼和加速器控制選項
    無窗口接口(ITextHost/ITextServices)
    更好地顯示(混合的字體使用離屏位圖)、系統選擇顏色、透明度的支持
    TOM(文本對象模型)雙重接口
    字符格式增加包括背景顏色,區域設置 ID,下划線類型,上標/下標。
    段落格式設置增加包括前/后的間距、 行間距。
    來回所有Word格式字體/段落屬性對話框
    大量的代碼穩定,測試,性能提高
 

在MFC中使用RichEdit2,須先調用::AfxInitRichEdit();初始化RichEdit2控件。

可以在xxxApp::InitInstance()應用初始化時加載調用::AfxInitRichEdit2()函數!!!

 

MFC 萬能的類向導

在項目上點右鍵【類向導】

 

 

 

 

 

 

 

 

 

 

參考:

https://blog.csdn.net/bookish_2010_prj/article/details/5535757


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM