Thread View: de.comp.lang.c++
4 messages
4 total messages
Started by Hans-Heiner Schlachter
Fri, 29 Mar 1996 09:35
Handle probleme bei Hintergrundbitmap (OWL C++)
Author: Hans-Heiner Schlachter
Date: Fri, 29 Mar 1996 09:35
Date: Fri, 29 Mar 1996 09:35
85 lines
2427 bytes
2427 bytes
Hallo da draussen,
Ich habe hier ein kleines Codefragment fuer die Anzeige
einer Hintergrundbitmap, wie sie auch unter dem Windows-
Setup erscheint. Leider ist es mir nicht moeglich, diese Bitmap
in das aktuelle Fenster anzuzeigen (sie wird immer zuerst geladen).
Die Ursache liegt wahrscheinlich in dem falsch uebergebenen
Windowshandle. Kann mir jemand darauf eine Antwort und Loesung geben?
Vielen Dank im voraus
Matthias Gottwald
e-mail an: werkstu@bipd.hl.siemens.de
//*********** Code ****************************************************
#include <owl\owlpch.h>
#include <stdio.h>
#include "test.rh"
#define APP_NAME "INSTALL" // Name der Anwendung
class TGDIWindow : public TWindow
{
public:
TGDIWindow();
virtual ~TGDIWindow();
protected:
virtual void SetupWindow();
private:
};
TGDIWindow::TGDIWindow() : TWindow(0,0,0)
{
Invalidate();
UpdateWindow();
TClientDC dc(*this);
TBitmap bmp(*GetModule(),BMP_PIC);
TMemoryDC memdc(dc);
memdc.SelectObject(bmp);
dc.BitBlt(20,20,bmp.Width(),bmp.Height(),memdc,20,20,SRCCOPY);
memdc.RestoreBitmap();
}
void TGDIWindow::SetupWindow()
{
TWindow::SetupWindow();
}
TGDIWindow::~TGDIWindow()
{
}
class TGDIFrameWindow : public TFrameWindow
{
public:
TGDIFrameWindow (TWindow* parent, const char far *title = "",
TWindow *clientWnd = 0,
BOOL shrinkToClient = FALSE)
: TFrameWindow (parent, title, clientWnd, FALSE)
};
class TGDIApp : public TApplication
{
public:
TGDIApp() : TApplication() {}
void InitMainWindow()
{
SetMainWindow(new TGDIFrameWindow(0,APP_NAME,new TGDIWindow));
}
};
//#########################################################################
// M A I N
//#########################################################################
int OwlMain(int, char**)
{
return TGDIApp().Run();
}
Re: Handle probleme bei Hintergrundbitmap (OWL C++)
Author: Carsten Kuensken
Date: Sat, 30 Mar 1996 23:50
Date: Sat, 30 Mar 1996 23:50
163 lines
4283 bytes
4283 bytes
Hans-Heiner Schlachter <schl@bipa.HL.Siemens.de> wrote:
>Hallo da draussen,
>Ich habe hier ein kleines Codefragment fuer die Anzeige
>einer Hintergrundbitmap, wie sie auch unter dem Windows-
>Setup erscheint. Leider ist es mir nicht moeglich, diese Bitmap
>in das aktuelle Fenster anzuzeigen (sie wird immer zuerst geladen).
>Die Ursache liegt wahrscheinlich in dem falsch uebergebenen
>Windowshandle. Kann mir jemand darauf eine Antwort und Loesung geben?
>Vielen Dank im voraus
> Matthias Gottwald
>e-mail an: werkstu@bipd.hl.siemens.de
>//*********** Code ****************************************************
>#include <owl\owlpch.h>
>#include <stdio.h>
>#include "test.rh"
>#define APP_NAME "INSTALL" // Name der Anwendung
>class TGDIWindow : public TWindow
>{
>public:
> TGDIWindow();
> virtual ~TGDIWindow();
>protected:
> virtual void SetupWindow();
>private:
>};
>TGDIWindow::TGDIWindow() : TWindow(0,0,0)
>{
> Invalidate();
> UpdateWindow();
> TClientDC dc(*this);
> TBitmap bmp(*GetModule(),BMP_PIC);
> TMemoryDC memdc(dc);
> memdc.SelectObject(bmp);
> dc.BitBlt(20,20,bmp.Width(),bmp.Height(),memdc,20,20,SRCCOPY);
> memdc.RestoreBitmap();
>}
>void TGDIWindow::SetupWindow()
>{
> TWindow::SetupWindow();
>}
>TGDIWindow::~TGDIWindow()
>{
>}
>class TGDIFrameWindow : public TFrameWindow
>{
>public:
> TGDIFrameWindow (TWindow* parent, const char far *title = "",
> TWindow *clientWnd = 0,
> BOOL shrinkToClient = FALSE)
> : TFrameWindow (parent, title, clientWnd, FALSE)
>};
>class TGDIApp : public TApplication
>{
>public:
> TGDIApp() : TApplication() {}
> void InitMainWindow()
> {
> SetMainWindow(new TGDIFrameWindow(0,APP_NAME,new TGDIWindow));
> }
>};
>//#########################################################################
>// M A I N
>//#########################################################################
>int OwlMain(int, char**)
>{
> return TGDIApp().Run();
>}
Hallo Hans-Heiner
Die Anzeige deiner Bitmap gehört nicht in den Konstruktor. Denn in
diesem Moment existiert dein Fenster noch gar nicht !!!!!
So wie du es versuchst wird durch *this ein Handle auf den Desktop
erzeugt. Sprich: Deine Bitmap wird direkt in den Desktop kopiert und
nicht in dein Fenster !
Versuchs mal so:
void TGDIWindow::SetupWindow()
{
TWindow::SetupWindow();
<< Anzeige deiner Bitmap >>
}
Die Aufrufe von Invalidate und UpdateWindow (???) kannst du dabei
streichen, da dein Fenster sowieso neu gezeichnet wird.
Allerdings wird deine Bitmap so nur einmal angezeigt!
Normalerweise gehört die Bitmap Anzeige In TGDIWindow::Paint(..)
Diese Funktion wird (automatisch) immer dann Aufgerufen, wenn dein
Fenster (oder ein Teil davon) neu gezeichnet werden muß.(siehe Online
Hilfe für die Parameter usw...)
Also in etwa so:
...........................
class TGDIWindow : public TWindow
{
public:
TGDIWindow();
virtual ~TGDIWindow();
protected:
<< virtual void Paint(TDC&, BOOL, TRect&); >>
virtual void SetupWindow();
private:
};
TGDIWindow::TGDIWindow() : TWindow(0,0,0)
{}
<<<<<
void TGDIWindow::Paint(TDC &dc,BOOL,TRect &rc) // siehe Hilfe
{
TBitmap bmp(*GetModule(),BMP_PIC);
TMemoryDC memdc(dc);
memdc.SelectObject(bmp);
dc.BitBlt(20,20,bmp.Width(),bmp.Height(),memdc,20,20,SRCCOPY);
memdc.RestoreBitmap();
.... Was sonst noch so gezeichnet werden muß ......
}
>>>>>>>>>
void TGDIWindow::SetupWindow()
{
TWindow::SetupWindow();
}
TGDIWindow::~TGDIWindow()
{
}
.......................
Ich hoffe das hilft etwas. Wenn du sonst noch fragen hast, schreibe
mir einfach.
Tschau Carsten (carsten.kuensken@marl.netsurf.de)
Re: Handle probleme bei Hintergrundbitmap (OWL C++)
Author: js
Date: Wed, 03 Apr 1996 19:07
Date: Wed, 03 Apr 1996 19:07
8 lines
773 bytes
773 bytes
Geht es auch irgendwie, wenn das Fenter von TDialog abgeleitet ist? Ich habe Probleme an DC eines Dialogfensters ranzukommen. Paint wird dort ja offensichtlich dort nicht aufgerufen. Oder andersherum, wie bekomme ich ein TFrameWindow modal? Danke ! Juergen
Re: Handle probleme bei Hintergrundbitmap (OWL C++)
Author: Carsten Kuensken
Date: Wed, 03 Apr 1996 22:58
Date: Wed, 03 Apr 1996 22:58
18 lines
1020 bytes
1020 bytes
s1547@fb1.fhtw-berlin.de (js) wrote: >Geht es auch irgendwie, wenn das Fenter von TDialog abgeleitet ist? >Ich habe Probleme an DC eines Dialogfensters ranzukommen. Paint wird >dort ja offensichtlich dort nicht aufgerufen. Oder andersherum, wie >bekomme ich ein TFrameWindow modal? >Danke ! >Juergen Hallo Jürgen. Dein Window bekommst du mit dem ExStyle WS_EX_DLGMODALFRAME modal. Für Borland C++ siehe unter TWindowAttr / ExStyle. Tschau Carsten (carsten.kuensken@marl.netsurf.de)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads