• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            2008年10月26日

            模態(tài)對話框如何返回值的問題

            當(dāng)對話框DoModal返回后,對話框句柄被銷毀,同時,對話框中的所有控件的句柄都會被銷毀,所以所有的控件類型都不可用,但是普通的值類型對象的值還是存在的知道對話框?qū)ο笊芷诮Y(jié)束。

            posted @ 2008-10-26 19:15 wangwei 閱讀(1318) | 評論 (0)編輯 收藏

            2008年9月19日

            mfc中控件排列和對齊的小技巧

            在VC6.0中將很多控件調(diào)整為一樣大小的或者對齊排列時候開始總是不知以哪一個為標(biāo)準(zhǔn),試了幾次發(fā)現(xiàn):用CTRL和鼠標(biāo)左鍵選中的以最后一個為標(biāo)準(zhǔn),用鼠標(biāo)圈住時以第一個進(jìn)入的為標(biāo)準(zhǔn)。

            posted @ 2008-09-19 14:43 wangwei 閱讀(5615) | 評論 (1)編輯 收藏

            2008年9月17日

            CWnd指針和HWnd

            HWND是Windows系統(tǒng)中對所有窗口的一種標(biāo)識,即窗口句柄。這是一個SDK概念。   
            CWnd是MFC類庫中所有窗口類的基類。微軟在MFC中將所有窗口的通用操作都封裝到了這個類中,如:ShowWindow等等,同時它也封裝了窗口句柄即m_hWnd成員。

            由HWnd得到CWnd*:
            CWnd wnd;
            HWnd hWnd;
            wnd.Attach(hWnd);
            通常一個窗口資源已經(jīng)和一個CWnd類的對象關(guān)聯(lián)起來的,由于一般來說這個類是自己創(chuàng)建的,所以自然知道怎么得到指向這個類的指針。如果沒有就創(chuàng)建一個CWnd對象,將這個對象與窗口資源的hWnd句柄關(guān)聯(lián)起來。(如上邊的語句)。如果用
            static CWnd*   CWnd::FromHandle(HWND   hWnd) ;
            則返回值是一個暫時的CWnd對象,并且我們確保返回值為非空,也就是hWnd是有效的。 
            static CWnd*   CWnd::FromHandlePermanent(HWND   hWnd)  ;
            返回的是一個永久的對象。只有在返回的CWnd在類表里已經(jīng)存在是返回值為非空。

            由CWnd獲取HWnd就容易多了,因為它的一個成員m_hWnd就是所對應(yīng)窗口的句柄。
            wnd->m_hWnd。

            posted @ 2008-09-17 19:48 wangwei 閱讀(19117) | 評論 (2)編輯 收藏

            2008年9月9日

            改變對話框背景顏色的方法(CSDN摘抄)

            ----   方法一:調(diào)用CWinApp類的成員函數(shù)SetDialogBkColor來實現(xiàn)。    
               
              ----   其中函數(shù)的第一個參數(shù)指定了背景顏色,第二個參數(shù)指定了文本顏色。  
              下面的例子是將應(yīng)用程序?qū)υ捒蛟O(shè)置為藍(lán)色背景和紅色文本,步驟如下:    
               
              ----   ①   新建一個基于Dialog的MFC   AppWizard應(yīng)用程序ExampleDlg。    
               
              ----   ②   在CExampleDlgApp   ::InitInstance()中添加如下代碼:    
               
              BOOL   CExampleDlgApp:   :   InitInstance   (   )  
              {  
              …  
              CExampleDlgDlg   dlg;  
              m_pMainWnd   =   &dlg;  
               
              //先于DoModal()調(diào)用,將對話框設(shè)置為藍(lán)色背景、紅色文本  
              SetDialogBkColor(RGB(0,0,255),RGB(255,0,0));  
              int   nResponse   =   dlg.DoModal();  
              …  
              }  
               
              ----   編譯并運(yùn)行,此時對話框的背景色和文本色已發(fā)生了改變。值得注意的  
              是:在調(diào)用DoModal()之前必須先調(diào)用SetDialogBkColor,且此方法是將改變  
              應(yīng)用程序中所有的對話框顏色,并不能針對某一個指定的對話框。    
              ----   方法二:重載OnPaint(),即WM_PAINT消息。有關(guān)代碼如下(以上例工程為準(zhǔn)):    
               
              void   CExampleDlgDlg::OnPaint()    
              {  
              if   (IsIconic())  
              …  
              else  
              {  
              CRect   rect;  
              CPaintDC   dc(this);  
              GetClientRect(rect);  
              dc.FillSolidRect(rect,RGB(0,255,0));   //設(shè)置為綠色背景  
               
              CDialog::OnPaint();  
              }  
               
               
              ----   方法三:重載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),  
              即WM_CTLCOLOR消息。具體步驟如下(以上例工程為準(zhǔn)):    
              ----   ①在CExampleDlgDlg的頭文件中,添加一CBrush的成員變量:    
               
              class   CExampleDlgDlg   :   public   CDialog  
              {  
              ...  
              protected:  
              CBrush   m_brush;    
              ...  
              };  
               
               
              ----   ②在OnInitDialog()函數(shù)中添加如下代碼:    
              BOOL   CExampleDlgDlg::OnInitDialog()    
              {  
              ...  
              //   TODO:   Add   extra   initialization   here  
              m_brush.CreateSolidBrush(RGB(0,   255,   0));   //   生成一綠色刷子    
              ...  
              }    
               
              ----   ③利用ClassWizard重載OnCtlColor(…),即WM_CTLCOLOR消息:    
              HBRUSH   CExampleDlgDlg::OnCtlColor  
              (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
              {  
              /*  
              **   這里不必編寫任何代碼!  
              **下行代碼要注釋掉  
              **   HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
              */  
               
              return   m_brush;   //返加綠色刷子  
              }  
               
               
              ----   方法四:還是重載OnCtlColor   (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor),  
              即WM_CTLCOLOR消息。具體步驟如下(以上例工程為準(zhǔn)):    
              ----   步驟①、②同上方法三中的步驟①、②。    
               
              ----   步驟③利用ClassWizard重載OnCtlColor(…)(即WM_CTLCOLOR消息)時則有  
              些不同:    
               
              HBRUSH   CExampleDlgDlg::OnCtlColor  
              (CDC*   pDC,   CWnd*   pWnd,   UINT   nCtlColor)    
              {  
              HBRUSH   hbr   =   CDialog::OnCtlColor(pDC,   pWnd,   nCtlColor);  
               
              //在這加一條是否為對話框的判斷語句  
              if(nCtlColor   ==CTLCOLOR_DLG)  
              return   m_brush;   //返加綠色刷子  
              return   hbr;  
              }

            原帖見:
            http://topic.csdn.net/t/20020821/08/957154.html

            posted @ 2008-09-09 15:26 wangwei 閱讀(2650) | 評論 (0)編輯 收藏

            2008年9月6日

            MFC 隨手抄

            在棧上創(chuàng)建CPaintDC對象是良好的編程習(xí)慣,這樣當(dāng)OnPaint結(jié)束時將自動調(diào)用他們的析構(gòu)函數(shù)。如果用new操作符來實例化一個CPaintDC對象,在OnPaint結(jié)束之前刪除那個對象很重要。否則::EndPaint將不會被調(diào)用。

            Visual C++有一種簡單的方法用來確定是否成功刪除了畫筆,畫刷和其他資源:只要在調(diào)試狀態(tài)下運(yùn)行程序。在應(yīng)用程序終止時,沒有釋放的資源會顯示在調(diào)試窗口中。
            在最新版本的Windows中,允許GDI對象在設(shè)備描述表釋放的前一刻被刪除并沒有什么不好的影響,尤其是當(dāng)你能確保在此期間沒有畫圖程序執(zhí)行時更是如此。但是通過取消選定選入的對象而實現(xiàn)清除設(shè)備描述表仍然是Windows編程中的慣例。同時也是一種好習(xí)慣。

            posted @ 2008-09-06 08:50 wangwei 閱讀(430) | 評論 (0)編輯 收藏

            2008年8月16日

            數(shù)組名是一個常指針

            當(dāng)寫下:
            char ch[5];
            ch = "last";
            編譯提示:error C2106: '=' : left operand must be l-value。所以只能在數(shù)組定義的同時用字符串常量來給它賦值。
            但是寫下:
            char *pa;
            pa = "last";
            就不會有錯誤。說明數(shù)組名字是一個常指針,不能被重新賦值。

            posted @ 2008-08-16 11:55 wangwei 閱讀(399) | 評論 (0)編輯 收藏

            2008年8月10日

            C++ 隨手抄

               引用和指針的的靜態(tài)類型和動態(tài)類型可以不同,這是C++用以支持多態(tài)的基石。


               在同一虛函數(shù)的基類版本和派生類版本使用不同的默認(rèn)實參幾乎一定會引起麻煩!


               設(shè)計良好的類的層次中,public派生類對象可以用在任何需基類對象的地方。


            posted @ 2008-08-10 20:09 wangwei 閱讀(338) | 評論 (0)編輯 收藏

            僅列出標(biāo)題  
            <2008年9月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            国内精品综合久久久40p| 亚洲国产成人精品女人久久久| 久久人妻少妇嫩草AV无码专区| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 99精品国产在热久久| 久久不射电影网| 久久大香萑太香蕉av| 国内精品久久久久| 亚洲av伊人久久综合密臀性色| 69SEX久久精品国产麻豆| 久久久这里只有精品加勒比 | 久久亚洲国产中v天仙www | 青青草原综合久久大伊人精品| 久久露脸国产精品| 99re久久精品国产首页2020| 99久久国产亚洲综合精品| 久久国产成人精品麻豆| 亚洲香蕉网久久综合影视| 久久久久亚洲AV无码专区网站| 久久久久久久久无码精品亚洲日韩| 久久精品国产亚洲Aⅴ蜜臀色欲| 国内精品久久久久伊人av| 中文精品99久久国产| 三级韩国一区久久二区综合| 久久精品国产99国产电影网 | 久久精品无码专区免费东京热| 亚洲午夜无码久久久久小说| 狠狠色伊人久久精品综合网| 91超碰碰碰碰久久久久久综合| 人妻少妇久久中文字幕一区二区| 免费久久人人爽人人爽av| 久久综合色区| 要久久爱在线免费观看| 久久久中文字幕日本| 性做久久久久久久久老女人| 久久精品无码一区二区三区日韩| 国产精品99久久精品| 久久亚洲高清观看| 久久国产精品免费一区二区三区| 色综合久久中文综合网| 国产精品美女久久久网AV|