• <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)

            隨筆分類

            隨筆檔案

            文章檔案

            收藏夾

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲αv久久久噜噜噜噜噜| 久久精品中文字幕一区| 午夜天堂精品久久久久| 成人国内精品久久久久一区| 久久精品国产99国产精偷| 亚洲精品国产自在久久| 精品综合久久久久久97超人| 午夜视频久久久久一区| 国产精品久久久久久搜索| 精品久久久久久无码不卡| 亚洲国产精品久久久久久| 狠狠色婷婷久久综合频道日韩| 久久中文娱乐网| 久久国产精品77777| 久久久这里只有精品加勒比| 国产高清国内精品福利99久久| 人妻精品久久无码区| 久久亚洲精品国产亚洲老地址| 国产午夜精品久久久久九九电影| 久久精品无码专区免费东京热| 一本大道久久东京热无码AV| 精品久久久久一区二区三区| 久久青青草原综合伊人| 69SEX久久精品国产麻豆| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 久久精品无码一区二区WWW| 9191精品国产免费久久| 久久91精品久久91综合| 久久精品毛片免费观看| 久久亚洲精品无码AV红樱桃| 久久99热这里只频精品6| 亚洲国产成人久久综合一区77| 欧美伊人久久大香线蕉综合69| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久人人爽人人爽人人片AV不 | 2021最新久久久视精品爱| 久久亚洲国产成人影院| 久久精品极品盛宴观看| 久久人人爽人人爽人人片AV东京热| 久久精品国产久精国产果冻传媒| 国内精品综合久久久40p|