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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vc++技術內幕(第四版)筆記(第4章).txt

?? VC++技術內幕精講
?? TXT
字號:
第四章:基本事件處理、映射模式和滾動視圖

1,消息映射:如在視窗中按下鼠標做鍵,會自動發送WM_LBUTTONDOWN消息,如果要對這消息有所反應的話,需

//{{AFX_MSG(CEx04aView) afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//頭文件聲明消息響應函數原型。//}}AFX_MSGDECLARE_MESSAGE_MAP()//頭文件

BEGIN_MESSAGE_MAP(CDrawView, CView)//代碼文件 //{{AFX_MSG_MAP(CEx04aView) ON_WM_LBUTTONDOWN()//該消息映射宏將OnLButtonDown函數和應用程序框架聯系在一起 //}}AFX_MSG_MAPEND_MESSAGE_MAP()void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) //代碼文件{ //event processing code here}說明:為了方便ClassWizard,AppWizard生成了一些注釋行。它把消息映射函數原型放在兩個AFX_MSG“刮弧對”之間,在AFX_MSG_MAP“刮弧對”之間添加消息映射入口,并在代碼文件中給出完整的OnLButtonDown成員函數框架。

2,視圖中的OnDraw()是根據視圖當前狀態來繪制圖象的,用戶的操作可以改變這中狀態。在完整的MFC庫應用程序中,文檔的對象掌握在應用程序(視圖)的狀態。

3,如果用全程變量來保存視圖狀態,這將在多視圖情況下會遇到麻煩;(待體會)

4,CWnd::InvalidateRect函數能夠觸發WM_PAINT消息,該消息被窗口類如CView映射后,引起對OnDraw函數調用,從而重繪無效矩形區域。優化窗口的繪制過程:1)設置的無效區域越小,重畫的速度就越快;2)執行無效區域外的繪制純屬于浪費時間,OnDraw函數可以調用CDC的成員函數GetClipBox得到無效區域大小。注意:OnDraw函數不僅僅響應InValidate*之類的調用,它也會在窗口改變大小和窗口顯露時被調用。

5,本章重要介紹函數PtInRect(..);//測試一個點是否落在某個矩形內。PtInRegion(..);//判斷一個點是否落在橢圓(CRgn對象)內//A region is an elliptical or polygonal area within a window. GetClientRect(..);//獲得客戶矩形坐標并保持在CRect對象中SelectStockObject(..);//選擇the predefined stock pens, brushes, or fonts到DC中,函數返回先前的CGdiObject 對象指針。

6,在構造函數中對類數據成員初始化。CEx04aView::CEx04aView() : m_rectEllipse(0, 0, 200, 200)//注意這種初試化方式,m_rectEllipse是CEx04aView類數據成員CRect類對象{ m_nColor = GRAY_BRUSH;}

7,[致WIN32程序員]: 標準的基于WINDOWS應用程序會首先登記一個窗口類(不同于C++類[補:實際是個_WNDCLASS結構體]),同時在處理過程中,還需要對每個類指定窗口過程(WINDOWS PROCEDURE)。每次應用程序調用CreateWindow建立一個窗口時候,都要指定一個窗口類做為參數,這樣就把新建立的窗口和窗口過程函數連接起來了。每次Windows給窗口發送消息時候,這個函數就會被調用(補:消息循環中DispatchMessage(&msg)分派消息到窗口的回調函數處理,OS調用窗口回調函數進行處理),以檢查用參數傳送進來的消息碼,并執行適當的代碼來處理該消息。 MFC庫應用程序框架有一個適用于大多數窗口類型的簡單窗口類和窗口過程函數。該窗口過程函數會根據參數傳進來的窗口句柄,在MFC的句柄映射表(handle map)中查找,從而得到對應的C++窗口對象指針。然后,該窗口過程函數用MFC運行時類(runtime class)系統來決定窗口對象的C++類。下一步,它從由消息分發映射函數生成的靜態表中找到消息處理函數,最后用正確的窗口對象調用消息處理函數。

8,映射模式:1)MM_TEXT映射模式:坐標被映射到象素,X值向右遞增,Y值向下遞增。可用它來表示[設備坐標]。CDC::SetMapMode(..)//設置映射模式CDC::GetMapMode(..)CDC::SetViewportOrg(..)//設置視口原點CDC::GetViewportOrg(..)CDC::SetWindowOrg (..)//設置屏幕原點CDC::GetWindowOrg(..)2)固定比例映射模式(MM_HIENGLISH,MM_HIMETRIC ,MM_LOMETRIC ,MM_LOENGLISH,MM_TWIPS )固定比例映射模式均X值向右遞增,Y值向下遞增,它們之間唯一差別是 實際的比例因子。如下:MM_HIENGLISH Each logical unit is converted to 0.001 inch. MM_HIMETRIC Each logical unit is converted to 0.01 millimeter. MM_LOENGLISH Each logical unit is converted to 0.01 inch. MM_LOMETRIC Each logical unit is converted to 0.1 millimeter. MM_TWIPS Each logical unit is converted to 1/20 of a point(磅). (Because a point is 1/72 inch, a twip is 1/1440 inch.) //MM_TWIPS常常用于打印機。 3)可變比例映射模式:(MM_ISOTROPIC ,MM_ANISOTROPIC )這兩種模式用許我們改變它們的比例因子和坐標原點。應用這兩中模式,如用戶改變窗口的尺寸,繪制的圖形大小也會發生響應的變化具體如下:The MM_HIENGLISH, MM_HIMETRIC, MM_LOENGLISH, MM_LOMETRIC, and MM_TWIPS modes are useful for applications that must draw in physically meaningful units (such as inches or millimeters). The MM_ISOTROPIC mode ensures a 1:1 aspect ratio, which is useful when it is important to preserve the exact shape of an image. The MM_ANISOTROPIC mode allows the x- and y-coordinates to be adjusted independently常一起使用的函數:SetWindowExt(..)//Sets the x- and y-extents of the window associated with the device context.SetViewportExt(..)//Sets the x- and y-extents of the viewport of the device context. 

注意:When the following mapping modes are set, calls to SetWindowExt and SetViewportExt functions are ignored: MM_HIENGLISH,MM_HIMETRIC,MM_LOENGLISH,MM_LOMETRIC,MM_TEXT,MM_TWIPS When MM_ISOTROPIC mode is set, an application must call the SetWindowExt member function before calling SetViewportExt.

9,坐標變換:(具體參見P54)許多MFC庫函數只能在設備坐標下工作(尤其CRect類成員函數)。可以認為CDC的所有成員函數都一邏輯坐標作參數。可以認為CWnd的成員函數都以設備坐標做參數。(所有在實際窗口上點擊獲得的坐標都是邏輯坐標)。在設置了設備環境的映射模式及相應的參數以后,CDC的LPtoDP和DPtoLP函數可以用來在邏輯坐標系和設備做表系之間進行轉換。在CView的虛函數OnPrepareDC中設置映射模式要比在OnDraw函數中要好。//*注意:CView::OnPrepareDC virtual void OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL );應用程序將在調用OnDraw之前調用OnPrepareDC函數。(OnPrepareDC在為屏幕顯示而調用OnDraw函數之前,或在為打印或打印預覽每一頁而調用OnPrint成員函數之前。)

10,CScrollView支持滾動條的滾動,但不支持鍵盤的滾動。通過使用CWnd的ScrollWindow和SetViewportOrg函數,CScrollView類允許將視口原點移到窗口中的任何一個位置,甚至包括窗口區域的上部或窗口的原點的左邊。

鍵盤輸入是分兩步處理的。OS向窗口發送類如WM_KEYDOWN和WM_KEYUP消息時用的是虛擬鍵盤碼,在消息到達窗口之前,被翻譯成WM_CHAR消息,該消息帶著正常的鍵碼。

利用對WM_KEYDOWN消息進行響應,對按鍵分別調用OnVScroll就可以使應用程序支持鍵盤的滾動。CWnd::OnVScroll afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );////nSBCode:SB_BOTTOM Scroll to bottom.SB_ENDSCROLL End scroll.SB_LINEDOWN Scroll one line down.SB_LINEUP Scroll one line up.SB_PAGEDOWN Scroll one page down.SB_PAGEUP Scroll one page up.SB_THUMBPOSITION Scroll to the absolute position. The current position is provided in nPos.SB_THUMBTRACK Drag scroll box to specified position. The current position is provided in nPos.SB_TOP Scroll to top. ////The framework calls this member function(OnVScroll) when the user clicks the window’s vertical scroll bar. 

