Я использую MinGW32 с Code::Blocks IDE в Windows 10. Я пытаюсь назначить список изображений кнопке через «BUTTON_IMAGELIST», но функция «SendMessage» всегда терпит неудачу (возвращает «0»). Однако «GetLastError()» также не выдает мне ошибку. Назначение кнопки одному изображению работает, но при наличии списка изображений кнопка остается пустой. Что я здесь делаю не так?
main.cpp
#include
#include
#include
#include "resource.h"
HIMAGELIST ImageList;
LRESULT CALLBACK WindowProcedure ( HWND WindowHandle, UINT message, WPARAM wParam, LPARAM lParam )
{
switch ( message )
{
case WM_CREATE:
{
HWND ButtonOne = CreateWindowEx( 0, "BUTTON", "", BS_PUSHBUTTON | BS_BITMAP | WS_CHILD | WS_VISIBLE, 40, 10, 50, 50, WindowHandle, (HMENU)( IDC_BUTTON_ONE ), GetModuleHandle( nullptr ), nullptr );
HANDLE Image = LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( IDB_BITMAP_SQUARE ), IMAGE_BITMAP, 50, 50, LR_DEFAULTCOLOR );
ImageList = ImageList_Create( 50, 50, ILC_COLORDDB, 1, 0 );
ImageList_Add( ImageList, (HBITMAP)Image, nullptr );
RECT rect = { 0, 0, 50, 50 };
BUTTON_IMAGELIST *ButtonImageList = new BUTTON_IMAGELIST;
ButtonImageList->himl = ImageList;
ButtonImageList->margin = rect;
ButtonImageList->uAlign = BUTTON_IMAGELIST_ALIGN_CENTER;
std::cout dwSize = sizeof( INITCOMMONCONTROLSEX );
ComCon->dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx( ComCon );
HWND WindowHandle;
MSG Messages;
WNDCLASSEX WindowClass;
WindowClass.hInstance = hThisInstance;
WindowClass.lpszClassName = WindowClassName.c_str();
WindowClass.lpfnWndProc = WindowProcedure;
WindowClass.style = CS_DBLCLKS;
WindowClass.cbSize = sizeof ( WNDCLASSEX );
WindowClass.hIcon = LoadIcon ( NULL, IDI_APPLICATION );
WindowClass.hIconSm = LoadIcon ( NULL, IDI_APPLICATION );
WindowClass.hCursor = LoadCursor ( NULL, IDC_ARROW );
WindowClass.lpszMenuName = NULL;
WindowClass.cbClsExtra = 0;
WindowClass.cbWndExtra = 0;
WindowClass.hbrBackground = reinterpret_cast( COLOR_BACKGROUND );
if ( !RegisterClassEx ( &WindowClass ) )
return 0;
WindowHandle = CreateWindowEx ( 0, WindowClassName.c_str(), "Common Controls Test", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, HWND_DESKTOP, NULL, hThisInstance, NULL );
ShowWindow ( WindowHandle, nCmdShow );
UpdateWindow( WindowHandle );
while ( ( GetMessage ( &Messages, NULL, 0, 0 ) ) )
{
TranslateMessage( &Messages );
DispatchMessage( &Messages );
}
return Messages.wParam;
}
resource.rc
#include "Resource.h"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "CommonControlsTest.exe.manifest"
IDB_BITMAP_SQUARE BITMAP "Square.bmp"
resource.h
#define IDC_BUTTON_ONE 101
#define IDB_BITMAP_SQUARE 201
CommonControlsTest.exe.manifest
Your application description here.
Подробнее здесь: https://stackoverflow.com/questions/791 ... image-list
Не могу установить список изображений кнопок ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1731109441
Anonymous
Я использую MinGW32 с Code::Blocks IDE в Windows 10. Я пытаюсь назначить список изображений кнопке через «BUTTON_IMAGELIST», но функция «SendMessage» всегда терпит неудачу (возвращает «0»). Однако «GetLastError()» также не выдает мне ошибку. Назначение кнопки одному изображению работает, но при наличии списка изображений кнопка остается пустой. Что я здесь делаю не так?
main.cpp
#include
#include
#include
#include "resource.h"
HIMAGELIST ImageList;
LRESULT CALLBACK WindowProcedure ( HWND WindowHandle, UINT message, WPARAM wParam, LPARAM lParam )
{
switch ( message )
{
case WM_CREATE:
{
HWND ButtonOne = CreateWindowEx( 0, "BUTTON", "", BS_PUSHBUTTON | BS_BITMAP | WS_CHILD | WS_VISIBLE, 40, 10, 50, 50, WindowHandle, (HMENU)( IDC_BUTTON_ONE ), GetModuleHandle( nullptr ), nullptr );
HANDLE Image = LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( IDB_BITMAP_SQUARE ), IMAGE_BITMAP, 50, 50, LR_DEFAULTCOLOR );
ImageList = ImageList_Create( 50, 50, ILC_COLORDDB, 1, 0 );
ImageList_Add( ImageList, (HBITMAP)Image, nullptr );
RECT rect = { 0, 0, 50, 50 };
BUTTON_IMAGELIST *ButtonImageList = new BUTTON_IMAGELIST;
ButtonImageList->himl = ImageList;
ButtonImageList->margin = rect;
ButtonImageList->uAlign = BUTTON_IMAGELIST_ALIGN_CENTER;
std::cout dwSize = sizeof( INITCOMMONCONTROLSEX );
ComCon->dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx( ComCon );
HWND WindowHandle;
MSG Messages;
WNDCLASSEX WindowClass;
WindowClass.hInstance = hThisInstance;
WindowClass.lpszClassName = WindowClassName.c_str();
WindowClass.lpfnWndProc = WindowProcedure;
WindowClass.style = CS_DBLCLKS;
WindowClass.cbSize = sizeof ( WNDCLASSEX );
WindowClass.hIcon = LoadIcon ( NULL, IDI_APPLICATION );
WindowClass.hIconSm = LoadIcon ( NULL, IDI_APPLICATION );
WindowClass.hCursor = LoadCursor ( NULL, IDC_ARROW );
WindowClass.lpszMenuName = NULL;
WindowClass.cbClsExtra = 0;
WindowClass.cbWndExtra = 0;
WindowClass.hbrBackground = reinterpret_cast( COLOR_BACKGROUND );
if ( !RegisterClassEx ( &WindowClass ) )
return 0;
WindowHandle = CreateWindowEx ( 0, WindowClassName.c_str(), "Common Controls Test", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 300, HWND_DESKTOP, NULL, hThisInstance, NULL );
ShowWindow ( WindowHandle, nCmdShow );
UpdateWindow( WindowHandle );
while ( ( GetMessage ( &Messages, NULL, 0, 0 ) ) )
{
TranslateMessage( &Messages );
DispatchMessage( &Messages );
}
return Messages.wParam;
}
resource.rc
#include "Resource.h"
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "CommonControlsTest.exe.manifest"
IDB_BITMAP_SQUARE BITMAP "Square.bmp"
resource.h
#define IDC_BUTTON_ONE 101
#define IDB_BITMAP_SQUARE 201
CommonControlsTest.exe.manifest
Your application description here.
Подробнее здесь: [url]https://stackoverflow.com/questions/79168494/cant-set-button-image-list[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия