Butten mit IcON
-
Hallo
Ich hab mal wieder einen Fehler
ich möcht das ein ICON in meinem Butter ist und wenn man über dem Butten ist soll es sich ändern.und ich hab einen Fehler
---------------------------------------------------------------
DialogDlg.cpp
C:\Programme\Microsoft Visual Studio\MyProjects\Dialog\DialogDlg.cpp(107) : error C2660: 'SetIcon' : Funktion akzeptiert keine 2 Parameter
Fehler beim Ausführen von cl.exe.Dialog.exe - 1 Fehler, 0 Warnung(en)
-----------------------------------------------------------------// DialogDlg.cpp : Implementierungsdatei // #include "stdafx.h" #include "Dialog.h" #include "DialogDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CAboutDlg-Dialogfeld für Anwendungsbefehl "Info" class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialogfelddaten //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV-Unterstützung //}}AFX_VIRTUAL // Implementierung protected: //{{AFX_MSG(CAboutDlg) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { //{{AFX_DATA_INIT(CAboutDlg) //}}AFX_DATA_INIT } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAboutDlg) //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) //{{AFX_MSG_MAP(CAboutDlg) // Keine Nachrichten-Handler //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDialogDlg Dialogfeld CDialogDlg::CDialogDlg(CWnd* pParent /*=NULL*/) : CDialog(CDialogDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDialogDlg) m_sResults = _T(""); //}}AFX_DATA_INIT // Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CDialogDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDialogDlg) DDX_Control(pDX, IDC_BUTTON1, m_btnHalloween); DDX_Control(pDX, IDC_BWHICHOPTION, m_cWhichOption); DDX_Text(pDX, IDC_RESULTS, m_sResults); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDialogDlg, CDialog) //{{AFX_MSG_MAP(CDialogDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_EXIT, OnExit) ON_BN_CLICKED(IDC_YESNOCANCEL, OnYesnocancel) ON_BN_CLICKED(IDC_FILEOPEN, OnFileopen) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDialogDlg Nachrichten-Handler BOOL CDialogDlg::OnInitDialog() { COLORREF crBtnColor; CDialog::OnInitDialog(); crBtnColor = ::GetSysColor(COLOR_BTNFACE) + RGB(30, 30, 30); // Hinzufügen des Menübefehls "Info..." zum Systemmenü. // Halloween button m_btnHalloween.SetIcon(IDI_ICON2, IDI_ICON1); // 48x48 icon button // IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt // wenn das Hauptfenster der Anwendung kein Dialogfeld ist SetIcon(m_hIcon, TRUE); // Großes Symbol verwenden SetIcon(m_hIcon, FALSE); // Kleines Symbol verwenden // ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen return TRUE; // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten } void CDialogDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // Wollen Sie Ihrem Dialogfeld eine Schaltfläche "Minimieren" hinzufügen, benötigen Sie // den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das // Dokument/Ansicht-Modell verwenden, wird dies automatisch für Sie erledigt. void CDialogDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // Gerätekontext für Zeichnen SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Symbol in Client-Rechteck zentrieren int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Symbol zeichnen dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer // das zum Symbol verkleinerte Fenster mit der Maus zieht. HCURSOR CDialogDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CDialogDlg::OnExit() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen //in der cpp-Datei //Hackerl Bitmap angeklickt sein. OnOK(); } void CDialogDlg::OnYesnocancel() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen /////////////////////// // EIGENER CODE, ANFANG /////////////////////// int iResults; // Variable für Schaltflächenauswahl // Benutzer fragen iResults = MessageBox("Ja, Nein oder Abbrechen drücken", "Dialogfeld Ja, Nein, Abbrechen", MB_YESNOCANCEL | MB_ICONINFORMATION); // Angeklickte Schaltfläche ermitteln // Benutzer die angeklickte Schaltfläche melden switch (iResults) { case IDYES: // Schaltfläche Ja? m_sResults = "Ja! Ja! Ja!"; break; case IDNO: // Schaltfläche Nein? m_sResults = "Nein, nein, nein, nein, nein."; break; case IDCANCEL: // Schaltfläche Abbrechen? m_sResults = "Sorry, abgebrochen."; break; } // Dialogfeld aktualisieren UpdateData(FALSE); /////////////////////// // EIGENER CODE, ENDE /////////////////////// } void CDialogDlg::OnFileopen() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen /////////////////////// // EIGENER CODE, ANFANG /////////////////////// CFileDialog m_ldFile(TRUE); // Dialogfeld Öffnen zeigen und Ergebnis auffangen if (m_ldFile.DoModal() == IDOK) { // Gewählten Dateinamen ermitteln m_sResults = m_ldFile.GetPathName(); // Dialogfeld aktualisieren UpdateData(FALSE); } /////////////////////// // EIGENER CODE, ENDE /////////////////////// } void CDialogDlg::OnStaticTest() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen } void CDialogDlg::OnButton1() { // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen }Dank schon mal wieder für eure Hilfe
-
toby schrieb:
---------------------------------------------------------------
DialogDlg.cpp
C:\Programme\Microsoft Visual Studio\MyProjects\Dialog\DialogDlg.cpp(107) : error C2660: 'SetIcon' : Funktion akzeptiert keine 2 Parameter
Fehler beim Ausführen von cl.exe.Dialog.exe - 1 Fehler, 0 Warnung(en)
-----------------------------------------------------------------// DialogDlg.cpp : Implementierungsdatei // // Halloween button m_btnHalloween.SetIcon(IDI_ICON2, IDI_ICON1);Die Fehlermeldung sagt eigentlich eh schon alles: Die Methode SetIcon der Klasse CButton erwartet nur 1 Parameter.
Näheres dazu findest du in der MSDN. Hier gibt's auch ein Example dazu.
-
hmm
aber wie bekomme ich das den so das ich wenn ich mit der Maus über dem Butten bin ein anders ICON gezeigt bekomme als das was normal da ist.
darum hab ich ja da zwei Icons und nicht eins.
-
hat den keiner einen Tipp für mich wie ich die Schaftflächen mit einem Bild verschönern kann? *bitte
*
-
du musst eine Klasse von CButton ableiten, die DrawItem Methode überschreiben (WM_DRAWITEM Nachricht) und den Button selber zeichnen. Für Mouseover Effekte sieh dir die TrackMouseEvent Funktion an.