2024-03-03 c++

🌸 MFC進度條控件 | Progress Control

1。新建MFC項目(基于對話框、靜態庫)
2。添加控件,刪除初始的3個多余控件
加1個progress control,修改其marquee為true,添加變量:變量名為test_progress。
在這里插入圖片描述
加2個按鈕,修改caption為START,STOP。雙擊按鈕添加程序(或者右鍵START按鈕,添加事件處理程序)
在這里插入圖片描述

按鈕控件可以接收的消息類型包括:
在這里插入圖片描述
? BN_CLICKED 當用戶點擊按鈕時發送的消息,單擊。
? BN_DUBLECLICKED 當用戶點擊按鈕時發送的消息,雙擊。
? BN_KILLFOCUS 按鈕失去了輸入焦點。
? BN_SETFOCUS 鈕獲得輸入焦點。
? BCN_DROPDOWN
在這里插入圖片描述
? BCN_HOTITEMCHANGE 高亮條目被改變。當鼠標進入或離開此按鈕空間區域時發生該事件消息。
? NM_GETCUSTOMSFLITRECT
? NM_CUSTOMDRAW
? NM_THEMECHANCED 主題被改變。

3。添加代碼

雙擊按鈕1(按鈕1 start,2 stop),添加代碼:

void CMFCApplication1Dlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知處理程序代碼test_progress.ShowWindow(true);/*進度條的可見性true*///test_progress.ModifyStyle(NULL, WS_VISIBLE);
}

同理添加按鈕2的代碼

void CMFCApplication1Dlg::OnBnClickedButton2()
{// TODO: 在此添加控件通知處理程序代碼test_progress.ShowWindow(false);/*進度條的可見性false*///test_progress.ShowWindow(true);/*進度條可見*/test_progress.ModifyStyle(WS_VISIBLE, NULL);
}

進度條的代碼

BOOL CMFCApplication9Dlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 將“關于...”菜單項添加到系統菜單中。/*...*/// TODO: 在此添加額外的初始化代碼test_progress.SetMarquee(true, 1000);//設置進度條的速度,數值越大移動越慢return TRUE;  // 除非將焦點設置到控件,否則返回 TRUE
}

在這里插入圖片描述

4。運行
運行結果:
在這里插入圖片描述
在這里插入圖片描述


🌸 MFC選擇框控件 | Check Box

其他同上,加一個check box控件,修改caption為顯示進度條
雙擊check box,添加代碼

void CMFCApplication2Dlg::OnBnClickedCheck1()
{// TODO: 在此添加控件通知處理程序代碼BOOL bChecked = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck(); //把復選框選中狀態傳遞給bCheckedif (bChecked) //復選框被選中test_progress.ModifyStyle(NULL, WS_VISIBLE);//進度條可見else //復選框未被選中test_progress.ModifyStyle(WS_VISIBLE, NULL);//進度條不可見Invalidate(); //重繪窗口
}

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

🌸 MFC滑動塊控件 | Slider Control

1。新建MFC項目(基于對話框、靜態庫)
2。添加控件,刪除初始的3個多余控件
加1個static text
加1個滑動塊slider control,添加變量test_slider
3。雙擊滑塊添加代碼

void CMFCApplication7Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼int pos = test_slider.GetPos();//獲取當前的位置CString cstr;cstr.Format(_T("%d"), pos);//轉換為字符串SetDlgItemText(IDC_STATIC, cstr);//設置靜態文本框顯示的內容*pResult = 0;
}
// CMFCApplication7Dlg 消息處理程序BOOL CMFCApplication7Dlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 將“關于...”菜單項添加到系統菜單中。/*....*/// TODO: 在此添加額外的初始化代碼test_slider.SetRange(0, 10);/*滑動塊的范圍*/test_slider.SetPos(5);//設置當前的位置test_slider.SetLineSize(1);//設置使用上下左右鍵來控制滑塊,并設置滑動單位為1test_slider.SetPageSize(2);//設置使用pageup和pagedown鍵來控制滑塊,并設置滑動單位為2return TRUE;  // 除非將焦點設置到控件,否則返回 TRUE
}

4。運行
運行結果:
在這里插入圖片描述


? MFC滑動塊控件 | 調色 eg

