MFC 對話框不顯示,返回-1 緣由

 

DoModal失敗緣由算法

一、MFC數據結構

一般對話框不顯示的緣由有架構

1 父窗口HWND無效函數

2 在ONINITDIALOG裏用了ENDDIALOG性能

3 無效的對話框資源ID測試

4 使用沒有註冊的的自定義控件字體

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

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

 

 

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


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

相關文章
相關標籤/搜索