1. 程式人生 > >MFC中靜態文字框貼圖處理

MFC中靜態文字框貼圖處理

1.靜態文字控制元件貼png圖片

    在建立控制元件時新增SS_BITMAP屬性SS_NOTIFY

    CImage m_Icon.Load(wstring(L"tupian.png").c_str());
    RECT rect;
    HDC pDC = ::GetWindowDC(pImageStatic->m_hWnd);
    ::GetWindowRect(pImageStatic->m_hWnd,&rect);
    m_Icon.TransparentBlt(pDC,rect,RGB(255,255,255));
    pImageStatic->SetBitmap(m_Icon);
    pImageStatic->ShowWindow(SW_SHOW);
    ::ReleaseDC(pImageStatic->m_hWnd,pDC);


2.靜態文字控制元件貼bmp圖片

    在建立控制元件時新增SS_BITMAP與SS_NOTIFY屬性

    HBITMAP m_Icon = (HBITMAP)::LoadImage( NULL,L"tupian.bmp").c_str(), IMAGE_BITMAP, 21,21, LR_LOADFROMFILE);
    m_pImageStatic->SetBitmap(m_Icon);
    m_pImageStatic->ShowWindow(SW_SHOW);

3.靜態文字控制元件貼ico圖片

    在建立控制元件時新增SS_ICON與SS_CENTERIMAGE屬性
    HICON m_Icon = (HICON)::LoadImage( NULL,(L"tupian.ico").c_str(), IMAGE_ICON, 16,16, LR_LOADFROMFILE);

    m_pImageStatic->SetIcon(m_Icon);

 4.設定對話方塊中控制元件顏色和背景

    HBRUSH CDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
        switch(pWnd->GetDlgCtrlID())
       {
           case ID_STATUS_COLOR:
          {
              pDC->SetBkMode(TRANSPARENT);     //設定透明
              pDC->SetTextColor(RGB(150,150,150));    //設定字型
              pDC->SetBkColor(RGB(255,255, 255));    //設定背景色
              break;
         }
        default:
            break;
       }
   
       return (HBRUSH)GetStockObject(HOLLOW_BRUSH);
    }

5.過濾對話方塊中的背景顏色

    SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
    GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)|0x80000);

    HINSTANCE hInst = LoadLibrary(L"User32.DLL");
    if(hInst)
    {           
          typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);         
          MYFUNC fun = NULL;
          //取得SetLayeredWindowAttributes函式指標    
         fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
         if(fun)
        {
            fun(this->GetSafeHwnd(),RGB(100,100,100),10,1);     //100,100,100 是要過濾的顏色
        }
 
       FreeLibrary(hInst);
   }

 6.更新對話方塊的主背景bmp圖片

    BOOL CDlg::OnEraseBkgnd(CDC* pDC)
    {
        CRect rect; 
        CDC   memDC; 
        CBitmap* pOldMemBmp = NULL;

        GetWindowRect(&rect); 

        CBitmap* pBitmap = NULL;
        CImage image;

        image.Load(m_ImagePath.c_str());   //更新背景只需要更新此處的背景圖片的路徑

        HBITMAP hbmp = image.Detach();
        pBitmap = CBitmap::FromHandle(hbmp);

        memDC.CreateCompatibleDC(pDC); 
        pOldMemBmp = memDC.SelectObject(pBitmap); 
        pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0, SRCCOPY); 
        if(pOldMemBmp)
        {
            memDC.SelectObject(pOldMemBmp);
        }

        image.Destroy();
        DeleteObject(pBitmap);
        DeleteObject(hbmp);
        memDC.DeleteDC();
        return   TRUE;

     }

相關推薦

MFC靜態文字處理

1.靜態文字控制元件貼png圖片     在建立控制元件時新增SS_BITMAP屬性SS_NOTIFY     CImage m_Icon.Load(wstring(L"tupian.png").c_str());     RECT rect;     HDC pDC =

MFC--設定靜態文字文字的字型、大小和顏色

1、放置Static控制元件 2、控制元件關聯控制變數,m_static(不是Value,是Control),注:先改變下ID,就可以正常關聯變數 3、宣告變數 CFont m_Font; 4、在初始化對話方塊中設定如下程式碼 //設定St

MFC(4):靜態文字使用及在靜態文字顯示圖片

