Witam,
Chciałbym napisać programik wczytujący i wyświetlający bitmapę. Utworzyłem sobie odpowiednie buttony itp. Mam jedynie problem z przekazaniem do LoadImage ścieżki do pliku.
Oto kod:
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
PAINTSTRUCT ps;
switch( msg )
{
case WM_PAINT:
{
bitmapa =( HBITMAP ) LoadImage( 0, a.bmp, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
GetObject( bitmapa, sizeof( BITMAP ), & info_bitmapy );
HDC hdc = BeginPaint( hwnd, & ps );
HDC hdcBitmapy = CreateCompatibleDC( hdc );
bitmapa =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa );
BitBlt( hdc, 10, 10, info_bitmapy.bmWidth, info_bitmapy.bmHeight, hdcBitmapy, 0, 0, SRCCOPY );
bitmapa =( HBITMAP ) SelectObject( hdcBitmapy, bitmapa );
EndPaint( hwnd, & ps );
DeleteDC( hdcBitmapy );
}
break;
case WM_COMMAND:
{
switch( LOWORD( wParam ) )
{
case WCZYTAJ:
OPENFILENAME ofn;
char sNazwaPliku[ MAX_PATH ] = "";
ZeroMemory( & ofn, sizeof( ofn ) );
ofn.lStructSize = sizeof( ofn );
ofn.lpstrFilter = "Pliki graficzne (*.bmp)\0*.bmp\0";
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = sNazwaPliku;
ofn.lpstrDefExt = "bmp";
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
}
break;
}
case WM_CLOSE:
DestroyWindow( hwnd );
break;
case WM_DESTROY:
//zwolnienie bitmapy
DeleteObject( bitmapa );
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}
Prośba o sugestie i pomoc w rozwiązaniu problemu.