1. 程式人生 > >windows32程式開發第一課輸入輸出(小計算器模板)

windows32程式開發第一課輸入輸出(小計算器模板)

1.輸出

首先注意win32程式的常規開頭,MessageBox()作為輸出(類似於printf和cout,該函式有四個引數,第一個是其父視窗,第二個第三是字串型別,具體如下圖對應:

第四個引數是每一個框下邊的是,否,取消按鈕,和圖示等。

#include<windows.h>
//const char *==LPCSTR
//char*=LPSTR
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR pCmdLine, int nCmdShow)
{
	//window的輸出函式,返回的是點選按鈕的int值
	int p=MessageBox(NULL,"第一個windows程式","溫馨提示",MB_YESNOCANCEL|MB_ICONWARNING);//HWND 控制代碼--父視窗,LPCTSTR:字串(主要文字),LPCTSTR(副標題),
	HWND hd = FindWindow("notepad",NULL);//第一個引數為視窗型別名,第二個為標題名。返回空找不到
	return 0;
}

2.輸出

        這段輸出注意CALLBACK回撥函式,因為輸入資料的方式有很多中,比如鍵盤,滑鼠等。所以回撥函式第一個引數就是該母視窗控制代碼,第二個引數是輸入資料的型別(如用滑鼠點了一下確定),WM_COMMAND是指點選事件,如點確定,取消等按鈕,點x圖示,第三和第四個是訊息資料,wm的低兩個位元組為按鈕ID,來判斷是點選的哪個按鈕。

        還有就是GetDlgItemInt()和SetDlgItemInt()分別是讀入編輯框內容和寫入編輯框內容,第一個引數是父視窗控制代碼,第二個引數是編輯框ID,第三個是是否支援負數,若為FALSE,負數即為0.

#include<windows.h>
#include"resource.h"
//const char *==LPCSTR
//char*=LPSTR
//IDCANCEL和IDOK為預設按鈕,IDCANCEL對應ESC和x圖示,IDOK對應回車
INT_PTR CALLBACK cb(HWND hd,UINT vt,WPARAM wm,LPARAM lm)
{
	switch (vt)//訊息性質
	{
	case WM_COMMAND:
		if (LOWORD(wm) == IDC_YES)
		{
			int nL=GetDlgItemInt(hd,IDC_1,NULL,TRUE);
			int nR = GetDlgItemInt(hd, IDC_2, NULL, TRUE);
			SetDlgItemInt(hd,IDC_3,nL+nR,TRUE);
		}
		if (LOWORD(wm) == IDCANCEL)
		{
			EndDialog(hd, IDC_CANCEL);
		}
		if (LOWORD(wm) == IDC_NO)
		{
			MessageBox(hd,"第一個windows程式","溫馨提示",0);
		}
		if (LOWORD(wm) == IDC_CANCEL)
		{
			EndDialog(hd,IDC_CANCEL);
		}
		break;
	}
	return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrev, LPSTR pCmdLine, int nCmdShow)
{
	//window的輸出函式,返回的是點選按鈕的int值
	DialogBox(hInstance,(LPCSTR)IDD_Main,NULL,cb);
	return 0;
}

效果如下:

可到我的上傳資源下載