There are several ways to create Custom-Buttons for Windows in C++.
Here are two of the most common:
hBitmap = (HBITMAP)LoadImage (GetModuleHandle (NULL), L"BMButton.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR | LR_LOADFROMFILE);
hBButton1 = CreateWindow( TEXT("button"), TEXT(""),
WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
50,50,BWIDTH,BHIGHT,
hwnd, (HMENU)ID_BBUTTON1,
hInstGlobal, NULL);
SendMessage(hBButton1, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)hBitmap);
hBButton2 = CreateWindow(TEXT("button"),TEXT(""),
WS_CHILD | WS_VISIBLE | BS_OWNERDRAW | BS_PUSHBUTTON,
50,170,BWIDTH,BHIGHT,
hwnd,(HMENU)ID_BBUTTON2,
hInstGlobal, NULL);
return 0 ;
Version2 is more complicate because you have to do the drawing yourself in WM_DRAWITEM.
I suggest using Version1.