久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6426|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

從零開始學(xué)VC系列教程 一.信息顯示實驗

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:6404 發(fā)表于 2008-10-31 18:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       題外話:第一次寫教程,不知道該怎么開始.以前見過的教程可能都會介紹比較多的理論然后才開始講實際操作,我想對于VC,理論講得太多大家可能更糊涂,所以選擇了這個方案,我們先一步步照著做,每一次只介紹一兩個知識點,并且把理論放在后面說明,希望大家能喜歡這種方式,并對這種方式提出意見和建議,以便以后章節(jié)更適合大家的學(xué)習(xí).
或許我寫的還不能稱之為教程,只是一些操作步驟及說明,通過這些練習(xí),希望能使大家對VC有一個新的認識.VC的功能是十分強大的,但我們一般并不會用到所有的功能,就像大家熟悉的KeilC一樣,其實Keil功能也是很多的,平時也沒見誰把Keil的功能都用到了.基于此,我寫的這個教程可能在VC專業(yè)人士看來比較簡單.不是要班門弄斧,而是希望推行上位機技術(shù),形成一個氛圍讓大家來學(xué)習(xí)交流,PC機與下位機結(jié)合畢竟也是發(fā)展的一個方向.望高手諒解小輩的不自量力.同時,我們結(jié)合單片機編程,讓大家明白上位機控制方法及原理,當然這是今后章節(jié)的內(nèi)容了.
       本節(jié)內(nèi)容:學(xué)會在文本框中顯示文本,學(xué)會彈出式對話框使用.
       學(xué)習(xí)目的:信息顯示是人機交互的基礎(chǔ),同時,信息顯示也為以后的程序調(diào)試打下基礎(chǔ).
1.       新建工程.打開VC6.0點擊[文件]->[新建],彈出如下對話框.
在工程選項中選擇MFC AppWizard[exe],選擇好工程存入的位置,然后在工程名稱中填入工程的名稱,例如Eg01,填入Eg01后.VC會在我們選擇的路徑后自動加入一個以工程名命名的文件夾作為工程目錄.完成按[確定]就會進入工程向?qū)?出現(xiàn)以下的提示.

在這個我們選擇[基于對話框]就行了.單文檔及多文檔方式會在以后詳細介紹.這里也簡要說明一下.①單文檔.程序一次只能處理一個文檔對象(文件).像寫字板,記事本等.②多文檔.程序一次可以處理多個對象(文件),像word之類的,可以同時打開多個文件.③基本對話框.程序一般用于處理一些比較小的,工珍具型的軟件.像雙龍的ISP下載軟件, Easy 51Pro等都是基于對話框.一些不是很復(fù)雜的工業(yè)軟件也通常可以用基于對話框的形式,這種方式的優(yōu)點是所見即所得,一些控件可以像VB一樣拖到工作區(qū)就行了.選好以后直接按[完成]就可以了.至于[下一步]的向?qū)?這里我們先不管.然后會進入以下的畫面.其中紅色及綠色是我的標注,看不清圖片可以下載圖片放大.
選中靜態(tài)文本框[TODO:在這里設(shè)置對話框控制],單擊指標右鍵,在彈出的快捷菜單中選擇[屬性Properties]菜單項,彈出如下對話框
修改IDC_STATIC為IDC_FIRSTLABEL,標題可以寫為”第一個應(yīng)用程序”然后關(guān)閉這個對話框,就可以看到剛才的靜態(tài)文本框內(nèi)容變?yōu)椤钡谝粋應(yīng)用程序”了.

在剛才的操作中,我們將靜態(tài)文本框的ID改為了IDC_FIRSTLABEL,在VC中,ID是控件的標志,不能有相同的ID出現(xiàn),但允許多個名為IDC_STATIC的ID號.所以,一般并不把近件名命為IDC_STATIC,除非以后我們不想在程序中改變這個控件的屬性.有一些控制,例如GroupBox一般并不在程序中改變什么,所以不改變其ID號.ID是程序訪問控件的標識,所以一個應(yīng)用程序中不能有重復(fù)ID.
按下來我們要添加一個按鈕.
用鼠標將控件條上的按鈕拖到對話框上,可以看到對話框上多了一個按鈕. 用上敘方法,改變按鈕ID為IDC_BTN1,標題改為”顯示”,這樣就做好一個按鈕了.

