标题:求大家帮我看一下程序错在哪?静茹窗口的是鼠标不是箭头,并且程序好像陷入 ...
只看楼主
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
结帖率:81.82%
已结贴  问题点数:20 回复次数:5 
求大家帮我看一下程序错在哪?静茹窗口的是鼠标不是箭头,并且程序好像陷入了死循环
窗口移动不了 还关闭不了,
程序代码:
#include"windows.h"
#include"stdio.h"
#include"tchar.h"

LRESULT CALLBACK WndProc(
    HWND hwnd,
    UINT msg,
    WPARAM wparam,
    LPARAM lparam);


int WINAPI WinMain(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPSTR lpCmdLine,
  int nShowCmd )
{
    BOOL msg_flag;
    MSG msg;
    HWND hwnd;
    WNDCLASS wndcls;

    wndcls.cbClsExtra=0;
    wndcls.cbWndExtra=0;
    wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndcls.hInstance=hInstance;
    wndcls.lpfnWndProc=WndProc;
    wndcls.lpszClassName=_T("C PROGRAM DESIGN");
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_HREDRAW|CS_VREDRAW;
    RegisterClass(&wndcls);
    hwnd=CreateWindow(_T("C PROGRAM DESIGN"),_T("HELLO 大家好!"),WS_OVERLAPPEDWINDOW,
         CW_USEDEFAULT,0, CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd,SW_NORMAL);
    UpdateWindow(hwnd);
    msg_flag=GetMessage(&msg,hwnd,0,0);
    while(msg_flag)
    {
        if(msg_flag==-1)
            return -1;
        else
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}

LRESULT CALLBACK WndProc(
    HWND hwnd,
    UINT msg,
    WPARAM wparam,
    LPARAM lparam
)
{
    HDC hdc;
    PAINTSTRUCT ps;

    switch(msg)
    {
    case WM_CHAR:
        MessageBox(hwnd,TEXT("这是对话空"),_T("您好!"),0);
        break;
    case WM_LBUTTONDOWN:
        MessageBox(hwnd,TEXT("这是对话空"),_T("您好!"),0);
        hdc=GetDC(hwnd);
        TextOut(hdc,0,0,_T("这是程序员之家"),strlen("这是程序员之家"));
        ReleaseDC(hwnd,hdc);
        break;
    case WM_PAINT:
        HDC hdc;
        hdc=BeginPaint(hwnd,&ps);
        TextOut(hdc,0,0,_T("这是程序员之家"),strlen("这是程序员之家"));
        EndPaint(hwnd,&ps);
        ReleaseDC(hwnd,hdc);
        break;
    case WM_CLOSE:
        if(IDYES==MessageBox(hwnd,TEXT("是否真的结束?"),_T("message"),MB_YESNO))
            DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd,msg,wparam,lparam);
    return 0;
    }
}

搜索更多相关主题的帖子: 歌曲 
2015-04-25 21:03
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
得分:0 
回复 3楼 C3程序猿
谢谢您,上午没在电脑旁边没有及时回复,我加你QQ了,新望您能确认一下,有事没事常唠唠
2015-04-26 12:21
风车转风车89
Rank: 2
等 级:论坛游民
帖 子:125
专家分:45
注 册:2014-9-15
得分:0 
回复 2楼 C3程序猿
错误正如新说的 Getmessage只执行了一次,所以陷入了死循环,太感谢你了 困扰了我好久,自己犯的错真是太难自己发现了
2015-04-26 12:31



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




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

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