2016-07-27 5 views
-2

Я могу добавить изображение к кнопке в качестве фона, но позже я хочу добавить текст к кнопке как «Weclome», я пробовал все возможные способы использования Settext, SendmessageA. пожалуйста, помогитеОтправка текста на кнопку после добавления изображения C++

#include <Windows.h> 

int main() 
{ 
    MSG msg; 
    HWND hWnd = CreateWindow(TEXT("button"), TEXT("START"), WS_VISIBLE | WS_POPUP | WS_CHILD | WS_TABSTOP | BS_BITMAP, 
     250, 250, 500, 500, NULL, NULL, NULL, NULL); 
    HANDLE hImg = LoadImageW(NULL, L"Untitled.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_LOADFROMFILE); 
    SendMessageW(hWnd, BM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hImg); 

    SendMessageA(hWnd, WM_SETTEXT, 0, (LPARAM)"Welcome"); 
    //SendMessageW(hWnd, WM_SETTEXT, (WPARAM) 256,NULL); 


    while (GetMessage(&msg, NULL, 0, 0)) 
    { 
     ShowWindow(hWnd, SW_SHOW); 
     UpdateWindow(hWnd); 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
    return (int)msg.wParam; 
} 
+0

Я не уверен, что у вас есть xaml в C++. Но в Wpf C# я бы поставил StackPanel внутри моей кнопки с помощью xaml. Затем внутри StackPanel я бы поставил как управление текстом, так и управление ими, а затем играть с их видимостью Вкл/Выкл из кода. –

+0

Возможно, нужно удалить стиль «BS_BITMAP» из окна. –

+0

@firststep это не wpf –

ответ

0

Вы понимаете, что вам нужно создать окно и затем поместить кнопку в окне?

Скорее всего, программа ищет файл в неправильном каталоге. Используйте полные имена путей и выполните проверку ошибок, чтобы убедиться, что битмап загружен. Пример:

HANDLE hImg = LoadImageW(NULL, L"c:\\fullpath\\Untitled.bmp", IMAGE_BITMAP, 0, 0, 
LR_DEFAULTCOLOR | LR_DEFAULTSIZE | LR_LOADFROMFILE); 

if (!hImg) 
    report error... 

Не помещайте ShowWindow и UpdateWindow в цикле сообщений. Просто покажите окно и вызовите цикл сообщений. Пример:

ShowWindow(hWnd, SW_SHOW); 
UpdateWindow(hWnd); 

while (GetMessage(&msg, NULL, 0, 0)) 
{ 
    TranslateMessage(&msg); 
    DispatchMessage(&msg); 
} 
+0

Я могу добавить растровое изображение к кнопке, но я также хочу увидеть текст на кнопке изображения –

+0

Удалите 'BS_BITMAP' из стиля кнопки. Используйте «SendMessage (... BM_SETIMAGE ...)» для назначения растрового изображения. У вашего кода более серьезные проблемы, которые я раньше не замечал. См. Комментарии ранее о чтении учебника по программированию Windows. –

+0

Мне очень жаль, я удалил BS_BITMAP после этого. Он удаляет изображение с кнопки и добавляет текст. но мне нужно как изображение, так и текст. Однако я только начал изучать код из заданных книг. –

Смежные вопросы