WinMain

#include <windows.h>
#pragma comment(lib,"WINMM.LIB") //是一条编译器指令,是给告诉编译器你要链接一些东西,然后在后面的comment里面指明是什么东西

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR szCmdLine,int iCmdShow){
	static TCHAR szAppName[]=TEXT("HelloWin");
	HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;

	wndclass.style=CS_HREDRAW|CS_VREDRAW;//CS 窗口类别样式 
	wndclass.lpfnWndProc=WndProc;
	wndclass.cbClsExtra=0;
	wndclass.cbWndExtra=0;
	wndclass.hInstance=hInstance;
	wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载图标供程序使用 IDI 图示ID 
	wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//加载鼠标光标供程序使用 IDC 游标ID  
	wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//取得一个图形对象(在这个例子中,是取得绘制窗口背景的画刷对象)
	wndclass.lpszMenuName=NULL;
	wndclass.lpszClassName=szAppName;

	if(!RegisterClass(&wndclass)){// 为程序窗口注册窗口类别
		MessageBox(NULL,TEXT("This program requires Windows NT Upper!"),szAppName,MB_ICONERROR);// 显示消息框 MB 消息框 
		return 0;
	}

	//根据窗口类别建立一个窗口
	hwnd=CreateWindow(szAppName,
					TEXT("HelloWin"),
					WS_OVERLAPPEDWINDOW,//WS 窗口样式
					CW_USEDEFAULT,//CW 建立窗口
					CW_USEDEFAULT,
					CW_USEDEFAULT,
					CW_USEDEFAULT,
					NULL,
					NULL,
					hInstance,
					NULL);
		
	ShowWindow(hwnd,iCmdShow);//在屏幕上显示窗口
	UpdateWindow(hwnd);//指示窗口自我更新
	
	while(GetMessage(&msg,NULL,NULL,0)){//从消息队列中取得消息
		TranslateMessage(&msg);//转译某些键盘消息
		DispatchMessage(&msg);//将消息发送给窗口消息处理程序
	}
	return msg.lParam;
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
	HDC hdc;
	PAINTSTRUCT ps;
	RECT rect;
	 
	switch(message){ //WM 窗口消息  
		case WM_CREATE:
			PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME|SND_ASYNC);//播放一个声音文件  SND 声音  
			return 0;
		case WM_PAINT:
			hdc=BeginPaint(hwnd,&ps);//开始绘制窗口
			GetClientRect(hwnd,&rect);//取得窗口显示区域的大小
			DrawText(hdc,TEXT("Hello Window!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);//显示字符串 DT 绘制文字 
			EndPaint(hwnd,&ps);//结束绘制窗口
			return 0;
		case WM_DESTROY:
			PostQuitMessage(0);//在消息队列中插入一个「退出程序」消息
			return 0;
		default:
			return DefWindowProc(hwnd,message,wParam,lParam);//执行内定的消息处理
	}	
}

 

你可能感兴趣的:(main)