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。

主站蜘蛛池模板: 九九热视频在线免费观看| 中文成人在线视频| 国产SUV精品一区二区| 亚洲福利一区二区三区| 国产丰满大乳无码免费播放| 亚洲天堂区| 国产成人亚洲无码淙合青草| www.国产福利| 国产在线98福利播放视频免费| 狼友av永久网站免费观看| 人妻熟妇日韩AV在线播放| 成人午夜在线播放| 欧美在线视频不卡| 国产成人麻豆精品| 97久久精品人人| 日本高清免费不卡视频| 永久成人无码激情视频免费| 日韩精品一区二区三区大桥未久 | 波多野结衣在线一区二区| 色婷婷丁香| 第九色区aⅴ天堂久久香| 美女视频黄频a免费高清不卡| 精品黑人一区二区三区| 天堂在线视频精品| 日韩毛片免费| 亚洲天堂啪啪| 为你提供最新久久精品久久综合| 国产无遮挡裸体免费视频| 干中文字幕| 国产又黄又硬又粗| 国产一区二区三区免费| 亚洲aaa视频| 伊人色天堂| 欧美午夜理伦三级在线观看| 亚洲69视频| 青青久久91| 亚洲福利视频一区二区| 71pao成人国产永久免费视频| 日韩欧美中文字幕在线韩免费| 免费看美女自慰的网站| 精品人妻无码中字系列| 国产熟女一级毛片| 婷婷午夜天| 在线a网站| 99在线观看免费视频| 色婷婷电影网| 青青青视频蜜桃一区二区| 国产成人狂喷潮在线观看2345| 久久频这里精品99香蕉久网址| 激情乱人伦| 色综合色国产热无码一| 国产精品自在自线免费观看| www.国产福利| 少妇精品网站| 成人在线观看一区| 国产自在线播放| 天天综合色天天综合网| 亚洲第一黄片大全| 亚洲午夜久久久精品电影院| 国产精品久久久久久久久| 亚洲欧美综合另类图片小说区| 激情在线网| 成人伊人色一区二区三区| 国产玖玖玖精品视频| 欲色天天综合网| 五月激情婷婷综合| 综合色亚洲| 中国国产A一级毛片| 毛片免费在线视频| 亚洲国产中文欧美在线人成大黄瓜| 亚洲综合二区| 伊人久热这里只有精品视频99| 麻豆国产在线不卡一区二区| 欧美国产日韩一区二区三区精品影视| 午夜国产小视频| 亚洲美女AV免费一区| 浮力影院国产第一页| 国产极品美女在线观看| 青青青视频免费一区二区| 国产精品网曝门免费视频| 国产日韩丝袜一二三区| 国产精品久久久精品三级|