1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
#include "resources.h"
#include <windows.h>
#pragma comment(linker, "\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
HBITMAP hImageBttn = 0;
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("BttnImageClass") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("RegisterClass failed!"), TEXT("Error"), MB_ICONERROR);
return 0;
}
hwnd = CreateWindow(szAppName, TEXT("Button with image example"),
WS_OVERLAPPEDWINDOW,
20, 20, 300, 120,
NULL, NULL, hInstance, NULL) ;
ShowWindow(hwnd, iCmdShow) ;
UpdateWindow(hwnd) ;
while(GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
{
hImageBttn = LoadBitmap(GetModuleHandle(0), MAKEINTRESOURCE(ID_IMAGE_BTTN));
DWORD bttnStyle = WS_CHILD | WS_VISIBLE;
HWND hwndBttn = CreateWindow(TEXT("button"), TEXT("Click me!"), bttnStyle, 10, 10, 200, 50, hwnd, 0, 0, 0);
SendMessage(hwndBttn, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)hImageBttn);
return 0;
}break;
case WM_DESTROY:
{
DeleteObject(hImageBttn);
PostQuitMessage(0);
return 0;
}break;
};
return DefWindowProc(hwnd, message, wParam, lParam);
}
| |