Win32窗口程序实例


#include <windows.h>
//Win32窗口程序实例
//声明消息处理函数
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
char szClassName[]="windowsclass";
char szAppTitle[]="WinApi窗口实例";
int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
	
	HWND hMainWnd;//窗口句柄
	MSG msg;//消息
	WNDCLASS winclass;//窗口结构体
	if(!hPrevInstance)
	{
		winclass.style=CS_HREDRAW|CS_VREDRAW;//窗口风格
		winclass.lpfnWndProc=WndProc;//注册消息处理函数
		winclass.cbWndExtra=0;//附加参数
		winclass.cbClsExtra=0;//附加参数
		winclass.hInstance=hInstance;//当前应用程序句柄
		winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载窗口图标
		winclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口光标
		winclass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//设置窗口背景为浅灰色
		winclass.lpszMenuName=NULL;//窗口菜单为空
		winclass.lpszClassName=szClassName;//给窗体结构体命名
		RegisterClass(&winclass);//注册窗口
	}
	hMainWnd=CreateWindow(szClassName,//窗口结构体名称
		szAppTitle,//窗口标题
		WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口
		CW_USEDEFAULT,CW_USEDEFAULT,//x,y坐标
		CW_USEDEFAULT,CW_USEDEFAULT,//窗口的宽度,高度
		NULL,NULL,hInstance,NULL);
	ShowWindow(hMainWnd,SW_SHOWNORMAL);//显示窗口
	UpdateWindow(hMainWnd);//更新窗口,最大化
	//建立消息循环
	while(GetMessage(&msg,NULL,0,0))
	{
		
		TranslateMessage(&msg);
		DispatchMessage(&msg);
		
	}
	return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
	switch(message)
	{
		
	case WM_KEYDOWN://键盘按下
		{
			
			MessageBox(hMainwnd,"键盘按下了","提示",MB_OK);
			break;
		}
	case WM_LBUTTONDOWN://鼠标按下
		{
			
			MessageBox(hMainwnd,"鼠标按下了","提示",MB_OK);
			break;
		}
	case WM_RBUTTONDOWN://鼠标右键按下
		{
			
			MessageBox(hMainwnd,"鼠标右键按下了","提示",MB_OK);
			break;
		}
	case WM_DESTROY://关闭窗口
		{
			
			MessageBox(hMainwnd,"关闭窗口了","提示",MB_OK);
			PostQuitMessage(0);
			//exit(0);
			//ExitProcess(0);
			break;
		}
	default:
		break;
	}
	return DefWindowProc(hMainwnd,message,wParam,lParam);
	
}



// 内容:一个基本的Win32程序框架
#include <windows.h>
//#include <windowsx.h>
//函数声明
BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );
LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam );

//函数:WinMain() 功能:Win32应用程序入口函数。创建主窗口,处理消息循环
int PASCAL 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", //窗口类名称		
		"一个基本的Win32程序", //窗口标题		
		WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型		
		100, //窗口位置的x坐标		
		100, //窗口位置的y坐标		
		400, //窗口的宽度		
		300, //窗口的高度	
		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_PAINT://窗口重画消息			
			{				
				char hello[]="你好,我是EasyWin !";				
				HDC hdc;				
				PAINTSTRUCT ps;			
				hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄			
				SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色			
				TextOut( hdc, 20, 10, hello, strlen(hello) );//输出文字			
				EndPaint( hWnd, &ps ); //释放资源			
				break;			
			}		
		case WM_DESTROY://退出消息			
			PostQuitMessage( 0 );//调用退出函数			
			break;			
	}
	//调用缺省消息处理过程	
	return DefWindowProc(hWnd, message, wParam, lParam);	
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值