程式中有多個動態按鈕,因為不會實作給按鈕逐個逐個添加位圖,
因此打算在創建動態按鈕時,統一給動態按鈕添加位圖,可是這樣問題又出現了。
按鈕文本被覆寫了,按鈕位圖也一樣,無法區分各個按鈕。
所以想問問怎么在位圖按鈕上顯示文本
MyButton* btn = new MyButton();
btn->Create(pStr, dwStyle, CRect(left, top, right, bottom), this->GetParent(), IDC_D_BTN + index);
btn->LoadBitmaps(IDB_BITMAP_yp_c, IDB_BITMAP_yp_d, IDB_BITMAP_yp_x, IDB_BITMAP_yp_c);
或者有什么其他好的思路也可以,求大佬指教
uj5u.com熱心網友回復:
或者說怎么才能不使用控制元件變數,使用控制元件ID添加位圖uj5u.com熱心網友回復:
可以做圖片的時候,把文字直接畫到底圖上,很多現實中的工程就是這么做的;你也可以找個第三方的文字圖片類,一搜一大把:
https://www.codeproject.com/Articles/3873/Image-Button-Control
uj5u.com熱心網友回復:
你說的這個我想到了,但是,因為我是統一添加的位圖,導致所以按鈕都是同一個圖片啊,無法區分啊uj5u.com熱心網友回復:
從 CBitmapButton 派生新類 處理
//MyBitmapButton.h
#pragma once
class CMyBitmapButton : public CBitmapButton
{
DECLARE_DYNAMIC(CMyBitmapButton)
public:
CMyBitmapButton();
virtual ~CMyBitmapButton();
protected:
DECLARE_MESSAGE_MAP()
virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
};
// MyBitmapButton.cpp
#include "stdafx.h"
#include "MyBitmapButton.h"
IMPLEMENT_DYNAMIC(CMyBitmapButton, CBitmapButton)
CMyBitmapButton::CMyBitmapButton()
{
}
CMyBitmapButton::~CMyBitmapButton()
{
}
BEGIN_MESSAGE_MAP(CMyBitmapButton, CBitmapButton)
END_MESSAGE_MAP()
// CMyBitmapButton 訊息處理程式
void CMyBitmapButton::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
//用父類默認的操作繪制位圖
__super::DrawItem(lpDIS);
//獲取視窗需要顯示的字串
CString szText;
GetWindowText(szText);
if(! szText.IsEmpty())
{
//按不同的狀態取不同的字體顏色
COLORREF txtColor = GetSysColor(COLOR_WINDOWTEXT);
UINT state = lpDIS->itemState;
if (state & ODS_SELECTED)
txtColor = RGB(0, 0, 255);
else if (state & ODS_FOCUS)
txtColor = RGB(200, 100, 0);
else if (state & ODS_DISABLED)
txtColor = RGB(100, 100, 100);
//CDC句柄
CDC* pDC = CDC::FromHandle(lpDIS->hDC);
//保存DC
int nSaveDC = pDC->SaveDC();
//繪制區域
CRect rect(lpDIS->rcItem);
//設定字體顏色
pDC->SetTextColor(txtColor);
//繪制字體
pDC->DrawText(szText, &rect, DT_CENTER|DT_VCENTER);
//恢復DC
pDC->RestoreDC(nSaveDC);
}
}
uj5u.com熱心網友回復:
不是給了你一個類嗎?按鈕可以添加文字,這種類很多人寫過了。你的“不同按鈕要用同樣圖片“的需求也不太合理,正常的情況下你動態創建按鈕也會由不同的ID、不同的功能、不一樣的圖片。
uj5u.com熱心網友回復:
我也想給各個按鈕添加不同的圖片,但是不會弄轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/245383.html
標籤:界面
