Не могу установить список изображений кнопокC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Не могу установить список изображений кнопок

Сообщение 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.








Подробнее здесь: https://stackoverflow.com/questions/791 ... image-list
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»