MFC SDI单文档 状态栏 进度条 启动画面编程技巧 ...
状态栏的编程离不开 CStatusBar类 CProgressCtrl 进 度条相关的控件 下面我们介绍状态栏 编程技巧 以及在状态栏添加进度条 应用程序的启动界面 状态栏的添加步骤 SDI 单文档中 下面是MFC给的 状态栏的创建步骤 Construct the CStatusBar object. 构造一个 CS
状态栏的编程离不开 CStatusBar类 CProgressCtrl 进 度条相关的控件 下面我们介绍状态栏 编程技巧 以及在状态栏添加进度条 应用程序的启动界面
状态栏的添加步骤 SDI 单文档中 下面是MFC给的 状态栏的创建步骤
Construct the CStatusBar object.
构造一个 CStatusBar对象
Call the Create (or CreateEx) function to create the status-bar window and attach it to the CStatusBar object.
调用CreateEx函数创建一个状态栏
Call SetIndicators to associate a string ID with each indicator
调用SetIndicators 为每个指示器附加一个 字符串资源ID static UINT indicators[]={
........
};
1. 下面是在框架类的处理 添加我们自己的状态栏指示器 我们可以定义自己的指示器数组
static UINT indicator[] =
{
ID_SEPARATOR, // status line indicator 最长的那个格索引为 0
ID_INDICATOR_CAPS, //每个代表一个字符串资源
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
...... //这里增加字符串资源 会反映到状态栏
};
OnCreate(LPCREATESTRUCTION lp)函数中 有如下代码
if (!m_wndStatusBar.Create(this) || //创建
!m_wndStatusBar.SetIndicators(indicator, //设置指示器的个数
sizeof(indicator)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
2.给状态栏 指定ID号的指示器 增加时间 这时候用到 CTime类 获得系统时间 下面是代码 CStatusBar m_statusBar; 在相应WM_PAINT消息相应函数 OnPaint
SetTimer(1000,1000,NULL);
捕获WM_TIMER消息 在OnTimer函数中 添加如下代码
CTime time=CTime::GetCurrentTime();// 经过静态方法返回一个CTime对象
CString str=time.Format("%H:%M:%S"); //格式化时间 到str
CClientDC dc(this); //创建一个 框架类的dc
CSize size=dc.GetTextExtent(str); //获得字符串中在屏幕上显示的尺寸
int index =m_wndStatusBar.CommandToIndex(IDS_TIMER); //通过ID获取索引
m_wndStatusBar.SetPaneInfo(index,IDS_TIMER,SBPS_NORMAL,size.cx); //设置指示器的宽度
m_wndStatusBar.SetPaneText(index,str); //设置指定索引指示器的文本
3.在状态栏的 IDS_PROGRESS上添加一个 进度条 CProgressCtrl 类 在框架类增加变量 CProgressCtrl m_progress;
在OnPaint函数 添加代码响应 WM_PAINT消息
CRect rect; //创建CRect对象
m_wndStatusBar.GetItemRect(m_wndStatusBar.CommandToIndex(IDS_PROGRESS),&rect); //获得一个指定索引的指示器的矩形区域
if(!m_progress.m_hWnd) //判断句柄是否为空
{
m_progress.Create(PBS_SMOOTH|WS_CHILD|WS_VISIBLE,rect,&m_wndStatusBar,123); //如果句柄为空那么创建进度条
}
else
{
m_progress.MoveWindow(&rect); //否则移动到当前区域
}
m_progress.SetPos(50); //设置进度条初始位置 50
在 OnTimer函数中加上 m_stausBar.StepIt();//进度条按指定步长 一秒 前进一次
4.在最长的指示器上显示 视图的X Y坐标 我们需要相应视图的 WM_MOUSEMOVE事件 并且调用 框架类的函数执行
#include "MainFrm.h"
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
CString str="";
str.Format("x=%d,y=%d",point.x,point.y);
// (((CMainFrame*)GetParent())->m_wndStatusBar).SetWindowText(str); //直接通过状态栏指针设置索引为0指示器
// (((CMainFrame*)GetParent())->m_wndStatusBar).SetPaneText(0,str); //设置按钮文本 索引为0
// ((CMainFrame*)GetParent())->SetMessageText(str);//框架类的函数 直接设置 索引为0的状态栏指示器文本
// ((CMainFrame*)GetParent())->GetMessageBar()->SetWindowText(str); //通过框架类函数获得 状态栏指针 然后调用SetWindowText设置文本
GetParent()->GetDescendantWindow(AFX_IDW_STATUS_BAR)->SetWindowText(str); //CWnd类的函数获得一个子孙窗体的指针 我们可以传递状态栏ID获得
CView::OnMouseMove(nFlags, point);
}
5.增加启动画面 我们可以利用向导增加之后 我们自行设置 启动画面的 style
project->add to project ->comments controls 添加-> vc++ components -> splash screen 就完成了启动画面的添加
对于启动时间 画面 我们可以自行在生成的类中设置

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

本文將介紹如何解決MicrosoftWord中出現的記憶體或磁碟空間不足以重新分頁或列印文件的問題。這種錯誤通常會在使用者嘗試列印Word文件時出現。如果您遇到類似的錯誤,請參考本文提供的建議來解決。記憶體或磁碟空間不足,無法重新分頁或列印此文件Word錯誤解決MicrosoftWord列印錯誤「沒有足夠記憶體或磁碟空間重新分頁或列印文件」的方法。更新MicrosoftOffice關閉佔用記憶體的應用程式更改您的預設印表機在安全模式下啟動Word重命名NorMal.dotm檔案將Word檔案儲存為另一

當小夥伴的電腦缺少一定的檔案之後就會出現應用程式無法正常啟動0xc000012d的情況,其實只要重新下載檔案並安裝就可以很好的解決了喲。應用程式無法正常啟動0xc000012d:1、首先使用者需要下載「.netframework」。 2、然後找到下載地址並將其下載到自己的電腦。 3、然後在桌面雙擊開始運作。 4.安裝完成之後傳回先前錯誤的程式位置,再次開啟程式即可。

「事件日誌訊息中的連接狀態顯示為待機狀態:已斷開連接,原因是符合NIC標準。這表示系統在待機模式下,網路介面卡(NIC)已斷開連接。雖然這通常是網路問題,但也可能由軟體和硬體衝突引起。在接下來的討論中,我們將探討如何解決這個問題。」待機連接斷開的原因是什麼? NIC合規性?如果在Windows事件檢視器中發現「ConnectivityStatusinStandby:DisConnected,Reason:NICCompliance」訊息,這表示您的NIC或網路介面控制器可能有問題。這種情況通常

wps是使用非常廣泛的辦公室軟體,包括了文件、表格和PPT,並且支援多端同步。如果在編輯wps時出現提示“無法啟動此物件的來源應用程式”,則如何解決?出現這個問題可能是因為你正在嘗試打開一個連結或文件,但是它的來源應用程式已經不存在或被刪除了。 以下是一些修復方法: 1、重新安裝WPS軟體:嘗試重裝WPSOffice來修復該問題,確保您使用的是最新版本。 2、手動更改預設程式:試著將預設程式更改為WPS,可以按右鍵單擊需要打開的文件,選擇“打開方式”,然

它是395個字,就是495個這篇文章將向您介紹如何在Word文件中加入紅線。在文件中新增紅線是指對文件進行修改,以便使用者可以清楚地查看所做的變更。這項功能在多人共同編輯一個文件時非常重要。 redline是什麼意思標示文件加紅線是指使用紅線或標註來指示文件的變更、編輯或修訂。這個術語的靈感來自於使用紅色筆在列印文件上做標記的做法。紅線批註被廣泛應用在不同場景下,如:在編輯文件時為作者、編輯和審閱人清楚地顯示建議的變更。在法律協議或合約中提出變更和修改對論文、演講等提出建設性的批評和建議。如何給W

重裝系統也未必是個萬全之策,可是重裝後發現電腦開機會顯示黑底白字,然後給出提示:rebootandselectproperbootdevice,這是怎麼回事?出現這樣的提示一般是引導出錯所致。為了幫助到了大家,為此,小編就為大家帶來了解決的方法了。電腦使用是越來越普及了而遇到電腦的故障也越來越來多,這不,最近有用戶在電腦開機時遇到顯示黑屏,並提示RebootandSelectproperBootdevice,無法正常啟動電腦系統。這是怎麼回事呢?又該怎麼去解決呢?讓用戶一頭霧水,下面,小編就來跟

解決Ubuntu啟動黑屏的實用技巧與方法引言:Ubuntu是一款廣受歡迎的Linux作業系統,但有時候在啟動過程中可能會遇到黑屏問題。這種問題可能由於多種原因引起,如顯示卡驅動問題、軟體衝突或系統錯誤等。本文將介紹一些實用的技巧和方法,幫助解決Ubuntu啟動黑屏問題,以確保系統的穩定運作。一、更新並重新安裝顯示卡驅動進入恢復模式:在啟動時按下Shift鍵,進入

近年來,隨著網路科技的不斷發展,我們的生活中離不開各種數位工具和網路。在處理文件時,特別是在寫作中,我們經常使用到word文件。然而,有時我們可能會遇到一個棘手的問題,那就是word文件中的超連結無法開啟。以下將就這個問題進行一番探討。首先,我們需要明確的是,超連結是指在word文件中新增的指向其他文件、網頁、目錄、書籤等的連結。當我們點擊這些連結時,我