下面我們?yōu)榘粹o添加代碼.
雙擊按鈕,會出現(xiàn)以下的提示框.
按[OK]為按鈕添加響應(yīng)函數(shù),出面以下畫面
void CEg01Dlg::OnBtn1()
{
       // TODO: Add your control notification handler code here
      
}
這一段就是剛才按鈕的函數(shù)了.當然,現(xiàn)在還沒有響應(yīng).現(xiàn)在我們添加一個事件,讓這個按鈕按下后上面的靜態(tài)文本框的內(nèi)容變?yōu)椤贝谔?COM1 波特率:57600”把上面的代碼改為
void CEg01Dlg::OnBtn1()
{
       // TODO: Add your control notification handler code here
       SetDlgItemText(IDC_FIRSTLABEL,” 串口號:COM1 波特率:57600”);
}
添加完成以后,按F7編譯.如果編譯通過,按F5運行,可以看到程序運行后的對話框
按下按鈕,可以看到上面的靜態(tài)文本框的內(nèi)容改變了.那么恭喜你,完成我們這個例子的第一步操作了.
當然,我這里的對話框看起來沒那么高,大家可以調(diào)一下高度.怎么退回到控件編輯狀態(tài)呢?
首先,我們單擊選項卡中的[ResorceView],現(xiàn)在大家只能看到[Reso…]看到IDD_EG01_DIALG了吧,這個其實也是一個ID,是我們對話框的ID,如果大家改一下對話框的ID,就可以看到這里的ID也變了.在VC中,所有的控件都認為是窗體,只是形式不同.雙擊IDD_EG01_DIALG就可以看到我們剛才的控制編輯狀態(tài)了.雙擊[顯示]按鈕又可以回到代碼狀態(tài).
剛才的例子很簡單,卻是我們以后會用得最多的.下面我們來分析一下代碼
void CEg01Dlg::OnBtn1()
{
       // TODO: Add your control notification handler code here
       SetDlgItemText (IDC_FIRSTLABEL,” 串口號:COM1 波特率:57600”);
}
看看SetDlgItemText這個函數(shù),大家就會明白了, IDC_FIRSTLABEL是我們給靜態(tài)文本框分配的ID,后面的參數(shù)是要顯示的內(nèi)容.上面我們提到過,VC中的控件都認為是窗體,所以,對于所有的文本顯示,我們都可以用這個函數(shù)來做,大家可以試著加入一個編輯框(Edit),同樣可以使用用這個函數(shù),只要ID號對了就可以了.VC對大小寫敏感,大家要注意大小寫.
下面我們用另一個方法來實現(xiàn).
把代碼改為
void CEg01Dlg::OnBtn1()
{
       // TODO: Add your control notification handler code here
       CString a;
a=” 串口號:COM1 波特率:57600”;
SetDlgItemText (IDC_FIRSTLABEL,a);
}
然后按F7編譯,無誤則按F5運行.可以看到運行結(jié)果是一樣的.
大家可以看到,我們把變量a定義為CString類型,這個類型我們在C中可能沒有見過.CString
其實是VC中的一個類.這里我們要引入類的概念了.類跟C語言結(jié)構(gòu)體很像,結(jié)構(gòu)體可以有成員變量,但不能有成員函數(shù),類不但可以有成員變量,還可以有成員函數(shù),并且支持多種方法.在VC中,類以class標識.下面是一個類的定義,我們來分析一下.
class CEg01Dlg : public CDialog
{
public:
       CString GetPath(void);
protected:
       int GetMax(int a,int b);
public:
       int a;
       int b;
};
這個類是我改過的,為了大家看得明白一點.首先,我們從這句class CEg01Dlg : public CDialog知道這個類名是CEg01Dlg,那么public后面的CDialog是什么意思呢?CDialog其實也是一個類,是VC中標準對話框類. public CDialog意思是我們定義的這個類CEg01Dlg從CDialog派生,也叫從CDialog繼承,從繼承這個詞語大家就會明白CEg01Dlg不但可以有自身函數(shù),而且還可以用到CDialog里的變量及函數(shù),所以說是繼承,就像我們說的繼承財產(chǎn)一樣,兒子不但可以有自己的錢,還有從老爸那里繼承的產(chǎn)財,這些錢都能花.所以,我們也叫CDialog為父類(不是爸類啊),把CEg01Dlg稱為子類.當然,這是相對的.如果再定義一個類從CEg01Dlg派生,那么CEg01Dlg也就是父類,派生出來的類就是子類.這段可能有點難明白,大家可以慢慢體會.我們再回到CString上面來,這個類不是派生的,所以也沒有父類了.用CString定義一個變量a,我們稱為類變量,CString有很強大的功能,我們這里只用到一個功能,就是字符串,a可以是一個不定長度的字符串,所以我們可以給a賦一個任意的字符串而不用關(guān)心長度.當然,我們也可以用int StringLen=a.GetLength();來獲得這個字符串的長度.從這句可以看到,GetLength()是類CString里的一個函數(shù).大家可能又會關(guān)心一個問題,怎么把長度顯示出來呢?我們把代碼改為
void CEg01Dlg::OnBtn1()
{
       // TODO: Add your control notification handler code here
       CString a;
       a=" 串口號:COM1 波特率:57600";
       SetDlgItemText (IDC_FIRSTLABEL,a);
       a.Format("字符串的長度:%d",a.GetLength());
       MessageBox(a);
}
運行一下,效果如下
這里我們用到了類Cstring的另一個成員函數(shù)Format();這個函數(shù)用起來跟C語言里的Printf()很像,我就不多說明了.格式化后的字符串還是存放在a中,在這里,我們還用到了一個新的函數(shù)MessageBox();我們只是用了這個函數(shù)最簡單的用法,顯示一個字符串.MessageBox用于彈出一個提示對話框.查查MSDN就知道,函數(shù)原型是
int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
在VC里面,函數(shù)可以有默認值,例如LPCTSTR lpszCaption = NULL, UINT nType = MB_OK變量lpszCaption的默認值是NULL, nType的默認值是MB_OK,這些有默認值的變量我們可以不傳值,所以這個函數(shù)使用時,最簡單的用法就是傳lpszText就可以了.如果我們要顯示一個固定的字串,可以這樣調(diào)用MessageBox(“大家好”);是不是很簡單啊?
這一章就寫到這里了,一些問題大家可以提.未盡知識點,會在以后再詳細介紹.
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区免费 | 中文字幕在线看第二 | 成人一区二区在线 | 亚洲aⅴ | 欧美一级片在线 | 久久国产精品亚洲 | 国产精品欧美一区二区三区不卡 | 五月婷婷中文 | 视频一区二区在线观看 | a级片在线观看 | 中文字幕第三页 | 亚洲综合首页 | 欧美成人一级 | 欧美二区三区 | 日本成人在线播放 | 久久精品日产第一区二区三区 | 欧美日韩在线精品 | 亚洲精品久久久一区二区三区 | 天堂综合 | 久久免费精品视频 | 国产精品1区2区 | av毛片在线播放 | 五月天婷婷狠狠 | 狠狠干天天干 | 色一情一乱一伦一区二区三区 | 欧美成人一级 | 久久久久国产一区二区三区 | 国产高清精品一区二区三区 | 亚洲欧洲成人av每日更新 | 精品国产一区二区三区免费 | 97国产精品| 亚洲日韩中文字幕一区 | 精品国产一区二区三区久久久蜜月 | 日本免费黄色一级片 | 色中文在线 | 欧美一级片免费看 | 99国内精品久久久久久久 | 99精品欧美一区二区蜜桃免费 | 亚洲精品国产综合区久久久久久久 | 91精品国产综合久久婷婷香蕉 | 亚洲一二三区精品 |