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格式字體/段落屬性對話框
大量的代碼穩定,測試,性能提高
基本非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