MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果
更新時(shí)間:2020年05月30日 14:07:37 作者:Been_Stone
這篇文章主要為大家詳細(xì)介紹了MFC對(duì)話框中實(shí)現(xiàn)走馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了MFC對(duì)話框中實(shí)現(xiàn)走馬燈,文字信息循環(huán)播放顯示效果,供大家參考,具體內(nèi)容如下
CMFCDlg.h 對(duì)話框
// CMFCDlg.h 對(duì)話框 class CMFCDlg : public CDialogEx { // 構(gòu)造 public: CMFCDlg(CWnd* pParent = nullptr); // 標(biāo)準(zhǔn)構(gòu)造函數(shù) // 對(duì)話框數(shù)據(jù) #ifdef AFX_DESIGN_TIME enum { IDD = IDD_DLG_M }; #endif // 實(shí)現(xiàn) protected: HICON m_hIcon; int m_nLeft; CString m_szText; virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 生成的消息映射函數(shù) virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnTimer(UINT_PTR nIDEvent); };
MFCDlg.cpp: 實(shí)現(xiàn)文件
// MFCDlg.cpp: 實(shí)現(xiàn)文件 #include "pch.h" #include "framework.h" #include "MFC.h" #include "MFCDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMFCDlg 對(duì)話框 CMFCDlg::CMFCDlg(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DLG_M, pParent) { m_szText = _T("這是一條循環(huán)播放的信息 "); m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFCDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMFCDlg, CDialogEx) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_TIMER() END_MESSAGE_MAP() // CMFCDlg 消息處理程序 BOOL CMFCDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 設(shè)置此對(duì)話框的圖標(biāo)。 當(dāng)應(yīng)用程序主窗口不是對(duì)話框時(shí),框架將自動(dòng) // 執(zhí)行此操作 SetIcon(m_hIcon, TRUE); // 設(shè)置大圖標(biāo) SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo) CRect rect; GetClientRect(rect); m_nLeft = rect.right; SetTimer(1, 60, NULL); return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE } // 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼 // 來(lái)繪制該圖標(biāo)。 對(duì)于使用文檔/視圖模型的 MFC 應(yīng)用程序, // 這將由框架自動(dòng)完成。 void CMFCDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于繪制的設(shè)備上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使圖標(biāo)在工作區(qū)矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 繪制圖標(biāo) dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //當(dāng)用戶拖動(dòng)最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo) //顯示。 HCURSOR CMFCDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CMFCDlg::OnTimer(UINT_PTR nIDEvent) { CRect rt; GetClientRect(rt); CClientDC dc(this); dc.SetBkColor(GetSysColor(COLOR_3DFACE)); dc.SelectObject(GetFont()); CSize size = dc.GetOutputTextExtent(m_szText); dc.TextOut(m_nLeft, rt.Height() - size.cy, m_szText); m_nLeft -= 5; if (m_nLeft + size.cx <= 0) m_nLeft = rt.right; CDialogEx::OnTimer(nIDEvent); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++11?關(guān)鍵字?const?使用小結(jié)
const大致意思是“我承諾不改變這個(gè)值”。主要用于說(shuō)明接口,這樣在把變量傳入函數(shù)時(shí)就不必?fù)?dān)心變量會(huì)在函數(shù)內(nèi)被改變,本文給大家介紹C++11?關(guān)鍵字?const?使用小結(jié),感興趣的朋友一起看看吧2021-12-12C++?OpenCV實(shí)戰(zhàn)之零部件的自動(dòng)光學(xué)檢測(cè)
這篇文章主要為大家介紹一個(gè)C++?OpenCV的實(shí)戰(zhàn)——零部件的自動(dòng)光學(xué)檢測(cè),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-09-09C語(yǔ)言中的數(shù)組和指針匯編代碼分析實(shí)例
這篇文章主要介紹了C語(yǔ)言中的數(shù)組和指針匯編代碼分析實(shí)例,本文用一則C語(yǔ)言例子來(lái)得到對(duì)應(yīng)的匯編代碼,并一一注解每句匯編代碼的含義,需要的朋友可以參考下2015-06-06C語(yǔ)言進(jìn)階教程之循環(huán)語(yǔ)句缺陷詳析
循環(huán)語(yǔ)句是用于重復(fù)執(zhí)行某條語(yǔ)句(循環(huán)體)的語(yǔ)句,它包含一個(gè)控制表達(dá)式,每循環(huán)執(zhí)行一次都要對(duì)控制表達(dá)式進(jìn)行判斷,如果表達(dá)式為真,則繼續(xù)執(zhí)行循環(huán),這篇文章主要給大家介紹了關(guān)于C語(yǔ)言進(jìn)階教程之循環(huán)語(yǔ)句缺陷的相關(guān)資料,需要的朋友可以參考下2021-08-08