COleControl、IOleInPlaceSite などの多くのキーをグーグルで検索しようとしましたが、これについてはまだわかりません。ActiveX コントロールが非アクティブな場合、コンテナーは ActiveX コントロールのウィンドウを作成しません。したがって、Rect は Ondraw とは異なります。コントロールを同じ場所にするにはどうすればよいですか? ReportViewer では、QR コードの位置を制御できます。しかし、PDF に印刷すると、常に紙の左上隅に表示されます。お手伝いありがとうございます!
`
void CQRControlCtrl::OnDraw(CDC* pDC, const CRect& rcBounds, const CRect& rcInvalid)
{
if(*m_DataText == NULL )
m_DataText = L"";
LPWSTR szText = m_DataText.GetBuffer(m_DataText.GetLength());
int nSize = m_qSize;
int nMargin = m_qMargin;
BOOL bPrinting = pDC->IsPrinting();
if (!pDC)
return;
double PixelsPermmX = (*pDC).GetDeviceCaps(LOGPIXELSX);
double PixelsPermmY = (*pDC).GetDeviceCaps(LOGPIXELSY);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(48,48);
pDC->SetViewportExt(PixelsPermmX,PixelsPermmY);
HBITMAP hbitmap = GetHBitmapW(szText, nMargin, nSize, QR_ECLEVEL_M);
CBitmap *pBitmap=CBitmap::FromHandle(hbitmap);
BITMAP bitmap;
GetObject(hbitmap,sizeof(BITMAP),&bitmap);
int nHeight = bitmap.bmHeight;
int nWidth = bitmap.bmWidth;
CRect rect;
this->GetRectInContainer(rect);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
MemDC.SelectObject(pBitmap);
pDC->StretchBlt(rect.left,rect.top,nWidth,nHeight,&MemDC,0,0,nWidth,nHeight,SRCCOPY);
}`