鱼C论坛

 找回密码
 立即注册
查看: 2599|回复: 1

关于程序设计这本书的窗口程序

[复制链接]
发表于 2014-2-11 22:40:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <Windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(__in HINSTANCE hInstance,
                                   __in_opt HINSTANCE hPrevInstance,
                                   __in_opt LPSTR lpCmdLine,
                                   __in int nShowCmd )
{
       HWND hwnd;
           MSG msg;
           WNDCLASS wc;
           wc.style=0;
           wc.lpfnWndProc=(WNDPROC)WndProc;
           wc.cbWndExtra=0;
           wc.cbClsExtra=0;
           wc.hInstance=hInstance;
           wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);
           wc.hCursor=LoadCursor(NULL,IDC_ARROW);
           wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
           wc.lpszMenuName=NULL;
           wc.lpszClassName=TEXT("MyWndClass");
       RegisterClass(&wc);
           hwnd=CreateWindow(TEXT("MyWndClass"),
                                 TEXT("Hello SDK Application"),
                                                 WS_OVERLAPPEDWINDOW,
                                                 CW_USEDEFAULT,CW_USEDEFAULT,
                                                 CW_USEDEFAULT,CW_USEDEFAULT,
                                                 NULL,NULL,
                                             hInstance,
                                                 NULL);
           ShowWindow(hwnd,nShowCmd);
           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)
{
        PAINTSTRUCT ps;
        HDC hdc;
        switch (message)
        {
        case WM_LBUTTONDOWN:
                MessageBox(hwnd,TEXT("鼠标点击"),TEXT("没事"),MB_OK);
                /*break;*/
        return 0;
        case WM_PAINT:
                 //hdc=BeginPaint(hwnd,&ps);
                 //Ellipse(hdc,0,0,200,200);
                 //EndPaint(hwnd,&ps);
         //break;
                return 0;
        case WM_DESTROY:
                PostQuitMessage(0);
                break;
                

  
        }
/*        return 0;*/
      return DefWindowProc(hwnd,message,wParam,lParam);
}
我用的是vs2008,关于case WM_LBUTTONDOWN:case WM_PAINT:这两个书上后面是return 0;孙鑫的书是用vc6用的是break;在这里如果case WM_PAINT:后面部接代码,
1.直接跟return 0,运行程序后点鼠标没有出现messagebox,而是出现程序当机
2.如果直接跟break,运行后点鼠标,就没事,可以出现messagebox
3,如果后面写入hdc3句话,接return 0,运行后也会出现messagebox ,程序正常运行。
这到底是怎么回事呢,为什么会出现这个情况。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-13 19:02:48 | 显示全部楼层
路过看看= =!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 15:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表