首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-01-29 
不知道那错了,请求帮忙/*测试多窗口程序*/#includewindows.h//第一个消息循环函数LRESULTCALLBACKWndPro

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


#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) ;

热点排行