一个简单的测试消息对话框的程序,麻烦高手帮我看一下。就是窗体接受到按键不
蹦出一个消息对话框。但程序运行时,怎么不直接蹦出来,而是要按一下Alt才行?
谢谢#include<windows.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include "resource.h"
HINSTANCE hInst;
LRESULT CALLBACK WndProc
( HWND hWnd,
  UINT imsg,
  WPARAM wPara,
  LPARAM lPara
);
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
HWND hWnd;
MSG msg;
WNDCLASS WndClass; WndClass.style=0;
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="WinFill";
if(!RegisterClass(&WndClass))
{   MessageBeep(0);
    return 0;
}
hWnd=CreateWindow("WinFill",
          "填充示例程序",
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  0,
  CW_USEDEFAULT,
  0,
  NULL,
  LoadMenu(hInstance,"menu"),
  hInstance, 
  NULL);
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);//
hInst=hInstance;
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}LRESULT CALLBACK WndProc
( HWND hWnd,
  UINT imsg,
  WPARAM wParam,
  LPARAM lParam
)
{
switch(imsg)
{
case WM_PAINT:
break;
case WM_COMMAND:
break;
case WM_CHAR:
MessageBox(NULL,"good",NULL,MB_YESNOCANCEL|MB_ICONEXCLAMATION);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,imsg,wParam,lParam));
}
return 0;

}

解决方案 »

  1.   

    拜托先把
      case WM_PAINT:
        break;
    两句去掉。
    试试看!
      

  2.   

    这事情说起来话长,更多的原因应该去问Bill Gates!!!不过也难为Windows,
    如果你对 WM_PAINT 的处理,不作任何事情,Windows会认为你没有吃完饭,
    会继续请你吃,WM_PAINT 在消息队列中继续存在。
    当然如果对 WM_PAINT 作最简单的处理,就可以抹嘴走人。case WM_PAINT:
    {
      PAINTSTRUCT ps;
      BeginPaint(hwnd, &ps);
      // 中间啥都不干
      EndPaint(hwnd, &ps);
      break;
    }把上边代码重新贴上,试试看!注:我不是M$的人。