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。

主站蜘蛛池模板: 亚洲永久免费网站| 国产主播喷水| 高潮毛片无遮挡高清视频播放| 波多野结衣无码AV在线| 国产成人高清亚洲一区久久| 国产xxxxx免费视频| 91视频精品| 亚洲精品va| 国产噜噜噜| 国产超薄肉色丝袜网站| 婷婷伊人五月| 一级毛片在线播放| 香蕉久久国产超碰青草| 亚洲精品国产日韩无码AV永久免费网 | 国产精品免费露脸视频| 国模沟沟一区二区三区| 亚洲中文字幕国产av| 国产区在线观看视频| 波多野结衣第一页| 免费高清毛片| 九九这里只有精品视频| 日日摸夜夜爽无码| 欧洲日本亚洲中文字幕| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 男女精品视频| 日韩在线2020专区| 精品亚洲国产成人AV| 老色鬼欧美精品| 重口调教一区二区视频| 伊人无码视屏| 一本综合久久| 找国产毛片看| 国产主播喷水| 激情乱人伦| 四虎永久在线精品国产免费| 亚洲免费毛片| 国产成人精品男人的天堂| 亚洲无码A视频在线| 久久久久久久蜜桃| 欧美成人综合在线| 久久成人免费| 在线观看亚洲人成网站| 亚洲欧洲美色一区二区三区| 中文字幕首页系列人妻| 国产精品视频白浆免费视频| 在线精品亚洲一区二区古装| 国产97视频在线观看| 亚洲国产一区在线观看| 2021国产精品自产拍在线| 99在线视频精品| 园内精品自拍视频在线播放| 亚欧乱色视频网站大全| 热久久综合这里只有精品电影| 国产免费怡红院视频| 亚洲成av人无码综合在线观看| 她的性爱视频| 波多野结衣AV无码久久一区| 国产乱人视频免费观看| 亚洲天堂日韩在线| 亚洲av无码成人专区| 中文国产成人精品久久一| 亚洲视频一区在线| 欧美不卡在线视频| 国产农村精品一级毛片视频| 麻豆精品视频在线原创| 成人在线综合| 欧美va亚洲va香蕉在线| 国内丰满少妇猛烈精品播| 亚洲a级毛片| 五月天综合网亚洲综合天堂网| 精品少妇人妻无码久久| AV在线麻免费观看网站| AV片亚洲国产男人的天堂| 日韩国产亚洲一区二区在线观看| 亚洲永久精品ww47国产| 国产偷倩视频| 成人午夜视频网站| 五月婷婷综合网| 无码一区二区三区视频在线播放| 久久久久亚洲av成人网人人软件| 色偷偷男人的天堂亚洲av| 福利一区三区|