2013-11-28 5 views
1

У меня есть диалог с CListCtrl с некоторыми данными, ниже - кнопка. Мой второй проект - это диалог с флажком tri-state. Теперь я хочу связать оба проекта, поэтому, когда вы выбираете элемент списка и нажимаете кнопку, появляется диалоговое окно tristate, показывающее что-то.Ошибка C2065 при использовании двух проектов MFC

Ну, я добавил второй проект на другой и изменил его тип .dll, но появляется ошибка сборки

error C2065: 'IDD_MFCAPP2_DIALOG' : undeclared identifier

IDD_MFCAPP2_DIALOG это идентификатор он CheckBox диалога. При добавлении проекта оба идентификатора имели одинаковое значение, поэтому я изменил это в resource.h вручную на другое, но это не решило проблему. Проекты работают очень хорошо по отдельности. Что мне не хватает?

UPDATE: я сократил проект до минимума, проблема такая же

MFCApp1Dlg.h

class CMFCApp1Dlg : public CDialogEx 
{ 
// Construction 
public: 
    CMFCApp1Dlg(CWnd* pParent = NULL); // standard constructor 

// Dialog Data 
    enum { IDD = IDD_MFCAPP1_DIALOG }; 

    protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 


// Implementation 
protected: 
    HICON m_hIcon; 

    // Generated message map functions 
    virtual BOOL OnInitDialog(); 
    afx_msg void OnPaint(); 
    afx_msg HCURSOR OnQueryDragIcon(); 
    DECLARE_MESSAGE_MAP() 
public: 
    afx_msg void OnBnClickedButtonChange(); 
    CButton m_BtnChange; 
}; 

Его файл CPP содержит только стандартные вещи. Просто обработчик кнопки вызывает другое приложение

void CMFCApp1Dlg::OnBnClickedButtonChange() 
{ 
CMFCApp2Dlg dlg; 
if (dlg.DoModal()) 
{ 
    // do something... 
    } 
} 

MFCApp2Dlg.h выглядит тот же файл

class CMFCApp2Dlg : public CDialogEx 
{ 
// Construction 
public: 
    CMFCApp2Dlg(CWnd* pParent = NULL); // standard constructor 

// Dialog Data 
    enum { IDD = IDD_MFCAPP2_DIALOG }; 

    protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 


// Implementation 
protected: 
    HICON m_hIcon; 

    // Generated message map functions 
    virtual BOOL OnInitDialog(); 
    afx_msg void OnPaint(); 
    afx_msg HCURSOR OnQueryDragIcon(); 
    DECLARE_MESSAGE_MAP() 
}; 

.rc также не spectaculary

IDD_MFCAPP1_DIALOG DIALOGEX 0, 0, 315, 151 
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME 
EXSTYLE WS_EX_APPWINDOW 
CAPTION "MFCApp1" 
FONT 8, "MS Shell Dlg", 0, 0, 0x1 
BEGIN 
    DEFPUSHBUTTON "OK",IDOK,76,119,50,14 
    PUSHBUTTON  "Cancel",IDCANCEL,157,117,50,14 
    PUSHBUTTON  "Push me!",IDC_BUTTON_CHANGE,121,44,50,14 
END 

и

IDD_MFCAPP2_DIALOG DIALOGEX 0, 0, 203, 101 
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_THICKFRAME 
EXSTYLE WS_EX_APPWINDOW 
CAPTION "MFCApp2" 
FONT 8, "MS Shell Dlg", 0, 0, 0x1 
BEGIN 
    DEFPUSHBUTTON "OK",IDOK,46,64,50,14 
    PUSHBUTTON  "Cancel",IDCANCEL,109,65,50,14 
    CONTROL   "Check1",IDC_CHECK1,"Button",BS_AUTO3STATE | WS_TABSTOP,51,17,39,10 
    CONTROL   "Check2",IDC_CHECK2,"Button",BS_AUTO3STATE | WS_TABSTOP,51,39,39,10 
END 

Любые предложения были бы полезными.

UPDATE2:

Resource.h of App1 
#define IDD_MFCAPP1_DIALOG    102 
#define IDR_MAINFRAME     128 
#define IDC_BUTTON_CHANGE    1000 

// Next default values for new objects 
// 
#ifdef APSTUDIO_INVOKED 
#ifndef APSTUDIO_READONLY_SYMBOLS 
#define _APS_NEXT_RESOURCE_VALUE  129 
#define _APS_NEXT_COMMAND_VALUE   32771 
#define _APS_NEXT_CONTROL_VALUE   1001 
#define _APS_NEXT_SYMED_VALUE   101 
#endif 
#endif 

и Resource.h из App2 соответственно

#define IDD_MFCAPP2_DIALOG    202 
#define IDR_MAINFRAME     228 
#define IDC_CHECK1      2000 
#define IDC_CHECK2      2001 

// Next default values for new objects 
// 
#ifdef APSTUDIO_INVOKED 
#ifndef APSTUDIO_READONLY_SYMBOLS 
#define _APS_NEXT_RESOURCE_VALUE  229 
#define _APS_NEXT_COMMAND_VALUE   32771 
#define _APS_NEXT_CONTROL_VALUE   2002 
#define _APS_NEXT_SYMED_VALUE   201 
#endif 
#endif 
+0

, не видя никакого кода (в идеале [SSCCE] (HTTP: // sscce .org /)) почти невозможно сказать вам, что пошло не так. – codeling

+0

Я обновил свой вопрос. – alex555

+0

Если этот 'IDD_MFCTRISTATECHECKBOX_DIALOG' предполагается использовать где-то, то почему он не отображается ни в показанных .rc, ни в ваших .h-файлах? – codeling

ответ

0

сообщение просто говорит вам, что идентификатор неизвестный идентификатор. Так что просто не известно. Так обычно:

Убедитесь, что вы включили правильный файл Resource.h и убедитесь, что идентификатор определен в resource.h

+0

Оба идентификатора определены, конечно. Кроме того, я изменил путь к ресурсу «. \ Resource.h» без успеха ... – alex555

+0

Используйте параметр/showincludes, чтобы увидеть, если файл resource.h действительно включен. И какой. Вы уверены, что вы включили include ПОСЛЕ stdafx.h? – xMRi

Смежные вопросы