1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/int2e-ImageButton

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 11:19 b3a18c9

CImageButton

MFC/WTL CImageButton поддерживает форматы BMP, GIF, JPEG, PNG, TIFF и поддерживает высокое разрешение (DPI).

CImageButton — это кнопка управления с поддержкой отображения графики в 4 состояниях:

  • нормальное состояние;
  • состояние при наведении курсора мыши;
  • состояние нажатия кнопки мышью;
  • отключённое состояние кнопки.

Для каждого из этих состояний можно задать отдельное изображение. Поддерживаются прозрачные каналы в изображениях формата PNG.

Использование

MFC

  1. Добавьте ImageButton.h и ImageButton.cpp в проект.
  2. Включите файл заголовка ImageButton.h в класс CxxxDlg.
  3. С помощью мастера классов определите переменную типа CImageButton для идентификатора ресурса.
  4. Вызовите метод btn.SetImages() в функции OnInitDialog().

CxxxDlg.h

#pragma once

#include "ImageButton.h"

// CMFCDemoDlg диалог
class CMFCDemoDlg : public CDialogEx
{
    // ...
private:
	CImageButton m_btnTest;
};

CxxxDlg.cpp

BOOL CMFCDemoDlg::OnInitDialog()
{
	// ...
	m_btnTest.SetImages(IDB_PNG1, IDB_PNG2, IDB_PNG3, IDB_PNG4, _T("PNG"));
	m_btnTest.AutoSize();
	//...
}

WTL

  1. Добавьте файл ImageButton.h в проект.
  2. Включите заголовок ImageButton.h в класс CMainDlg.
  3. Между BEGIN_MSG_MAP(CMainDlg) и END_MSG_MAP() добавьте REFLECT_NOTIFICATIONS(), чтобы отразить сообщения WM_DRAWITEM, и затем добавьте COMMAND_HANDLER() для привязки событий кнопки.
  4. Добавьте переменную-член типа CImageButton.
  5. В функции OnInitDialog() вызовите методы btn.SubclassWindow() и btn.SetImages().

CMainDlg.h

#pragma once

#include "ImageButton.h"

class CMainDlg : public CDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>, public CMessageFilter, public CIdleHandler
{
    BEGIN_MSG_MAP(CMainDlg)
	COMMAND_HANDLER(IDC_BUTTON_TEST, BN_CLICKED, OnBnClickedButtonTest) // событие кнопки
	REFLECT_NOTIFICATIONS() // отражение сообщений WM_MEASUREITEM и WM_DRAWITEM
	END_MSG_MAP()

    //...
private:
	CImageButton m_btnTest;
};

CMainDlg.cpp

LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
	// ...
	m_btnTest.SubclassWindow(GetDlgItem(IDC_BUTTON_TEST));
	m_btnTest.SetImages(IDB_PNG1, IDB_PNG2, IDB_PNG3, IDB_PNG4, _T("PNG"));
	m_btnTest.AutoSize();
	return TRUE;
}

LRESULT CMainDlg::OnBnClickedButtonTest(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
	MessageBox(_T("Test"), _T(""), MB_OK | MB_ICONINFORMATION);
	return 0;
}

Примечание

IDB_PNG1, IDB_PNG2, IDB_PNG3 и IDB_PNG4 — это идентификаторы ресурсов. Для их импорта обратитесь к ресурсам Google или Baidu.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/int2e-ImageButton.git
git@api.gitlife.ru:oschina-mirror/int2e-ImageButton.git
oschina-mirror
int2e-ImageButton
int2e-ImageButton
master