MFC 編寫的仿 Windows 計算器

2022-09-01 15:42:12 字數 2092 閱讀 6482

首先你應該了解物件導向的基於訊息驅動的windows訊息程式設計,當然,對於編寫這個計算器,你不必知道太多的windows程式設計,你重要會編寫基於對話方塊的簡單應用程式就可以了。

首先,讓我們來仔細了解一下mircosoft的計算器吧,我們發現它是乙個基於對話方塊的含有兩的主對話方塊、乙個關於對話方塊、乙個選單的應用程式。也就是說,我們應該建立乙個基於對話方塊的應用程式,並且為其新增乙個選單和乙個主對話方塊(因為,應用程式已經建立好了乙個主對話方塊和關於對話方塊)

接下來,我們應該設計對話方塊的介面了,這個是很簡單的事情,你只要將其和mircosoft的計算器比較就行了。當然,你也可以新增其他控制項。

第乙個主對話方塊也就是預設的主程式介面,是用於執行簡單計算(+、-、*、/、開根、倒數、平方等)

第二個就是執行科學計算的程式了。使用者可以用vc中的控制項排版工具和tab設計出乙個漂亮的介面(通常,程式的介面在很大程度上會影響程式的普及度和使用者的情緒的)。好了,上面的工作完成後,我們進入正題吧。

我們首先要為所有控制項指定乙個id號(一定要見id知其意),比如0控制項我們用id_0表示。其他控制項依次類推。設計好id後我們就應該為其新增變數,這裡我們為所有的除了編輯控制項外的控制項指定cstring型變數,編輯控制項為cedit。然後我新增一些必要的成員變數(我們以簡單計數器為例介紹)

public:

char m_sign; //記錄運算子+、-、*、/等

int m; //控制編輯框中的字元

int n; //用於判斷連續進行了幾次運算

cstring stritem; //用於記錄當前編輯框中的資料

cstring m_string; //用於記錄前n-1次的運算結果

現在,我們編寫建構函式:

m=n=0;

m_string="";

stritem="";

我們然後為數字鍵編寫程式:(以0為例)

if(!m) 	//用於得到連續的輸入

m_edit.getwindowtext(stritem); //將當前字元儲存在stritem中

cstring str="0";輸入數字

stritem+=str;//連續輸入字元

m_edit.setwindowtext(stritem); //顯示連續的輸入

其他字元同樣處理這些字元控制項實際上就是數字發生器,只不過一字元形式儲存。 下面,我們應該處理這些資料了我們以加法為例:

//n用來判斷是不是第一次按+號按扭

if(!n)

}else

m_string.format("%.6f",num1);

}//以上是進行判別與運算,這裡用了cstring物件轉換成資料的函式

m_sign=''+'';

stritem="";

n++;

if(m>0)m--;//是執行完加法後,編輯框輸入新資料

m_edit.setwindowtext(m_string);//顯示上一次按運算件的結果

像其他的-、*、/可以同樣的處理。最後,顯示最終結果:(即等號運算)

if(!n)

else

m_string.format("答案: %.6f",num1);

}m_edit.setwindowtext(m_string);

m_string="";

stritem="";

n=0;

m=0;

m_sign='' '';//等號運算完所有資料回歸成預設

當然你可以加一些輔助功能:下面我們舉兩個例子:乙個是退格功能;乙個是清除功能。退格功能:

m_edit.getwindowtext(stritem);

if(!stritem.getlength())::afxmessagebox("the contents is empty!");

else

stritem="";

m_string="";

n=0;m=0;

m_sign='' '';

m_edit.setwindowtext(m_string);//即所有回歸預設

好了,其他的功能,使用者可以同樣處理,只不過是換個樣子而已。當然了,讀者可以隨時想到隨時增加進去。希望,讀者能夠有所收穫

delphi編寫仿windows記事本遇到的問題

在用delphi編寫仿windows記事本的時候在寫最後乙個選單的選單項的時候遇到的問題 通常情況下,我們需要編寫程式都需要 幫助文件 和 關於軟體 這兩項,在delphi中是怎麼實現的呢?來看看下面的 吧 uses shellapi procedure tmainform.mmimenuhelpt...

windows服務的編寫

windows服務的應用場合 因為其執行穩定,可以設定為開機自動啟動,可以設定合理的使用者許可權,恢復策略 服務出現異常 適合應用於7x24小時執行的後台程式。服務編碼過程中的一些要點 2.執行緒的關閉不贊成直接丟擲異常的方式,最好用通知方式,讓執行緒體自行結束。3.服務除錯,可以設定臨時用編譯開關...

MFC的Dialog下編寫OPENGL !

環境 vc6 1.新建 windows 的 dialog 體並可以執行!所有的設定全部為預設 2.新建 控制項 改id 為idc gl screen 3.新建類 cglscreen 其父類為 cwnd 4.新建函式 oninit cpaintdc dc this device context for...