今天跟一個學建築的同學聊天時,得知最近他實習時遇到一件煩心事,他們工地上要建一個圓形的很大的建築物,需要用鋼筋將建築物鋪滿,鋼筋之間距離爲15cm,問求所有鋼筋的長度!這應該是一道很簡單的數學題。利用勾股定理:半徑的平方 - 圓心到鋼筋的平方 所得差再開方,讓後結果乘以2就能得到鋼筋的長度! 即:length = 2 * sqrt(r*r-d*d);
第一步:創建一個MFC的對話框
1、打開VS2012
2、選擇-文件-新建-項目
3、選擇-已安裝-模版-Visual C++ - MFC
4、選擇-MFC應用程序
5、輸入名稱、位置、解決方案名稱,點擊確定
6、點擊-下一步,然後選擇-基於對話框,單機完成即創建工程完畢
第二步:第一個VS2012版MFC程序
1、檢查右側工具箱是否出現,若沒有則在-視圖-工具箱-處打開
這樣就可以拖控件了
2、先把默認生成的控件給delete掉,然後需要兩個static Text、一個Edit Control、兩個Button控件,拖成如下佈局,對static Text和Button點擊右鍵-屬性,在Caption項中可以輸入控件內容如下圖所示
3、雙擊兩個Button會自動生成對應的單機事件響應函數,編寫如下代碼:
注意:包含頭文件 #include <math.h>
選中項目單擊右鍵-屬性,選擇-配置屬性-常規-字符集,選擇-使用多字節字符集-因爲下面代碼的需要
/*
* 開始計算
*/
void CCountRebarDlg::OnBnClickedButton1()
{
CString radius ;//鋼筋半徑
GetDlgItem(IDC_EDIT1)->GetWindowTextA(radius);
float radiusLength = _tstof(radius);
float count = radiusLength / 15.00 ;//鋼筋長度種類數量
CString result ;
for(int i = 1; i <= count; i ++)
{
float length = 2 * (float)sqrt((radiusLength*radiusLength-(i*15.00)*(i*15.00)));
CString id;
id.Format("%d",i);
id += "=>";
CString str;
str.Format("%.2f",length);
str += "cm\n";
result += (id + str);
}
char* pFileName = "D:\\鋼筋長度.txt";
CStdioFile f1;
f1.Open( pFileName, CFile::modeCreate
| CFile::modeWrite | CFile::typeText );
f1.WriteString(result);
f1.Close();
MessageBox("數據已存入D:\\鋼筋長度.txt", "提示",
MB_ICONINFORMATION | MB_OK);
}
/*
* 退出程序
*/
void CCountRebarDlg::OnBnClickedButton2()
{
exit(0);
}
4、執行程序(F5)
輸入圓的半徑,點擊-開始計算-便能算出所有鋼筋的長度了,數據存在D:\鋼筋長度.txt
用記事本打開,如下:
第三步:MFC程序發佈(release)
1、在菜單欄中選擇-release-
2、在-項目-屬性--配置屬性-常規-字符集,選擇-使用多字節字符集-,MFC使用選擇-在靜態庫中使用 MFC-,點擊確定,重新按F5運行程序,最終在工作目錄D:\test\CountRebar\Release文件夾下發現可執行程序CountRebar.exe,另外一個叫做CountRebar.pdb的是MFC的輔助文件,可以不要。
於是將此可執行文件Countrebar.exe發給我的同學便可省事不少。
本人只是MFC入門選手,如有不對之處,請各位多多海涵!