MFC编程 -- 从空项目开始到实现计算器功能

简介: MFC编程 -- 从空项目开始到实现计算器功能

二、右击源文件,添加一个cpp文件,名字随便取


0a2653c851af460fa595bd959398a8f1.png


三、编写代码,添加程序入口函数

#include <Windows.h>
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine,  INT nCmdShow) //相当于main函数
{
return 0;
}

四、右击项目,查看属性,修改链接器,因为我们编写的是窗口程序,所以将子系统修改为窗口


0eacb84100b54626af849e6b562bf92a.png


五、代码编写信息框函数


1、第一个参数写NULL


2、第二个参数是信息框内容


3、第三个参数是信息框标题


4、第四个参数是弹窗的类型

MessageBox(NULL, L"aiyou", L"bucuo", MB_OK);

六、运行该程序,成功弹出信息框


2d65d23f6d4748949b924e4057485923.png


七、右击资源文件,添加资源,选择Icon,点击导入,选择设计好的ico文件


2e9b90b2ca334476abebe75bafe6eeaa.png


八、运行程序,自动生成图标


0a2653c851af460fa595bd959398a8f1.png


九、当我们导入多个图标资源的时候,打开resource.h文件

 
         

默认选择的是,后面数字比较小的


十、右击资源文件,添加资源,选择Dialog,点击新建


0eacb84100b54626af849e6b562bf92a.png


十一、设计界面,拖动要用的组件,修改相关属性值


2d65d23f6d4748949b924e4057485923.png2e9b90b2ca334476abebe75bafe6eeaa.png


十二、回到cpp文件编写关联代码


#include <Windows.h>
#include"resource.h"
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine,  INT nCmdShow) //相当于main函数
{
int n = DialogBox(hInstance, (LPCWCHAR)IDD_DIALOG1, NULL, NULL);
//1、指本对话框属于当前进程,HINSTANCE是窗口进程句柄
//2、本对话框使用哪个对话框资源,比如您定义了多个对话框资源,每个都有一个ID,本参数相当于传入一个ID
//3、本对话框的父窗口是哪个,NULL表示没有父窗口
//4、本对话框的消息处理函数,一个对话框相当于一个窗口,而窗口有对应的消息处理函数
return 0;
}

十三、编写一个回调函数,也就是我们自己设计一个功能,然后通过API实现


INT_PTR CALLBACK theProc(_In_  HWND hwndDlg, _In_  UINT uMsg, _In_  WPARAM wParam,  _In_  LPARAM lParam)
{
switch (uMsg)
       {
case WM_COMMAND://点击按钮
              OnCommand(hwndDlg, LOWORD(wParam));
break;
case WM_INITDIALOG://窗口启动时运行
break;
case WM_LBUTTONDOWN://左击
              MessageBox(NULL, _T("左击"), _T("左击"), MB_OK);
break;
case WM_RBUTTONDOWN://右击
              MessageBox(NULL, _T("右击"), _T("右击"), MB_OK);
break;
       }
return 0;
}


十四、编写按钮事件,不同的按钮实现不同的功能


void OnCommand(HWND hWnd, UINT nID)
{
if (nID == IDC_BUTTON2)
       {
              EndDialog(hWnd, 2);
       }
if (nID == IDC_BUTTON1)
       {
int nLeft = GetDlgItemInt(hWnd, IDC_EDIT1, NULL, TRUE);
int nRight = GetDlgItemInt(hWnd, IDC_EDIT2, NULL, TRUE);
              SetDlgItemInt(hWnd, IDC_EDIT3, nLeft + nRight, TRUE);
       }
}

十五、运行效果

4cebaac233b3433da32a72337a77fc60.png

目录
相关文章
|
存储 算法 C语言
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
467 0
|
前端开发 Java 关系型数据库
开题报告-基于SpringBoot互助志愿服务平台设计与实现
开题报告-基于SpringBoot互助志愿服务平台设计与实现
401 0
|
存储 编译器 C语言
【深入理解函数栈帧:探索函数调用的内部机制】
【深入理解函数栈帧:探索函数调用的内部机制】
359 0
|
监控 Linux 网络安全
百度搜索:蓝易云【CentOS7上安装Squid代理详细教程【附带使用教程】】
通过以上步骤,你已经成功安装和配置了Squid代理服务器,并且可以在客户端设备或应用程序中使用它进行代理访问。根据需要,你可以进一步定制Squid的配置,例如添加更多的访问控制规则或进行高级功能的配置。请注意,Squid还有许多其他的功能和选项,你可以参考Squid的官方文档以获取更详细的信息和配置指南。
817 0
|
3月前
|
传感器 人工智能 算法
分层架构解耦——如何构建不依赖硬件的具身智能系统
硬件与软件的彻底解耦,并通过模块化、分层的架构进行重构,是突破这一瓶颈、构建通用型具身智能系统的核心基石。这种架构将具身智能系统解耦为三个核心层级:HAL、感知决策层和任务执行层。这一模式使得企业能够利用预置的技能库和低代码工具快速配置新任务,在不更换昂贵硬件的前提下,实现从清洁机器人到物流机器人的快速功能切换。本文将通过对HAL技术原理、VLA大模型和行为树等核心技术的深度剖析,并结合Google RT-X、RobotecAI RAI和NVIDIA Isaac Sim等主流框架的案例,论证这一新范式的可行性与巨大潜力,探讨硬件解耦如何将机器人从一个“工具”升级为“软件定义”的“多面手”,从而
480 3
|
存储 分布式计算 Hadoop
Hadoop Distributed File System (HDFS): 概念、功能点及实战
【6月更文挑战第12天】Hadoop Distributed File System (HDFS) 是 Hadoop 生态系统中的核心组件之一。它设计用于在大规模集群环境中存储和管理海量数据,提供高吞吐量的数据访问和容错能力。
1253 4
|
人工智能 安全 物联网
Linux操作系统的演变与未来:从开源精神到万物互联的基石###
本文是关于Linux操作系统的演变、现状与未来的深度探索。Linux,这一基于Unix的开源操作系统,自1991年由林纳斯·托瓦兹(Linus Torvalds)学生时代创造以来,已经彻底改变了我们的数字世界。文章首先追溯了Linux的起源,解析其作为开源项目的独特之处;随后,详细阐述了Linux如何从一个小众项目成长为全球最广泛采用的操作系统之一,特别是在服务器、云计算及嵌入式系统领域的主导地位。此外,文章还探讨了Linux在推动技术创新、促进协作开发模式以及保障信息安全方面的作用,最后展望了Linux在未来技术趋势中的角色,包括物联网、人工智能和量子计算等前沿领域的潜在影响。 ###
|
小程序 JavaScript Java
人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)
人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)
472 1
|
SQL 运维 druid
深度分析:Apache Doris及其在大数据处理中的应用
Apache Doris是一款开源的高性能实时分析数据库,设计用于低延迟SQL查询和实时数据处理,适合大规模实时分析场景。与Apache Druid、ClickHouse和Greenplum相比,Doris在易用性和实时性上有优势,但其他产品在特定领域如高吞吐、SQL支持或数据处理有特长。选型要考虑查询性能、实时性、SQL需求和运维成本。Doris适用于实时数据分析、BI报表、数据中台和物联网数据处理。使用时注意资源配置、数据模型设计、监控调优和导入策略。