11,CView::OnInitialUpdate virtual void OnInitialUpdate( );說明:OnInitialUpdate是視圖窗口完全建立后框架調用的第一個函數。框架在第一次調用OnDraw前會調用OnInitialUpdate。具體參見下:Called by the framework after the view is first attached to the document, but before the view is initially displayed. The default implementation of this function calls the OnUpdate member function with no hint information . 

12,MFC對140種Windows消息直接直接提供了相應的消息控制函數,當然,我們還可以定義自己的消息和相應的消息控制函數。五種特殊Windows消息:WM_CREATE,WM_CLOSE,WM_QUERYENDSESSION,WM_DESTROY,WM_NCDESTROY.(具體參見 p62-63頁。這兩頁強烈建議看看,這里簡要筆記三個最常用最重要的)1)WM_CREATE消息:The WM_CREATE message is sent when an application requests that a window be created by calling the CreateWindowEx or CreateWindow function. The window procedure of the new window receives this message after the window is created, but before the window becomes visible. The message is sent before the CreateWindowEx or CreateWindow function returns. 2)WM_CLOSE消息:當關閉窗口或父窗口被關閉時,Windows都會發送WM_CLOSE消息。可以重新定義該消息響應函數OnClose來完全控制關閉過程。3)WM_DESTROY消息:Windows在發送WM_CLOSE消息之后,緊接著就會發送WM_DESTROY消息(響應這個消息的時候,窗口已經消失但還沒有銷毀)。(可以響應這個消息來做一些銷毀當前窗口后的一些事情,例如再彈出其它對話框發送其他的消息)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色小视频| 9l国产精品久久久久麻豆| 国产成人精品免费在线| 欧美日韩在线播| 中文字幕一区二区视频| 精品一区二区影视| 欧美日韩一区三区四区| 综合在线观看色| 福利视频网站一区二区三区| 日韩一区二区电影在线| 亚洲自拍都市欧美小说| 丁香亚洲综合激情啪啪综合| 日韩视频一区二区| 天堂成人国产精品一区| 精品污污网站免费看| 亚洲欧美日韩久久| 99天天综合性| 国产精品网站一区| 成人小视频在线观看| 国产婷婷精品av在线| 久久草av在线| 精品国产成人系列| 激情六月婷婷久久| 久久午夜羞羞影院免费观看| 精品综合久久久久久8888| 日韩欧美色电影| 激情文学综合网| 国产午夜精品一区二区三区四区| 黑人精品欧美一区二区蜜桃 | 久久久久久亚洲综合| 蜜桃视频在线观看一区| 欧美变态凌虐bdsm| 国内精品第一页| 国产欧美精品一区二区色综合朱莉| 激情深爱一区二区| 国产精品色呦呦| 一本一道波多野结衣一区二区| 亚洲色欲色欲www在线观看| 91久久精品国产91性色tv| 亚洲图片有声小说| 欧美精品三级在线观看| 日本vs亚洲vs韩国一区三区二区| 欧美成人午夜电影| 国产精品123区| 亚洲精品中文在线影院| 欧美久久久影院| 麻豆精品新av中文字幕| 国产三级欧美三级| 一本久久精品一区二区| 污片在线观看一区二区| 精品国产凹凸成av人导航| 国产91精品露脸国语对白| 亚洲视频狠狠干| 91精品在线免费| 国产成人一级电影| 亚洲综合男人的天堂| 欧美一级夜夜爽| 不卡一区二区在线| 视频精品一区二区| 国产精品色婷婷| 欧美日韩国产美| 国产成a人无v码亚洲福利| 一区二区三区四区不卡视频| 欧美一二三区精品| 成人午夜视频网站| 日韩中文字幕一区二区三区| 国产精品女上位| 欧美一区二区美女| www.欧美色图| 久久国产综合精品| 亚洲三级理论片| 久久久综合九色合综国产精品| 色噜噜狠狠色综合中国| 国产一区日韩二区欧美三区| 一区二区三区免费观看| 国产亚洲欧美日韩俺去了| 色婷婷综合久久久中文一区二区| 精品一区二区三区影院在线午夜 | 中日韩免费视频中文字幕| 欧美日韩www| 99精品在线免费| 精品亚洲成a人在线观看| 亚洲一区二区精品视频| 国产精品乱码久久久久久| 日韩一区二区三区四区五区六区| 在线亚洲高清视频| 成a人片亚洲日本久久| 精品一区二区三区的国产在线播放 | 日韩欧美自拍偷拍| 欧美在线一区二区三区| 成+人+亚洲+综合天堂| 国内久久精品视频| 日韩av电影天堂| 一区二区三区久久| 亚洲欧美日韩电影| 国产精品久久久久影院亚瑟| 国产亚洲污的网站| 久久日韩粉嫩一区二区三区| 91精品国产福利在线观看| 精品视频在线免费看| 91福利在线看| 色综合中文综合网| 另类专区欧美蜜桃臀第一页| 亚洲一区二区三区四区的| 亚洲黄色性网站| 亚洲精品成人在线| 亚洲黄色免费网站| 亚洲精品免费一二三区| 亚洲精品你懂的| 亚洲久草在线视频| 亚洲与欧洲av电影| 亚洲一二三区视频在线观看| 亚洲欧美色综合| 一区二区三区四区视频精品免费| 亚洲欧美影音先锋| 亚洲美女屁股眼交3| 亚洲视频网在线直播| 亚洲自拍与偷拍| 亚洲不卡av一区二区三区| 视频一区在线视频| 老司机精品视频导航| 国产精品一区二区男女羞羞无遮挡| 国产大片一区二区| 99国内精品久久| 欧美日韩卡一卡二| 日韩欧美黄色影院| 久久久国产午夜精品| 国产精品高潮呻吟久久| 亚洲综合一二区| 裸体在线国模精品偷拍| 国产成人一级电影| 色婷婷香蕉在线一区二区| 欧美羞羞免费网站| 日韩三区在线观看| 国产蜜臀97一区二区三区 | 91成人免费在线| 欧美片在线播放| 精品国产乱码久久久久久闺蜜| 日本一二三四高清不卡| 一区二区三区久久久| 美女视频黄 久久| 成人91在线观看| 91.xcao| 亚洲欧洲精品一区二区精品久久久| 一区二区欧美精品| 国产在线一区观看| 欧美伊人久久大香线蕉综合69| 日韩一区二区中文字幕| 国产精品国产精品国产专区不蜜| 亚洲一区二区视频在线观看| 九九九精品视频| 色婷婷精品大视频在线蜜桃视频| 日韩欧美一二区| 亚洲靠逼com| 国产精品一区二区久久不卡 | 不卡高清视频专区| 日韩视频一区二区| 一区二区三区免费观看| 国产精品99久久不卡二区| 欧美三级日韩三级国产三级| 久久久久成人黄色影片| 亚洲超碰精品一区二区| av亚洲精华国产精华精华| 日韩美女一区二区三区四区| 亚洲丝袜美腿综合| 国产精品99久久久久久久vr| 正在播放一区二区| 综合欧美一区二区三区| 国产精品996| 欧美一级片在线看| 一区二区三国产精华液| 成人免费高清在线| 精品少妇一区二区三区在线视频| 亚洲国产色一区| voyeur盗摄精品| 久久精品免费在线观看| 久久99久久久久久久久久久| 在线观看日产精品| 亚洲欧美色一区| 99久久婷婷国产| 欧美国产精品专区| 国产精品香蕉一区二区三区| 日韩一区二区三区观看| 日本最新不卡在线| 这里只有精品视频在线观看| 性做久久久久久久免费看| 色综合天天做天天爱| 亚洲欧洲av色图| 成人av免费在线观看| 久久精品视频免费| 国产91精品欧美| 国产精品婷婷午夜在线观看| 国产成人亚洲综合色影视| 国产欧美一区二区三区网站| 国产成人综合亚洲91猫咪| 国产亚洲午夜高清国产拍精品| 国产在线精品一区二区三区不卡| 精品久久久久一区二区国产| 九一久久久久久| 亚洲国产精品成人综合色在线婷婷|