亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC++ .NET的畫圖程序

        2012-04-29 00:00:00史娟

        摘要:本文通過(guò)VC++ .NET下的消息映射和消息處理,以及菜單和對(duì)話框的使用,設(shè)計(jì)實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的畫圖程序。

        關(guān)鍵詞:消息映射 消息處理函數(shù) 菜單 對(duì)話框

        中圖分類號(hào):TP311.52文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2012)03(b)-0000-00

        Microsoft公司推出的Visual Studio.NET集成了C#,VB.NET,VC++.NET等開(kāi)發(fā)工具界面,更好地為.NET應(yīng)用程序提供了開(kāi)發(fā)平臺(tái)。這里使用VC++.NET語(yǔ)言,設(shè)計(jì)出一個(gè)鼠標(biāo)交互式的繪圖程序,通過(guò)鼠標(biāo)事件消息的調(diào)用實(shí)現(xiàn)交互式繪圖,從而進(jìn)一步理解VisualC++.NET的編程基本方法和應(yīng)用。

        一、設(shè)計(jì)原理

        要實(shí)現(xiàn)鼠標(biāo)交互式繪圖,必須通過(guò)調(diào)用鼠標(biāo)事件消息WM_LBUTTONDOWN,WM_LBUTTONUP,以及成員函數(shù)Moveto( )和Lineto( )和相應(yīng)參數(shù)來(lái)實(shí)現(xiàn)隨機(jī)繪圖。本繪圖法可以實(shí)現(xiàn):當(dāng)鼠標(biāo)移動(dòng)時(shí),系統(tǒng)能相應(yīng)的確定鼠標(biāo)的坐標(biāo),然后根據(jù)鼠標(biāo)坐標(biāo)前后不同的變化而動(dòng)態(tài)地顯示出一個(gè)臨時(shí)的圖形,如圓、橢圓、矩形、直線等。在繪圖程序設(shè)計(jì)過(guò)程中要始終注意前景色和背景色的設(shè)置,因?yàn)橛?jì)算機(jī)雖然執(zhí)行了指令,但是如果前景色與背景色一致,就無(wú)法看到繪制的圖形,為了方便的選用前景色與背景色,可構(gòu)造一個(gè)CColorDialog類的對(duì)象,通過(guò)對(duì)象數(shù)據(jù)成員的初始化,調(diào)用Domodal()函數(shù),顯示顏色對(duì)話框,然后應(yīng)用程序通過(guò)相關(guān)的成員函數(shù)獲得相應(yīng)的信息來(lái)取得所使用的顏色值。

        二、創(chuàng)建繪圖程序的具體過(guò)程

        1、創(chuàng)建一個(gè)新的項(xiàng)目,名稱為Graphic,在“MFC應(yīng)用程序向?qū)А睂?duì)話框中選擇“單文檔”,基礎(chǔ)類選擇“Cview”,單擊“完成”,結(jié)束MFC應(yīng)用程序向?qū)?,生成單文檔(SDI)應(yīng)用程序框架。

        2、添加菜單。在視圖→資源視圖中選擇“Menu”,添加菜單項(xiàng):點(diǎn)、直線、矩形、橢圓、顏色、設(shè)置,并為每個(gè)菜單項(xiàng)設(shè)置ID標(biāo)識(shí),依次為IDM_DOT、IDM_LINE、IDM_RECT、IDM_ELLIPSE、IDM_COLOR、IDM_SETTING。

        3、添加消息和消息處理函數(shù)。單擊CGraphicView類屬性窗口的“Messages”工具圖標(biāo),在屬性窗口添加消息WM_LBUTTONDOWN和WM_LBUTTONUP,然后在GraphicView.cpp中給菜單項(xiàng)和WM_LBUTTONDOWN和WM_LBUTTONUP消息響應(yīng)函數(shù)分別添加代碼。

        4、對(duì)話框的設(shè)置。在資源視圖中添加一個(gè)對(duì)話框資源“IDD_DLG_SETTING”加入所需的控件,并為控件關(guān)聯(lián)變量,最后為整個(gè)對(duì)話框添加一個(gè)類“SettingDlg”其基類為“Cdialog”。注意在GraphicView.cpp文件中一定要有語(yǔ)句 #include\"SettingDlg.h\"否則對(duì)話框類將無(wú)法識(shí)別。

        5、程序的實(shí)現(xiàn)代碼如下:

        5.1在GraphicView.cpp文件中添加的代碼:

        在資源視圖中只添加了菜單資源,并沒(méi)有實(shí)現(xiàn)菜單的功能,即沒(méi)有對(duì)應(yīng)的命令處理函數(shù)與菜單項(xiàng)對(duì)應(yīng),程序運(yùn)行后添加的菜單項(xiàng)是灰色的,即處于不可用狀態(tài)。因此,添加菜單項(xiàng)后,還應(yīng)該為新的菜單項(xiàng)指定一個(gè)處理函數(shù)。利用ClassWizard類向?qū)砑硬藛蚊畹腤M_COMMAND消息處理函數(shù)后,向?qū)⒆詣?dòng)添加一個(gè)如下格式的消息映射:ON_COMMAND(MenuItemID,MemberFuntion)其中參數(shù)MenuItemID是菜單項(xiàng)的ID標(biāo)識(shí)(添加菜單項(xiàng)時(shí)設(shè)置的標(biāo)識(shí)),參數(shù)MemberFuntion是處理該消息的成員函數(shù)名。本例中的菜單處理函數(shù)代碼如下:

        void CGraphicView::OnDot()

        { m_nDrawType=1; //選擇菜單“點(diǎn)”時(shí),變量“m_nDrawType”的值賦為“1” }

        void CGraphicView::OnLine()

        { m_nDrawType=2; //選擇菜單“直線”時(shí),變量“m_nDrawType”的值賦為“2”}

        void CGraphicView::OnRect()

        { m_nDrawType=3; //選擇菜單“矩形”時(shí),變量“m_nDrawType”的值賦為“3”}

        void CGraphicView::OnEllipse()

        { m_nDrawType=4; //選擇菜單“橢圓”時(shí),變量“m_nDrawType”的值賦為“4”}

        5.2在SettingDlg.cpp中添加“設(shè)置”對(duì)話框中的“示例”部分的代碼:

        單擊SettingDlg類屬性對(duì)話框窗口的“Messages”工具圖標(biāo),在屬性窗口添加消息WM_PAINT,該消息的消息響應(yīng)函數(shù)代碼如下:

        void SettingDlg::OnPaint()

        {CPaintDC dc(this);

        UpdateData();

        CPen pen(m_nLineStyle,m_nLineWidth,m_clr);

        dc.SelectObject (pen);

        CRect rect;

        GetDlgItem(IDC_SAMPLE)->GetWindowRect (rect);

        ScreenToClient(rect);

        dc.MoveTo (rect.left +20,rect.top +rect.Height ()/2);

        dc.LineTo (rect.right -20,rect.top +rect.Height ()/2); }

        這樣就可以在“示例”中看到設(shè)置的線型、線寬和顏色了。

        三、結(jié)尾

        VC++.NET這一可視化開(kāi)發(fā)環(huán)境具有強(qiáng)大的功能,這個(gè)程序的編寫運(yùn)用了VC++.NET中的基礎(chǔ)知識(shí),如:屬性的設(shè)置、對(duì)話框的設(shè)置、消息和消息處理函數(shù)的調(diào)用,并采用了微軟MFC類庫(kù)中一些基礎(chǔ)類的構(gòu)造和使用方法,較完整、系統(tǒng)地運(yùn)用了面向?qū)ο蟮木幊碳夹g(shù),實(shí)現(xiàn)了較好的繪圖功能。 本文中所有的方法和語(yǔ)句都是在VC++.NET 2003及Windows XP系統(tǒng)上調(diào)試通過(guò)的。

        參考文獻(xiàn):

        [1](美)DavisChapman 學(xué)用VisualC++6.0[M] 北京:清華大學(xué)出版社,1999。

        [2]李蘭友 VisualC++.NET圖形圖像編程 北京:電子工業(yè)出版社,2002。

        [3]馬云、葉喜濤、張毅峰等譯 Visual C++.NET寶典[M] 北京:電子工業(yè)出版社,2003。

        少妇三级欧美久久| 人妻夜夜爽天天爽三区丁香花| 放荡的少妇2欧美版| 青草久久婷婷亚洲精品| 国产成人精品2021| 亚洲av区无码字幕中文色| 国产剧情无码中文字幕在线观看不卡视频| 一区二区三区不卡免费av| 午夜免费观看一区二区三区| 无码熟妇人妻av在线影片最多 | 欧美成aⅴ人高清免费| 日本成人字幕在线不卡| 中文字幕乱码在线婷婷| 日韩经典午夜福利发布| 欧洲一卡2卡三卡4卡免费网站| 亚洲电影中文字幕| 亚洲粉嫩av一区二区黑人| 人妖国产视频一区二区| 97日日碰人人模人人澡| 亚洲欧美国产日韩天堂在线视| 一区二区三区国产精品| 国产精品网站91九色| 国产精品无码一区二区在线看| 韩国v欧美v亚洲v日本v| 久久久久久无码AV成人影院| 久久麻传媒亚洲av国产| 亚洲精品久久久久成人2007| 成人国产午夜在线视频| 极品视频一区二区三区在线观看| 亚洲美女av一区二区在线| 久久综合精品国产二区无码 | 久久精品国产亚洲婷婷| 水蜜桃在线观看一区二区国产| 精品福利一区二区三区免费视频 | 日韩精品成人一区二区三区久久久| 久久国内精品自在自线| 无码人妻精品丰满熟妇区| 人妻少妇一区二区三区| 日日高潮夜夜爽高清视频| 品色堂永远免费| 成人区视频|