Directx学习笔记【1】最简单的window程序

创建一个windows应用程序需要以下几步:

  WinMain函数的定义;

  创建一个窗口;

  进行消息循环;

  编写窗口过程函数. 


#include <Windows.h>

LPCWSTR w_name;//窗口类的名字
HINSTANCE w_instance;//应用程序的实例句柄
HWND w_hwnd;//窗口句柄
bool Init();//初始化函数
void Run();//消息处理函数

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

int WINAPI WinMain(
		HINSTANCE hInstance,//当前运行的实例句柄
		HINSTANCE hPrevInstance,//当前运行的实例句柄的前一个句柄
		LPSTR lpCmdLine,//一个以空终止的字符串,指定传递给应用程序的命令行参数。
		int nCmdshow//指定程序的窗口应该如何显示
	)
{
	if(Init())Run();
	return 0;
}

bool Init()
{
	w_instance = GetModuleHandle(NULL);//得到程序实例句柄
	w_name = L"Hello world";

	WNDCLASSEX wnd;//定义一个窗口类  
	wnd.cbSize = sizeof(WNDCLASSEX);//窗口大小
	wnd.cbClsExtra = 0;//附加字节,一般为0  
	wnd.cbWndExtra = 0;//附加字节,一般为0  
	wnd.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);//窗口画刷颜色  
	wnd.hCursor = LoadCursor(NULL,IDC_ARROW);//窗口中光标的风格  
	wnd.hIcon = LoadIcon(NULL,IDI_WINLOGO);//窗口图标,可以在资源视图中改  
	wnd.hIconSm = wnd.hIcon;//窗口小图标 
	wnd.hInstance = w_instance;//实例句柄  
	wnd.lpfnWndProc = WndProc;//窗口过程函数,下面有定义
	wnd.lpszClassName = w_name;//窗口类名称  
	wnd.lpszMenuName = w_name;//菜单资源名称,可以在资源视图中改  
	wnd.style = CS_HREDRAW | CS_VREDRAW;//窗口风格,用|符号能够同时选中,具体类型看下面的图  

	//注册窗口类
	if(!RegisterClassEx(&wnd))
	{
		MessageBox(NULL,L"注册窗口失败!",L"Hello world",0);
		return 0;
	}
	//创建窗口
	w_hwnd = CreateWindowEx(WS_EX_APPWINDOW,w_name,w_name,WS_OVERLAPPEDWINDOW,300,200,
		800,600,NULL,NULL,w_instance,NULL);
	//显示窗口创建为焦点
	ShowWindow(w_hwnd,SW_SHOW);
	SetForegroundWindow(w_hwnd);
	SetFocus(w_hwnd);

	//隐藏鼠标
	SetCursor(false);
	return true;
}

//相应调度window消息及调用渲染函数
void Run()
{
	MSG msg;

	//初始化消息函数
	ZeroMemory(&msg,sizeof(MSG));

	while(msg.message != WM_QUIT)
	{
		if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
			TranslateMessage(&msg);//翻译消息 
			DispatchMessage(&msg);//发送消息给窗口过程 
		}
		else {
			//Do someting
		}
	}
}

LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	switch(msg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
		break;
	}
	return DefWindowProc(hwnd,msg,wParam,lParam);
}


窗口风格:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值