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

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

2012-04-29 00:00:00史娟
科技創新導報 2012年8期

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

關鍵詞:消息映射 消息處理函數 菜單 對話框

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

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

一、設計原理

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

二、創建繪圖程序的具體過程

1、創建一個新的項目,名稱為Graphic,在“MFC應用程序向導”對話框中選擇“單文檔”,基礎類選擇“Cview”,單擊“完成”,結束MFC應用程序向導,生成單文檔(SDI)應用程序框架。

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

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

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

5、程序的實現代碼如下:

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

在資源視圖中只添加了菜單資源,并沒有實現菜單的功能,即沒有對應的命令處理函數與菜單項對應,程序運行后添加的菜單項是灰色的,即處于不可用狀態。因此,添加菜單項后,還應該為新的菜單項指定一個處理函數。利用ClassWizard類向導添加菜單命令的WM_COMMAND消息處理函數后,向導將自動添加一個如下格式的消息映射:ON_COMMAND(MenuItemID,MemberFuntion)其中參數MenuItemID是菜單項的ID標識(添加菜單項時設置的標識),參數MemberFuntion是處理該消息的成員函數名。本例中的菜單處理函數代碼如下:

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中添加“設置”對話框中的“示例”部分的代碼:

單擊SettingDlg類屬性對話框窗口的“Messages”工具圖標,在屬性窗口添加消息WM_PAINT,該消息的消息響應函數代碼如下:

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); }

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

三、結尾

VC++.NET這一可視化開發環境具有強大的功能,這個程序的編寫運用了VC++.NET中的基礎知識,如:屬性的設置、對話框的設置、消息和消息處理函數的調用,并采用了微軟MFC類庫中一些基礎類的構造和使用方法,較完整、系統地運用了面向對象的編程技術,實現了較好的繪圖功能。 本文中所有的方法和語句都是在VC++.NET 2003及Windows XP系統上調試通過的。

參考文獻:

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

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

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

主站蜘蛛池模板: 思思99热精品在线| 美女黄网十八禁免费看| 激情亚洲天堂| 久996视频精品免费观看| www.狠狠| 日本午夜影院| 国产精品久久国产精麻豆99网站| 蜜桃臀无码内射一区二区三区 | 欧美中文字幕在线二区| 亚洲一区二区约美女探花| 中文字幕日韩欧美| 亚洲,国产,日韩,综合一区 | 国产情侣一区二区三区| 日本不卡视频在线| 国产精品亚洲αv天堂无码| 国产女人在线视频| 亚洲精品成人福利在线电影| 九九热在线视频| www.99在线观看| 91热爆在线| 蜜臀AVWWW国产天堂| 在线观看精品自拍视频| а∨天堂一区中文字幕| 亚洲V日韩V无码一区二区| 园内精品自拍视频在线播放| 精品国产美女福到在线不卡f| 国产精品浪潮Av| 米奇精品一区二区三区| аv天堂最新中文在线| 97se亚洲| 东京热一区二区三区无码视频| 亚洲一欧洲中文字幕在线| 国产亚洲精品yxsp| 欧美国产日产一区二区| 亚洲日韩在线满18点击进入| 欧美在线黄| 免费视频在线2021入口| 国产不卡一级毛片视频| 久久久久青草线综合超碰| 欧美性精品不卡在线观看| 中文字幕无码电影| 国产美女视频黄a视频全免费网站| 日韩国产 在线| 国产午夜看片| 天天视频在线91频| 91黄视频在线观看| 色婷婷电影网| 欧美 亚洲 日韩 国产| 国产欧美精品一区二区| 中文字幕久久波多野结衣| 欧美专区日韩专区| 亚洲福利一区二区三区| 伊人色在线视频| 永久免费av网站可以直接看的| 男人的天堂久久精品激情| 色综合a怡红院怡红院首页| 中文字幕在线免费看| 中文字幕伦视频| 丰满人妻一区二区三区视频| 五月天在线网站| 亚洲人成影视在线观看| 中字无码av在线电影| 久久综合丝袜长腿丝袜| 国产精品护士| 人人91人人澡人人妻人人爽 | 亚洲综合中文字幕国产精品欧美| 免费看美女自慰的网站| 亚洲第一区在线| 久久免费视频6| 国产福利影院在线观看| AV熟女乱| 亚洲AV无码不卡无码| 久久国产毛片| 一区二区三区高清视频国产女人| 日韩精品成人网页视频在线| 国产成人精品男人的天堂| 欧美啪啪网| 一区二区三区毛片无码| 国产高潮视频在线观看| 国产97视频在线观看| 成·人免费午夜无码视频在线观看| 日韩最新中文字幕|