1。新建MFC項目(基于對話框、靜態庫)
2。添加控件,刪除初始的3個多余控件
加4個edit control,添加變量test_Rvalue、test_Gvalue、test_Bvalue、test_color
加3個滑動塊slider control,添加變量test_R、test_G、test_B
在這里插入圖片描述
3。OnInitDialog()添加代碼

// TODO: 在此添加額外的初始化代碼test_R.SetRange(0, 255);test_G.SetRange(0, 255);test_B.SetRange(0, 255);test_color = RGB(0, 0, 0);

雙擊滑塊1添加代碼

void CMFCApplication10Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼UpdateData(TRUE);test_Rvalue = test_R.GetPos();CString cstr;cstr.Format(_T("%d"), test_Rvalue);//轉換為字符串SetDlgItemText(IDC_EDIT1, cstr);//設置靜態文本框顯示的內容COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());CString colorstr;colorstr.Format(_T("%d"), test_color1);//轉換為字符串SetDlgItemText(IDC_EDIT4, colorstr);//設置靜態文本框顯示的內容*pResult = 0;
}

在這里插入圖片描述


2、3同理

void CMFCApplication9Dlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼//UpdateData(TRUE);test_Rvalue = test_R.GetPos();CString cstr;cstr.Format(_T("%d"), test_Rvalue);//轉換為字符串SetDlgItemText(IDC_EDIT1, cstr);//設置靜態文本框顯示的內容COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());CString colorstr;colorstr.Format(_T("%d"), test_color1);//轉換為字符串SetDlgItemText(IDC_EDIT4, colorstr);//設置靜態文本框顯示的內容*pResult = 0;
}void CMFCApplication9Dlg::OnNMCustomdrawSlider2(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼//UpdateData(TRUE);test_Gvalue = test_G.GetPos();CString cstr;cstr.Format(_T("%d"), test_Gvalue);//轉換為字符串SetDlgItemText(IDC_EDIT2, cstr);//設置靜態文本框顯示的內容COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());CString colorstr;colorstr.Format(_T("%d"), test_color1);//轉換為字符串SetDlgItemText(IDC_EDIT4, colorstr);//設置靜態文本框顯示的內容*pResult = 0;
}void CMFCApplication9Dlg::OnNMCustomdrawSlider3(NMHDR *pNMHDR, LRESULT *pResult)
{LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);// TODO: 在此添加控件通知處理程序代碼//UpdateData(TRUE);test_Bvalue = test_B.GetPos();CString cstr;cstr.Format(_T("%d"), test_Bvalue);//轉換為字符串SetDlgItemText(IDC_EDIT3, cstr);//設置靜態文本框顯示的內容COLORREF test_color1 = RGB(test_R.GetPos(), test_G.GetPos(), test_B.GetPos());CString colorstr;colorstr.Format(_T("%d"), test_color1);//轉換為字符串SetDlgItemText(IDC_EDIT4, colorstr);//設置靜態文本框顯示的內容*pResult = 0;
}

4。運行
運行結果:
在這里插入圖片描述


🌸 MFC進度條控件 | 定時器控制進度

1。新建MFC項目(基于對話框、靜態庫)
2。添加控件,刪除初始的3個多余控件
加1個progress control,修改其marquee為true,添加變量:變量名為test_progress。
加2個按鈕,修改caption為START,STOP。

3。添加代碼
在這里插入圖片描述
右鍵Dlg — 屬性 — 消息 — VM_TIMER — ADD OnTimer

自動在類的消息映射表中添加了消息映射:
在這里插入圖片描述
與一個剛新建的mfc項目的MESSAGE MAP對比:
剛新建的mfc項目的MESSAGE MAP

在打開的函數中添加代碼:

void CMFCApplication13Dlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息處理程序代碼和/或調用默認值switch (nIDEvent){case 1:if (test_progress.GetPos() < 100){test_progress.SetPos(test_progress.GetPos() + 1);}else {test_progress.SetPos(0);}break;default:break;}CDialogEx::OnTimer(nIDEvent);
}

雙擊按鈕1(按鈕1 start,2 stop),添加代碼:

