unresolved external symbol... w GUI (MFC)

0

Cześć,

Mam problem z interfejsem graficznym do mojego sterownika-DLL, w Windowsie. Sterownik został stworzony z pomocą kreatora, który do GUI używa MFC, z którego jestem prawie zielony. Próbowałem bazować na innym przykładzie i po paru próbach w końcu chciałem wrócić do stanu "z przed mojego grzebania" i niestety jest problem.

Dialog.obj : error LNK2001: unresolved external symbol "public: virtual bool __thiscall CDialog::OnInitDialog(void)" (?OnInitDialog@CDialog@@UAE_NXZ)

moje pliki z tym związane to :

Dialog.h

#pragma once



class Dialog : public CDialog
{
	DECLARE_DYNAMIC(Dialog)

	// Dialog Data
private:
	//{{AFX_DATA(CConfigDlg)
	enum { IDD = IDD_DIALOG1 };
	CString	m_strIPAddress;
	DWORD m_dwProviderID;
	int		m_Port;
	//}}AFX_DATA

public:
	
	Dialog(CWnd* pParent, DWORD dwPPID);   // standard constructor
//	Dialog(CWnd* pParent = NULL);   // standard constructor
	virtual ~Dialog();


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

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedOk();
public:
	afx_msg void OnBnClickedCancel();
//public:
//	afx_msg bool OnInitDialog();
public:
	afx_msg void OnIpnFieldchangedIpaddress1(NMHDR *pNMHDR, LRESULT *pResult);
public:
	afx_msg void OnEnChangeEdit1();
public:
	//afx_msg void OnChangeIpaddress(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnChangeIpaddress();
public:
	afx_msg void OnOK();
};

Dialog.cpp

// Dialog.cpp : implementation file
//
 //#include"windows.h" 
#include "stdafx.h"
#include "SIPTSP.h"
#include "Dialog.h"


// Dialog dialog

IMPLEMENT_DYNAMIC(Dialog, CDialog)

Dialog::Dialog(CWnd* pParent,DWORD dwProviderID): CDialog(Dialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CConfigDlg)
	m_strIPAddress = _T("");
	m_dwProviderID = dwProviderID;
	m_Port = 0;
	//}}AFX_DATA_INIT
}

Dialog::~Dialog()
{
}

void Dialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_IPADDRESS1, m_strIPAddress);
	DDX_Text(pDX, IDC_EDIT1, m_Port);
}

	
BEGIN_MESSAGE_MAP(Dialog, CDialog)
	ON_BN_CLICKED(IDOK, &Dialog::OnBnClickedOk)
	ON_BN_CLICKED(IDCANCEL, &Dialog::OnBnClickedCancel)
	ON_EN_CHANGE(IDC_EDIT1, &Dialog::OnChangeIpaddress) 
	ON_EN_CHANGE(IDC_IPADDRESS1, &Dialog::OnChangeIpaddress)
	ON_NOTIFY(IPN_FIELDCHANGED, IDC_IPADDRESS1, &Dialog::OnIpnFieldchangedIpaddress1)
END_MESSAGE_MAP()


// Dialog message handlers

void Dialog::OnBnClickedOk()
{
	OnOK();
}

void Dialog::OnBnClickedCancel()
{
	// TODO: Add your control notification handler code here
	OnCancel();
}

void Dialog::OnEnChangeEdit1()
{
	UpdateData(TRUE);
	GetDlgItem(IDOK)->EnableWindow(m_strIPAddress.IsEmpty() == FALSE && m_Port > 0);
	// TODO:  If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.

	// TODO:  Add your control notification handler code here
}


void Dialog::OnOK()
{
	
	if (UpdateData(TRUE))
	{
		// Write the data out
		GetSP()->WriteProfileString (m_dwProviderID, _T("IPServer"), m_strIPAddress);
		GetSP()->WriteProfileDWord (m_dwProviderID, _T("Port"), m_Port);
		// Dismiss the dialog.
		CDialog::OnOK();
	}
}

void Dialog::OnChangeIpaddress()
{// dodałem
	UpdateData(TRUE);
	GetDlgItem(IDOK)->EnableWindow(m_strIPAddress.IsEmpty() == FALSE && m_Port > 0);
	// TODO: Add your control notification handler code here

	//*pResult = 0;
}

void Dialog::OnIpnFieldchangedIpaddress1(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMIPADDRESS pIPAddr = reinterpret_cast<LPNMIPADDRESS>(pNMHDR);
	// TODO: Add your control notification handler code here
	//dodałem
	UpdateData(TRUE);
	GetDlgItem(IDOK)->EnableWindow(m_strIPAddress.IsEmpty() == FALSE && m_Port > 0);
	//----------
	*pResult = 0;
}

/*bool Dialog::OnInitDialog() 
{
	//_TSP_DTRACE(" -- Config OnInitDialog -- ");
	// Write the data out
	*/
	//m_strIPAddress = GetUISP()->ReadProfileString (m_dwProviderID, _T("IPServer")/*, _T("127.0.0.1")*/);
	//m_Port = GetSP()->ReadProfileDWord (m_dwProviderID, _T("Port"), 5060);
/*
	// Connect up the elements to the dialgo.
	CDialog::OnInitDialog();
	OnChangeIpaddress();

	// Center the window
	CenterWindow();
	
	// Let Windows process focus.
	return TRUE;

}*/

Nie jestem pawiem czy ten stan już jest faktycznie dobry, ale tak jak widać nie ma tu tego CDialog::OnInitDialog(void) o którego krzyczy linker. Biblioteki na pewno wszystkie mam dołączone dobrze, bo przed moim grzebaniem w tym GUI wszystko było ok - nawet pojawiało się okienko tylko bez żadnej logiki.
Dodatkowo dziwi mnie fakt, że teraz też spróbowałem skompilować wcześniej zapisane wersje gdzie jeszcze nie zajmowałem się tym GUI i dostaje ten sam błąd :/

Dzięki z góry za wszelką pomoc
Michał

0

zacznij od poprawienia tematu watku.
czas do kosza: 2 dni

1 użytkowników online, w tym zalogowanych: 0, gości: 1