=========================靜態文字框==================== 類似的QT中的Qlabel 選中static text,由於其預設ID為IDC_STATIC,因此要,右鍵-->屬性-->修改其ID,右鍵-->新增變數(修改訪問屬性、設定變數

VS2010 MFC關於修改靜態文字的顏色大小背景

假設有一個靜態文字框控制元件,其ID為:IDC_STATIC_XSDJ,且關聯一個control類的CStatic型別的變數m_static_xsdj。 設定字型時自然要用到CFont類,下面介紹兩種方法,兩種方法都要先在標頭檔案中新增一個變數CFont newFont,切記要宣告稱類的

Unity處理

專案逼近後期,效能問題尤為突出。卡頓、幀數很低、記憶體過高等問題一一擺在面前。 就先從記憶體說起吧。 影響遊戲記憶體的因數有很多:比如說紋理、網格、動畫、音訊、Mono堆記憶體等。 今天咱們主要研究一

VC2005 MFC靜態文字背景色設定

最近在需要用MFC做一個上位機,第一次接觸這個東西我想把我在這過程中遇到的問題寫下來,希望也能幫助遇到同樣問題的朋友。有什麼地方不對的請各位指正。 我在利用MFC做登入介面時出現了一個問題。我發現如果直接有工具箱拖放一個靜態文字到程式視窗時文字框的背景顏色是灰色,字型為黑色

MFC介面程式設計基礎(11):靜態文字、命令按鈕和編輯

上一篇:MFC介面程式設計基礎(10):基於對話方塊的MFC應用程式 下一篇:MFC介面程式設計基礎(12):組框、單選按鈕和複選框 靜態文字框、命令按鈕和編輯框是Windows應用程式中最基本的控制元件。靜態文字

VS2013/MFC程式設計入門之十九(常用控制元件:靜態文字

       從本節開始講解各種常用控制元件的用法。MFC中常用控制元件主要包括:靜態文字框、編輯框、單選按鈕、複選框、分組框、列表框、組合框、圖片控制元件、列表控制元件、樹形控制元件和進度條控制元件等等。本節先來講解靜態文字框的使用。        控制元件的通知訊息

MFC實現簡單的點陣顯示、處理

最近在做影象採集的工作,需要處理影象資料,所以學習了一下點陣圖顯示,而且只看了裝置相關點陣圖DDB。基本上實現了點陣圖的顯示、點陣圖資料的處理等功能。這裡就記錄一下我自己的理解,不一定全都對,僅供參考而已。 要顯示點陣圖,需要做如下工作: CStatic* pStati

MFC基本控制元件使用——靜態文字(Static)

眾所周知,在MFC應用程式中,靜態文字框的使用可以說是必不可少。但是呢,就MFC提供的Static直接使用起來還是有一些小問題的。比如說: (1)當對話方塊有背景圖片或其他顏色的時候,靜態文字框會有很難看的灰色的背景顏色,所以這裡存在一個透明的問題; (2)如何怎麼

three.js 用文字作為

閒來無事,把three.js其中有一個例子改了一下,變成從一箇中心點噴射出中文字的例子, 效果圖: 下面直接貼程式碼好了 html: <html lang="en"> <head> <title>three.js ca

Springboot靜態資源和攔截器處理

背景: 在專案中我使用了自定義的Filter 這時候過濾了很多路徑,當然對靜態資源我是直接放過去的,但是,還是出現了靜態資源沒辦法訪問到springboot預設的資料夾中得檔案   說下預設對映的資料夾有: classpath:/META-INF/resourc

VC++6.0 MFC獲取編輯內容

1、方法一:設定編輯框變數 在MFC的基本對話方塊中,建立一個編輯框控制元件,為控制元件新增一個型別為CEdit的變數 m_Edit 。 CString str; m_Edit.GetWindowText(str); 2、方法二:通過ID獲取 CString

HTML文字的null和“”的區別

   之前我也一直被這個問題所疑惑,後來我懂了,來看看我理解的對不對: 假設定義一個字串:String str; str == null,指空物件,即空指標,沒有分配記憶體; 而str ==“”,指空字串,是個字串但是裡面什麼度沒有,這是有分配記憶體的。    光

(四)MFC學習之雙緩衝

何為雙緩衝? 雙緩衝自然是相對一般的單緩衝而言的, 單緩衝 那麼先從單緩衝開始吧,先上程式碼((二)MFC學習之貼圖 中使用到) :(程式碼片段) 初始化: CClientDC dc(this); mdc = new CDC; //建立適配dc mdc-

在OpenGL進行多紋理

    int Status=FALSE;        // 狀態指示器     AUX_RGBImageRec *TextureImage[6];      // 建立紋理的儲存空間     memset(TextureImage,0,sizeof(void *)*6);     // 將指標設為 NUL

MFC的EDIT改變一下背景顏色

這兩天需要給MFC中的EDIT框改變一下背景顏色,而且由於框比較多,且每次需要變色的框也是隨機的,但是個數是確定的。在網上搜了好多,下面這個是介紹的比較清楚,而且可以用的一種方法。 由於本人用的vs2008,在對話方塊上右擊沒有新增事件處理函式一項,且對MFC也不是特別熟悉,所以開始只是在對

VC 設定靜態文字的背景色(轉)

填充靜態文字框的顏色: 1、在對話方塊中新增一個靜態文字框,設定其id為IDC_STATIC 2、獲得靜態文字框的控制代碼 HWND h_static = GetDlgItem(IDC_STATIC)->m_hWnd; 3、獲得靜態文字框的DC控制代碼 HDC hdc = ::GetDC(h_sta

mfc靜態函式呼叫非靜態成員

靜態函式中呼叫非靜態,首先要獲取到對話方塊指標,最簡單最不推薦的方法是定義個全域性變數儲存對話方塊指標,通用性最強的是把指標作為靜態函式的引數傳進來。取巧的方法,如果對話方塊是主對話方塊可以AfxGetApp->GetMainWnd獲取指標。如果靜態函式不是執行在主執行緒,不能直接呼叫Upda

VC 設定靜態文字透明背景

HBRUSH CAddGoodsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);  // TODO: