• <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類封裝了Windows常用的文件對話框。常用的文件對話框提供了一種簡單的與Windows標準相一致的文件打開和文件存盤對話框功能。
              可以用構造函數提供的方式使用CFileDialog,也可以從CFileDialog派生出自己的對話類并編寫一個構造函數來適應你的需要。每種情況下,對話框都與標準MFC對話框一樣工作。因為它們都是CCommonDialog類的派生類。
              要使用CFileDialog,先用CFileDialog構造函數構造一個對象,當創建了一個對話框后,可以設置或修改m_ofn結構中的任何值,以初始化對話框控件的值或狀態。m_ofn結構是OPENFILENAME類型的。要了解更多信息,可參閱聯機文檔“Win32 SDK”中的OPENFILENAME結構。
              初始化對話框控件后,調用DoModal成員函數顯示對話框并使用戶輸入路徑和文件。DoModal返回不論是用戶選擇了OK(IDOK)還是取消(IDCANCEL)按鈕。
              當DoModal返回IDOK,可以使用某一個CFileDIalog的公共成員函數獲取用戶輸入的信息。
              CFileDIalog包含許多保護成員,使你可以處理常用的共享沖突、文件名合法性檢查、列表框改變通知。這些保護成員對許多應用來說用處不大,因為缺省處理是自動的。對這些函數來說,消息映射入口是不必要的,因為它們是標準虛函數。
              可以使用Windows CommDlgExtendError函數判斷在初始化對話框時是否是發生了錯誤,并獲取關于錯誤的更多信息。
              析構一個CFileDialog對象是自動,無須調用CDialog::EndDialog。
              要使用戶選用多個文件,可在調用DoModal之前設置OFN_ALLOWMULTISELECT標志。你應提供文件名緩沖區來放置返回的多個文件名的列表,這通過用一個分配了的緩沖區指針替換m_ofn.lpstrFile來實現,要在創建了CFileDialog之后調用DoModal之前進行此操作。另外,必須用m_ofn.lpstrFile指向的緩沖區字節數來設置m_ofn.nMaxFile。
              CFileDialog依賴于Windows3.1及以后版本中的COMMDLG.DLL。
              如果從CFileDialog中派生出一個新類,可用消息映射處理。要擴展消息處理,從CWnd中派生一個類,向新類中加入一個消息映射并為新消息提供成員函數,無須提供一個鉤子函數來定制對話框。
              要定制對話框,從CFileDialog中派生一個對象,提供一個定制對話模板,從擴展控件中加入一個消息映射,處理通知消息。任意未處理的消息將傳遞給基類。
              無須定制鉤子函數。
              #include <afxdlgs.h>
              CFileDialog類的成員
            posted @ 2010-04-30 22:38 crystal_Q 閱讀(696) | 評論 (1)編輯 收藏

            2010年4月23日

            //支持序列化類,必須繼承自CObject類
            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:
              //得到起點信息
              CPoint GetBeginPoint() const
              {  return m_Begin; }
              //得到止點信息
              CPoint GetEndPoint() const
              { return m_End; }
              //得到筆顏色
              COLORREF GetPenColor() const
              { return m_crPenColor;  }
              //得到筆寬度
              int GetPenWidth() const
              {  return m_nPenWidth; }
              //設置筆信息
              void SetPen( int nPenStyle, int nPenWidth, COLORREF crPenColor);
              //設置起止點信息
              void SetPoint(CPoint& BeginPoint,CPoint& EndPoint);
              //設置刷子
              virtual void SetBrush(COLORREF brushcolor){};
              //取得名稱
              CString GetName()
              {
                return m_ShapeName;
              }
            protected:
              //筆的信息
              int       m_nPenStyle;
              int       m_nPenWidth;
              COLORREF  m_crPenColor;
              //起止點信息 
              CPoint    m_Begin;
              CPoint    m_End;
              //Name
              CString   m_ShapeName;
            };
            posted @ 2010-04-23 21:25 crystal_Q 閱讀(440) | 評論 (2)編輯 收藏

            2010年4月22日

            雙緩存, 位圖, 工廠類

            設置窗口的寬度
            設置窗口的高度
            在CFrame 框架類中
            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"; //嘗試修改標題  卻修改不成功
             cs.style &= ~FWS_ADDTOTITLE;

             return TRUE;
            }

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

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

            2010年4月19日

            HINSTANCE AfxGetInstanceHandle( );

            返回值:代表應用程序的當前實例的HINSTANCE值。如果是從與MFC的USRDLL版本連接的DLL內調用的,則返回代表DLL的HINSTANCE值.

            說明:這個函數使你能夠獲得當前應用程序的實例句柄。AfxGetInstanceHandle總是返回代表你的可執行文件(.EXE)的HINSTANCE值,除非它從與MFC的USRDLL版本連接的DLL內調用的。在這種情況下,它返回的是DLL的HINSTANCE值。



            void CMfcNewButtonDlg::OnButton1()
            {
             // TODO: Add your control notification handler code here
            //獲取靜態窗口的句柄
              HWND hStaicGroup = ::GetDlgItem(GetSafeHwnd(),IDC_STATIC);
            //在靜態窗口中創建子窗口
            //AfxGetInstanceHandle() 調用此函數 獲取當前應用程序的實例句柄

             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 閱讀(3135) | 評論 (0)編輯 收藏

            2010年4月18日

            函數功能      

            該函數改變指定窗口的屬性函數也將指定的一個32位值設置在窗口的額外存儲空間的指定偏移位置。

            函數原型

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

              函數原型: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
              );
              參數:
              hDlg:指定含有控制的對話框。
              nIDDigItem:指定接收消息的控制的標識符。
              Msg:指定將被發送的消息。
              wParam:指定消息特定的其他信息。
              lParam:指定消息特定的其他信息。
              返回值:返回值指定消息處理的結果,且依賴于發送的消息。
              備注:SendDlgItemMessage函數直到消息已經被處理時才返回。
              使用SendDlgItemMessage函數同從一個指定的控制中檢索句柄和調用SendMessagge函數一樣。
            posted @ 2010-04-18 17:31 crystal_Q 閱讀(2614) | 評論 (0)編輯 收藏

            2010年4月14日

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

            我要發奮學習,  報答父母親, 他們為了兒女的成長 辛苦勞作, 總是如此任勞任怨
            posted @ 2010-04-14 23:34 crystal_Q 閱讀(224) | 評論 (0)編輯 收藏
            SDK課程 就在這么短暫的時間內結束了 學完了 很快又進入到MFC了, 哦 好好加油! 給自己打氣! ! !
            posted @ 2010-04-14 23:31 crystal_Q 閱讀(203) | 評論 (0)編輯 收藏

            2010年3月11日

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

            這次的考試,真的很失敗, 雖然成績還沒出來, 心里明白一定考砸了.....

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

            2010年2月26日

            不學, 則不明;

            , 則有悟, 則能進, 則能勤.
            posted @ 2010-02-26 20:17 crystal_Q 閱讀(353) | 評論 (0)編輯 收藏
            僅列出標題  

            導航

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

            統計

            常用鏈接

            留言簿

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            伊人色综合九久久天天蜜桃| 色综合久久中文综合网| 久久久久亚洲国产| 精品久久久久久久国产潘金莲| 久久人人爽人人爽人人片AV东京热 | 亚洲国产精品无码久久久蜜芽 | 伊人久久大香线蕉av不卡| 亚洲精品乱码久久久久66| 18岁日韩内射颜射午夜久久成人| 久久久久人妻一区精品| 99国产欧美久久久精品蜜芽| 一本久久精品一区二区| 国产精品热久久毛片| 2021久久精品国产99国产精品| 国内精品久久久久影院网站| 色狠狠久久AV五月综合| 亚洲精品午夜国产va久久| 久久久久久久综合日本亚洲| 亚洲国产另类久久久精品| 性高湖久久久久久久久AAAAA| 九九久久99综合一区二区| 色偷偷久久一区二区三区| 中文精品99久久国产 | 久久婷婷人人澡人人爽人人爱 | 久久亚洲精品成人无码网站| 国产精品九九久久免费视频 | 久久精品九九亚洲精品| 亚洲国产小视频精品久久久三级 | 色偷偷久久一区二区三区| 18禁黄久久久AAA片| 亚洲国产精品成人AV无码久久综合影院| 久久人人爽爽爽人久久久| 亚洲色大成网站WWW久久九九| 欧美精品乱码99久久蜜桃| 亚洲中文字幕伊人久久无码| 精品久久综合1区2区3区激情| 99久久精品无码一区二区毛片 | 久久人人爽人人爽人人片av麻烦 | 久久精品国产亚洲Aⅴ香蕉| 久久se精品一区二区影院 | 成人a毛片久久免费播放|