zoukankan      html  css  js  c++  java
  • 创建一个简单的窗口(eclipse c++)

    玩了几天的C++,突然发现一个问题,为啥我借的这本书C++教程800多页,但是到结束都没有介绍一点窗口的代码呢?哪怕可以创建一个提示窗口呢?

    我比较愚笨,想在网上找个在WINDOWS的窗口的程序,但是把代码复制进去,都不能用。一看都是VC的,可是当时配置的环境就用的是eclipse+CDT+MinGW。一看到函数入口都是int WINAPI WinMain 而不是main的时候,就慌了。什么情况。

    为此翻了一下午网站,都说的不详不细的(时间都足够装几遍VC的了),按道理说像我这样环境的人应该很多,但是就是找不到,特别是版本不同,也没有截图,说的都没有。唯一了解的就是编译的时候要加个-mwindows。可是用的是Windows环境下的eclipse,编译也就点下图标。这句话到哪里去整啊。

    但是终于还是找到了,在这里写一下,以免以后忘记了。

    选中工程,按ALT+Enter。会出现如下界面,在C/C++ Buid->Settings中的Tool Setting中左边选中MinGW C++linker 右边的command的g++后面加上-mwindows。结果顺利运行了哈。我不知道这个是不是最好的方法,但是是我目前可用的方法。

    对了,顺便把代码贴在这里,来源不记得哪个了,是借用的:

    #include <windows.h>
    #include <stdio.h>
    //自定义消息循环相应函数
    LRESULT CALLBACK myWndProc(HWND hWnd,
                                      UINT Msg,
                                      WPARAM wParam,
                                      LPARAM lParam)
    {
            switch (Msg)
            {
            case WM_CLOSE:
                    if(MessageBox(hWnd,"你要关闭窗口吗?","提示!",MB_OKCANCEL) == IDOK)
                            DestroyWindow(hWnd);
                    break;
            case WM_DESTROY:
                    PostQuitMessage(0);
                    break;
            default:
                    return DefWindowProc(hWnd,Msg,wParam,lParam);
            }
            return 0;
    }
    
    //主函数
    int WINAPI WinMain(
                                       HINSTANCE hInstance,
                                       HINSTANCE hPrevInstance,
                                       LPSTR lpCmdLine,
                                       int nShowCmd)
    {
            WNDCLASS wndcls;
            wndcls.cbClsExtra = 0;
            wndcls.cbWndExtra = 0;
            wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_PEN);
            wndcls.hCursor = LoadCursor(NULL,IDC_ARROW);
            wndcls.hIcon = LoadIcon(NULL,IDI_APPLICATION);
            wndcls.hInstance = hInstance;
            wndcls.lpfnWndProc = myWndProc;
            wndcls.lpszClassName = "123";
            wndcls.lpszMenuName = NULL;
            wndcls.style = CS_HREDRAW | CS_VREDRAW;
    
            RegisterClass(&wndcls);
    
            HWND hWnd = CreateWindow("123","标题",WS_OVERLAPPEDWINDOW
                    | WS_VISIBLE,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
                    CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
            //消息循环
            MSG Msg;
            while(GetMessage(&Msg,hWnd,NULL,NULL))
            {
                    TranslateMessage(&Msg);
                    DispatchMessage(&Msg);
            }
    
            return 0;
    }

    然后在贴一个运行后的图

  • 相关阅读:
    ubuntu用apt-get安装memcache
    Vagrant error: Your VM has become inaccessible.
    PHP数据类型转换
    vim 树形目录插件NERDTree安装及简单用法
    mysql 导入sql文件,source命令
    linux:vi 替换命令
    svn更改分支名字,move命令
    Subversion命令汇总
    不解压直接查看tar包内容
    ls按时间排序输出文件列表
  • 原文地址:https://www.cnblogs.com/shibuliao/p/3845049.html
Copyright © 2011-2022 走看看