添加图像c++后,将文本发送到按钮

Sending text to button after adding image c++

本文关键字:按钮 文本 图像 c++ 添加      更新时间:2023-10-16

我可以将图像添加到按钮作为背景,但后来我想将文本添加到按钮中作为"Weclome",我尝试了使用Settext、SendmessageA的所有可能方法。请帮助

#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;
}

您是否意识到必须创建一个窗口,然后将按钮放在窗口中?

程序可能在错误的目录中查找文件。使用完整路径名并进行错误检查以确保位图已加载。示例:

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);
}