我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [求助]关于Win32编程的一个问题 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

albert





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
家族: 唯war独尊
发贴: 634
威望: 0
浮云: 1116
在线等级:
注册时间: 2005-10-04
最后登陆: 2012-02-12

5come5帮你背单词 [ juice /d3əu:s/ n. (蔬菜、水果等的)汁,液,浆 ]


[求助]关于Win32编程的一个问题

#include <windows.h>    

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(   HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int   nCmdShow)    
{
  MSG     msg;
  WNDCLASS   wc;
  HWND hWnd;

  wc.style         = CS_HREDRAW | CS_VREDRAW;  
  wc.lpfnWndProc     = (WNDPROC) WndProc;          
  wc.cbClsExtra     = 0;                        
  wc.cbWndExtra     = 0;                        
  wc.hInstance     = hInstance;                  
  wc.hIcon         = LoadIcon(NULL, IDI_WINLOGO);        
  wc.hCursor         = LoadCursor(NULL, IDC_ARROW);    
  wc.hbrBackground   = (HBRUSH)GetStockObject(BLACK_BRUSH);                        
  wc.lpszMenuName     = NULL;                    
  wc.lpszClassName   = "Demo";    

  if (!RegisterClass(&wc))                        
  {
    MessageBox(NULL,"Failed To Register The Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION);
    return FALSE;                          
  }
  hWnd=CreateWindow(
                    "Demo",                
                    "Demo1",                                        
                    WS_OVERLAPPEDWINDOW,          
                    CW_USEDEFAULT,
                    CW_USEDEFAULT,                    
                    CW_USEDEFAULT,  
                    CW_USEDEFAULT,  
                    NULL,                  
                    NULL,                    
                    hInstance,            
                    NULL    
    );
  ShowWindow(hWnd,nCmdShow);
  UpdateWindow(hWnd);

  //这里为什么改成GetMessage(&msg,hWnd,0,0)程序就关不了了?    
  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }

  return (msg.wParam);                  
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)        
{
  switch (uMsg)                        
  {
    case WM_CLOSE:
        PostQuitMessage(0);          
        return 0;

    default:
        break;
  }

  return DefWindowProc(hWnd,uMsg,wParam,lParam);
}

如果将GetMessage中的第2个NULL参数改成和hWnd程序就关不了了,我查过MSDN上边讲当第2个参数是NULL时,表示为属于该程序的消息队列的所有窗口检索信息。但问题是,我这个程序里就只有一个窗口,用该窗口的句柄作为参数应该也可以吧。
望高手指点一二。
顶端 Posted: 2006-11-13 21:12 | [楼 主]
albert





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
家族: 唯war独尊
发贴: 634
威望: 0
浮云: 1116
在线等级:
注册时间: 2005-10-04
最后登陆: 2012-02-12

5come5帮你背单词 [ specification /spesifi'keiən/ n. 规格,详细说明,指明,详述 ]


但问题是hWnd在我创建窗体的时候应该就已经得到具体的值了呀。
顶端 Posted: 2006-11-14 09:21 | [1 楼]
albert





性别: 保密 状态: 该用户目前不在线
等级: 栋梁之材
家族: 唯war独尊
发贴: 634
威望: 0
浮云: 1116
在线等级:
注册时间: 2005-10-04
最后登陆: 2012-02-12

5come5帮你背单词 [ sometime /'sΛmtaim/ ad. 某时,近期内,曾经,一度 ]


OK了,把GetMessage(...)改成GetMessage(...)>0就可以了
顶端 Posted: 2006-11-16 12:29 | [2 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.006932(s) query 6, Time now is:11-24 01:13, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号