找回密码
 立即注册
楼主: 七彩极

怎么用C++写图形界面程序?

[复制链接]
发表于 2021-9-3 21:30 | 显示全部楼层
首先纠正一下题主的问题,程序不能“变成”有界面的东西,你所谓的“有界面的东西”属于一类程序。

看到点赞最多的回答下的评论(对不起请允许我笑一会儿),我帮你百度到了一篇MFC版贪吃蛇教程:手把手教MFC贪吃蛇
顺便提醒一下,学MFC的话首先一定要知道程序的入口WinMain函数在哪里。

当然你也可以学其他的界面编程,比如gtk,qt等。

最后,如果你还有类似的问题比如“怎么把程序变成能在手机上使用的东西”等,欢迎邀请我。
发表于 2021-9-3 21:32 | 显示全部楼层
我觉得题主误解了,程序就是一段可以运行的代码。题主可能刚开始学c/c++,比较功利,不过另一个方面,界面的东西也比较直观,可以给人直接的反馈。楼上的朋友推荐了一些Windows下界面框架的东西。我觉得题主现在应该做的是找一本数据结构的书,好好把数据结构学一学。
发表于 2021-9-3 21:37 | 显示全部楼层
Qt不谢
一周速成GUI一周速成网络+多线程,嗯很简单的(笑
发表于 2021-9-3 21:42 | 显示全部楼层
//代码来自MSDN,链接Module 1. Your First Windows Program (Windows)

#ifndef UNICODE
#define UNICODE
#endif

#include <windows.h>

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
    // Register the window class.
    const wchar_t CLASS_NAME[]  = L"Sample Window Class";
   
    WNDCLASS wc = { };

    wc.lpfnWndProc   = WindowProc;
    wc.hInstance     = hInstance;
    wc.lpszClassName = CLASS_NAME;

    RegisterClass(&wc);

    // Create the window.

    HWND hwnd = CreateWindowEx(
        0,                              // Optional window styles.
        CLASS_NAME,                     // Window class
        L"Learn to Program Windows",    // Window text
        WS_OVERLAPPEDWINDOW,            // Window style

        // Size and position
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

        NULL,       // Parent window   
        NULL,       // Menu
        hInstance,  // Instance handle
        NULL        // Additional application data
        );

    if (hwnd == NULL)
    {
        return 0;
    }

    ShowWindow(hwnd, nCmdShow);

    // Run the message loop.

    MSG msg = { };
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return 0;
}

LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;

    case WM_PAINT:
        {
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hwnd, &ps);

            FillRect(hdc, &ps.rcPaint, (HBRUSH) (COLOR_WINDOW+1));

            EndPaint(hwnd, &ps);
        }
        return 0;

    }
    return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
发表于 2021-9-3 21:43 | 显示全部楼层
为什么“程序”就是“有界面的东西”?
 楼主| 发表于 2021-9-3 21:47 | 显示全部楼层
逃离控制台不要入微软大坑,加入我们Qt门派吧!(注意不是TM Qt语音)
发表于 2021-9-3 21:55 | 显示全部楼层
左有微软自家的winSDK,MFC,ATL
右有第三方的Qt,轮子哥的gui

当然你也可以用C#unsafe合着WPF,WinForm来写,不过这样你会被C++和C#的人联合打死x_x

以上名词均可百度并寻找教程学习
发表于 2021-9-3 21:57 | 显示全部楼层
你需要一本mfc教程或者qt
→_→~mfc的确挺恶心的。还是qt好
发表于 2021-9-3 22:05 | 显示全部楼层
这是曾困扰我很久的一个问题!我能理解提问的朋友想知道什么!仿佛看到八年前的自己一样亲切!手机码字借别字见谅!

回答:去找一本书 [windows游戏编程大师技巧] 这里面会教你使用各种api在windows下创建窗口,使用gdi画东画西,学到这里就差不多了,我当年就是学到这里做了个五子棋…
然后进阶可以去另外找资料学习一下d3d和opengl!
学习过程中请尽量使用百度查找各种api的用途!

加油吧骚年,向着夕阳的方向奔跑!
发表于 2021-9-3 22:13 | 显示全部楼层
需要安利 @vczh 的gaclib吗→_→
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 13:59 , Processed in 0.090976 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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