kerlan Temat założony przez niniejszego użytkownika |
nie laduje bitmapy » 2017-04-14 15:48:43 proba wczytania pliku bmp powoduje blad przy LPSTR NazwaKlasy = "Klasa Okienka"; kod: #include <windows.h> MSG Komunikat; LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{ LPSTR NazwaKlasy = "Klasa Okienka"; 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 ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...", MB_ICONEXCLAMATION | MB_OK ); return 1; } HBITMAP hbmObraz; hbmObraz =( HBITMAP ) LoadImage( NULL, "C:\\Users\\angela\\Pictures\\memu.bmp", IMAGE_BITMAP, 800, 600, LR_LOADFROMFILE ); HDC hdcNowy = CreateCompatibleDC( NULL ); SelectObject( hdcNowy, hbmObraz ); HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL ); HWND g_hPrzycisk; g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE, 100, 100, 150, 30, hwnd, 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 ); UpdateWindow( hwnd ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; return 0; }
proba wczytania pliku powoduje blad przy LPSTR NazwaKlasy = "Klasa Okienka"; |
|
karambaHZP |
» 2017-04-14 21:26:57 Na początek wklej treść błędów. |
|
kerlan Temat założony przez niniejszego użytkownika |
» 2017-04-15 10:09:13 In function 'int WinMain(HINSTANCE, HINSTANCE, LPSTR, int)': 50 21 [ Warning ] deprecated conversion from string constant to 'LPSTR {aka char*}'[ - Wwrite - strings ] C:\U sers\angela\AppData\Local\Temp\ccKoWcri.o BezNazwy2.cpp:(.text + 0x596 ) : undefined reference to ` _imp__CreateCompatibleDC @ 4 ' C:\U sers\angela\AppData\Local\Temp\ccKoWcri.o BezNazwy2.cpp :(.text + 0x5b7 ) : undefined reference to ` _imp__SelectObject @ 8 ' C:\U sers\angela\AppData\Local\Temp\ccKoWcri.o BezNazwy2.cpp :(.text + 0x5d9 ) : undefined reference to ` _imp__GetObjectA @ 12 ' C:\U sers\angela\AppData\Local\Temp\ccKoWcri.o BezNazwy2.cpp :(.text + 0x642 ) : undefined reference to ` _imp__BitBlt @ 36 ' C:\U sers\angela\Documents\collect2.exe[ Error ] ld returned 1 exit status |
|
j23 |
» 2017-04-15 10:21:25 Dodaj bibliotekę gdi32. |
|
kerlan Temat założony przez niniejszego użytkownika |
» 2017-04-15 10:50:39 dodalem. blad wywala dalej. mam rozumiec ze mam sie obsluzyc wingdi zamiast starym kodem? |
|
karambaHZP |
» 2017-04-15 11:22:39 |
|
TobiPL |
» 2017-04-22 03:02:06 Nie za bardzo rozumiem te twoje błędy... ale przynajmniej wyczytałem :
: undefined reference to ` _imp__SelectObject : undefined reference to ` _imp__GetObjectA : undefined reference to ` _imp__BitBlt
nie wiem ja tam nie mam za często problemów może dlatego że wszystko robię po swojemu... ale wydaje mi się że może ci pomóc coś takiego
Settings -> Compiler -> Linker Settings -> Other Linker Options
i powpisuj tam: -static -static-libgcc -static-libstdc++ -lgdi32
/////////////////////////////////////////////////////////////////////
HDC hdc = CreateCompatibleDC(NULL); // hadecek HBITMAP Neko = (HBITMAP)LoadImage(NULL, _T("Neko.bmp") ,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); SelectObject(hdc, Neko); // Neko to takie fajne koto dziewczyny...
BitBlt(hdcek,0,0,szyrokosc ubrazka,wysukusc obrazka,selekterek,0,0,SRCCOPY);
/////////////////////////////////////////////////////////////////////
chcesz to skopiuj tego koda i sprawdz czy ci działą... przynajmniej JA bym to tak wlasnie napisał...
/////////////////////////////////////////////////////////////////////
#define _WIN32_WINNT 0x0500 #include <windows.h> #include <tchar.h> #include <fstream>
void rysuj(char* plik) { HDC cons = GetDC(HWND_DESKTOP); HDC hdc = CreateCompatibleDC(NULL); POINT qbmp;
FILE* f = fopen(plik, "rb"); unsigned char info[54]; fread(info, sizeof(unsigned char), 54, f); qbmp.x = *(int*)&info[18]; qbmp.y = *(int*)&info[22];
int pxsize=((GetSystemMetrics(SM_CXSCREEN)/2)-(qbmp.x/2)); int pysize=((GetSystemMetrics(SM_CYSCREEN)/2)-(qbmp.y/2));
HBITMAP cross = (HBITMAP)LoadImage(NULL, _T(plik) ,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); SelectObject(hdc, cross); BitBlt(cons,pxsize,pysize,qbmp.x,qbmp.y,hdc,0,0,SRCCOPY); ReleaseDC(HWND_DESKTOP,cons); }
int main() { rysuj("Iki.bmp"); while (!GetAsyncKeyState(27));
return 0; }
hdc cons; dlatego że początkowo miało się to odpalać w konsoli... tzn. rysować obrazek na oknie konsoli... jeśli cwolisz narysowane na konsoli ( bo na pulpicie moze zostać odświerzone )
HWND myconsole = GetConsoleWindow(); HDC cons = GetDC(myconsole);
tylko wtedy musiałbyś nieco zmienić kod BitBlt(cons,0,0,qbmp.x,qbmp.y,hdc,0,0,SRCCOPY);
Oryginał: BitBlt(cons,pxsize,pysize,qbmp.x,qbmp.y,hdc,0,0,SRCCOPY);
bo w pxsize jest pozycja wyśrodkowanego obiektu...
czyli pobrana szerokość ekranu dzielona na 2 - szerokość obiektu dzienona na dwa...
ale to sam sobie ogarnij już... może pomogłem może nie xD ale nieco czasu na to zmarnowałęm :D... |
|
« 1 » |