De onderstaande code wordt steeds op volgorde herhaald, maar het probleem is dat ik bij stap 2 soms een ongeldige hDC heb. Dus gaat bij stap 1 de GetWindowDC dus soms fout.
1. Hoe kan dit?
2. Hoe kan ik controleren of ik een geldige hDC heb?
/Edit1: pfd init duidelijker
1. Hoe kan dit?
2. Hoe kan ik controleren of ik een geldige hDC heb?
C++:
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
| //Stap 1: Initialize m_hWnd = CreateWWindow(); if(!m_hWnd) ShowMessage("Unable to create window!"); m_hDC = GetWindowDC(m_hWnd); //Soms invalid if(!m_hDC) ShowMessage("Unable to get DC!"); //Stap 2: Kies pixel format PIXELFORMATDESCRIPTOR pfd; //Init pfd memset(&pfd, 0, sizeof(PIXELFORMATDESCRIPTOR)); pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR); pfd.nVersion = 1; //pfd.enzovoort... int iPixelFormat = ChoosePixelFormat(m_hDC, &pfd); if(!iPixelFormat){ //GetLastError geeft ERROR_INVALID_HANDLE //Workaround hiervoor: m_hDC = GetWindowDC(m_hWnd); //Hier krijg ik dan wel een goeie iPixelFormat = ChoosePixelFormat(m_hDC, &pfd); } //Stap 3: UnInitialize if(!ReleaseDC(m_hWnd, m_hDC)) ShowMessage("Unable to release DC!"); m_hDC = NULL; if(!DestroyWindow(m_hWnd)) ShowMessage("Unable to destroy window!"); m_hWnd = NULL; |
/Edit1: pfd init duidelijker
[ Voor 12% gewijzigd door Weng op 27-02-2004 12:27 ]
Aye aye captain