windows可视化编程(一)

最近在看mooc上的 VC++可视化编程,边看边做点记录吧

首先是一个空壳的程序架构

#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); 	//窗口函数说明
//------------ 以下初始化窗口类----------------
int WINAPI WinMain(HINSTANCE	hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int	nCmdShow)
{
		HWND hwnd ;
		MSG Msg ;
		WNDCLASS wndclass ;
		char lpszClassName[] = "窗口";			//窗口类名
		char lpszTitle[]= "My_Windows";			//窗口标题名

        //窗口类的定义
		wndclass.style = 0;						//窗口类型为缺省类型
		wndclass.lpfnWndProc = WndProc ;		//窗口处理函数为WndProc
		wndclass.cbClsExtra	= 0 ;				//窗口类无扩展
		wndclass.cbWndExtra	= 0 ;				//窗口实例无扩展
		wndclass.hInstance = hInstance ;		//当前实例句柄
		wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;
												//窗口的最小化图标为缺省图标
		wndclass.hCursor = LoadCursor( NULL,IDC_ARROW); //窗口采用箭头光标
		wndclass.hbrBackground =(HBRUSH) GetStockObject(WHITE_BRUSH); //窗口背景为白色
		wndclass.lpszMenuName = NULL ;			//窗口中无菜单
		wndclass.lpszClassName = lpszClassName; 			//窗口类名为"窗口示例"

//--------------- 以下进行窗口类的注册 -----------------
	    if( !RegisterClass( &wndclass))			//如果注册失败则发出警告声音
		{
			MessageBeep(0) ;
			return FALSE ;
		}

        //创建窗口
		hwnd=CreateWindow(
						lpszClassName,		//窗口类名
						lpszTitle,				//窗口实例的标题名
						WS_OVERLAPPEDWINDOW,	//窗口的风格
						CW_USEDEFAULT,
						CW_USEDEFAULT,			//窗口左上角坐标为缺省值
						CW_USEDEFAULT,
						CW_USEDEFAULT,			//窗口的高和宽为缺省值
						NULL,					//此窗口无父窗口
						NULL,					//此窗口无主菜单
						hInstance,				//创建此窗口的应用程序的当前句柄
						NULL) ;					//不使用该值

		
		ShowWindow( hwnd, nCmdShow); 			//显示窗口
		UpdateWindow(hwnd); 					//绘制用户区
		while( GetMessage(&Msg, NULL, 0, 0))	//消息循环
		{
			TranslateMessage( &Msg) ;
			DispatchMessage( &Msg) ;
		}
		return Msg.wParam;						//消息循环结束即程序终止时将信息返回系统
}

//窗口函数
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM  wParam,LPARAM lParam)
{
		switch(message)
{
		case WM_DESTROY:
			PostQuitMessage(0);					//调用PostQuitMessage发出WM_QUIT消息

		default:								//缺省时采用系统消息缺省处理函数
			return  DefWindowProc(hwnd,message,wParam,lParam);
		}
		return (0);
}

所有win32程序入口都是winmain,进入winmian后,要先定义wndclass,它的结构如下:
typedef struct _WNDCLASS {
UINT style;// 窗口类型
WNDPROC lpfnWndProc;//窗口处理函数
int cbClsExtra;//窗口扩展
int cbWndExtra;//窗口实例扩展
HINSTANCE hInstance;//实例句柄
HICON hIcon;//窗口的最小化图标
HCURSOR hCursor;//窗口鼠标光标
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜单
LPCTSTR lpszClassName;// 窗口类名
} WNDCLASS, *LPWNDCLASS;
第二步再调用Registerclass 注册类

然后根据定义的wndclass调用createwindow函数返回一个句柄,再调用showwindow把窗口展示出来

最后定义winproc处理消息

msg结构体如下:

typedef struct tagMSG {

HWND hwnd; //这个消息所在的窗口句柄

UINT message; //消息标识符,如WM_SIZE、WM_COMMAND、WM_QUIT等等

WPARAM wParam; //32位消息的特定附加信息

LPARAM lParam; // 32位消息的特定附加信息

DWORD time; // /消息创建时的时间

POINT pt; //消息创建时的鼠标位置

} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值