• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

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

    MFC里面的PropertySheet使用

    相關軟件相關文章發表評論 來源:本站原創時間:2010/4/6 21:18:44字體大?。?em class="fontsize">A-A+

    作者:不詳點擊:371次評論:0次標簽: MFC

    • 類型:一體機驅動大?。?i>41.2M語言:中文 評分:3.6
    • 標簽:
    立即下載

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

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

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

    廢話少說,直接說得到的PropertySheet相關的經驗.

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

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

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

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

    CMyPropertySheet里面添加一個成員:

    std::vector<CMyPropertyPage*> _PropertyPageCache;

    成員RefreshPages來實現動態添加刪除Page,只是提供一個簡單的Demo,剩下的自由發揮.


    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會直接跳出消息循環……

     

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

     

    PS:

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

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

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

      相關評論

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

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

      熱門評論

      最新評論

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

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>