读书人

不知道那错了,请求帮忙解决方法

发布时间: 2012-01-29 21:39:32 作者: rapoo

不知道那错了,请求帮忙
/*
测试多窗口程序
*/


#include <windows.h>
//第一个消息循环函数
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
//第二个消息循环函数
LRESULT CALLBACK WndProc1 (HWND, UINT, WPARAM, LPARAM) ;
//开始函数
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)
{
//声明且初始化变量
static TCHAR szAppName[] = TEXT ( "BtnLook ") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = 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 = szAppName ;
//初始化结束

//注册变量
RegisterClass (&wndclass);

//创建窗口
hwnd = CreateWindow (szAppName, TEXT ( "Button Look "),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;


//显示窗口
ShowWindow (hwnd, iCmdShow) ;
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)

{
static TCHAR szAppName1[] = TEXT ( "BtnLook1 ") ;

switch (message)
{
//窗口创建时添加一个按钮
case WM_CREATE :

CreateWindow ( TEXT( "button "),TEXT( "button "),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,,
10,
10,
200,
200,
hwnd,
(HMENU) 1,
((LPCREATESTRUCT) lParam)-> hInstance,
NULL) ;
return 0 ;
//单击按钮时创建另一个窗口
case WM_COMMAND :
//变量声明初始化
HWND hwnd1 ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc1 ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance =((LPCREATESTRUCT) lParam)-> hInstance ;//这里出了问题
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName1 ;
//初始化结束

//注册
RegisterClass (&wndclass);

//创建
hwnd1 = CreateWindow (szAppName1, TEXT ( "Button Look "),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,


CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, ((LPCREATESTRUCT) lParam)-> hInstance, NULL) ;//这里出了问题
//显示
ShowWindow (hwnd1, NULL) ;
UpdateWindow (hwnd1) ;

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

//结束
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}

return DefWindowProc (hwnd, message, wParam, lParam) ;

}

//第二个回调函数
LRESULT CALLBACK WndProc1 (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
有错,帮忙看看,谢谢!


[解决办法]
哥们,你犯低级错误了,
CreateWindow ( TEXT( "button "),TEXT( "button "),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,,
10,
10,
200,
200,
hwnd,
(HMENU) 1,
((LPCREATESTRUCT) lParam)-> hInstance,
NULL) ;
return 0 ;

这个窗口类型后为什么有两个逗号。
[解决办法]
ShowWindow (hwnd1, NULL) ;
问题在这个参数NULL上,你改为1试下,不过这不是标准方法,呵呵,我只说问题。
[解决办法]
改了,可是窗口还是不显示
==========
如楼上所说:
改成:
//显示
ShowWindow (hwnd1, SW_SHOW) ;

读书人网 >VC/MFC

热点推荐