mfc學習(一)

mfc為微軟創建的一個類qt框架的客戶端程序,只不過因為微軟目前有自己 的親身兒子C#(.net),所以到2010沒有進行維護。然后一些的工業企業還在繼續進行維護相關的內容。我目前就接手一個現在這樣的項目,其實本質與qt的思路是差不多的內容,但是作為一個202屆畢業生,從來沒有搞過這個東西,從頭開始學習。

前期內容

環境搭建

首先是安裝上VS,使用VS Installer,安裝不同種類的mfc框架的東西。

QQ20250424-0

項目搭建

打開VS,創建新項目,搜索模版選擇mfc應用,輸入創建項目的名稱。

QQ20250424-1

后面一步,就是需要選擇應用程序類型,選擇基于對話框。后面直接一鍵完成到底。

項目東西創建之后內容,變成一個框一樣的東西(差不多的內容與qt的ui設置差不多的內容)

QQ20250424-2

VS的mfc整體框架的不同意思

QQ20250424-3

這里部分就是解決方案的地方,存放不同文件的地方!(如果沒有找到相應的解決方案資源管理器,可以在最上面的 “視圖->解決方案資源管理器 ”)

在這里插入圖片描述

這個就是資源視圖的不同東西,界面的視圖的東西。(有可能看不到資源視圖,需要在最上面的一行的東西找到對應的窗口的位置 不同的版本的VS“其它窗口”的位置不同,點擊上去然后選擇“資源視圖”,可以出現相應的東西)

QQ20250424-5

工具箱框,可以拖選不同的模塊進行處理不同的模塊,目前的內容的使用和qt的Ui組件的拖入差不懂的內容。

安放控件

image-20250424105112777

整個最基本的UI框架底層的不同東西,可以把工具箱里面的不同東西放入這里。不同的控件有不同的使用方法。(本質與信號與槽的差不多的,這邊mfc就是用不同宏定義不同的控件名稱,用不同的操作進行綁定不同的指令,不同的指令有不同是策略)

按鈕鍵

從工具箱拖取一個Button放到窗口的不同位置,雙擊按鈕可以到對應的函數(類似于qt的槽函數)

QQ20250424-3

這里就是創建一個按鈕叫做Button5的一個名字。在資源視圖界面,當你點擊之后就會進入對應函數。可以在里面添加函數

void CTestDlg::OnBnClickedButton5()
{// TODO: 在此添加控件通知處理程序代碼}

靜態文本框(編輯框)

QQ20250424-6

單擊靜態文本框之后,右邊為屬性,最重要的就是ID(一個定義的宏),用于后面的數據獲取,需要用來綁定需要對應的數據。雙擊靜態文本框之后,可以進入整個頁面的類(mfc把一個頁面寫成一個.cpp文件)QQ20250424-8

這里就是進行數據綁定的機制,使用DXX_Text()函數進行數據綁定。其它的數據獲取的數據函數。這些文件都放在DoDataExchange()函數的不同內容。

DDX_Text(pDX, IDC_EDIT_NAME, m_strName);  // 綁定編輯框與CString變量
DDX_Check(pDX, IDC_CHECK_ENABLE, m_bEnable); // 綁定復選框與BOOL變量
DDX_Radio(pDX, IDC_RADIO_OPTION1, m_nOption); // 綁定單選按鈕組與int變量

第一個參數為默認的參數不同管,第二個選擇框或者是按鈕組的宏定義,第三個為綁定的CSstring數據類型。數據獲取需要,手動調用函數把整個頁面的函數獲取下來,要把數據推上去,需要函數推動上去。一般放在觸發的按鈕的不同位置信息。

UpdateData(TRUE);  // 觸發DDX和DDV(獲取數據)
UpdateData(FALSE); // 更新控件顯示(把綁定的數據上傳到當前頁面)

窗口彈出

mfc把彈出窗口分成不同的類型,有模態和非模態兩種不同的類型。模態彈出,彈出窗口之后不能點擊其它的窗口的東西。非模態彈出,彈出窗口之后可以同時進行操作其它的窗口不同內容。在mfc之中一個框就是一個類成員,需要自己進行創建這個窗口的類(只需要定義類的名稱)在資源視圖上面點擊添加資源,就會出現一個新的窗。

QQ20250424-9

名字一般與框的相應的作用的名稱差不多!后面在應用這個類進行到主函數聲明(引入.h的文件)。然后直接進行調用這個類,然后彈出窗口功能基本就實現了。

Main.h:

class Main:public {//自動生產的類不想要管內部是怎么實現的TEST Test1;//這里TEST為一個框的宏或者類的定義
}

Main.cpp 這里是非模態彈出

//點擊按鈕函數
On_PushBtton{Test1.DoModal();
}

Main.cpp 這里是模態彈出,IDD_MY_DIALOG是彈出的框的宏定義

				Test1.Create(IDD_MY_DIALOG, this);Test1.ShowWindow(SW_SHOW);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77016.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77016.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77016.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HarmonyOS:一多能力介紹:一次開發,多端部署

概述 如果一個應用需要在多個設備上提供同樣的內容,則需要適配不同的屏幕尺寸和硬件,開發成本較高。HarmonyOS 系統面向多終端提供了“一次開發,多端部署”(后文中簡稱為“一多”)的能力,可以基于一種設計…

秒出PPT推出更強版本,AI PPT工具進入新紀元!

在現代職場中,PPT是我們溝通和展示信息的重要工具。無論是做產品演示,還是準備工作匯報,一份精美的PPT能大大提升演示效果。然而,傳統的PPT制作往往需要消耗大量時間,尤其是在排版、設計和內容調整上。如今&#xff0c…

Godot開發2D冒險游戲——第二節:主角光環整起來!

變量的作用域 全局變量,局部變量,導出變量(可以在檢查器當中快速查看) 為玩家添加移動動畫 現在游戲的玩家還只是在滑行,我們需要再添加玩家每個方向上的移動效果 刪除原先的Item節點,創建一個動畫精靈…

顛覆傳統NAS體驗:耘想WinNAS讓遠程存儲如同本地般便捷

在當今數據爆炸的時代,網絡附加存儲(NAS)已成為許多企業和個人用戶的必備設備。然而,傳統硬件NAS解決方案存在諸多限制,如高額成本、復雜設置和有限的遠程訪問能力。耘想WinNAS以其創新的軟件解決方案,徹底改變了這一局面&#xf…

新市場環境下新能源汽車電流傳感技術發展前瞻

新能源革命重構產業格局 在全球碳中和戰略驅動下,新能源汽車產業正經歷結構性變革。國際清潔交通委員會(ICCT)最新報告顯示,2023年全球新能源汽車滲透率突破18%,中國市場以42%的市占率持續領跑。這種產業變革正沿著&q…

STM32之DHT11溫濕度傳感器---附代碼

DHT11簡介 DHT11的供電電壓為 3-5.5V。 傳感器上電后,要等待 1s 以越過不穩定狀態在此期間無需發送任何指令。 電源引腳(VDD,GND)之間可增加一個100nF 的電容,用以去耦濾波。 DATA 用于微處理器與DHT11之間…

#define STEUER_A_H {PWM_A_ON}

目錄 一、括號的區別 二、實例講解 三、注意事項 四、總結 五、補充 一、括號的區別 大括號 {}: 在 C/C 中,大括號一般用于表示一個代碼塊或結構體、集合等。例如: 用于定義函數體、控制結構(如 if、for)的代碼塊。用于初始化…

Redis 緩存—處理高并發問題

Redis的布隆過濾器、單線程架構、雙寫一致性、比較穿透、擊穿及雪崩、緩存更新方案及分布式鎖。 1 布隆過濾器 是一種高效的概率型數據結構,用于判斷元素是否存在。主要用于防止緩存穿透,通過攔截不存在的數據查詢,避免擊穿數據庫。 原理&…

【玩轉全棧】—— 無敵前端究極動態組件庫--Inspira UI

目錄 Inspira UI 介紹 配置環境 使用示例 效果: Inspira UI 學習視頻: 華麗優雅 | Inspira UI快速上手_嗶哩嗶哩_bilibili 官網:https://inspira-ui.com/ Inspira UI 介紹 Inspira UI 是一個設計精美、功能豐富的用戶界面庫,專為…

【OpenCV圖像處理實戰】從基礎操作到工業級應用

目錄 前言技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解核心作用講解關鍵技術模塊說明技術選型對比 二、實戰演示環境配置要求核心代碼實現(6個案例)案例1:圖像基本操作案例2:邊緣檢測案例3&…

fastjson使用parseObject轉換成JSONObject出現將字符特殊字符解析解決

現象:將字符串的${TARGET_VALUE}轉換成NULL字符串了問題代碼: import com.alibaba.fastjson.JSON;JSONObject config JSON.parseObject(o.toString()); 解決方法: 1.更換fastjson版本 import com.alibaba.fastjson2.JSON;或者使用其他JS…

Docker Compose 和 Kubernetes(k8s)區別

前言:Docker Compose 和 Kubernetes(k8s)是容器化技術中兩個常用的工具,但它們的定位、功能和適用場景有顯著區別。以下是兩者的核心對比: ??1. 定位與目標?? ??特性?? ??Docker Compose?? ??Kubernet…

【21天學習打卡挑戰賽】如何學習WEB安全:逼自己在短時間掌握WEB安全核心內容

🍬 博主介紹 👨?🎓 博主介紹:大家好,我是 _PowerShell ,很高興認識大家~ ?主攻領域:【滲透領域】【數據通信】 【通訊安全】 【web安全】【面試分析】 🎉點贊?評論?收藏 養成習…

Oracle數據庫巡檢腳本

1.查詢實例信息 SELECT INST_ID, INSTANCE_NAME, TO_CHAR(STARTUP_TIME, YYYY-MM-DD HH24:MI:SS) AS STARTUP_TIME FROM GV$INSTANCE ORDER BY INST_ID; 2.查看是否歸檔 archive log list 3.查看數據庫參數 SELECT NAME , TYPE , VALUE FROM V$PARAMETER ORDER BY NAME; 4.…

Windows 安裝 JDK

下載 Java8 的下載直接訪問:https://www.oracle.com/java/technologies/downloads/#java8-windows https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 接受協議后點擊下載,再輸入賬號信息就可以下載了。 如果…

強化學習核心原理及數學框架

1. 定義與核心思想 強化學習(Reinforcement Learning, RL)是一種通過智能體(Agent)與環境(Environment)的持續交互來學習最優決策策略的機器學習范式。其核心特征為: ??試錯學習??&#x…

Netty前置基礎知識之BIO、NIO以及AIO理論詳細解析和實戰案例

前言 Netty是什么? Netty 是一個基于 Java 的 ?高性能異步事件驅動網絡應用框架,主要用于快速開發可維護的協議服務器和客戶端。它簡化了網絡編程的復雜性,特別適合構建需要處理海量并發連接、低延遲和高吞吐量的分布式系統。 1)Netty 是…

TIM輸入捕獲知識部分

越往左,頻率越高;越往右,頻率越低。【越緊湊,相同時間,次數越多】 計算頻率的方法:測評法、測周法、中界頻率。 頻率的定義:1s內出現了多少個重復的周期 測評法就是從頻率的定義出發的&#…

4.4 記憶機制與上下文管理:短期與長期記憶的設計與應用

記憶機制與上下文管理已成為智能代理(Agent)系統實現高效、智能化行為的核心技術。記憶機制通過短期記憶(Short-Term Memory, STM)和長期記憶(Long-Term Memory, LTM)支持Agent存儲、檢索和利用信息&#x…

深入了解遞歸、堆與棧:C#中的內存管理與函數調用

在編程中,理解如何有效地管理內存以及如何控制程序的執行流程是每個開發者必須掌握的基本概念。C#作為一種高級編程語言,其內存管理和函數調用機制包括遞歸、堆與棧。本文將詳細講解這三者的工作原理、用途以及它們在C#中的實現和應用。 1. 遞歸 (Recur…