0
私は、bmp
からico
へ変換しようとしています。私はGetParent
/GetAncestor
機能に問題があります。ここに私のコードのいくつかの断片は、以下のとおりです。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);
}
}
これはjurneyは、他の部分に始まり、ここから一部であった:
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;
/* ... */
}
}
私はhwnd
ハンドラなりhwndParent
にしたいが、それはハンドラになりデスクトップに転送します。
何が間違っていますか?
あなたは私のStreachBlt
は、デスクトップの一部ではなく、私の美しい顔を描く見ることができるように。私はすでに同じ結果を出したGetParent
を使ってみました。ご協力ありがとうございます。
使用してみてください 'GetParent関数を() 'GetAncestor()'の代わりに '' GetAncestor() ''の代わりに使用します。 –
ご覧のとおり、私はすでに試してみました: hwndParent = GetAncestor(hDlg、GA_PARENT); // hwndParent = GetParent(hDlg); // hwndParent = GetRealParent(hDlg); – piotrus1444
ダイアログをペイントするには、ダイアログの親または所有者ではなくダイアログのウィンドウハンドルが必要です。そして、 'WM_PAINT'の正しい取り扱いには、最小限の' BeginPaint'と 'EndPaint'を呼び出すことが必要です。それを行うコードに転送している場合を除きます。 –