首頁 資料庫 mysql教程 MFC SDI单文档 状态栏 进度条 启动画面编程技巧 ...

MFC SDI单文档 状态栏 进度条 启动画面编程技巧 ...

Jun 07, 2016 pm 03:35 PM
mfc 啟動 文件 狀態 螢幕 進度

状态栏的编程离不开 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   就完成了启动画面的添加  

对于启动时间  画面 我们可以自行在生成的类中设置
            

                          

 

 


            

 

 

 

 

 


 

 

 

 

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
記憶體或磁碟空間不足,無法重新分頁或列印此文件Word錯誤 記憶體或磁碟空間不足,無法重新分頁或列印此文件Word錯誤 Feb 19, 2024 pm 07:15 PM

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

如何解決應用程式啟動錯誤0xc000012d問題 如何解決應用程式啟動錯誤0xc000012d問題 Jan 02, 2024 pm 12:53 PM

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

處於待機狀態的連線狀態:已斷開,原因:NIC合規性 處於待機狀態的連線狀態:已斷開,原因:NIC合規性 Feb 19, 2024 pm 03:15 PM

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

wps不能啟動此物件的來源應用程式怎麼辦? wps不能啟動此物件的來源應用程式怎麼辦? Mar 13, 2024 pm 09:13 PM

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

如何對Word文檔加紅線 如何對Word文檔加紅線 Mar 01, 2024 am 09:40 AM

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

解決電腦提示'reboot and select proper boot device'的方法 解決電腦提示'reboot and select proper boot device'的方法 Jan 15, 2024 pm 02:00 PM

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

Ubuntu啟動黑屏問題的有效解決方案與技巧 Ubuntu啟動黑屏問題的有效解決方案與技巧 Dec 29, 2023 am 10:30 AM

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

無法開啟word文件中的超鏈接 無法開啟word文件中的超鏈接 Feb 18, 2024 pm 06:10 PM

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

See all articles