MFC对话框控件成员变量编程熟悉 - 开发一个简单天线长度计算器
新建一個對話框工程;VC6;VC2010類似;版本不同略有些差別;
新建完如下;對話框默認有三個控件,自己添加的;
右擊 確定 按鈕,建立類向導;進入類向導;
Class name下拉選中對話框類;類別選錯;確定按鈕的ID是IDOK,Messages選中BN_CLICKED;看一下,VC框架沒有為此按鈕添加的默認單擊處理函數;
切換到 成員變量 tab,看一下沒有為按鈕添加的默認成員變量;沒有一些框架默認添加的東西,那么直接從界面把默認的三個控件刪掉;
編輯界面如下;
下面需要為三個編輯框添加成員變量;來獲取和設置編輯框的值;
進入類向導;可以右擊對話框控件;也可以從下圖菜單;
? ? 為什么需要添加成員變量;要了解這個概念;
C#和Java這些來說,窗體上有一個文本框text1,在窗體代碼里面直接寫 xxx=text1.Text,text1.Text="xxx",就可以獲取和設置文本框的值;這是它把底層都封裝掉讓你直接用的;
VC++的特點是底層的東西封裝了一部分,但是不封裝完,底層的東西也暴露一部分給你;為了獲取和設置窗體上文本框的值,還需要自己額外寫幾句代碼,才能實現;
MFC的所有類都是這樣的;這樣的話雖然開發界面麻煩;但是若一個底層類,并沒有完全封裝掉,暴露了一部分內容給你,就可以借此實現更強的功能;
下面來操作成員變量;下圖是三個編輯框的ID,Class name下拉別選錯,選中主對話框類;成員變量將添加到主對話框類中;
單擊 Add Variable;彈出的對話框輸入變量名;m_,是mfc默認風格; 類別選中 Value;變量類型下拉選中UINT;
添加三個成員變量如下;
第一個文本框輸入光速,第二個文本框輸入頻率Hz;來計算天線最佳長度,按一些資料, 天線最佳長度 = 光速米 / 頻率Hz / 4;
然后為按鈕添加單擊處理函數;按鈕的ID是IDC_BUTTON1;類名下拉選中主對話框類;Messages選中BN_CLICKED;單擊Add Function;彈出對話框輸入成員函數名;
點 Edit Code 按鈕;如下圖;自己為對話框類添加一個成員函數OnDOIT();自己的處理代碼添加到 //TODO之后;
看下對話框類頭文件;在類向導添加成員變量和成員函數后,相應的定義自己添加到頭文件;
再看對話框類實現文件;添加了成員變量后;在對話框類構造函數自己添加成員變量初始化代碼;并自己添加了對話框數據交換函數DDX_TEXT();這是用來把控件的值換到成員變量和把成員變量的值換到控件的;
按鈕處理函數里面添加代碼;如下;
void CJsjDlg::OnDOIT()?
{
?? ?// TODO: Add your control notification handler code here
?? ?UpdateData(TRUE);
?? ?m_antLen = m_gs / ?m_hz / 4;
? ? UpdateData(FALSE);
}
? ? 第一個文本框輸入光速的值;這是固定的;我們在成員變量初始化時設置值為m_gs = 300000000;
? ? 代碼的含義是;先在編輯框1,編輯框2,輸入值;然后執行UpdateData(TRUE),這會把控件輸入的值交換到成員變量m_xxx上;
? ? 然后計算,m_antLen = m_gs / ?m_hz / 4,得出最佳天線長度;
? ? 再執行UpdateData(FALSE),這會把代碼里面寫的m_xxx的值交換到對話框界面上的控件里;這樣就把計算結果?m_antLen 顯示到第三個編輯框;
運行一下程序;顯示結果了;頻率為435000時,你需要一個長度為172米的天線;
有些問題;天線長度需要小數;刪除并重新添加成員變量;變量類別選為double;
初始化;m_gs = 300000000.0;
再執行代碼;結果如下圖;?
下面來看一下手機的天線長度;手機的頻率大體是2.4G;第一個文本框是光速;第二個文本框輸入2400000000;DO IT;結果是 0.03125米;也就是3厘米左右;這么小的天線是可以裝在手機里,外表看不到了;
?
總結
以上是生活随笔為你收集整理的MFC对话框控件成员变量编程熟悉 - 开发一个简单天线长度计算器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 超图js版 iclient 基本开发 -
- 下一篇: sqlite命令行查看数据显示列头、ja