Mam problem ze zrobieniem przycisku w winapi, wydaje mi się, że wszystko powinno być okej. Być może popełniam jakiś błąd, pięknie proszę o pomoc. **Bitmapa jest dołączona do projeku w Code::blocks. Program się normalnie kompiluje, ale przycisk wygląda jak normalny.
.CPP
#include <windows.h>
#include <commctrl.h>
#include <ostream>
#include <stdio.h>
#include "resource.h"
#include <tchar.h>
#define BMP_EC 211
HWND g_hprzycisk1;
HWND Przycisk ;
HINSTANCE hInstance;
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// WYPEŁNIANIE STRUKTURY
WNDCLASSEX wc;
wc.cbSize = sizeof( WNDCLASSEX );
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
wc.lpszMenuName = NULL;
wc.lpszClassName = NazwaKlasy;
wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
// REJESTROWANIE KLASY OKNA
if( !RegisterClassEx( & wc ) )
{
MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
MB_ICONEXCLAMATION | MB_OK );
return 1;
}
// TWORZENIE OKNA
HWND hwnd;
hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 960, 680, NULL, NULL, hInstance, NULL );
if( hwnd == NULL )
{
MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION );
return 1;
}
ShowWindow( hwnd, nCmdShow ); // Pokaż okienko...
UpdateWindow( hwnd );
// Pętla komunikatów
while( GetMessage( & Komunikat, NULL, 0, 0 ) )
{
TranslateMessage( & Komunikat );
DispatchMessage( & Komunikat );
}
return Komunikat.wParam;
}
// OBSŁUGA ZDARZEŃ
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_CLOSE:
DestroyWindow( hwnd );
break;
case WM_COMMAND:
{
if(wParam==1)
{
}
}
break;
case WM_CREATE:
{
g_hprzycisk1 = CreateWindowEx( 0, "BUTTON", "Przycisk", WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_BITMAP ,0, 0, 160, 160,
hwnd, (HMENU)Przycisk, hInstance, NULL );
HBITMAP EC = LoadBitmap( hInstance, MAKEINTRESOURCE(211));
SendMessage(g_hprzycisk1, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)EC);;
}
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}
resource.h
#ifndef IDC_STATIC
#define IDC_STATIC (-1)
#endif
#define DLG_MAIN 100
#define BMP_EC 211
resource.rc
// Generated by ResEdit 1.5.10
// Copyright (C) 2006-2012
// http://www.resedit.net
#include <windows.h>
#include <commctrl.h>
#include <richedit.h>
#include "resource.h"
BMP_EC BITMAP "\\img\\autor_icon.bmp"
//
// Dialog resources
//
LANGUAGE 0, SUBLANG_NEUTRAL
DLG_MAIN DIALOG 0, 0, 186, 95
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "Ms Shell Dlg"
{
}
//
// Manifest resources
//
LANGUAGE 0, SUBLANG_NEUTRAL
1 RT_MANIFEST ".\\manifest.xml"