Ich versuche bmp
zu ico
Konverter zu machen. Ich habe ein Problem mit GetParent
/GetAncestor
Funktion. Hier sind einige Fragmente meines Codes:winapi C++ GetAncestor/GetParent
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND hWndAbout;
switch (message)
{
/* ... */
hWndAbout = CreateDialog(hInst, MAKEINTRESOURCE(KONWERTER_DIALOG_ABOUT), hwnd, AboutDlgProc);
ShowWindow(hWndAbout, SW_SHOW);
}
}
Dies war ein Teil von wo aus der jurney beginnt mit dem anderen Teil:
BOOL CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
break;
case WM_PAINT:
HWND hwndParent;
HDC hDCParent;
hwndParent = GetAncestor(hDlg, GA_PARENT); //hwndParent = GetParent(hDlg); //hwndParent = GetRealParent(hDlg);
hDCParent = GetDC(hwndParent);
hDC1 = GetDC(hDlg);
if (g_Checked1)StretchBlt(hDC1, 0, 0, 16, 16, hDCParent, 0, 0, 600, 600, SRCCOPY);
if (g_Checked2)StretchBlt(hDC1, 0, 0, 32, 32, hDCParent, 0, 0, 600, 600, SRCCOPY);
if (g_Checked3)StretchBlt(hDC1, 0, 0, 64, 64, hDCParent, 0, 0, 600, 600, SRCCOPY);
create_icon(hDlg);
ReleaseDC(hDlg, hDC1);
ReleaseDC(hwndParent, hDCParent);
break;
/* ... */
}
}
ich hwndParent
die hwnd
Handler sein wollen, aber es wird ein Handler zum Desktop.
Was ist los?
Wie Sie meinen StreachBlt
zieht Teil des Desktop sehen können, nicht mein schönes Gesicht. Ich habe bereits versucht, GetParent
, die das gleiche Ergebnis ergab. Danke für die Hilfe.
Versuchen Sie es mit 'GetParent() 'anstelle von' GetAncestor() '. –
Wie Sie sehen können, habe ich bereits versucht: hwndParent = GetAncestor (hDlg, GA_PARENT); // hwndParent = GetParent (hDlg); // hwndParent = GetRealParent (hDlg); – piotrus1444
Um den Dialog zu malen, benötigen Sie das Fensterhandle des Dialoges, nicht den Dialog Eltern oder Besitzer. Und die korrekte Handhabung von "WM_PAINT" beinhaltet mindestens den Aufruf von "BeginPaint" und "EndPaint". Es sei denn, Sie leiten Code weiter, der das tut. –