VC中控制台程序如何创建窗口

转载出至:http://blog.chinaunix.net/uid-13614124-id-3747923.html

在VC控制台程序中调用D3DVideoRender时,需要创建新的窗口控件显示图像


#include "windows.h"
#include "TCHAR.h"

//声明自定义消息处理函数
LRESULT CALLBACK WindowProc(
	HWND hwnd,
	UINT uMsg,
	WPARAM wParam,
	LPARAM lParam
	);

int _tmain(int argc, _TCHAR* argv[])
{
	HINSTANCE hInstance;
	hInstance = GetModuleHandle(NULL);	//获取一个应用程序或动态链接库的模块句柄
	WNDCLASS Render_WND;
	Render_WND.cbClsExtra = 0;
	Render_WND.cbWndExtra = 0;
	Render_WND.hCursor = LoadCursor(hInstance, IDC_ARROW);	//鼠标风格
	Render_WND.hIcon = LoadIcon(hInstance, IDI_APPLICATION);	//图标风格
	Render_WND.lpszMenuName = NULL;	//菜单名
	Render_WND.style = CS_HREDRAW | CS_VREDRAW;	//窗口的风格
	Render_WND.hbrBackground = (HBRUSH)COLOR_WINDOW;	//背景色
	Render_WND.lpfnWndProc = WindowProc;	//【关键】采用自定义消息处理函数,也可以用默认的DefWindowProc
	Render_WND.lpszClassName = _T("RenderWindow");	//【关键】该窗口类的名称
	Render_WND.hInstance = hInstance;	//【关键】表示创建该窗口的程序的运行实体代号

	RegisterClass(&Render_WND);

	HWND hwnd = CreateWindow(
		_T("RenderWindow"),           //【关键】上面注册的类名lpszClassName,要完全一致  
		L"Zombie",  //窗口标题文字  
		WS_OVERLAPPEDWINDOW, //窗口外观样式  
		0,             //窗口相对于父级的X坐标  
		0,             //窗口相对于父级的Y坐标  
		320,                //窗口的宽度  
		240,                //窗口的高度  
		NULL,               //没有父窗口,为NULL  
		NULL,               //没有菜单,为NULL  
		hInstance,          //当前应用程序的实例句柄  
		NULL);              //没有附加数据,为NULL  

	//去标题栏
	SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_CAPTION);

	//去边框
	SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) & ~(WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME));

	// 显示窗口  
	ShowWindow(hwnd, SW_SHOW);

	// 更新窗口  
	UpdateWindow(hwnd);

	// 消息循环  
	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return 0;
}


// 自定义消息处理函数的实现
LRESULT CALLBACK WindowProc(
	_In_  HWND hwnd,
	_In_  UINT uMsg,
	_In_  WPARAM wParam,
	_In_  LPARAM lParam
	)
{
	switch (uMsg)
	{
	    case WM_DESTROY:
	    {
			PostQuitMessage(0);
			return 0;
	    }

		case WM_KEYDOWN:
		{
			if (wParam == VK_ESCAPE)//按Esc键退出
			{
				PostQuitMessage(0);
				return 0;
			}
		}
	}
	return DefWindowProc(hwnd, uMsg, wParam, lParam);
}


 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值