Ik heb een handle naar een bepaald iets (in dit geval een frame) en deze wil ik graag naar mijn eigen window kopieren. Het maakt me niet uit dat het een "echte" kopie is, dus dat je de controls echt kopieerd, of dat het een capture is van de handle. Ik heb de volgende code zelf geprobeerd. Deze werkt in principe wel, maar deze code kopieerd alleen wat ook daadwerkelijk zichtbaar is op het scherm. Als de helft zichtbaar is, kopieerd ie ook maar de helft (en het is de bedoeling dat het window waarvan hij hem kopieerd juist niet zichtbaar is):
De bovenstaande code is dus een screencapture. Met de andere methode die ik bedoel, zou ik in principe hetzelfde resultaat willen bereiken als met SetParent, maar dan zonder dat hij van parent veranderd...
Ik hoop dat het duidelijk is wat ik bedoel. Alvast bedankt voor jullie hulp!
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| HWND handler = 0; handler = FindWindow(NULL,"Processing Result"); if(handler) { classnameHandler=0; EnumChildWindows(handler,(WNDENUMPROC)FindClassnameCallback,(LPARAM)"ThunderRT6Frame"); HDC dc = GetDC(classnameHandler); Graphics::TCanvas *ScreenCanvas = new Graphics::TCanvas; ScreenCanvas->Handle = dc; TRect rect = ScreenCanvas->ClipRect; rect.Right = rect.Right - rect.Left; rect.Bottom = rect.Bottom - rect.Top; rect.Top = 0; rect.Left = 0; Image3->Picture->Bitmap->Width = rect.Right; Image3->Picture->Bitmap->Height= rect.Bottom; Image3->Picture->Bitmap->Canvas->CopyRect(rect, ScreenCanvas, ScreenCanvas->ClipRect); delete ScreenCanvas; } |
De bovenstaande code is dus een screencapture. Met de andere methode die ik bedoel, zou ik in principe hetzelfde resultaat willen bereiken als met SetParent, maar dan zonder dat hij van parent veranderd...
Ik hoop dat het duidelijk is wat ik bedoel. Alvast bedankt voor jullie hulp!