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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6528|回復: 0
收起左側

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

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

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

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

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

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品自拍视频 | 国产激情自拍视频 | 久久精品视频12 | 国产一区二区三区视频在线观看 | 九九热精品视频 | 天堂va在线 | 欧美日韩国产不卡 | 国产成人免费在线 | 国产中文字幕在线观看 | 综合色在线 | 国产美女视频黄 | 不卡欧美| 爱爱视频日本 | 看黄在线| 青青草综合 | 成人在线免费视频 | 国产精品久久久久aaaa九色 | 不用播放器看的av | 欧美精品一区三区 | 日本中出视频 | 人人亚洲| 精品一区二区三区四区在线 | 91久久久久久久久久久 | 久久久精品天堂 | 国产乱一区二区三区视频 | 91一区 | 久久国产精品一区二区三区 | 日韩精品亚洲专区在线观看 | 国产一区电影 | 欧美日韩一区二区在线 | 黑人久久 | 夜夜爽99久久国产综合精品女不卡 | eeuss国产一区二区三区四区 | 天天射影院 | 国产成人精品免高潮在线观看 | 久久久国产精品一区 | 91丨九色丨国产在线 | 成人免费网视频 | 欧美视频1区 | 一区二区精品 | 国产伊人精品 |