一堆错误
// SmoothExampleDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "SmoothExample.h"
#include "SmoothExampleDlg.h"
#include <string>
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CSmoothExampleDlg 对话框
CSmoothExampleDlg::CSmoothExampleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSmoothExampleDlg::IDD, pParent)
,m_Para1(0)
,m_Para2(0)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CSmoothExampleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SLIDER2, m_SliderPara2);
DDX_Control(pDX, IDC_SLIDER1, m_SliderPara1);
DDX_Text(pDX, IDC_EDIT1, m_Para1);
DDX_Text(pDX, IDC_EDIT2, m_Para2);
}
BEGIN_MESSAGE_MAP(CSmoothExampleDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, &CSmoothExampleDlg::OnBnClickedOK)
ON_BN_CLICKED(IDC_RADIOMedian, &CSmoothExampleDlg::OnBnClickedRadiomedian)
ON_BN_CLICKED(IDC_RADIOGauss, &CSmoothExampleDlg::OnBnClickedRadiogauss)
ON_BN_CLICKED(IDC_RADIOSimple, &CSmoothExampleDlg::OnBnClickedRadiosimple)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER1, &CSmoothExampleDlg::OnNMCustomdrawSlider1)
ON_NOTIFY(NM_CUSTOMDRAW, IDC_SLIDER2, &CSmoothExampleDlg::OnNMCustomdrawSlider2)
ON_WM_DESTROY()
END_MESSAGE_MAP()
// CSmoothExampleDlg 消息处理程序
BOOL CSmoothExampleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
m_SliderPara1.SetRange(1, 100);
m_SliderPara2.SetRange(1, 100);
m_Para1 = 1;
m_Para2 = 1;
smoothtype = CV_BLUR;
src = cvLoadImage("F:\\lena.jpg", 1);
dst = cvCloneImage(src);
cvNamedWindow("模糊",1);
cvShowImage("模糊", dst);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CSmoothExampleDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CSmoothExampleDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CSmoothExampleDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CSmoothExampleDlg::OnBnClickedOK()
{
CFileDialog SaveDlg( FALSE, L"bmp", L"未命名", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"图像文件格式(*.bmp) |*.bmp| JPG file format (*.jpg) |*.jpg|", NULL);
if(SaveDlg.DoModal()==IDOK)
{
CString saveFileName=SaveDlg.GetPathName();
std::string tempSaveName = (LPCSTR)CStringA(saveFileName);
const char* nameOfFile = tempSaveName.c_str();
cvSaveImage(nameOfFile, dst);
MessageBox(L"文件已成功保存!");
}
else
MessageBox(L"文件未被保存!");
}
void CSmoothExampleDlg::OnBnClickedRadiomeddian()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
smoothtype = CV_MEDIAN;
m_SliderPara2.EnableWindow(FALSE);
}
void CSmoothExampleDlg::OnBnClickedRadiogauss()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
smoothtype = CV_GAUSSIAN;
m_SliderPsra2.EnableWindow(TRUE);
}
void CSmoothExampleDlg::OnBnClickedRadiosimple()
{
smoothtype = CV_BLUR;
m_SliderPara2.EnableWindow(TRUE);
}
void CSmoothExampleDlg::OnNMCustomdrawSlider1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
m_Para1 = m_SliderPara1.GerPos();
UpdateData(FALSE);
int param1 = m_Para1*2+1;
int param2 = m_Para2*2+1;
cvSmooth( src, dst, smoothtype, param1, param2);
cvShowImage("模糊",dst);
*pResult = 0;
}
void CSmoothExampleDlg::OnNMCustomdrawSlider2(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
m_Para2 = m_SliderPara2.GetPos();
UpdateData(FALSE);
int param1 = m_Para1*2+1;
int param2 = m_Para2*2+1;
cvSmooth( src, dst, smoothtype, param1, param2);
cvShowImage("模糊",dst);
*pResult = 0;
}
void CSmoothExampleDlg::OnDestroy()
{
CDialog::OnDestroy();
cvReleaseImage(&src);
cvReleaseImage(&dst);
cvDestroyAllWindows();
}
问题:
1>------ 已启动生成: 项目: SmoothExample, 配置: Debug Win32 ------
1>正在编译...
1>stdafx.cpp
1>正在编译...
1>SmoothExample.cpp
1>e:\program files\opencv2.1\vc2008\include\opencv\cvcompat.h(803) : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>SmoothExampleDlg.cpp
1>e:\program files\opencv2.1\vc2008\include\opencv\cvcompat.h(803) : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(64) : error C2065: “IDC_EDIT1”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(65) : error C2065: “IDC_EDIT2”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(74) : error C2065: “IDC_RADIOMedian”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(74) : error C2065: “IDC_RADIOMedian”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(75) : error C2065: “IDC_RADIOGauss”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(75) : error C2065: “IDC_RADIOGauss”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(76) : error C2065: “IDC_RADIOSimple”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(76) : error C2065: “IDC_RADIOSimple”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(195) : error C2039: “OnBnClickedRadiomeddian”: 不是“CSmoothExampleDlg”的成员
1> f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.h(13) : 参见“CSmoothExampleDlg”的声明
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(203) : error C2065: “smoothtype”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(204) : error C2065: “m_SliderPara2”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(204) : error C2228: “.EnableWindow”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(216) : error C2065: “m_SliderPsra2”: 未声明的标识符
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(216) : error C2228: “.EnableWindow”的左边必须有类/结构/联合
1> 类型是“'unknown-type'”
1>f:\学以致用\没完没了\毕业设计\c++files\smoothexample\smoothexample\smoothexampledlg.cpp(226) : error C2039: “GerPos”: 不是“CSliderCtrl”的成员
1> e:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxcmn.h(1073) : 参见“CSliderCtrl”的声明
1>正在生成代码...
1>生成日志保存在“file://f:\学以致用\没完没了\毕业设计\C++files\SmoothExample\SmoothExample\Debug\BuildLog.htm”
1>SmoothExample - 15 个错误,2 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========