2016-07-27 2 views
-2

Je suis capable d'ajouter une image au bouton comme arrière-plan mais plus tard je veux ajouter du texte au bouton "Weclome", j'ai essayé toutes les manières possibles en utilisant Settext, SendmessageA. s'il vous plaît aiderEnvoyer le texte au bouton après avoir ajouté l'image 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

Je ne suis pas sûr si vous avez xaml en C++. Mais dans Wpf C#, je mettrais un StackPanel dans mon Button en utilisant le xaml. Puis à l'intérieur du StackPanel je mettrais à la fois le contrôle Text et le contrôle Image et ensuite jouerais avec leur visibilité On/Off à partir du code behin. –

+0

Probablement besoin de supprimer le style 'BS_BITMAP' de la fenêtre. –

+0

@firststep ce n'est pas wpf –

Répondre

0

Vous ne réalisez que vous devez créer une fenêtre, puis mettez le bouton dans la fenêtre?

Les chances sont que le programme recherche un fichier dans le mauvais répertoire. Utilisez les noms de chemin d'accès complets et vérifiez les erreurs pour vous assurer que le bitmap est chargé. Exemple:

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

if (!hImg) 
    report error... 

Ne pas mettre ShowWindow et UpdateWindow dans la boucle de message. Montrez simplement la fenêtre, puis appelez la boucle de message. Exemple:

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

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

Je peux ajouter l'image bitmap au bouton mais je veux aussi voir le texte sur le bouton image –

+0

Supprimer 'BS_BITMAP' du style de bouton. Utilisez uniquement 'SendMessage (... BM_SETIMAGE ...)' pour affecter le bitmap. Votre code a des problèmes plus graves que je n'ai pas remarqué avant. Voir les commentaires plus tôt sur la lecture d'un tutoriel sur la programmation Windows. –

+0

Je suis tellement désolé, j'ai supprimé BS_BITMAP après cela Il supprime l'image du bouton et l'ajout de texte. mais j'ai besoin d'image et de texte. Cependant, je viens de commencer à apprendre le code à partir de livres donnés –