鱼C论坛

 找回密码
 立即注册
查看: 1957|回复: 6

为什么不显示窗口

[复制链接]
发表于 2014-2-10 21:47:39 | 显示全部楼层 |阅读模式

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

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

x
#include <windows.h>


LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
ATOM                                MyRegisterClass(HINSTANCE hInstance);


int WINAPI WinMain(HINSTANCE hInstance,
                                   HINSTANCE hPrevInstance,
                                   LPSTR lpszCmdLine,
                                   int nCmdShow)
{
        HWND hwnd;//窗口句柄
        MSG msg;//消息
MyRegisterClass(hInstance);


        //3.创建窗口
        hwnd = CreateWindow(
                TEXT("MyWndClass"),
                TEXT("Hello SDK Application"),
                WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                CW_USEDEFAULT,
                NULL,//父窗口句柄
                NULL,//窗口菜单句柄
                hInstance,
                NULL);

        //4.显示和更新窗口
        ShowWindow(hwnd,nCmdShow);
        UpdateWindow(hwnd);
        //5.消息循环
        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;//DC句柄
        RECT rect;

        //对各种消息进行处理
        switch(message)
        {
        case WM_SIZE:
                //重画 Paint
                return 0;
        case WM_LBUTTONDOWN:
                //MessageBox(hwnd,TEXT("Mouse Clicked!"),TEXT("消息"),MB_OK);
                //PostQuitMessage(0);
                return 0;
        case WM_PAINT: //绘制消息
                hdc = BeginPaint(hwnd,&ps);
                GetClientRect(hwnd,&rect);
                //Ellipse(hdc,0,0,200,100);
                DrawText(hdc,TEXT("Hello, Windows!"),-1,&rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                EndPaint(hwnd,&ps);
                return 0;
        case WM_DESTROY://销毁窗口消息(关闭)
                PostQuitMessage(0);
                return 0;
        }
        return DefWindowProc(hwnd,message,wParam,lParam);
}
ATOM                                MyRegisterClass(HINSTANCE hInstance)
{


    WNDCLASSEX wc;

        wc.cbSize = sizeof(WNDCLASSEX);

        wc.style = 0;
        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)(COLOR_WINDOW+1);
        wc.lpszMenuName = NULL;
        wc.lpszClassName = TEXT("MyWndClass");

         RegisterClassEx(&wc);

}
本意是想把原来程序中的注册窗口类写到主函数之外,在VC6.0与vs2008中编译成功,连接成功,就是不显示窗口,求解  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-11 23:34:39 | 显示全部楼层
自已顶一下,等朋友赐教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-12 01:09:25 | 显示全部楼层
谢谢分享!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-14 13:32:33 | 显示全部楼层
有朋自远方来。请赐教,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-14 19:29:03 | 显示全部楼层
WNDCLASSEX wc; RegisterClassEx(&wc);
上面两个吧Ex去掉试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 00:06:33 | 显示全部楼层
窗口已显示。谢xhbuming帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-2-15 00:11:46 | 显示全部楼层
为什么会这样?写到WinMain()外,必须去掉EX。才能显示窗口。写到WinMain()里面,不去掉EX就能显示窗口
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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