码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 基于Windows API DialogBox的对话框


    在C++中,DialogBox函数是Windows API的一部分,它用于在Win32应用程序中创建并显示一个模态对话框。DialogBox函数是USER32.DLL中的一个导出函数,因此你需要在你的C++ Win32应用程序中链接到这个库。

    #include "framework.h"
    #include "resource.h"
    
    INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam);
    
    int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                         _In_opt_ HINSTANCE hPrevInstance,
                         _In_ LPWSTR    lpCmdLine,
                         _In_ int       nCmdShow)
    {
        DialogBox(NULL, MAKEINTRESOURCE(ID_MAIN), NULL, &DialogProc);
        return 0;
    }
    
    INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)
        {
        case WM_INITDIALOG:
            MessageBoxW(NULL, L"首次加载", L"标题", 0);
            break;
        case WM_CLOSE:
            MessageBoxW(NULL, L"关闭对话框", L"标题", 0);
            EndDialog(hwndDlg, NULL);
            break;
    
        case WM_COMMAND:
            switch (LOWORD(wParam))
            {
            case IDOK:
                MessageBoxW(NULL, L"确认按钮", L"标题", 0);
                break;
    
            case IDCANCEL:
                MessageBoxW(NULL, L"取消按钮", L"标题", 0);
                DestroyWindow(hwndDlg);
                return TRUE;
            }
        }
        return FALSE;
    }
    

    1

    在这个例子中,DialogProc是一个回调函数,它处理对话框接收到的消息。DialogBox函数会调用这个函数来处理对话框的初始化、按钮点击等事件。

    你需要使用资源编辑器(如Visual Studio的资源视图)来创建对话框模板(.rc文件),并在其中定义控件(如按钮、文本框等)。对话框模板的ID(在这个例子中是ID_MAIN)需要在你的代码中引用。

    C++标准库本身并不包含DialogBox函数或任何与GUI相关的功能。这些功能都是特定于Windows API的,并且通常需要使用特定的工具(如Visual Studio)和Windows特定的编程技术来开发。

    相关链接

    https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-dialogboxa

  • 相关阅读:
    【c语言基础题】— —第四版,可当作日常练习和期末复习,有奇效哟!
    DFS和BFS概念及实践
    【Java刷题进阶】基础入门篇⑨
    深度神经网络(DNN)
    项目实战:组件扫描(2)-获取bean组件存放到IOC容器
    “易+”开源 | 简单可信赖,GameSentry 正式开源
    SQL Server 2008 geometry 数据类型
    MySQL项目迁移华为GaussDB PG模式指南
    怎样通过 Etherscan 验证智能合约
    Three.js机器人与星系动态场景:实现3D渲染与交互式控制
  • 原文地址:https://blog.csdn.net/lilongsy/article/details/139832294
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号