创建工作窗口

本文详细介绍了如何在Windows应用程序中创建内部工作窗口。通过使用指定的窗口类名称、窗口过程和窗口名称,可以创建一个有效的窗口句柄。如果创建失败,返回值为NULL。在应用程序关闭时,需要调用DestroyWindow()来关闭窗口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//创建内部工作窗口, 创建失败 ret == NULL, 否则是有效的窗口句柄
//asz_name 窗口类名称 WndProc 窗口过程 asz_wnd_name 窗口名称
//APP关闭时, 需要调用 DestroyWindow() 关闭窗口 
inline HWND TfxWorkWindow(const char* asz_name,
						  WNDPROC  WndProc, const char* asz_wnd_name = NULL );     

//创建内部工作窗口, 创建失败 ret == NULL, 否则是有效的窗口句柄
//asz_name 窗口类名称 WndProc 窗口过程 asz_wnd_name 窗口名称
//APP关闭时, 需要调用 DestroyWindow() 关闭窗口 
HWND TfxWorkWindow(const char* asz_name,
				   WNDPROC  WndProc, const char* asz_wnd_name)
{
	HWND		hWnd=NULL;
	WNDCLASSEX	wcex={0};

	//获得当前应用程序的句柄
	HINSTANCE	hInstance = GetModuleHandle(NULL);
	if ( hInstance == NULL ) return NULL;

	wcex.cbSize = sizeof(WNDCLASSEX); 

	//设置回调函数
	wcex.lpfnWndProc	= (WNDPROC)WndProc;	
	wcex.style			= CS_HREDRAW | CS_VREDRAW;
	wcex.cbClsExtra		= 0;
	wcex.cbWndExtra		= 0;
	wcex.hInstance		= hInstance;
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszClassName	= asz_name;

	WNDCLASS wndclass={0}; 
	if ( GetClassInfo(hInstance, asz_name, &wndclass) == NULL ) 
		if ( RegisterClassEx(&wcex) == NULL ) return (NULL);

	if (  ( asz_wnd_name == NULL ) || (  strcmp(asz_wnd_name, "" ) == 0 ) )
		hWnd = CreateWindow(asz_name, "", WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
	else
		hWnd = CreateWindow(asz_name, asz_wnd_name, WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

	return hWnd;
}

  

转载于:https://www.cnblogs.com/jlyg/p/10155567.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值