日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

用MFC制作程序启动logo

發(fā)布時(shí)間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用MFC制作程序启动logo 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

完了,這次土鱉了,介紹個(gè)非常過(guò)時(shí)的東西,其實(shí)就是自己收藏一下,怕以后想用的時(shí)候自己忘了。

直接進(jìn)入正題,首先用ps等工具做一個(gè)自己喜歡的程序啟動(dòng)的logo位圖,我這里制作的logo大小為500*313,比例為黃金比例,看上去很舒服。

新建mfc工程,把制作好的logo位圖添加的資源中去,資源ID號(hào)設(shè)置為IDB_SPLASH

新建類(lèi)CSplashWnd,

[cpp]?view plain?copy
  • #pragma?once??
  • #include?"afxwin.h"??
  • ??
  • class?CSplashWnd?:??
  • ????public?CWnd??
  • {??
  • public:??
  • ????CSplashWnd(void);??
  • ????~CSplashWnd(void);??
  • ????CBitmap?m_bitmap;??
  • ????static?void?ShowSplashScreen(CWnd*?pParentWnd?=?NULL);??
  • protected:??
  • ????BOOL?Create(CWnd*?pParentWnd?=?NULL);?????
  • ????static?CSplashWnd*?c_pSplashWnd;??
  • public:??
  • ????DECLARE_MESSAGE_MAP()??
  • ????afx_msg?int?OnCreate(LPCREATESTRUCT?lpCreateStruct);??
  • ????afx_msg?void?OnPaint();??
  • ????afx_msg?void?OnTimer(UINT_PTR?nIDEvent);??
  • };??

  • 為各成員函數(shù)添加代碼:

    [cpp]?view plain?copy
  • #include?"StdAfx.h"??
  • #include?"SplashWnd.h"??
  • #include?"resource.h"??
  • ??
  • CSplashWnd*?CSplashWnd::c_pSplashWnd;??
  • ??
  • BEGIN_MESSAGE_MAP(CSplashWnd,?CWnd)??
  • ????ON_WM_CREATE()??
  • ????ON_WM_PAINT()??
  • ????ON_WM_TIMER()??
  • END_MESSAGE_MAP()??
  • ??
  • CSplashWnd::CSplashWnd(void)??
  • /*:?c_pSplashWnd(NULL)*/??
  • {??
  • }??
  • ??
  • CSplashWnd::~CSplashWnd(void)??
  • {??
  • }??
  • ??
  • void?CSplashWnd::ShowSplashScreen(CWnd*?pParentWnd)??
  • {??
  • ????c_pSplashWnd?=?new?CSplashWnd;??
  • ????if?(!c_pSplashWnd->Create(pParentWnd))??
  • ????????delete?c_pSplashWnd;??
  • ????else??
  • ????????c_pSplashWnd->UpdateWindow();??
  • }??
  • ??
  • BOOL?CSplashWnd::Create(CWnd*?pParentWnd)??
  • {??
  • ????if?(!m_bitmap.LoadBitmap(IDB_SPLASH))???/*加載位圖資源,需在資源文件中添加*/??
  • ????????return?FALSE;??
  • ??
  • ????BITMAP?bm;??
  • ????m_bitmap.GetBitmap(&bm);??
  • ??
  • ????return?CreateEx(0,??
  • ????????AfxRegisterWndClass(0,?AfxGetApp()->LoadStandardCursor(IDC_ARROW)),??
  • ????????NULL,?WS_POPUP?|?WS_VISIBLE,?0,?0,?bm.bmWidth,?bm.bmHeight,?pParentWnd->GetSafeHwnd(),?NULL);??
  • ????return?0;??
  • }??
  • ??
  • int?CSplashWnd::OnCreate(LPCREATESTRUCT?lpCreateStruct)??
  • {??
  • ????if?(CWnd::OnCreate(lpCreateStruct)?==?-1)??
  • ????????return?-1;??
  • ??
  • ????//?TODO:??在此添加您專(zhuān)用的創(chuàng)建代碼??
  • ????//?Center?the?window.??
  • ????CenterWindow();??
  • ??
  • ????//?Set?a?timer?to?destroy?the?splash?screen.??
  • ????SetTimer(1,?1000,?NULL);????????????????/*設(shè)置消隱時(shí)間*/??
  • ??
  • ????return?0;??
  • }??
  • ??
  • void?CSplashWnd::OnPaint()??
  • {??
  • ????CPaintDC?dc(this);?//?device?context?for?painting??
  • ????//?TODO:?在此處添加消息處理程序代碼??
  • ????//?不為繪圖消息調(diào)用?CWnd::OnPaint()??
  • ????CDC?dcImage;??
  • ????if?(!dcImage.CreateCompatibleDC(&dc))??
  • ????????return;??
  • ??
  • ????BITMAP?bm;??
  • ????m_bitmap.GetBitmap(&bm);??
  • ??
  • ????//?Paint?the?image.??
  • ????CBitmap*?pOldBitmap?=?dcImage.SelectObject(&m_bitmap);??
  • ????dc.BitBlt(0,?0,?bm.bmWidth,?bm.bmHeight,?&dcImage,?0,?0,?SRCCOPY);??
  • ????dcImage.SelectObject(pOldBitmap);??
  • }??
  • ??
  • void?CSplashWnd::OnTimer(UINT_PTR?nIDEvent)??
  • {??
  • ????//?TODO:?在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值??
  • ????DestroyWindow();??
  • ????AfxGetMainWnd()->UpdateWindow();??
  • ??
  • ????CWnd::OnTimer(nIDEvent);??
  • }??

  • 其中消隱時(shí)間的設(shè)置為你喜歡的數(shù)值。

    接下來(lái),只需在MFC工程中的CMainFrame類(lèi)中添加函數(shù)OnCreate,并在函數(shù)定義中添加語(yǔ)句CSplashWnd::ShowSplashScreen(this);

    [cpp]?view plain?copy
  • int?CMainFrame::OnCreate(LPCREATESTRUCT?lpCreateStruct)??
  • {??
  • ????if?(CFrameWnd::OnCreate(lpCreateStruct)?==?-1)??
  • ????????return?-1;??
  • ??
  • ????//?TODO:??在此添加您專(zhuān)用的創(chuàng)建代碼??
  • ????CSplashWnd::ShowSplashScreen(this);??
  • ??
  • ????return?0;??
  • }??

  • 好了,你的程序啟動(dòng)logo做好了,編譯運(yùn)行吧,少年!~~


    from:?http://blog.csdn.net/yang_xian521/article/details/7322619

    總結(jié)

    以上是生活随笔為你收集整理的用MFC制作程序启动logo的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。