标题:各位老师请指导下:按孙鑫程写的winmain程序,能运行但是不影响消息。
只看楼主
daguos
Rank: 1
等 级:新手上路
帖 子:23
专家分:8
注 册:2010-3-17
结帖率:57.14%
已结贴  问题点数:20 回复次数:2 
各位老师请指导下:按孙鑫程写的winmain程序,能运行但是不影响消息。
各位老师请指导下:按孙鑫程写的winmain程序,能运行但是不影响消息,代码如下:
#include <windows.h>
#include <stdio.h>

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

int WINAPI WinMain(
  HINSTANCE hInstance,  // handle to current instance
  HINSTANCE hPrevInstance,  // handle to previous instance
  LPSTR lpCmdLine,      // pointer to command line
  int nCmdShow          // show state of window
)
{
    WNDCLASS wndcls;
    wndcls.cbClsExtra=0;
    wndcls.cbWndExtra=0;
    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
    wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
    wndcls.hInstance=hInstance;
    wndcls.lpfnWndProc=WinSunProc;
    wndcls.lpszClassName="weixin";
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_HREDRAW|CS_VREDRAW;
    RegisterClass(&wndcls);

    HWND hwnd;
    hwnd=CreateWindow("weixin", "中国人民很行", WS_OVERLAPPEDWINDOW,
        0,0,600,400,NULL,NULL,hInstance,NULL);

    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);

    MSG msg;
    while(GetMessage(&msg,NULL,0,0));
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
   
    }
    return 0;
}

LRESULT CALLBACK WinSunProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
    switch(uMsg)
    {
    case WM_CHAR:
        char szChar[20];
        sprintf(szChar,"char is %d", wParam);
        MessageBox(hwnd,szChar,"weixin",0);
        break;
    //case WM_LBUTTONDOWN:
    //    MessageBox(hwnd,"mouse clicked","weixin",0);
    //    break;
    case WM_PAINT:
        HDC hdc;
        PAINTSTRUCT ps;
        hdc=BeginPaint(hwnd,&ps);
        TextOut(hdc,0,0,"window painted",strlen("window painted"));
        break;
    case WM_CLOSE:
        if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))
        {
            DestroyWindow(hwnd);
        };
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
    return 0;
}

[ 本帖最后由 daguos 于 2013-7-22 10:56 编辑 ]
搜索更多相关主题的帖子: previous message command current include 
2013-07-22 09:12
岁月如刀
Rank: 6Rank: 6
来 自:冰冻星球
等 级:侠之大者
威 望:7
帖 子:165
专家分:477
注 册:2013-7-21
得分:20 
while(GetMessage(&msg,NULL,0,0));


你太坏了。居然在这里多加了个分号~~~害得我找了半天,怪不得窗口消息和键盘消息都都失效了。。。

Now. Game over.
2013-07-22 11:13
daguos
Rank: 1
等 级:新手上路
帖 子:23
专家分:8
注 册:2010-3-17
得分:0 
问题解决,太感谢了。好人一生平安。
2013-07-22 11:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-417757-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.321406 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved