Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Wieder eine Frage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
01.06.2003, 09:34 Uhr
Oliver
S2-Pixelgeneral


HI,

ich muss leider schon wieder fragen

Wie kann ich ein Textfeld transperent machen.
Also ich habe ein Textfeld, dass jede halbe Sekunde die Farbe wechselt (also blinkt).

Dann hab ich ein blaues Hintergrundbild. Wie krieg ich jetzt die Schrift transperent auf den Hintergrund drauf (der Hintergrund ist übrigens in so einem Picturefeld).

Ich hab schon ausprobiert, dass ich den BkMode auf Transperent setzte.
Geht aber irgendwie nicht.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
01.06.2003, 11:00 Uhr
mike
Pinguinhüpfer
(Operator)


Moin

Zitat:

Ich hab schon ausprobiert, dass ich den BkMode auf Transperent setzte.


Wie genau hast du das gemacht? Hast du die Editklasse abgelietet und in OnPaint den DC geholt?

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
01.06.2003, 12:56 Uhr
Oliver
S2-Pixelgeneral


Also:


C++:
HBRUSH CKreuzwortrtselsDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
  
    
    // TODO: Attribute des Gerätekontexts hier ändern
    static const CBrush Pin1(RGB(96,0,191));
     switch(pWnd->GetDlgCtrlID())
     {
     case 1001:
        
        
        
        
         pDC->SetBkMode(TRANSPARENT);
         if (blinka)
             pDC->SetTextColor(RGB(255,0,0));
         else
             pDC->SetTextColor(RGB(210,0,0));
        
         break;


     }
    
    // TODO: Anderen Pinsel zurückgeben, falls Standard nicht verwendet werden soll
    return hbr;
}

void CKreuzwortrtselsDlg::OnTimer(UINT nIDEvent)
{
    // TODO: Code für die Behandlungsroutine für Nachrichten hier einfügen und/oder Standard aufrufen
    

    if (blinka) {
        m_ueber.Invalidate(); blinka = 0; }
    else {
        m_ueber.Invalidate(); blinka = 1; }




    CDialog::OnTimer(nIDEvent);
}



Das

C++:
case 1001:

ist ein bisschen verwirrend. Also man hätte auch schreiben können:


C++:
case IDC_Ueber:


IDC_Ueber ist das Textfeld, wo die Schrift angezeigt werden soll.
Und dann hab ich ganz oben in der Datei noch

C++:
bool blinka=0;

stehen.
Und m_ueber ist die Membervariable von IDC_Ueber.


Und dann hätt ich noch 2 Fragen:

Wie kann ich mir den Inhalt von Ordnern anzeigen lasssen?

Und wie kann ich abfragen, ob die Maus zum Beispiel über einen Button sich bewegt.
Muss man da aufwändig das MouseMove Ereignis abfragen und sich dann dort ausrechnen lassen, ob die Maus gerade über einen Button ist?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 01.06.2003 um 12:57 Uhr von Oliver Müller editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.06.2003, 13:22 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Also ich hab folgendes zu SetBkMode gelesen:
Set the background mode for text to transparent so background will show thru.
Möglicherweise hilft dir das weiter:
www.codeproject.com/editctrl/ctrltrans.asp#xx428635xx

Den Inhalt der Ordner kannst du mit Hilfe von CFileFind anzeigen lassen.

Zu 2
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_nchittest.asp

mfg mike
--

Dieser Post wurde am 01.06.2003 um 13:23 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
01.06.2003, 13:55 Uhr
Oliver
S2-Pixelgeneral


Könntst du mir das mit den CFindFile noch ein bisschen nähe erläutern.
Ich hab auch nichts in der Hilfe davon gefunden.

Und dann ich wollte ein Textfeld, nicht ein Eingabe - oder Editfeld transperent machen.

Das komische ist, dass bevor ich das mit den Blinken gemacht habe, war es noch transperent, aber seit ich den Timer eingebaut habe, ist es nicht mehr transperent.

2. Dieses komische "WM_NCHITTEST" gibts bei mir im Klassenassistens gar nicht. Oder ich versteh da was falsch.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
01.06.2003, 14:08 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
War mein Fehler: Das heißt natürlich CFileFind
Ein kleines Sample - ist nicht ganz sauber geproggt
ftp://mike84.dyndns.org/incoming/NetWatch.zip

WM_NCHITTEST musst du nur abfangen (in PreTranslateMessage) - müsste eigentlich funtzen

Ändern sich durch den Timer vielleicht irgendwelche initialisierten Werte?

mfg mike
--

Dieser Post wurde am 01.06.2003 um 14:08 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
01.06.2003, 14:31 Uhr
Oliver
S2-Pixelgeneral


Hi,

schönes Programm

Ähhm, dass mit dem WM_NCHITTEST versteh ich immer noch nicht ganz, weil ich erst blutiger Anfänger bin .

Und mit dem Timer: eigentlich nicht oder?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
01.06.2003, 15:04 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Es gibt da 2 Möchligkeiten. Du kannst mit PtnInRect schaun, ob die Maus in dem Rect ist und drauf reagieren. Was ich dabei nicht gut finde ist, dass wenn man schnell drüber fährt, keine WM gesendet wird. Es empfiehlt sich daher eine CButton Klasse abzuleiten und dort PreTranslateMessage ein zu fügen. Wenn du dann ins Spy++ gehst, kannst du erkennen, dass wenn du mit der Maus über den Button fährst eine WM_NCHITTEST gesendet wird.
Eine weitere Möchlichkeit wäre eben, WM_MOUSEMOVE in einer CButton Klasse zu verwenden: www.codeproject.com/buttonctrl/hoverbutton.asp

Ich hoffe, das hilft dir einwenig weiter
mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.06.2003, 13:07 Uhr
Oliver
S2-Pixelgeneral


Ich glaub ich werd mir erstmal ein richtiges Buch für MFC anschaffen. Sonst komm ich hier glaub nicht viel weiter.

Ach noch ne Frage:
Ist es sinnvoll erstmal MFC vor Spieleprogrammierung lernen oder nicht?
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
09.06.2003, 17:13 Uhr
Oliver
S2-Pixelgeneral


Kann mir jemand noch mal die Frage beantworten:

Zitat:
Ist es sinnvoll erstmal MFC vor Spieleprogrammierung lernen oder nicht?



Bitte ist wichtig
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: