亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mfc教程12_ 對(duì)話框和對(duì)話框類cdialog.htm

?? 此文件是將MFC在線教程的14個(gè)網(wǎng)頁打包
?? HTM
?? 第 1 頁 / 共 5 頁
字號(hào):
<P 
align=justify>MFC還提供了許多其他數(shù)據(jù)交換函數(shù)(“DDX_”為前綴)和數(shù)據(jù)驗(yàn)證函數(shù)(“DDV_”為前綴)。DDV函數(shù)和DDX函數(shù)類似,這里不再多述。</P>
<P 
align=justify>程序員可以創(chuàng)建自己的數(shù)據(jù)交換和驗(yàn)證函數(shù)并使用它們,可以手工加入這些函數(shù)到DoDataExchange中,如果要Classwizard使用這些函數(shù),可以修改DDX.CLW文件,在DDX、DDV函數(shù)入口中加入自己創(chuàng)建的函數(shù)。</P>
<OL>
  <OL>
    <OL>
      <OL>
        <P align=justify>
        <LI><A name=_Toc457299128></A><B>UpdateData函數(shù)</B> 
        <P></P></LI></OL></OL></OL></OL>
<P align=justify>有了數(shù)據(jù)交換類和數(shù)據(jù)交換函數(shù),怎么來使用它們呢?MFC設(shè)計(jì)了UpdateData函數(shù)來完成上述數(shù)據(jù)交換和驗(yàn)證的處理。</P>
<P align=justify>首先,UpdateData創(chuàng)建CDataExchange對(duì)象,然后調(diào)用DoDataExchange函數(shù)。其實(shí)現(xiàn)如下:</P>
<P align=justify>BOOL CWnd::UpdateData(BOOL bSaveAndValidate)</P>
<P align=justify>{</P>
<P align=justify>ASSERT(::IsWindow(m_hWnd)); // calling UpdateData before 
DoModal?</P>
<P align=justify></P>
<P align=justify>//創(chuàng)建CDataChange對(duì)象</P>
<P align=justify>CDataExchange dx(this, bSaveAndValidate);</P>
<P align=justify></P>
<P align=justify>//防止在UpdateData期間派發(fā)通知消息給該窗口</P>
<P align=justify>_AFX_THREAD_STATE* pThreadState = AfxGetThreadState();</P>
<P align=justify>HWND hWndOldLockout = 
pThreadState-&gt;m_hLockoutNotifyWindow;</P>
<P align=justify>ASSERT(hWndOldLockout != m_hWnd); // must not recurse</P>
<P align=justify>pThreadState-&gt;m_hLockoutNotifyWindow = m_hWnd;</P>
<P align=justify></P>
<P align=justify>BOOL bOK = FALSE; // assume failure</P>
<P align=justify>TRY</P>
<P align=justify>{</P>
<DIR>
<P align=justify>//數(shù)據(jù)交換</P>
<P align=justify>DoDataExchange(&amp;dx);</P>
<P align=justify>bOK = TRUE; // it worked</P></DIR>
<P align=justify>}</P>
<P align=justify>CATCH(CUserException, e)//例外</P>
<P align=justify>{</P>
<DIR>
<P align=justify>// validation failed - user already alerted, fall through</P>
<P align=justify>ASSERT(bOK == FALSE);</P>
<P align=justify>// Note: DELETE_EXCEPTION_(e) not required</P></DIR>
<P align=justify>}</P>
<DIR>
<P align=justify>AND_CATCH_ALL(e)</P></DIR>
<P align=justify>{</P>
<DIR>
<P align=justify>// validation failed due to OOM or other resource failure</P>
<P align=justify>e-&gt;ReportError(MB_ICONEXCLAMATION, 
FX_IDP_INTERNAL_FAILURE);</P>
<P align=justify>ASSERT(!bOK);</P>
<P align=justify>DELETE_EXCEPTION(e);</P></DIR>
<P align=justify>}</P>
<P align=justify>END_CATCH_ALL</P>
<P align=justify></P>
<P align=justify>//恢復(fù)原來的值</P>
<P align=justify>pThreadState-&gt;m_hLockoutNotifyWindow = hWndOldLockout;</P>
<P align=justify>return bOK;</P>
<P align=justify>}</P>
<P 
align=justify>UpdataDate根據(jù)參數(shù)創(chuàng)建CDataExchange對(duì)象dx,如果參數(shù)為TRUE,dx用來寫數(shù)據(jù),否則dx用來讀數(shù)據(jù);然后調(diào)用DoDataExchange進(jìn)行數(shù)據(jù)交換。在數(shù)據(jù)交換期間,為了防止當(dāng)前窗口接收和處理命令通知消息,在當(dāng)前線程的線程狀態(tài)中記錄該窗口的句柄,用來防止給該窗口發(fā)送通知消息。</P>
<P 
align=justify>使用MFC的數(shù)據(jù)交換和驗(yàn)證機(jī)制,大大簡化了程序員的工作。通常在OnInitDialog中,MFC調(diào)用UpdateData(FALSE)把數(shù)據(jù)送給控制窗口顯示;在OnOk中,調(diào)用UpdateData(TRUE)從控制窗口中讀取數(shù)據(jù)。</P>
<OL>
  <OL>
    <P align=justify>
    <LI><A name=_Toc452641003></A><A name=_Toc457299129></A><B>無模式對(duì)話框</B> 
    <P></P>
    <P>CFormView是MFC使用無模式對(duì)話框的一個(gè)典型例子。CFormView是基于對(duì)話框模板創(chuàng)建的視,它的直接基類是CSrcollView,CSrcollView的直接基類才是CView。所以,這里先對(duì)CScorllView作一個(gè)簡要的介紹。</P>
    <OL>
      <P align=justify>
      <LI><A name=_Toc452641004></A><A name=_Toc457299130></A><B>CScrollView</B> 

      <P></P></LI></OL></LI></OL></OL>
<P align=justify>CScrollView繼承了CView的特性,并且增加了如下的功能:</P>
<P align=justify>(1)管理映射模式、窗口尺寸、視口尺寸(Map mode、Window and Viewport size)。Window 
and Viewport size用來完成頁面空間到設(shè)備空間的轉(zhuǎn)換。</P>
<P align=justify>(2)自動(dòng)管理滾動(dòng)條,響應(yīng)滾動(dòng)條消息。</P>
<P 
align=justify>為了實(shí)現(xiàn)這些功能,CScrollView覆蓋CView或者CWnd的一些虛擬函數(shù)和消息處理函數(shù),添加了一些新的函數(shù),當(dāng)然也設(shè)計(jì)了新的成員變量。</P>
<UL>
  <P align=justify>
  <LI>CscrollView新的成員變量 
  <P></P></LI></UL>
<P align=justify>protected:</P>
<P align=justify>int m_nMapMode;</P>
<P align=justify>CSize m_totalLog; // total size in logical units (no 
rounding)</P>
<P align=justify>CSize m_totalDev; // total size in device units</P>
<P align=justify>CSize m_pageDev; // per page scroll size in device units</P>
<P align=justify>CSize m_lineDev; // per line scroll size in device units</P>
<P align=justify></P>
<P align=justify>BOOL m_bCenter; // Center output if larger than total size</P>
<P align=justify>BOOL m_bInsideUpdate; // internal state for OnSize callback</P>
<UL>
  <P align=justify>
  <LI>CScrollView新的成員函數(shù),用來完成和滾動(dòng)操作、滾動(dòng)條等有關(guān)的功能 
  <P></P></LI></UL>
<P align=justify>void SetScaleToFitSize(SIZE sizeTotal);</P>
<P align=justify>void SetScrollSizes(int nMapMode, SIZE sizeTotal,</P>
<P align=justify>const SIZE&amp; sizePage = sizeDefault,</P>
<P align=justify>const SIZE&amp; sizeLine = sizeDefault);</P>
<P align=justify>這兩個(gè)函數(shù)中的尺寸大小按邏輯單位計(jì)算。</P>
<P 
align=justify>SetScaleToFitSize設(shè)置視口尺寸為當(dāng)前的窗口尺寸,這樣,在沒有滾動(dòng)條時(shí),邏輯視的內(nèi)容被放大或者縮小到正好窗口大小。</P>
<P align=justify>SetScrollSizes設(shè)置窗口的映射模式,窗口尺寸,頁和行尺寸。sizeDefualt被定義為(0,0)。</P>
<UL>
  <P align=justify>
  <LI>下面幾個(gè)函數(shù)用來實(shí)現(xiàn)滾動(dòng)或者得到滾動(dòng)條相關(guān)的信息 
  <P></P></LI></UL>
<P align=justify>void ScrollToPosition(POINT pt); // set upper left position</P>
<P align=justify>void FillOutsideRect(CDC* pDC, CBrush* pBrush);</P>
<P align=justify>void ResizeParentToFit(BOOL bShrinkOnly = TRUE);</P>
<P align=justify>CPoint GetScrollPosition() const; // upper corner of 
scrolling</P>
<P align=justify>CSize GetTotalSize() const; // logical size</P>
<UL>
  <P align=justify>
  <LI>下面兩個(gè)函數(shù)使用了設(shè)備坐標(biāo)單位 
  <P></P></LI></UL>
<P align=justify>CPoint GetDeviceScrollPosition() const;</P>
<P align=justify>void GetDeviceScrollSizes(int&amp; nMapMode, SIZE&amp; 
sizeTotal,</P>
<P align=justify>SIZE&amp; sizePage, SIZE&amp; sizeLine) const;</P>
<P align=justify></P>
<UL>
  <P align=justify>
  <LI>覆蓋的消息處理函數(shù) 
  <P></P></LI></UL>
<P align=justify>處理WM_SIZE的OnSize;</P>
<P align=justify>處理WM_HSCROLL的OnHScroll;</P>
<P align=justify>處理WM_VSCROLL的OnVScroll;</P>
<P align=justify></P>
<UL>
  <P align=justify>
  <LI>覆蓋的虛擬函數(shù) 
  <P></P></LI></UL>
<P align=justify>CWnd的CalcWindowRect</P>
<P align=justify>CView的OnPrepareDC、OnScroll、OnScrollBy</P>
<UL>
  <P align=justify>
  <LI>用于DEBUG的Dump和AssertValid 
  <P></P></LI></UL>
<P align=justify>這里,覆蓋的消息處理函數(shù)和虛擬函數(shù)共同完成對(duì)滾動(dòng)條、滾動(dòng)消息的處理。</P>
<P align=justify>在CSrcollView的實(shí)現(xiàn)涉及到許多和Windows映射模式、坐標(biāo)轉(zhuǎn)換等相關(guān)的函數(shù)的使用。這里,不作具體討論。</P>
<OL>
  <OL>
    <OL>
      <P align=justify>
      <LI><A name=_Toc452641005></A><A name=_Toc457299131></A><B>CFormView</B> 
      <P></P></LI></OL></OL></OL>
<P 
align=justify>CFormView派生于CSrcollView,本身沒有增加新的函數(shù),但覆蓋了一些基類的虛擬函數(shù),增加了幾個(gè)成員變量(以下列出的不包含OLE處理)。</P>
<OL>
  <P align=justify>
  <LI>增加的成員變量 
  <P></P>
  <P align=justify>LPCTSTR m_lpszTemplateName;</P>
  <P align=justify>CCreateContext* m_pCreateContext;</P>
  <P align=justify>HWND m_hWndFocus; // last window to have focus</P>
  <P 
  align=justify>m_lpszTemplateName用來保存創(chuàng)建視圖的對(duì)話框模板的名稱,_pCreateContext用來保存創(chuàng)建上下文,m_hWndFocus用來保存最近一次擁有焦點(diǎn)的控制窗口。在構(gòu)造CFormView對(duì)象時(shí),構(gòu)造函數(shù)把有關(guān)信息保存到成員變量中,如下所示:</P>
  <P align=justify>CFormView::CFormView(LPCTSTR lpszTemplateName)</P>
  <P align=justify>{</P>
  <P align=justify>m_lpszTemplateName = lpszTemplateName;</P>
  <P align=justify>m_pCreateContext = NULL;</P>
  <P align=justify>m_hWndFocus = NULL; // focus window is font</P>
  <P align=justify>}</P>
  <P align=justify></P>
  <LI>覆蓋的虛擬函數(shù) 
  <P></P>
  <P align=justify>virtual void OnDraw(CDC* pDC); // MFC缺省處理空</P>
  <P align=justify>virtual BOOL Create(LPCTSTR, LPCTSTR, DWORD,</P>
  <P align=justify>const RECT&amp;, CWnd*, UINT, CCreateContext*);</P>
  <P align=justify>virtual BOOL PreTranslateMessage(MSG* pMsg);</P>
  <P align=justify>virtual void OnActivateView(BOOL, CView*, CView*);</P>
  <P align=justify>virtual void OnActivateFrame(UINT, CFrameWnd*);</P>
  <P 
  align=justify>創(chuàng)建基于對(duì)話框的視窗口,不同于創(chuàng)建普通視窗口(前者調(diào)用CWnd::CreateEx,后者調(diào)用CWnd::CreateDlg),故需要覆蓋Create虛擬函數(shù)。</P>
  <P align=justify>覆蓋PreTranslateMessage是為了過濾對(duì)話框消息,把一些消息讓CFormView對(duì)象來處理。</P>
  <P align=justify></P>
  <LI>覆蓋了兩個(gè)消息處理函數(shù): 
  <P></P></LI></OL>
