arjacsoh
arjacsoh

Reputation: 9242

No class or namespace on creating a dialog Box

I have created a dialog Box in an ATL dll file and I have added a class to manipulate its performance. I managed initially to make it compile, but now (because of tweaking includes probably) I receive at the compilation the strange message:

CTestDlg : No class or namespace

I cite the source code of the header and the cpp file below:

#pragma once

#include "resource.h" // Hauptsymbole
#include <atlhost.h>


class CTestDlg : public CAxDialogImpl<CTestDlg>
{
private:
bool m_cancel;


public:
CTestDlg()
{
    m_cancel = true;    
}

~CTestDlg()
{
}

enum { IDD = IDD_TESTDLG };

BEGIN_MSG_MAP(CTestDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_HANDLER(IDOK, BN_CLICKED, OnClickedOK)
COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnClickedCancel)
COMMAND_HANDLER(IDC_EDIT1, EN_CHANGE, OnEnChangeEdit1)
CHAIN_MSG_MAP(CAxDialogImpl<CTestDlg>)
END_MSG_MAP()



LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
    CAxDialogImpl<CTestDlg>::OnInitDialog(uMsg, wParam, lParam, bHandled);
    bHandled = TRUE;

    //CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    //pEdit->SetWindowTextW(L"Hello");
    CWindow textBox(GetDlgItem(IDC_EDIT1));
    textBox.SetWindowTextW(L"hello");
    //textBox.SendMessageW(WM_SETTEXT, 0, (LPARAM)L"test!!!");
    return 1;  // Das System kann den Fokus festlegen
}

LRESULT OnClickedOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
    EndDialog(wID);
    m_cancel = false;
    return 0;
}

LRESULT OnClickedCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
    EndDialog(wID);
    return 0;
}

LRESULT OnEnChangeEdit1(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/);

bool IsCancelled() const { return m_cancel; }
bool saveFile();

};

//.cpp file

#include "CTestDlg.h"
#include "stdafx.h"




LRESULT CTestDlg::OnEnChangeEdit1(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
return 0;
}

bool CTestDlg::saveFile()
{

OPENFILENAME ofn;
WCHAR szFileName[MAX_PATH] = L"";


ZeroMemory( &ofn , sizeof( ofn));

ofn.lStructSize = sizeof(ofn); 
ofn.hwndOwner = NULL;
ofn.lpstrFilter = (LPCWSTR)L"Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
ofn.lpstrFile = (LPWSTR)szFileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = (LPCWSTR)L"txt";

if(GetSaveFileNameW(&ofn))
{
    HANDLE hFile = CreateFile(ofn.lpstrFile, 
        GENERIC_WRITE,
        0,
        NULL, 
        CREATE_NEW,
        FILE_ATTRIBUTE_NORMAL,
        NULL);

    DWORD dwBytesWritten = 0;
    char str[] = "Example text testing WriteFile";
    WriteFile( hFile, str, strlen(str), &dwBytesWritten, NULL );
    CloseHandle(hFile); 

    return true;
}
else 
    return false;

}

Any indication about what seems wrong with the code?

Upvotes: 1

Views: 201

Answers (1)

marcinj
marcinj

Reputation: 50016

Your precompiled header include should be first in .cpp files, change:

#include "CTestDlg.h"
#include "stdafx.h"

to

#include "stdafx.h"
#include "CTestDlg.h"

also double check if included file names are correct

Upvotes: 1

Related Questions