//创建内部工作窗口, 创建失败 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;
}