函数功能: 创建一DC相容内存位图,输出文字到里面后再将文字拷贝到指定窗口. 创建的内存位图DC具有pHWnd窗口的字体和背景颜色,但字体是默认字体和pHWnd不同.CreateCompatibleDC不是创建一个与指定DC相容的DC吗?为什么只有字体不同?谢谢!Private Sub CreateMemText(ByVal pHWnd As Long, pText As String)
Dim mDC, mDCMem As Long
Dim mStrLen As Long
Dim mRect As RECT
Dim mSize As SIZE
Dim hBmpChar As Long
'计算ANSI字符数量
mStrLen = LenB(StrConv(pText, vbFromUnicode))
mDC = GetDC(pHWnd)
mDCMem = CreateCompatibleDC(mDC)
Call GetTextExtentPoint32(mDCMem, pText, mStrLen, mSize)
hBmpChar = CreateCompatibleBitmap(mDCMem, mSize.cx, mSize.cy)
Call SelectObject(mDCMem, hBmpChar)
Call TextOut(mDCMem, 0, 0, pText, mStrLen)
Call BitBlt(mDC, 0, 0, mSize.cx, mSize.cy, mDCMem, 0, 0, SRCCOPY)
Call DeleteDC(mDCMem)
Call DeleteObject(hBmpChar)
Call ReleaseDC(pHWnd, mDC)
End Sub
Dim mDC, mDCMem As Long
Dim mStrLen As Long
Dim mRect As RECT
Dim mSize As SIZE
Dim hBmpChar As Long
'计算ANSI字符数量
mStrLen = LenB(StrConv(pText, vbFromUnicode))
mDC = GetDC(pHWnd)
mDCMem = CreateCompatibleDC(mDC)
Call GetTextExtentPoint32(mDCMem, pText, mStrLen, mSize)
hBmpChar = CreateCompatibleBitmap(mDCMem, mSize.cx, mSize.cy)
Call SelectObject(mDCMem, hBmpChar)
Call TextOut(mDCMem, 0, 0, pText, mStrLen)
Call BitBlt(mDC, 0, 0, mSize.cx, mSize.cy, mDCMem, 0, 0, SRCCOPY)
Call DeleteDC(mDCMem)
Call DeleteObject(hBmpChar)
Call ReleaseDC(pHWnd, mDC)
End Sub
Private Declare Function SelectObject Lib "gdi32" Alias "SelectObject" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" Alias "DeleteObject" (ByVal hObject As Long) As Long
Private Declare Function GetCurrentObject Lib "gdi32" Alias "GetCurrentObject" (ByVal hdc As Long, ByVal uObjectType As Long) As Long