Winapi C++;Win32:HDC';s、 HWND&x27;s、 选择Object,然后选择GetObject

Winapi C++;Win32:HDC';s、 HWND&x27;s、 选择Object,然后选择GetObject,winapi,select,get,hwnd,gdi,Winapi,Select,Get,Hwnd,Gdi,我是win32新手,有些概念我还没有完全掌握。首先,HDC和HWND之间的区别。我理解(或认为我理解)它们是对象的句柄,hdc可以从hwnd派生。与BeginPaint的情况类似: hdc = BeginPaint(hWnd, &ps); 但我不完全理解它们之间的区别,因为某些方法使用hdc作为参数,有些使用hwnd 其次,我不确定SelectObject和GetObject做什么。我认为它们将句柄与各种对象相关联,例如在这个位图绘制函数中: BOOL DrawBitmap (HDC

我是win32新手,有些概念我还没有完全掌握。首先,HDC和HWND之间的区别。我理解(或认为我理解)它们是对象的句柄,hdc可以从hwnd派生。与BeginPaint的情况类似:

hdc = BeginPaint(hWnd, &ps);
但我不完全理解它们之间的区别,因为某些方法使用hdc作为参数,有些使用hwnd

其次,我不确定SelectObject和GetObject做什么。我认为它们将句柄与各种对象相关联,例如在这个位图绘制函数中:

BOOL DrawBitmap (HDC hDC, INT x, INT y, INT width, INT height, HBITMAP hBitmap, 
                 DWORD dwROP)
{
    HDC       hDCBits;
    BITMAP    Bitmap;
    BOOL      bResult;

    hDCBits = CreateCompatibleDC(hDC);
    GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&Bitmap);
    SelectObject(hDCBits, hBitmap);
    bResult = StretchBlt(hDC, x, y, width, height,hDCBits, 0, 0, Bitmap.bmWidth,
                         Bitmap.bmHeight, dwROP);
    DeleteDC(hDCBits);

    return bResult;
}

尽管如此,我还是不太明白他们到底在做什么,或者他们是如何工作的。提前谢谢。

首先阅读参考文档:和.hwnd表示窗口,hdc表示设备上下文,可以在窗口(也可以在打印机上)上进行绘制。听起来你需要一本适合初学者的书;是金标准。首先阅读参考文档:.hwnd表示窗口,hdc表示设备上下文,可以在窗口(也可以在打印机上)上绘制。听起来你需要一本适合初学者的书;这是金本位制。