<P align=justify>afx_msg int OnCreate(LPCREATESTRUCT lpcs);</P>
<P align=justify>afx_msg void OnSetFocus(CWnd* pOldWnd);</P>
<P 
align=justify>下面,分析幾個(gè)函數(shù)作。Create函數(shù)解釋了MFC如何使用一個(gè)對(duì)話框作為視的方法,PreTranslateMessage顯示了CFormView不同于CDialog的實(shí)現(xiàn)。</P>
<OL>
  <OL>
    <OL>
      <OL>
        <P align=justify>
        <LI><A name=_Toc457299132></A><B>CFormView的創(chuàng)建</B> 
        <P></P>
        <P align=justify>設(shè)計(jì)CFormView的創(chuàng)建函數(shù),必須考慮兩個(gè)問題:</P>
        <P 
        align=justify>首先,CFormView是一個(gè)視,其創(chuàng)建函數(shù)必須是一個(gè)虛擬函數(shù),原型必須和CWnd::Create(LPSTR…pContext)函數(shù)一致,見圖5-13視的創(chuàng)建。其次,CFormView使用了對(duì)話框創(chuàng)建函數(shù)和對(duì)話框“窗口類”來創(chuàng)建視,但必須作一些處理使得該窗口具備視的特征。</P>
        <P align=justify>Create的實(shí)現(xiàn)如下:</P>
        <P align=justify>BOOL CFormView::Create(LPCTSTR /*lpszClassName*/,</P>
        <P align=justify>LPCTSTR /*lpszWindowName*/,</P>
        <P align=justify>DWORD dwRequestedStyle, const RECT&amp; rect, CWnd* 
        pParentWnd, UINT nID,</P>
        <P align=justify>CCreateContext* pContext)</P>
        <P align=justify>{</P>
        <P align=justify>ASSERT(pParentWnd != NULL);</P>
        <P align=justify>ASSERT(m_lpszTemplateName != NULL);</P>
        <P align=justify></P>
        <P align=justify>m_pCreateContext = pContext; // save state for later 
        OnCreate</P>
        <P align=justify></P>
        <P align=justify>#ifdef _DEBUG</P>
        <P align=justify>// dialog template must exist and be invisible with 
        WS_CHILD set</P>
        <P align=justify>if (!_Af

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91官网在线免费观看| 欧美电影影音先锋| 亚洲成人av资源| 亚洲精品国产精品乱码不99| 日韩精品一区二区三区视频| 99精品久久免费看蜜臀剧情介绍| 日韩电影在线一区二区| 国产精品久久久久久久久免费丝袜| 欧美高清视频不卡网| www.日韩在线| 国产在线国偷精品产拍免费yy| 亚洲精品成人在线| 欧美国产日韩一二三区| 日韩精品一区二区三区在线| 欧美性大战久久久久久久| 国产·精品毛片| 久久草av在线| 天堂一区二区在线| 自拍偷在线精品自拍偷无码专区| 精品国产1区2区3区| 91丝袜美腿高跟国产极品老师 | 97久久超碰国产精品| 久久91精品国产91久久小草| 亚洲国产精品综合小说图片区| 国产精品久久99| 国产亚洲欧美在线| 欧美成va人片在线观看| 精品视频1区2区| 色综合天天在线| 成人精品视频网站| 国产成人福利片| 欧美人xxxx| 欧亚洲嫩模精品一区三区| 成人午夜视频在线| 高清国产一区二区三区| 国产一区二区三区四区五区美女 | 捆绑变态av一区二区三区| 午夜精品久久久久久久蜜桃app| 亚洲精品午夜久久久| 亚洲私人黄色宅男| 国产精品白丝在线| 国产精品二三区| 日韩伦理av电影| **性色生活片久久毛片| 亚洲欧洲另类国产综合| 中文字幕在线视频一区| 国产精品免费人成网站| 亚洲国产精品v| 亚洲欧洲日本在线| 亚洲人成在线播放网站岛国| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品大尺度| 亚洲欧洲成人自拍| 亚洲精品日韩一| 亚洲一卡二卡三卡四卡无卡久久| 亚洲午夜电影在线| 日日欢夜夜爽一区| 蜜臂av日日欢夜夜爽一区| 久久国产精品露脸对白| 国产一区二区三区在线观看精品| 懂色av中文字幕一区二区三区| 国产成人av电影在线| 99国产精品久| 欧美另类videos死尸| 日韩精品一区二区三区视频播放 | 人人精品人人爱| 国产在线精品免费| 高清不卡一二三区| 91天堂素人约啪| 欧美日韩一级视频| 欧美videossexotv100| 亚洲国产成人在线| 亚洲一区二区av电影| 蜜臀久久99精品久久久画质超高清| 九色综合国产一区二区三区| 国产宾馆实践打屁股91| 色综合网站在线| 日韩精品在线一区二区| 国产日韩精品一区| 亚洲一区二区三区国产| 国产一区二区三区久久久| 99精品欧美一区二区蜜桃免费| 9191国产精品| 国产精品天干天干在观线| 一区二区三区日韩精品视频| 看电影不卡的网站| 91免费看视频| 3751色影院一区二区三区| 亚洲国产精华液网站w| 亚洲无线码一区二区三区| 国产成人亚洲精品青草天美| 在线国产电影不卡| 久久伊人中文字幕| 一区二区三区**美女毛片| 韩日av一区二区| 欧美日韩亚洲另类| 日本一区二区三区久久久久久久久不| 亚洲国产精品久久不卡毛片 | 欧美精品丝袜中出| 国产拍揄自揄精品视频麻豆| 午夜欧美在线一二页| 大胆亚洲人体视频| 欧美一区二区三区视频免费播放| 国产精品久久毛片| 国产综合色产在线精品| 欧美性xxxxxxxx| 亚洲欧洲www| 国产精品一区二区x88av| 欧美久久免费观看| 亚洲精品视频观看| 成人午夜视频在线观看| 精品对白一区国产伦| 爽爽淫人综合网网站| 99久久精品免费看| 久久久影视传媒| 久99久精品视频免费观看| 欧美性生活一区| 亚洲三级免费电影| 国产精品99久久久久| 欧美成人女星排名| 男女性色大片免费观看一区二区| 91国偷自产一区二区开放时间 | 色综合久久88色综合天天| 久久久久久久久蜜桃| 久久国产尿小便嘘嘘尿| 91精品国产乱码久久蜜臀| 亚洲一卡二卡三卡四卡无卡久久| 色先锋aa成人| 中文字幕一区二区三区乱码在线 | 亚洲黄色小说网站| 成人美女视频在线看| 国产日韩av一区| 国产麻豆午夜三级精品| 欧美成人一区二区| 日韩电影在线看| 56国语精品自产拍在线观看| 一区二区三区蜜桃| 欧洲精品一区二区三区在线观看| 亚洲欧洲精品一区二区三区| 国产成都精品91一区二区三| 久久精品夜色噜噜亚洲aⅴ| 国产一区二区三区蝌蚪| 国产欧美日韩在线视频| 国产精品88av| 欧美激情中文不卡| 99精品热视频| 亚洲大尺度视频在线观看| 在线观看欧美黄色| 亚洲国产日韩综合久久精品| 欧美挠脚心视频网站| 人人爽香蕉精品| 精品日韩一区二区三区| 国产成人综合网站| 国产精品网友自拍| 色婷婷精品久久二区二区蜜臀av| 亚洲最色的网站| 欧美一区二区三区四区在线观看| 激情都市一区二区| 国产女人18水真多18精品一级做| 成人av电影免费在线播放| 亚洲视频一二三区| 欧美男女性生活在线直播观看| 日本午夜精品视频在线观看 | 精品视频一区二区不卡| 偷拍与自拍一区| 久久综合丝袜日本网| 成人国产在线观看| 一区二区三区免费观看| 日韩免费性生活视频播放| 国产99一区视频免费| 一区二区视频在线看| 欧美一区三区二区| 国内精品久久久久影院薰衣草| 国产欧美日韩久久| 日本久久一区二区三区| 免费欧美日韩国产三级电影| 国产日韩v精品一区二区| 欧美性欧美巨大黑白大战| 奇米亚洲午夜久久精品| 国产欧美日韩不卡免费| 欧美日韩成人在线一区| 国产乱人伦偷精品视频不卡| 一区二区三区在线高清| 精品卡一卡二卡三卡四在线| 91浏览器在线视频| 蜜芽一区二区三区| 亚洲天堂久久久久久久| 日韩视频中午一区| av电影在线观看一区| 免费xxxx性欧美18vr| 日韩码欧中文字| 精品粉嫩超白一线天av| 欧洲视频一区二区| 国产乱码精品一区二区三区忘忧草| 一区二区三区日韩精品视频| 精品伦理精品一区| 欧美巨大另类极品videosbest| voyeur盗摄精品| 久久国产精品一区二区| 亚洲在线成人精品|