void CMFCApplication13Dlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知處理程序代碼SetTimer(1, 1000, NULL);//第一個參數可以自己設置是定時器的標號,第二個是定時時間(ms)。啟動定時器1,每隔1s刷新一次
}

同理添加按鈕2的代碼

void CMFCApplication13Dlg::OnBnClickedButton2()
{// TODO: 在此添加控件通知處理程序代碼KillTimer(1); //關定時器1
}

4。運行
運行結果:
在這里插入圖片描述
按停止后再次按開始按鈕,進度條從停止的地方再次開始前移。


MFC進度條控件 | 線程控制進度 …

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

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

相關文章

Angular基礎---HelloWorld---Day1

文章目錄 1. 創建Angular 項目2.對Angular架構的最基本了解3.創建并引用新的組件&#xff08;component&#xff09;4.對Angular架構新的認識&#xff08;多組件&#xff09;5.組件中業務邏輯文件的編輯&#xff08;ts文件&#xff09;6.標簽中屬性的綁定(1) ID的綁定(2) class…

String和String Builder

String和StringBuilder的區別 String類 String類代表字符串。java程序中所有字符串文字&#xff08;例如“abc”&#xff09;都被實現為此類的實例。 String類源碼是用final修飾的&#xff0c;它們的值在創建后不能被更改。字符串緩沖區支持可變字符串。 String對象是不可變…

STM32 (2)

1.stm32編程模型 將C語言程序燒錄到芯片中會存儲在單片機的flsah存儲器中&#xff0c;給芯片上電后&#xff0c;Flash中的程序會逐條進入到CPU中去執行&#xff0c;進而CPU去控制各種模塊&#xff08;即外設&#xff09;去實現各種功能。 2.寄存器和寄存器編程 CPU通過控制其…

Apache POI的簡單介紹與應用

介紹 Apache POI 是一個處理Miscrosoft Office各種文件格式的開源項目。我們可以使用 POI 在 Java 程序中對Miscrosoft Office各種文件進行讀寫操作。PS&#xff1a; 一般情況下&#xff0c;POI 都是用于操作 Excel 文件&#xff0c;如圖&#xff1a; Apache POI 的應用場景&…

SQL無列名注入

SQL無列名注入 ? 前段時間&#xff0c;隊里某位大佬發了一個關于sql注入無列名的文章&#xff0c;感覺好像很有用&#xff0c;特地研究下。 關于 information_schema 數據庫&#xff1a; ? 對于這一個庫&#xff0c;我所知曉的內容并不多&#xff0c;并且之前總結SQL注入的…

設計模式-橋接模式實踐案例

橋接模式&#xff08;Bridge Pattern&#xff09;是一種結構型設計模式&#xff0c;用于將抽象與實現分離&#xff0c;使它們可以獨立地變化。這種模式通過提供一個橋接結構&#xff0c;可以將實現接口的實現部分和抽象層中可變化的部分分離開來。 以下是一個使用 Java 實現橋…

【數據結構】_包裝類與泛型

目錄 1. 包裝類 1.1 基本數據類型和對應的包裝類 1.2 &#xff08;自動&#xff09;裝箱和&#xff08;自動&#xff09;拆箱 1.2.1 裝箱與拆箱 1.2.2 自動&#xff08;顯式&#xff09;裝箱與自動&#xff08;顯式&#xff09;拆箱 1.3 valueOf()方法 2. 泛型類 2.1 泛…

【深度學習筆記】計算機視覺——目標檢測和邊界框

目標檢測和邊界框 前面的章節&#xff08;例如 sec_alexnet— sec_googlenet&#xff09;介紹了各種圖像分類模型。 在圖像分類任務中&#xff0c;我們假設圖像中只有一個主要物體對象&#xff0c;我們只關注如何識別其類別。 然而&#xff0c;很多時候圖像里有多個我們感興趣…

某大型制造企業數字化轉型規劃方案(附下載)

目錄 一、項目背景和目標 二、業務現狀 1. 總體應用現狀 2. 各模塊業務問題 2.1 設計 2.2 仿真 2.3 制造 2.4 服務 2.5 管理 三、業務需求及預期效果 1. 總體業務需求 2. 各模塊業務需求 2.1 設計 2.2 仿真 2.3 制造 2.4 服務 2.5 管理 四、…

