• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

创建一个简单的窗口(eclipsec++)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

玩了几天的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;
}

 

然后在贴一个运行后的图

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#原子操作发布时间:2022-07-13
下一篇:
MixingunmanagedC++andCSharp发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap