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#では、xamlを使ってボタンの中にStackPanelを配置します。 StackPanelの中​​で、私はTextコントロールとImageコントロールの両方を配置し、コードの可視性をOn/Offで再生します。 –

+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... 

は、メッセージループにShowWindowUpdateWindowを入れないでください。ウィンドウを表示してから、メッセージループを呼び出してください。例:

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を削除しました。ボタンから画像を削除してテキストを追加しています。私はイメージとテキストの両方が必要です。しかし、私はちょうど与えられた本からコードを学習し始めました –

関連する問題