现在的位置: 首页 > 综合 > 正文

windows 建立窗口的程序代码

2013年12月02日 ⁄ 综合 ⁄ 共 2459字 ⁄ 字号 评论关闭

#include <windows.h>
#include <windowsx.h>
//函数声明
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );
//*******************************************************************
//函数:WinMain()
//功能:Win32应用程序入口函数。创建主窗口,处理消息循环
//*******************************************************************
int WINAPI WinMain( HINSTANCE hInstance, //当前实例句柄
					HINSTANCE hPrevInstance, //前一个实例句柄
					LPSTR lpCmdLine, //命令行字符
					int nCmdShow) //窗口显示方式
{
	MSG msg;
	//创建主窗口
	if ( !InitWindow( hInstance, nCmdShow ) )
	return FALSE;
	//进入消息循环:
	//从该应用程序的消息队列中检取消息,送到消息处理过程,
	//当检取到WM_QUIT消息时,退出消息循环。
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	//程序结束
	return msg.wParam;
}
//******************************************************************
//函数:InitWindow()
//功能:创建窗口。
//******************************************************************
static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
	HWND hwnd; //窗口句柄
	WNDCLASS wc; //窗口类结构
	//填充窗口类结构
	wc.style = CS_VREDRAW | CS_HREDRAW;
	wc.lpfnWndProc = (WNDPROC)WinProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );
	wc.hCursor = LoadCursor( NULL, IDC_ARROW );
	wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wc.lpszMenuName = NULL;
	wc.lpszClassName = "EasyWin";
	//注册窗口类
	RegisterClass( &wc );
	//创建主窗口
	hwnd = CreateWindow(
	"EasyWin", //窗口类名称
	"hello", //窗口标题
	WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型
	200, //窗口位置的x坐标
	200, //窗口位置的y坐标
	320, //窗口的宽度
	200, //窗口的高度
	NULL, //父窗口句柄
	NULL, //菜单句柄
	hInstance, //应用程序实例句柄
	NULL ); //窗口创建数据指针
	if( !hwnd )
		return FALSE;
	//显示并更新窗口
	ShowWindow( hwnd, nCmdShow );
	UpdateWindow( hwnd );
	return TRUE;
}
///******************************************************************
//函数:WinProc()
//功能:处理主窗口消息
///******************************************************************
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
	switch( message )
	{
		case WM_KEYDOWN://击键消息
			switch( wParam )
			{
				case VK_ESCAPE:
				MessageBox(hWnd,"ESC键按下了!","Keyboard",MB_OK);
				break;
			}
			break;
		case WM_RBUTTONDOWN://鼠标消息
		{
			MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);
			break;
		}
		case WM_LBUTTONDOWN://鼠标消息
		{
			MessageBox(hWnd,"OK!You click the right place!!!","Mouse",MB_OK);
			break;
		}
		case WM_PAINT://窗口重画消息
		{
			char hello[]="hello world!!!It's the first windows!!!";
			HDC hdc;
			PAINTSTRUCT ps;
			hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄
			SetTextColor(hdc, RGB(100,150,100)); //设置文字颜色
			TextOut( hdc, 40, 80, hello, strlen(hello) );//输出文字
			EndPaint( hWnd, &ps ); //释放资源
			break;
		}
		case WM_DESTROY://退出消息
			PostQuitMessage( 0 );//调用退出函数
		break;
	}
	//调用缺省消息处理过程
	return DefWindowProc(hWnd, message, wParam, lParam);
}

抱歉!评论已关闭.