2016-11-02 4 views
-2

Ich habe Struktur: PrintChooseDlg.hFehler C2309: ist kein Mitglied von CDialog

#ifndef PRINTCHOOSEDLG_H 
#define PRINTCHOOSEDLG_H 
#include <string> 
#pragma once 
#endif 


class CPrintChooseDlg : public CDialog 
{ 


public: 
    int choosing; 
    /*afx_msg void OnPrinter1(); 
    afx_msg void OnPrinter2();*/ 
CPrintChooseDlg(CWnd* pParent = NULL); 
enum { IDD = IDD_PRINTBOX }; 


protected: 
    virtual void DoDataExchange(CDataExchange* pDX); 
    protected: 
    //afx_msg void OnPrinter1(); 
    //afx_msg void OnPrinter2(); 
    virtual void OnPrinter1(); 
    virtual void OnPrinter2(); 
    DECLARE_MESSAGE_MAP() 
}; 

und PrintChooseDlg.cpp

// PrintChoose.cpp : implementation file 
// 

#include "stdafx.h" 
#include "Tungsten.h" 
#include "PrintChooseDlg.h" 

#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
// PrintChoose 

//IMPLEMENT_DYNAMIC(PrintChoose, CWnd) 
CPrintChooseDlg::CPrintChooseDlg(CWnd* pParent /*=NULL*/) 
    : CDialog(CPrintChooseDlg::IDD, pParent) 
{ 
    //{{AFX_DATA_INIT(CChooseLabelDlg) 
     // NOTE: the ClassWizard will add member initialization here 
    //}}AFX_DATA_INIT 
} 


void CPrintChooseDlg::DoDataExchange(CDataExchange* pDX) 
{ 
    CDialog::DoDataExchange(pDX); 
    //{{AFX_DATA_MAP(CChooseLabelDlg) 
     // NOTE: the ClassWizard will add DDX and DDV calls here 
    //}}AFX_DATA_MAP 
} 


BEGIN_MESSAGE_MAP(CPrintChooseDlg, CDialog) 
    ON_BN_CLICKED(IDC_PRINTER1,OnPrinter1) 
    ON_BN_CLICKED(IDC_PRINTER2,OnPrinter2) 
END_MESSAGE_MAP() 



// PrintChoose message handlers 

void CPrintChooseDlg::OnPrinter1() 
{ 
    choosing=0; 
    CDialog::OnPrinter1(); 
} 
void CPrintChooseDlg::OnPrinter2() 
{ 
    choosing=1; 
    CDialog::OnPrinter2(); 
} 

und in der Hauptdatei, wo ich von leite, i definieren die folgenden Überschriften:

#include "stdafx.h" 
#include "Tungsten.h" 
#include "TungstenDlg.h" 
using namespace std; 
#include<sstream> 
#include <string> 

Das Problem ist, ich bin immer folgende Fehlermeldungen erhalten: Fehler C2039: ‚OnPrinter1‘: ist kein Mitglied Fehler C2039 von ‚CDialog‘: ‚OnPrinter2‘: ist kein Mitglied von ‚CDialog‘

Was ich versuchte #include <string> an meinem Kopf hinzuzufügen ist und stellen Sie sicher, dass die Header nicht wiederholt werden, und die Definition Printer1 und Pronter 2 in der Hauptdatei, in der ich renne, aber ich bekomme immer noch den gleichen Fehler. Ich schätze Ihre Hilfe. Danke im Voraus

+3

Die Nachricht ist ziemlich beschreibend, 'CDialog' hat keine Funktion' OnPrinter1', so dass Sie 'CDialog :: OnPrinter1' nicht aufrufen können. – StoryTeller

+0

Ich bin ein Anfänger in C++. Ist nicht virtuell void OnPrinter1(); ist eine Funktion innerhalb der Klasse? – Mike

+2

Es ist eine Funktion in ** CPrintChooseDlg **, nicht ** CDialog **. Als eine Analogie, nur weil eine Person weiß, etwas zu tun, bedeutet nicht, dass ihre Eltern tun. – StoryTeller

Antwort

0

Um die Adresse einer Mitgliedsfunktion zu erhalten, müssen Sie &CPrintChooseDlg::OnPrinter1 verwenden.

Wirklich alt VC++, wie VC6, kümmerte sich nicht um die richtige Syntax und erzeugte falsche Nachrichtenzuordnungen.

Verwandte Themen