西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程軟件使用 → MFC里面的PropertySheet使用

MFC里面的PropertySheet使用

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站原創(chuàng)時間:2010/4/6 21:18:44字體大。A-A+

作者:不詳點擊:371次評論:0次標(biāo)簽: MFC

  • 類型:一體機驅(qū)動大小:41.2M語言:中文 評分:3.6
  • 標(biāo)簽:
立即下載

我是一個問題少年,之前買過一本” Programming Windows”,上冊看過一些,大約知道Win32程序怎么寫,怎么工作的.來到新公司,我就準(zhǔn)備用Programming Windows里面那種Sample那種形式寫程序.

老天就喜歡和我開玩笑,普通的控件的消息響應(yīng)之類還比較好處理(無非就是那個Switch…case…比較大而已),可以Leader偏偏決定用PropertySheet控件(一復(fù)雜控件).用Win32 API對于剛寫Native代碼的我(到現(xiàn)在寫了一個星期)簡直就是一個不可能完成的任務(wù).讓寫一個小程序,后臺那些東西我兩天就搞定,單單這個PropertySheet我兩天都沒搞定.

后來看到WTL里面直接可以創(chuàng)建PropertySheet,可是被告知,不允許使用WTL……無奈,只能轉(zhuǎn)投MFC,人生第一次使用MFC……

廢話少說,直接說得到的PropertySheet相關(guān)的經(jīng)驗.

CPropertySheet和CPropertyPage是兩個基類,通常你不需要繼承這兩個類,不過需要個性化的需求,就需要繼承這兩個類了.

首先說明,Page類其實就是一個Dialog,里面響應(yīng)了Notify消息,可以拿到SetActive,KillActive兩種比較重要的消息,里面可以做很多個性化的東西;

Sheet類是一個封裝類,用來管理Page,例如可以拿到現(xiàn)在有多少個Page,獲取當(dāng)前Active的Page,設(shè)置第幾個Page為Active等等,更重要的是,他還可以動態(tài)的Add , Remove Page.下面講怎么動態(tài)添加刪除Page.

假設(shè)有CMyPropertySheet和CMyPropertyPage,分別繼承自上面那兩個類.

CMyPropertySheet里面添加一個成員:

std::vector<CMyPropertyPage*> _PropertyPageCache;

成員RefreshPages來實現(xiàn)動態(tài)添加刪除Page,只是提供一個簡單的Demo,剩下的自由發(fā)揮.


view sourceprint?01 void RefreshPages()

02

03 {

04

05 int pageCount= this->GetPageCount();

06

07 int insertCount=5;

08

09 for (int i=0;i<_PropertyPageCache.size();i++)

10

11 {

12

13 delete _PropertyPageCache[i];

14

15 }

16

17 _PropertyPageCache.clear();

18

19 for (int i=0;i<insertCount;i++)

20

21 {

22

23 CMyPropertyPage* page= new CMyPropertyPage;

24

25 page->Construct(IDD_MYDIALOG);

26

27 page->m_psp.pszTitle=L”Demo”;

28

29 page->m_psp.dwFlags|=PSP_USETITLE;

30

31 this->AddPage(page);

32

33 _PropertyPageCache.push_back(page);

34

35 }

36

37 for (int i = 0;i<pageCount;i++)

38

39 {

40

41 this->RemovePage(0);

42

43 }

44

45 }


 

Remove可以(最好)在后面完成,因為如果刪完了的話,CMyPropertySheet會直接跳出消息循環(huán)……

 

OK,現(xiàn)在你的PropertySheet就能完成動態(tài)增刪的功能,剩下的就是看你想在什么地方動態(tài)增刪Page了,哪里需要,就把this指針給誰~~簡單吧

 

PS:

曾經(jīng)試過如果不cache這些Page的話,PropertySheet也創(chuàng)建了,但是Page的Title都不對,而且點擊都會崩潰,因為我也沒研究過怎么具體使用Win32來完成這個功能(對底層不了解),不過根據(jù)這幾天寫Native Code經(jīng)驗判斷,是所謂的野指針,訪問的內(nèi)存地址不對.

因為我之前是一個C#.NET程序員,所以對內(nèi)存訪問(控制)有一點不了解,在這上面磕磕絆絆很多次,所以我直接去用自由存儲,結(jié)果發(fā)現(xiàn)解決這個問題……歪打正著吧……

    兄弟打印機驅(qū)動
    (52)兄弟打印機驅(qū)動
    兄弟打印機是國際知名的打印機品牌,國內(nèi)很多企業(yè)辦公都會選擇兄弟旗下的辦公打印設(shè)備。雖然大家在購買打印機的時候都有隨機附贈的驅(qū)動光盤,不過很多人在使用了一段時間后就會把光盤弄丟了,這里西西給大家提供了一些兄弟打印機驅(qū)動下載,這里包含了大家常見的兄弟熱門打印機型號,大家可以來西西找到自己需要的打印機驅(qū)動。...更多>>
    視頻編輯軟件
    (145)視頻編輯軟件
    視頻編輯軟件其實是對圖片視頻音頻等素材進行重組編碼工作的多媒體軟件。重組編碼是將圖片視頻音頻等素材進行線性編輯后,根據(jù)視頻編碼規(guī)范進行重新編碼,轉(zhuǎn)換成新的格式,比如格式,這樣圖片視頻音頻無法被重新提取出來,因為已經(jīng)轉(zhuǎn)化為新的視頻格式,發(fā)生質(zhì)的變化。視頻編輯軟件的另一個重要技術(shù)特征在于,除了具有圖片轉(zhuǎn)視頻的技術(shù),優(yōu)秀專業(yè)的視頻編輯軟件,還需具有為原始圖片添加各種多媒體素材,實現(xiàn)制作出的視頻圖文并茂的...更多>>

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)