999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2012-04-29 00:00:00史娟
科技創(chuàng)新導(dǎo)報 2012年8期

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

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

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

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

一、設(shè)計原理

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

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

1、創(chuàng)建一個新的項目,名稱為Graphic,在“MFC應(yīng)用程序向?qū)А睂υ捒蛑羞x擇“單文檔”,基礎(chǔ)類選擇“Cview”,單擊“完成”,結(jié)束MFC應(yīng)用程序向?qū)В蓡挝臋n(SDI)應(yīng)用程序框架。

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

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

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

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

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

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

void CGraphicView::OnDot()

{ m_nDrawType=1; //選擇菜單“點”時,變量“m_nDrawType”的值賦為“1” }

void CGraphicView::OnLine()

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

void CGraphicView::OnRect()

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

void CGraphicView::OnEllipse()

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

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

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

參考文獻:

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

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

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

主站蜘蛛池模板: 婷婷开心中文字幕| 国产精品lululu在线观看| 免费va国产在线观看| 麻豆精品久久久久久久99蜜桃| 欧美劲爆第一页| 99re热精品视频中文字幕不卡| 无码综合天天久久综合网| 亚洲精品中文字幕无乱码| 无码中文AⅤ在线观看| 欧美日韩国产成人高清视频| 欧美一区二区人人喊爽| 亚洲欧州色色免费AV| 国产精品久久久久久影院| 久久99精品国产麻豆宅宅| 人妻一本久道久久综合久久鬼色| 日韩一二三区视频精品| 日本成人一区| 亚洲一区二区日韩欧美gif| 欧美在线网| 成年看免费观看视频拍拍| 国产网站免费| 成人国产一区二区三区| 免费在线国产一区二区三区精品| 国产又爽又黄无遮挡免费观看| 国产精品黄色片| 伊人久综合| 青青草原国产精品啪啪视频| 亚洲国产成人综合精品2020| 国产免费网址| 国产欧美精品专区一区二区| 无遮挡国产高潮视频免费观看| 久久semm亚洲国产| 91免费国产在线观看尤物| 久久久久久国产精品mv| 波多野结衣亚洲一区| 亚洲人成在线精品| AV网站中文| 国产成人精品高清不卡在线| 国产91丝袜在线播放动漫 | 三上悠亚在线精品二区| 国产极品粉嫩小泬免费看| 一区二区偷拍美女撒尿视频| 婷婷六月综合网| 先锋资源久久| 欧美精品二区| 黄色成年视频| 久久精品91麻豆| av尤物免费在线观看| 欧美www在线观看| 污视频日本| 国产永久在线视频| 日韩黄色在线| av午夜福利一片免费看| 美女一级毛片无遮挡内谢| 日本a∨在线观看| 亚洲免费人成影院| 激情亚洲天堂| 亚洲娇小与黑人巨大交| 免费看a毛片| 99re视频在线| 在线综合亚洲欧美网站| 伊人成人在线| 国产精品护士| 99热免费在线| 97青草最新免费精品视频| 91亚洲精选| 欧美高清国产| 2020亚洲精品无码| 国产特级毛片| 欧美国产视频| 在线观看亚洲精品福利片| 精品色综合| 色噜噜狠狠狠综合曰曰曰| 亚洲欧美日韩天堂| 亚洲国模精品一区| 亚洲中字无码AV电影在线观看| 精品福利视频导航| 黄色三级毛片网站| 青青草国产在线视频| 人妻丝袜无码视频| 国产精品免费久久久久影院无码| 国产午夜小视频|