000
28.04.2003, 11:19 Uhr
~Michi
Gast
|
Hallo zusammen, ich habe da ein Problem bei der Implementierung des Beispielthreads von FloSoft.
Dies hier ist die eigentliche Funktion:
UINT StartShow(LPVOID pParam) { CThreadDlg *m_dlg = (CThreadDlg *)pParam; // 1.Problem: Das Programm erkennt "CThreadDlg " nicht; // was muss ich hier noch einbinden
CTerminal1Dlg nTerminal; nTerminal.bitmap(); return 0; }
Jetzt wird die Funktion bitmap aufgerufen:
void CTerminal1Dlg::bitmap() { CString szFilename("D\frei\\dammAG\\res\\PH02074U.BMP"); HBITMAP hBmp = (HBITMAP)::LoadImage(NULL,szFilename, IMAGE_BITMAP,0,0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
CBitmap bmp; bmp.Attach(hBmp); CWnd *pWnd; CClientDC dc(this); /*hier stürzt das Programm ab*/ CDC bmDC; bmDC.CreateCompatibleDC(&dc); CBitmap *pOldbmp = bmDC.SelectObject(&bmp);
BITMAP bi; bmp.GetBitmap(&bi);
dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY);
bmDC.SelectObject(pOldbmp);
}
Beim Starten des Programms stürzt dieses bei "CClientDC dc(this)" ab. Wenn ich den Code von Bitmap() direkt in StartShow() einfüge, dann kommte der Fehler: "In Golbaler Funktion dürfen keine this Zeiger verwendet werden"; Mögliches Problem: Aufruf einer Memberfunktion (hier bitmap()) von einer globalen Funktion aus (hier StartShow()). Wenn ich bitmap() mit einem "Buttonclick" starte, wird das Bitmap ganz normal ausgegeben.
Kann mir jemand helfen ? |