Design
-
Wie kann ich in meiner MFC-Anwendung die Hintergrundfarbe und die Textfarbe ändern?
In der OnPaint() ?Bitte gut erklären, bin in dieser Hinsicht noch Anfänger!
MfG,
D.Derigs
-
Wenn du mit einer Dialogbasierten anwendung arbeitest,
musst du in der InitInstance() deiner CDEINPROJEKTApp Klasse
den folgenden COde einfügen:// Erste RGB bezieht sich auf BackGround zweite auf Schrift SetDialogBkColor(RGB(21,197,67),RGB(212,212,214)); // Das wäre z.b. ein Brün als BG.
-
Was ist zu includieren?
-
Wieso, ist ne standart Funktion. MSDN!
Sollte so funzen, hat es bei mir auch immer!
-
D.Derigs schrieb:
Was ist zu includieren?
Was ein Wort: "includieren"
SetDialogBkColor ist AFAIR eine Memberfunktion von CWinApp.
-
Und wird nicht funktionieren...[h]![/h]
Hatten wir das Thema nicht schon vor ein paar Wochen ?
-
Samma wollt ihr mich ver*******? In ner Dialog basierten anwendung, also nicht SDI oder MDI, funktioniert das bei mir bestens! Und das hab ich bestimmt in 6 ANwendungen laufen.
-
Geht wirklich nicht!
PS: Ich hab Visual Studio 2003
bei Visual C++ 6 geht angeblich, aber nicht bei der neuen Version
-
Hab sowas mit OnCtlColor() gelesen, aber das was in der MSDN und im FAQ steht verstehe ich nicht!
In meinem Projekt gibts keine OnCtlColor() !
Kann mir das jemand verständlich erklären?
-
Hab was gehört von WM_CTLCOLOR:
if (pWnd->GetDlgCtrlID() == ID_DEINES_STATICS) { pDC->SetTextColor(RGB(0,0,2550)); // Setzt die Textfarbe auf blau HBRUSH hBrush = CreateSolidBrush(RGB(255,0,0)); //Setzt die Hintergrundfarbe auf rot return (HBRUSH) hBrush; }
Soweit,sogut!
Nur wo und wie einzusetzen?
-
Die OnCtlColor() musst du mit dem ClassWizard erstellen...
Hier gabs das Problem mit dem Färben schonmal...
http://www.c-plusplus.net/forum/viewtopic.php?t=94714&highlight=setdialogbkcolorGruß
:: NoName ::
-
Was genau mit dem ClassWizard?
habe da z.B.:
MFC Class
MFC Class from TypeLib
.............Was muss ich machen?
-
Naja, du klickst in deinem Projekt auf 'View' > "ClassWizard'.
In der ComboBox achtest du darauf, dass dort deine Klasse eingetragen ist also 'CDeineKlasseDlg'
In der darunterliegenden ListBox siehst du Messages und dort suchst du dir die WM_CTLCOLOR raus...Hoffe du meinst das..
Gruß
:: NoName ::
-
Ich habe unter View kein ClassWizard
PS: Visual Studio 2003 Enterprise Architect
-
Ich will ja nur die OnCtlColor() erstellen, und wissen wie man die bedient!
-
Hmm, bei Visual Studio 2003 kenn ich mich leider nicht aus. Aber irgendwo muss
der ClassWizard vorhanden sein, such mal danach in allen Menüpunkten.Gruß
:: NoName ::
-
Es gibt nur 'Add Class...' aber keinen 'ClassWizard', hab in allen Menüpunkten und fast allen Kontextmenüs gesucht...
-
Hmm, dann musst du die WM_CTLCOLOR wohl manuell hinzufügen:
- Füge in deiner CTestDlg.h folgenden Eintrag unter allen afx_msg's über der Message Map ein
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
- Füge diesen Code in deiner CTestDlg.cpp ein
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: Change any attributes of the DC here // TODO: Return a different brush if the default is not desired return hbr; }
Dann noch alles kompilieren und weiterproggen
Gruß
:: NoName ::
-
Und was kann man da jetzt reinschreiben und was hat das für eine Wirkung?
(Nur der Komplettierung halber!!)MfG,
D.Derigs
-
Ist es so in der Headderdatei richtig?
[cpp]
// X-CryptDlg.h : Headerdatei
//#pragma once
#include "afxwin.h"
#include "afxcmn.h"class CXCryptDlgAutoProxy;
// CXCryptDlg Dialogfeld
class CXCryptDlg : public CDialog
{
DECLARE_DYNAMIC(CXCryptDlg);
friend class CXCryptDlgAutoProxy;// Konstruktion
public:
CXCryptDlg(CWnd* pParent = NULL); // Standardkonstruktor
virtual ~CXCryptDlg();// Dialogfelddaten
enum { IDD = IDD_XCRYPT_DIALOG };protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung// Implementierung
protected:
CXCryptDlgAutoProxy* m_pAutoProxy;
HICON m_hIcon;BOOL CanExit();
// Generierte Funktionen für die Meldungstabellen
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HBRUSH OnCtlColor(CDC pDC, CWnd pWnd, UINT nCtlColor);**
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnClose();
virtual void OnOK();
virtual void OnCancel();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButton1();
afx_msg void OnBnClickedButton2();
afx_msg void OnEnChangeEdit3();
CEdit mkey;
afx_msg void OnBnClickedButton3();
afx_msg void OnBnClickedButton4();
afx_msg void OnBnClickedButton8();
afx_msg void OnNMCustomdrawStatus(NMHDR *pNMHDR, LRESULT *pResult);
CProgressCtrl mstatus;
CStatic micon;
CButton mbutton;
afx_msg void OnStnClickedKeycr();
CStatic m_static;
};
[/cpp]