2012-07-17 62 views
1

我在ATL dll文件中创建了一个对话框,并添加了一个类来操纵它的性能。我好不容易最初使它编译,但现在(因为扭捏包括可能)我收到在编译的奇怪的消息:创建对话框时没有类或名称空间框

CTestDlg:无类或命名空间

我举头和源代码下面CPP文件:

#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文件

#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; 

} 

什么似乎是错误的代码的任何指示?

+0

我们需要完整的错误信息。 – orlp 2012-07-17 08:06:28

+0

你在哪里使用这门课?在哪个文件中? – flamingo 2012-07-17 08:08:53

+0

错误C2653:CTestDlg:没有类或名称空间。对不起,我提供的最初错误并不完全正确。我编辑了这个问题。 – arjacsoh 2012-07-17 08:09:03

回答

1

你的预编译头包括应先在.cpp文件,更改:

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

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

还仔细检查是否包含文件名是否正确

+0

是的,就是这样。虚幻... – arjacsoh 2012-07-17 08:13:02

相关问题