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

            2010年4月30日

            CFileDialog類(lèi)封裝了Windows常用的文件對(duì)話框。常用的文件對(duì)話框提供了一種簡(jiǎn)單的與Windows標(biāo)準(zhǔn)相一致的文件打開(kāi)和文件存盤(pán)對(duì)話框功能。
              可以用構(gòu)造函數(shù)提供的方式使用CFileDialog,也可以從CFileDialog派生出自己的對(duì)話類(lèi)并編寫(xiě)一個(gè)構(gòu)造函數(shù)來(lái)適應(yīng)你的需要。每種情況下,對(duì)話框都與標(biāo)準(zhǔn)MFC對(duì)話框一樣工作。因?yàn)樗鼈兌际荂CommonDialog類(lèi)的派生類(lèi)。
              要使用CFileDialog,先用CFileDialog構(gòu)造函數(shù)構(gòu)造一個(gè)對(duì)象,當(dāng)創(chuàng)建了一個(gè)對(duì)話框后,可以設(shè)置或修改m_ofn結(jié)構(gòu)中的任何值,以初始化對(duì)話框控件的值或狀態(tài)。m_ofn結(jié)構(gòu)是OPENFILENAME類(lèi)型的。要了解更多信息,可參閱聯(lián)機(jī)文檔“Win32 SDK”中的OPENFILENAME結(jié)構(gòu)。
              初始化對(duì)話框控件后,調(diào)用DoModal成員函數(shù)顯示對(duì)話框并使用戶(hù)輸入路徑和文件。DoModal返回不論是用戶(hù)選擇了OK(IDOK)還是取消(IDCANCEL)按鈕。
              當(dāng)DoModal返回IDOK,可以使用某一個(gè)CFileDIalog的公共成員函數(shù)獲取用戶(hù)輸入的信息。
              CFileDIalog包含許多保護(hù)成員,使你可以處理常用的共享沖突、文件名合法性檢查、列表框改變通知。這些保護(hù)成員對(duì)許多應(yīng)用來(lái)說(shuō)用處不大,因?yàn)槿笔√幚硎亲詣?dòng)的。對(duì)這些函數(shù)來(lái)說(shuō),消息映射入口是不必要的,因?yàn)樗鼈兪菢?biāo)準(zhǔn)虛函數(shù)。
              可以使用Windows CommDlgExtendError函數(shù)判斷在初始化對(duì)話框時(shí)是否是發(fā)生了錯(cuò)誤,并獲取關(guān)于錯(cuò)誤的更多信息。
              析構(gòu)一個(gè)CFileDialog對(duì)象是自動(dòng),無(wú)須調(diào)用CDialog::EndDialog。
              要使用戶(hù)選用多個(gè)文件,可在調(diào)用DoModal之前設(shè)置OFN_ALLOWMULTISELECT標(biāo)志。你應(yīng)提供文件名緩沖區(qū)來(lái)放置返回的多個(gè)文件名的列表,這通過(guò)用一個(gè)分配了的緩沖區(qū)指針替換m_ofn.lpstrFile來(lái)實(shí)現(xiàn),要在創(chuàng)建了CFileDialog之后調(diào)用DoModal之前進(jìn)行此操作。另外,必須用m_ofn.lpstrFile指向的緩沖區(qū)字節(jié)數(shù)來(lái)設(shè)置m_ofn.nMaxFile。
              CFileDialog依賴(lài)于Windows3.1及以后版本中的COMMDLG.DLL。
              如果從CFileDialog中派生出一個(gè)新類(lèi),可用消息映射處理。要擴(kuò)展消息處理,從CWnd中派生一個(gè)類(lèi),向新類(lèi)中加入一個(gè)消息映射并為新消息提供成員函數(shù),無(wú)須提供一個(gè)鉤子函數(shù)來(lái)定制對(duì)話框。
              要定制對(duì)話框,從CFileDialog中派生一個(gè)對(duì)象,提供一個(gè)定制對(duì)話模板,從擴(kuò)展控件中加入一個(gè)消息映射,處理通知消息。任意未處理的消息將傳遞給基類(lèi)。
              無(wú)須定制鉤子函數(shù)。
              #include <afxdlgs.h>
              CFileDialog類(lèi)的成員
            posted @ 2010-04-30 22:38 crystal_Q 閱讀(697) | 評(píng)論 (1)編輯 收藏

            2010年4月23日

            //支持序列化類(lèi),必須繼承自CObject類(lèi)
            class CShape  :public CObject
            {
            public:
              DECLARE_SERIAL(CShape)
             CShape();
              CShape(CPoint& BeginPoint,CPoint& EndPoint);
              virtual void Draw(CDC* pDC){};
              virtual void Serialize(CArchive& ar);
             virtual ~CShape();
            public:
              //得到起點(diǎn)信息
              CPoint GetBeginPoint() const
              {  return m_Begin; }
              //得到止點(diǎn)信息
              CPoint GetEndPoint() const
              { return m_End; }
              //得到筆顏色
              COLORREF GetPenColor() const
              { return m_crPenColor;  }
              //得到筆寬度
              int GetPenWidth() const
              {  return m_nPenWidth; }
              //設(shè)置筆信息
              void SetPen( int nPenStyle, int nPenWidth, COLORREF crPenColor);
              //設(shè)置起止點(diǎn)信息
              void SetPoint(CPoint& BeginPoint,CPoint& EndPoint);
              //設(shè)置刷子
              virtual void SetBrush(COLORREF brushcolor){};
              //取得名稱(chēng)
              CString GetName()
              {
                return m_ShapeName;
              }
            protected:
              //筆的信息
              int       m_nPenStyle;
              int       m_nPenWidth;
              COLORREF  m_crPenColor;
              //起止點(diǎn)信息 
              CPoint    m_Begin;
              CPoint    m_End;
              //Name
              CString   m_ShapeName;
            };
            posted @ 2010-04-23 21:25 crystal_Q 閱讀(441) | 評(píng)論 (2)編輯 收藏

            2010年4月22日

            雙緩存, 位圖, 工廠類(lèi)

            設(shè)置窗口的寬度
            設(shè)置窗口的高度
            在CFrame 框架類(lèi)中
            BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
            {
             if( !CFrameWnd::PreCreateWindow(cs) )
              return FALSE;
             // TODO: Modify the Window class or styles here by modifying
             //  the CREATESTRUCT cs
             cs.cx = 300; //窗口的寬度
             cs.cy = 300; //窗口的高度  
             //cs.lpszName = "cr06"; //嘗試修改標(biāo)題  卻修改不成功
             cs.style &= ~FWS_ADDTOTITLE;

             return TRUE;
            }

            Single document
            單文檔窗口的類(lèi)型
            是以下兩種類(lèi)型的聯(lián)合
            WS_OVERLAPPEDWINDOW
            FWS_ADDTOTITLE   用來(lái)通知框架將文檔的標(biāo)題做為窗口的標(biāo)題
            如果用戶(hù)希望窗口的標(biāo)題是自己自定義類(lèi)型,那么去掉FWS_ADDTOTITLE就可以了.
            SetWindowLong()
            GetWindowLong()

            posted @ 2010-04-22 21:52 crystal_Q 閱讀(339) | 評(píng)論 (0)編輯 收藏

            2010年4月19日

            HINSTANCE AfxGetInstanceHandle( );

            返回值:代表應(yīng)用程序的當(dāng)前實(shí)例的HINSTANCE值。如果是從與MFC的USRDLL版本連接的DLL內(nèi)調(diào)用的,則返回代表DLL的HINSTANCE值.

            說(shuō)明:這個(gè)函數(shù)使你能夠獲得當(dāng)前應(yīng)用程序的實(shí)例句柄。AfxGetInstanceHandle總是返回代表你的可執(zhí)行文件(.EXE)的HINSTANCE值,除非它從與MFC的USRDLL版本連接的DLL內(nèi)調(diào)用的。在這種情況下,它返回的是DLL的HINSTANCE值。



            void CMfcNewButtonDlg::OnButton1()
            {
             // TODO: Add your control notification handler code here
            //獲取靜態(tài)窗口的句柄
              HWND hStaicGroup = ::GetDlgItem(GetSafeHwnd(),IDC_STATIC);
            //在靜態(tài)窗口中創(chuàng)建子窗口
            //AfxGetInstanceHandle() 調(diào)用此函數(shù) 獲取當(dāng)前應(yīng)用程序的實(shí)例句柄

             CreateWindow(_T("Button"),_T("Button New"),BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,
                     0,0,100,100,hStaicGroup,(HMENU)10000, AfxGetInstanceHandle(),NULL);

              g_OldProc = (WNDPROC)::SetWindowLong(hStaicGroup,
                          GWL_WNDPROC,(LONG)MyStaictGroupWndProc);
            }

            posted @ 2010-04-19 21:06 crystal_Q 閱讀(3137) | 評(píng)論 (0)編輯 收藏

            2010年4月18日

            函數(shù)功能      

            該函數(shù)改變指定窗口的屬性函數(shù)也將指定的一個(gè)32位值設(shè)置在窗口的額外存儲(chǔ)空間的指定偏移位置。

            函數(shù)原型

                   LONG SetWindowLong(HWND hWnd,int nlndex,LONG dwNewLong);
            參數(shù)
                hWnd:窗口句柄及間接給出的窗口所屬的類(lèi)。
             nlndex:指定將設(shè)定的大于等于0的偏移值。
                     有效值范圍從0到額外類(lèi)的存儲(chǔ)空間的字節(jié)數(shù)-4:例如若指定了12位或多于12位的額外類(lèi)存儲(chǔ)空間,則應(yīng)設(shè)為第三個(gè)32位整數(shù)的索引位8。要設(shè)置其他任何值,
            可以指定下面值之一:  
            GWL_EXSTYLE:設(shè)定一個(gè)新的擴(kuò)展風(fēng)格
            GWL_STYLE:設(shè)定一個(gè)新的窗口風(fēng)格。  
            GWL_WNDPROC:為窗口過(guò)程設(shè)定一個(gè)新的地址
            GWL_ID:設(shè)置一個(gè)新的窗口標(biāo)識(shí)符。
            GWL_HINSTANCE:設(shè)置一個(gè)新的應(yīng)用程序事例句柄。
            GWL_USERDATA:設(shè)置與窗口有關(guān)的32位值。
            每一個(gè)窗口均有一個(gè)由創(chuàng)建該窗口的應(yīng)用程序使用的32位值。
            當(dāng)hWnd參數(shù)標(biāo)識(shí)了一個(gè)對(duì)話框時(shí),也可使用下列值:
            DWL_DLGPROC:設(shè)置對(duì)話框過(guò)程的新地址。
            DWL_MSGRESULT:設(shè)置在對(duì)話框過(guò)程中處理的消息的返回值。
            DWL_USER:設(shè)置的應(yīng)用程序私有的新的額外信息,例如一個(gè)句柄或指針。
            dwNewLong:指定的替換值。
            返回值:
            如果函數(shù)成功,返回值是指定的32位整數(shù)的原來(lái)的值。
            如果函數(shù)失敗,返回值為0。若想獲得更多錯(cuò)誤信息,請(qǐng)調(diào)用GetLastError函數(shù)。
            如果指定32位整數(shù)的原來(lái)的值為0,并且函數(shù)成功,則返回值為0,但是函數(shù)并不清除最后的錯(cuò)誤信息,這就很難判斷函數(shù)是否成功。這時(shí),就應(yīng)在調(diào)用SetWindowLong之前調(diào)用callingSetLastError(0)函數(shù)來(lái)清除最后的錯(cuò)誤信息。這樣,如果函數(shù)失敗就會(huì)返回0,并且GetLastError。也返回一個(gè)非零值。   如果由hWnd參數(shù)指定的窗口與調(diào)用線程不屬于同一進(jìn)程,將導(dǎo)致SetWindowLong函數(shù)失敗。
            指定的窗口數(shù)據(jù)是在緩存中保存的,因此在調(diào)用SetWindowLong之后再調(diào)用SetWindowPos函數(shù)才能使SetWindowLong函數(shù)所作的改變生效。
            如果使用帶GWL_WNDPROC索引值的SetWindowLong函數(shù)替換窗口過(guò)程,則該窗口過(guò)程必須與WindowProccallback函數(shù)說(shuō)明部分指定的指導(dǎo)行一致。
            如果使用帶DWL_MSGRESULT索引值的SetWindowLong函數(shù)來(lái)設(shè)置由一個(gè)對(duì)話框過(guò)程處理的消息的返回值,應(yīng)在此后立即返回TRUE。否則,如果又調(diào)用了其他函數(shù)而使對(duì)話框過(guò)程接收到一個(gè)窗口消息,則嵌套的窗口消息可能改寫(xiě)使用DWL_MSGRESULT設(shè)定的返回值。
            可以使用帶GWL_WNDPROC索引值的SetWindowLong函數(shù)創(chuàng)建一個(gè)窗口類(lèi)的子類(lèi),該窗口類(lèi)是用于創(chuàng)建該窗口的關(guān)。一個(gè)應(yīng)用程序可以一個(gè)系統(tǒng)美為于類(lèi),但是不能以一個(gè)其他進(jìn)程產(chǎn)生的窗口類(lèi)為子類(lèi),SetwindowLong函數(shù)通過(guò)改變與一個(gè)特殊的窗口類(lèi)相聯(lián)系的窗口過(guò)程來(lái)創(chuàng)建窗口子類(lèi),從而使系統(tǒng)調(diào)用新的窗口過(guò)程而不是以前定義的窗口過(guò)程。應(yīng)用程序必須通過(guò)調(diào)用CallWindowProc函數(shù)向前窗口傳遞未被新窗口處理的消息,這樣作允許應(yīng)用程序創(chuàng)建一個(gè)窗口過(guò)程鏈。
            通過(guò)使用函數(shù)RegisterClassEx將結(jié)構(gòu)WNDCLASSEX中的cbWndExtra單元指定為一個(gè)非0值來(lái)保留新外窗口內(nèi)存。
            不能通過(guò)調(diào)用帶GWL_HWNDPARENT索引值的SetWindowLong的函數(shù)來(lái)改變子窗口的父窗口,應(yīng)使用SetParent函數(shù)。
            posted @ 2010-04-18 23:13 crystal_Q 閱讀(1184) | 評(píng)論 (0)編輯 收藏
            SendDlgItemMessage  函數(shù)功能:該函數(shù)把一個(gè)消息發(fā)送給指定的對(duì)話框中的控制。

              函數(shù)原型:LONG SendDlgItemMessage(
              HWND hDlg, // handle of dialog box
              int nIDDlgItem, // identifier of control
              UINT Msg, // message to send
              WPARAM wParam, // first message parameter
              LPARAM lParam // second message parameter
              );
              參數(shù):
              hDlg:指定含有控制的對(duì)話框。
              nIDDigItem:指定接收消息的控制的標(biāo)識(shí)符。
              Msg:指定將被發(fā)送的消息。
              wParam:指定消息特定的其他信息。
              lParam:指定消息特定的其他信息。
              返回值:返回值指定消息處理的結(jié)果,且依賴(lài)于發(fā)送的消息。
              備注:SendDlgItemMessage函數(shù)直到消息已經(jīng)被處理時(shí)才返回。
              使用SendDlgItemMessage函數(shù)同從一個(gè)指定的控制中檢索句柄和調(diào)用SendMessagge函數(shù)一樣。
            posted @ 2010-04-18 17:31 crystal_Q 閱讀(2614) | 評(píng)論 (0)編輯 收藏

            2010年4月14日

            2010年2月初三  2010年2月初五  一直烙在我心里......

            我要發(fā)奮學(xué)習(xí),  報(bào)答父母親, 他們?yōu)榱藘号某砷L(zhǎng) 辛苦勞作, 總是如此任勞任怨
            posted @ 2010-04-14 23:34 crystal_Q 閱讀(224) | 評(píng)論 (0)編輯 收藏
            SDK課程 就在這么短暫的時(shí)間內(nèi)結(jié)束了 學(xué)完了 很快又進(jìn)入到MFC了, 哦 好好加油! 給自己打氣! ! !
            posted @ 2010-04-14 23:31 crystal_Q 閱讀(204) | 評(píng)論 (0)編輯 收藏

            2010年3月11日

            哎,以前每次考試都是胸有成足...

            這次的考試,真的很失敗, 雖然成績(jī)還沒(méi)出來(lái), 心里明白一定考砸了.....

            考試的題目基本上都是課堂上將過(guò)的例子,都怪自己不好好學(xué)....
            posted @ 2010-03-11 23:59 crystal_Q 閱讀(314) | 評(píng)論 (1)編輯 收藏

            2010年2月26日

            不學(xué), 則不明;

            學(xué), 則有悟, 則能進(jìn)進(jìn), 則能勤.
            posted @ 2010-02-26 20:17 crystal_Q 閱讀(353) | 評(píng)論 (0)編輯 收藏
            僅列出標(biāo)題  

            導(dǎo)航

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            統(tǒng)計(jì)

            常用鏈接

            留言簿

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            无码乱码观看精品久久| 久久精品国产亚洲AV电影| 久久人人爽人人澡人人高潮AV | 99久久夜色精品国产网站| 人妻无码中文久久久久专区| jizzjizz国产精品久久| 91久久国产视频| 亚洲精品白浆高清久久久久久| 久久精品9988| 国产美女亚洲精品久久久综合| 久久久久久a亚洲欧洲aⅴ| 日韩人妻无码一区二区三区久久99 | 天天综合久久一二三区| 久久久亚洲欧洲日产国码二区| 国产精品一区二区久久精品无码 | 亚洲国产精品久久久久| 久久夜色精品国产亚洲| 久久本道综合久久伊人| 精品久久久久久国产潘金莲| 久久大香萑太香蕉av| 久久se这里只有精品| 国产精品久久网| 日本欧美久久久久免费播放网| 人妻丰满?V无码久久不卡| 久久天堂电影网| 国产精品99久久免费观看| 波多野结衣久久一区二区| 国产精品日韩深夜福利久久| 久久亚洲国产午夜精品理论片| 国产精品99久久99久久久| 久久久久久无码Av成人影院| 婷婷久久香蕉五月综合加勒比 | 欧美一区二区精品久久| 久久亚洲精品人成综合网| 2020久久精品亚洲热综合一本| 久久人人爽人人爽人人片AV麻豆| 国产69精品久久久久9999| 99热都是精品久久久久久| 国产高清美女一级a毛片久久w| 精品国产91久久久久久久a| 99久久精品费精品国产|