Avatar billede driis Nybegynder
04. december 2003 - 15:01 Der er 5 kommentarer og
1 løsning

Win32 C++ grafik problem.

Jeg prøver at lære mig selv Win32 programmering vha. denne tutorial:
http://winprog.org/tutorial

Jeg har et problem med det første grafik eksempel, som bare skal vise et bitmap i et vindue. Jeg har følgende kode i min WndProc, som fejler:

case WM_PAINT:
        {
            BITMAP bm;
            PAINTSTRUCT ps;

            HDC hdc = BeginPaint(hwnd, &ps);

            HDC hdcMem = CreateCompatibleDC(hdc);
            HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hBall);

            GetObject(hBall, sizeof(bm), &bm);

            BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);

            SelectObject(hdcMem, hbmOld);
            DeleteDC(hdcMem);

            EndPaint(hwnd, &ps);
        }
        break;


Såvidt jeg kan se er det det første kald til SelectObject, der fejler. hbmOld bliver 0. Hvordan kan det være ? Jeg har gennemgået eksempelkoden, som virker, og jeg kan ikke se nogen forskelle.
Avatar billede jpk Nybegynder
04. december 2003 - 15:09 #1
Har du loaded hBall bitmappen?
Er hBall et gyldigt handle?
Avatar billede driis Nybegynder
04. december 2003 - 16:00 #2
Din kommentar ledte mig på problemet. Smid lige et svar så jeg kan lukke spørgsmålet.

hBall er faktisk et valid handle i kort tid, men jeg kommer til at sætte den til 0 undervejs - dum bøf :-(

    hBall = LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BALL));
        if ( hBall == 0 )
        {
            MessageBox(hwnd,ERR_CREATE,TITLE,MB_ICONSTOP);
            PostQuitMessage(0);
        }
        break;
Avatar billede driis Nybegynder
04. december 2003 - 16:01 #3
Jeg var kommet til at skrive
if ( hBall = 0 )
Avatar billede jpk Nybegynder
04. december 2003 - 16:32 #4
Mange tak...

Fik du ikke en varning fra din compiler..?
Avatar billede driis Nybegynder
04. december 2003 - 17:03 #5
Nej, ingen warning.
Avatar billede bertelbrander Novice
04. december 2003 - 20:10 #6
Så find ud af hvordan du får den til at give dig en warning.

GCC: -W -Wall
BCC: -w
MSVC++: /W3
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester