Platzhalter für jpg-Datei
-
Hallihallo,
ich habe eine SDI-Anwendung mit einer Formview und möchte gerne in der View eine Art Platzhalter (zum Beispiel ein Steuerelement?) platzieren, an dessen Stelle zur Laufzeit ein Bild eingefügt wird. Das Bild einfügen klappt wunderbar, wenn ich die Ausdehnung der ganzen View nehme und an allen Seiten was abziehe, um das Bild dann in der Mitte anzuzeigen. Ich möchte aber eben irgendeinen Platzhalter, dessen Position ich bestimmen kann, um zu wissen, wo das Bild hinsoll. Bisher sieht mein Code folgendermaßen aus:
void CEinzeltarife::OnDraw(CDC* pDC) { CPIcture m_tarifbild; m_tarifbild.Load("Bilder\\Bildchen.jpg"); GetClientRect(&m_ClientRect); m_tarifbild.UpdateSizeOnDC(pDC); // Get Picture Dimentions In Pixels m_tarifbild.Show(pDC, CRect(200, 200, m_ClientRect.right - 200, m_ClientRect.bottom - 200)); }Mein Ansatz zur Lösung sah bisher folgendermaßen aus. Ich habe einfach eine Groupbox angelegt in der View und wollte nun auf dessen Koordinaten das Bild setzen.
void CEinzeltarife::OnDraw(CDC* pDC) { CPicture m_tarifbild; m_tarifbild.Load("Bilder\\Bildchen.jpg"); CStatic* platzhalterTarifbild = (CStatic*)this->GetDlgItem(IDC_PLATZHALTER); // ID vom Steuerelement GroupBox platzhalterTarifbild->CalcWindowRect(&m_ClientRect, 0); m_tarifbild.UpdateSizeOnDC(pDC); // Get Picture Dimentions In Pixels m_tarifbild.Show(pDC, CRect(0, 0, m_ClientRect.right, m_ClientRect.bottom)); }Wer kann mir helfen?
-
Gibts nicht genau dafür die PictureControls? Schau mal im Resourceneditor, in der Toolbox.
-
Damit kann man aber doch nur Bitmaps laden, oder?
-
Naja, das stimmt schon aber Du könntest ja dem PictureControl eine Variable spendieren (cstatic) und deine eigene Klasse von CStatic ableiten, dazu muss das Control aber eine andere ID als IDC_STATIC haben. Dann kannst du entwder per Hand blitten (OnPaint) oder du schaust mal nach WM_DRAWITEM bzw. ON_WM_DRAWITEM_REFLECT.
Dazu vieleicht das hier http://msdn2.microsoft.com/en-us/library/eeah46xd(VS.71).aspx mal durchschauen.