在vue中對keep-alive的理解,它是如何實現的,具體緩存的是什么?

對keep-alive的理解&#xff0c;它是如何實現的&#xff0c;具體緩存的是什么&#xff1f; &#xff08;1&#xff09;keep-alive有以下三個屬性&#xff1a;注意&#xff1a;keep-alive 包裹動態組件時&#xff0c;會緩存不活動的組件實例。主要流程 &#xff08;2&#xff09…

數字化轉型導師堅鵬:證券公司數字化營銷

證券公司數字化營銷 ——借力數字化技術實現零售業務的批量化、精準化、場景化、智能化營銷 課程背景&#xff1a; 很多證券公司存在以下問題&#xff1a; 不知道如何提升證券公司數字化營銷能力&#xff1f; 不知道證券公司如何開展數字化營銷工作&#xff1f; 不知道…

胎神游戲集第二期

延續上一期 一、海島奇胎 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> using namespace std; typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD); PROCSETCONSOLEFONT SetCons…

Linux 安裝pip和換源

一 配置文檔 Linux和macOS&#xff1a; 全局配置&#xff1a;/etc/pip.conf 用戶級配置&#xff1a;~/.pip/pip.conf 或 ~/.config/pip/pip.conf 二 下載 和 安裝 # pip 安裝 wget https://bootstrap.pypa.io/get-pip.py python get-pip.py 三 查看和升級 pip -Vpython -m…

GO語言學習筆記(與Java的比較學習)(十一)

協程與通道 什么是協程 一個應用程序是運行在機器上的一個進程&#xff1b;進程是一個運行在自己內存地址空間里的獨立執行體。一個進程由一個或多個操作系統線程組成&#xff0c;這些線程其實是共享同一個內存地址空間的一起工作的執行體。 并行是一種通過使用多處理器以提…

Java虛擬機 - JVM

JVM的內存區域劃分 JVM它其實也是一個進程,進程運行的過程中,會從操作系統中申請一些資源.內存就是其中的一種.這些內存就支撐了java程序的運行.JVM從系統中申請的一大塊內存,會根據實際情況和使用用途來劃分出不同的空間,這個就是區域劃分.它一般分為 堆區, 棧區, 程序計數器…

springboot240基于Spring boot的名城小區物業管理系統

基于Spring boot的名城小區物業管理系統的設計與實現 摘要 當下&#xff0c;正處于信息化的時代&#xff0c;許多行業順應時代的變化&#xff0c;結合使用計算機技術向數字化、信息化建設邁進。以前相關行業對于物業信息的管理和控制&#xff0c;采用人工登記的方式保存相關數…

InnoDB存儲引擎對MVCC的實現

MVCC MVCC的目的 在搞清楚MVCC之前,我們要搞懂一個問題,MVCC到底解決的是什么問題? 我用一句話概括,那就是為了解決讀-寫可以一起的問題! 在我們的印象里,InnoDB可以讀讀并發,不能讀寫并發,或者寫寫并發 這是很正常的想法,因為如果讀寫并發的化,會有并發問題 而對于寫寫…

帶壓縮路徑的并查集

find帶壓縮路徑的并查集 int fa[]; void init(int _size) {for(int i0;i<_size;i){fa[i] i;} } int find(int aim) {int cur aim;while (fa[aim] ! aim){aim fa[aim];}while (fa[cur] ! cur){int tmp cur;cur fa[cur];fa[tmp] aim;}return aim; } void join(int a,in…

構建安全的REST API:OAuth2和JWT實踐

引言 大家好&#xff0c;我是小黑&#xff0c;小黑在這里跟咱們聊聊&#xff0c;為什么REST API這么重要&#xff0c;同時&#xff0c;為何OAuth2和JWT在構建安全的REST API中扮演著不可或缺的角色。 想象一下&#xff0c;咱們每天都在使用的社交媒體、在線購物、銀行服務等等…

file-upload-download

方式一 情況1&#xff1a; PostMapping("/download1")public ResponseEntity<byte[]> download1() throws Exception {// 下載文件目錄位置FileInputStream fis new FileInputStream("C:\\Users\\wsd\\Pictures\\susu.jpg");// 一次讀取bytes.leng…