用vc6.0新建一个win32 application工程,建立一个输出hello 的cpp,编译链接通过,就是没有窗口显示

文刀人韦 发布于 2017/08/07 10:35
阅读 182
收藏 0

并且,其实已经打开了一个exe程序,但是他不会自动关闭,要自己去任务管理器哪里手动关闭???

我在网上找了一个,和我的一样啊,为什么被人的能出来,我的就不行?

我的:

/*贪吃蛇
1.项目文件定义:
    asp,活动服务器页文件;    bmp,位图;    h,头文件;    cpp,源文件;    cur,光标文件; html\htm,超文本文件
    ico,图标    dsm,宏文件        rc,资源脚本  rct,资源模板  sql,数据库  

  */

//hello.cpp
#include <windows.h>
#include <stdio.h> //test替换为标准C++;
LRESULT CALLBACK WinSunProc //声明一个回调函数
(
    HWND hwnd,  //窗口的句柄
    UINT uMsg,  //窗口的消息
    WPARAM wParam,
    LPARAM lParam
);
/*
WinMain:Windows程序的人口函数
创建一个完整的窗口:设计一个窗口类,注册窗口类,创建窗口,显示及更新窗口
*/
int WINAPI WinMain
(HINSTANCE hInstance, //实例句柄,当前应用程序的实例句柄
 HINSTANCE hPrevInstance,//默认这个参数为空
 LPSTR lPCmdLine,//存储一个命令行参数
 int nCmdShow)
{
    WNDCLASS wndcls;//定义一个窗口对象
    wndcls.cbClsExtra = 0; //指定额外内存空间
    wndcls.cbWndExtra = 0; //指定额外内存空间
    //指定窗口背景色
    wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    //设置光标样式
    wndcls.hCursor = LoadCursor(NULL,IDC_CROSS);
    //设置图标样式
    wndcls.hIcon = LoadIcon(NULL,IDI_ERROR);
    wndcls.hInstance = hInstance; //指定窗口实例句柄
    wndcls.lpfnWndProc = WinSunProc; //指定窗口函数,即窗口主处理函数
    //窗口类名称
    wndcls.lpszClassName = "Visual C++ Game";
    wndcls.lpszMenuName = NULL; //菜单
    wndcls.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&wndcls); //注册窗口类
    HWND hwnd; //声明窗口句柄

    hwnd = CreateWindow //创建窗口,但这里的窗口不会显示
    (
    "Visual C++ Gmae", //已注册窗口类的名称
    "Visual C++ 游戏开发", //窗口标题
    WS_OVERLAPPEDWINDOW,  //窗口风格 
    200, //窗口位置横坐标
    200, //        纵坐标
    600, //窗口宽度
    400, //窗口高度
    NULL,
    NULL,
    hInstance, //实例句柄
    NULL);
//在这里显示真正的窗口
    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);  //更新显示

    //初始化工作完成后,WinMain进入所谓的消息循环
    MSG msg;
    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);//转换键盘消息
        DispatchMessage(&msg); //分派消息
    }
    return 0;
}

/*
窗口函数。窗口函数通常用switch、case方式判断小时的种类,以决定处置方式,由于其是被windows系统所调用,所以这是一种call back函数
*/
LRESULT CALLBACK WinSunProc
(
 HWND hwnd, //窗口句柄
 UINT uMsg, //消息
 WPARAM wParam, //参数1
 LPARAM lParam //参数2
 )
{
    switch(uMsg) //判断消息类型
    {
    case WM_PAINT: //更新窗口消息
            HDC hDC; //定义DC设备
            PAINTSTRUCT ps;
            hDC = BeginPaint(hwnd,&ps); //得到设备hDC
            TextOut(hDC,200,0,"Visual C++ 游戏开发",strlen("Visual C++ 游戏开发"));
            EndPaint(hwnd,&ps);
            break;
    case WM_CLOSE: //当单击关闭按钮时,产生关闭消息
        if(IDYES == MessageBox(hwnd,"是否真的结束?","游戏开发",MB_YESNO))
        {
            DestroyWindow(hwnd); //单击 确定 按钮,销毁窗口
        }
        break;
    case WM_DESTROY: //销毁窗口消息
        PostQuitMessage(0); //退出程序
        break;
    default:
     //在default处必须调用DefWindowProc,这是windows内部默认的消息处理函数
        return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
    return 0;
}
 
 

 

 

别人的:

#include <windows.h>                               //一个windows应用程序应该包含的头文件(笔者认为这就是SDK风格的windows应用程序了)
#include <stdio.h>                                 //标准输入输出流文件

                                                   //声明一个回调函数  
LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg, WPARAM wParam, LPARAM lparam);
//窗口句柄,窗口消息

//创建一个完整的窗口需要经过四个步骤:设计一个窗口类;注册窗口类;创建窗口;显示及更新窗口
//WinMain:Windows 程序的入口函数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{   //hInstance 实例句柄、hPrevInstance默认这个参数为NULL、lpCmdLine存储一个命令行参数

    WNDCLASS wndcls;            //定义一个窗口对象
    wndcls.cbClsExtra = 0;      //指定额外内存空间
    wndcls.cbWndExtra = 0;      //指定额外内存空间
    wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);   //指定窗口背景颜色
    wndcls.hCursor = LoadCursor(NULL, IDC_CROSS);                 //设置光标样式
    wndcls.hIcon = LoadIcon(NULL, IDI_ERROR);                     //设置图标样式
    wndcls.hInstance = hInstance;                                 //指定窗口实例句柄
    wndcls.lpfnWndProc = WinSunProc;                              //指定窗口函数、窗口主处理函数
    wndcls.lpszClassName = "Visual C++ Game";                     //窗口类名称
    wndcls.lpszMenuName = NULL;                                   //菜单
    wndcls.style = CS_HREDRAW | CS_VREDRAW;
    RegisterClass(&wndcls);                    //注册窗口类
    HWND hwnd;                                 //声名窗口句柄

    //创建窗口,但是这里的窗口是不会显示的
    hwnd = CreateWindow
        ("Visual C++ Game",                      // 已注册窗口类的名称   
        "Visual C++ 游戏开发",                  //窗口标题
        WS_OVERLAPPEDWINDOW,                    //窗口风格
        200,                                    //窗口位置的横坐标
        200,                                    //窗口位置的纵坐标
        600,                                    //窗口宽度
        400,                                    //窗口高度
        NULL,
        NULL,
        hInstance,                              //实例句柄
        NULL
        );
    ShowWindow(hwnd, SW_SHOWNORMAL);
    UpdateWindow(hwnd);               //更新显示
    //初始化完成后,WinMain进入消息循环
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);          //转换键盘消息
        DispatchMessage(&msg);           //分派消息
    }
    return 0;
}
    //窗口函数,窗口函数通常利用switch/case 方式判断消息的种类,以决定处置方式,由于其被Windows 系统所调用的,所以这是一种call back 函数
    LRESULT CALLBACK WinSunProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)                  //判断消息类型
        {
        case WM_PAINT:                 //更新窗口消息
            HDC hDC;                   //定义 hDC 设备
            PAINTSTRUCT ps;
            hDC = BeginPaint(hwnd, &ps);       //得到设备hDC
            TextOut(hDC, 200, 0, "Visual C++ 游戏开发", strlen("Visual C++ 游戏开发"));
            EndPaint(hwnd, &ps);
            break;
        case WM_CLOSE:                        //当单击关闭按钮时,产生关闭消息
            if (IDYES == MessageBox(hwnd, "是否真的结束?","游戏开发", MB_YESNO))
            {
                DestroyWindow(hwnd);              //单击“确认”按钮,销毁窗口
            }
            break;
        case WM_DESTROY:                         //销毁窗口消息
            PostQuitMessage(0);                  //退出程序
            break;
        default:
            return DefWindowProc(hwnd, uMsg, wParam,lParam);
            //在default 处必须调用DefWindowProc,这是Windows内部默认的消息处理函数
        }
        return 0;
    }

 

求助大佬,不知道怎么办

 

 

加载中
返回顶部
顶部