📄 winsvmdlg.cpp
字号:
// winsvmDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "winsvm.h"
#include "winsvmDlg.h"
#include ".\winsvmdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
extern CString info;
#define Malloc(type,n) (type *)malloc((n)*sizeof(type))
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
//CwinsvmDlg * pApp = NULL;
void lpRecvProc(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->svmtrain();
// catch(char * stre)
//{
// AfxEndThread(0);
// pmyview->m_mythread = NULL;//线程
//}
pmyview->nr_fold = pmyview->cross_validation = 0;
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan(0,pmyview->param.degree,pmyview->degreey,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.C,pmyview->cy,pmyview->cystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy1(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan(0,pmyview->param.C,pmyview->cy,pmyview->cystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy2(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan(0,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.C,pmyview->cy,pmyview->cystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy3(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan1(0,pmyview->param.degree,pmyview->degreey,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.nu,pmyview->nuy,pmyview->nuystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy4(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan1(0,pmyview->param.nu,pmyview->nuy,pmyview->nuystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy5(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan1(0,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.nu,pmyview->nuy,pmyview->nuystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy6(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan3(0,pmyview->param.degree,pmyview->degreey,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.C,pmyview->cy,pmyview->cystep,pmyview->param.p,pmyview->py,pmyview->pystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy7(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan3(0,pmyview->param.C,pmyview->cy,pmyview->cystep,pmyview->param.p,pmyview->py,pmyview->pystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy8(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan3(0,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.C,pmyview->cy,pmyview->cystep,pmyview->param.p,pmyview->py,pmyview->pystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy9(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan4(0,pmyview->param.degree,pmyview->degreey,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.C,pmyview->cy,pmyview->cystep,pmyview->param.nu,pmyview->nuy,pmyview->nuystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy10(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan4(0,pmyview->param.C,pmyview->cy,pmyview->cystep,pmyview->param.nu,pmyview->nuy,pmyview->nuystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
void lpRecvProcy11(LPVOID lpParam)//需要放在顶部
{
CwinsvmDlg * pmyview = (CwinsvmDlg*)lpParam;
pmyview->yichuan4(0,pmyview->param.coef0,pmyview->kry,pmyview->krystep,pmyview->param.C,pmyview->cy,pmyview->cystep,pmyview->param.nu,pmyview->nuy,pmyview->nuystep);
pmyview->GetDlgItem(IDC_BUTTON4)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON6)->EnableWindow(false);
pmyview->GetDlgItem(IDC_BUTTON1)->EnableWindow();
}
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()
// CwinsvmDlg 对话框
BEGIN_DHTML_EVENT_MAP(CwinsvmDlg)
DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)
DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
DHTML_EVENT_ONCLICK(_T("ButtonHelp"), OnButtonHelp)
END_DHTML_EVENT_MAP()
CwinsvmDlg::CwinsvmDlg(CWnd* pParent /*=NULL*/)
: CDHtmlDialog(CwinsvmDlg::IDD, CwinsvmDlg::IDH, pParent)
, cross_validation(0)
, nr_fold(0)
{
m_guyihua=NULL;//非模态对话框
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_mythread = NULL;//线程
}
void CwinsvmDlg::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CwinsvmDlg, CDHtmlDialog)
ON_WM_SYSCOMMAND()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON4, OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnBnClickedButton6)
ON_WM_SIZE()
ON_MESSAGE(UM_NOTIFY,OnMyNotify)//这才是地方
ON_COMMAND(IDM_RESTORE, OnMyRestore)
ON_COMMAND(IDM_ABOUTBOX, OnAbout)
ON_BN_CLICKED(IDC_BUTTON3, OnBnClickedButton3)
END_MESSAGE_MAP()
// CwinsvmDlg 消息处理程序
BOOL CwinsvmDlg::OnInitDialog()
{
CDHtmlDialog::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); // 设置小图标
// ShowWindow(SW_MINIMIZE);
sprintf(m_NotifyIconData.szTip,"winsvm2007");
m_NotifyIconData.cbSize = sizeof(NOTIFYICONDATA);
m_NotifyIconData.hIcon = m_hIcon;
m_NotifyIconData.hWnd = GetSafeHwnd();
m_NotifyIconData.uCallbackMessage = UM_NOTIFY;
m_NotifyIconData.uFlags = NIF_MESSAGE|NIF_TIP|NIF_ICON;
m_NotifyIconData.uID = IDIC_NOTIFY;
Shell_NotifyIcon(NIM_ADD, &m_NotifyIconData);//在状态栏加个图标,接受鼠标消息
return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
void CwinsvmDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDHtmlDialog::OnSysCommand(nID, lParam);
}
}
void CwinsvmDlg::OnDestroy()
{
if( m_mythread && GetExitCodeThread( m_mythread->m_hThread, &dwCode ) )
{
if( dwCode == STILL_ACTIVE )
{
TerminateThread( m_mythread->m_hThread, 0 );
CloseHandle( m_mythread->m_hThread );
m_mythread = NULL;
}
}
WinHelp(0L, HELP_QUIT);
CDHtmlDialog::OnDestroy();
Shell_NotifyIcon(NIM_DELETE, &m_NotifyIconData);//去掉状态栏消息
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CwinsvmDlg::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
{
CDHtmlDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
HCURSOR CwinsvmDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
HRESULT CwinsvmDlg::OnButtonOK(IHTMLElement* /*pElement*/)
{
OnOK();
return S_OK;
}
HRESULT CwinsvmDlg::OnButtonCancel(IHTMLElement* /*pElement*/)
{
OnCancel();
return S_OK;
}
HRESULT CwinsvmDlg::OnButtonHelp(IHTMLElement* /*pElement*/)
{
//::WinHelp(m_hWnd,"WINSVM.HLP",HELP_CONTENTS,0);
OnHelp();
return S_OK;
}
void CwinsvmDlg::OnBnClickedButton1()
{
m_pMyPropSheet=new Cxuanxiang;
if(m_pMyPropSheet->DoModal()==IDOK)
{
param = m_pMyPropSheet->param0;
nr_fold = m_pMyPropSheet->m_nfold;//-v n: n-fold交互检验模式
if(nr_fold != 0)
cross_validation = 1;
else
cross_validation = 0;
// determine filenames
strcpy(input_file_name, m_pMyPropSheet->m_filename);
strcpy(model_file_name, m_pMyPropSheet->m_filename1);
//线程检测
if( m_mythread && GetExitCodeThread( m_mythread->m_hThread, &dwCode ) )
{
if( dwCode == STILL_ACTIVE )
{
TerminateThread( m_mythread->m_hThread, 0 );
CloseHandle( m_mythread->m_hThread );
m_mythread = NULL;
}
}
//遗传算
if(m_pMyPropSheet->yichuan)
{
limit=m_pMyPropSheet->limit;
limitstep=m_pMyPropSheet->limitstep;
if(!yichuanbegin())//打开结果文件
return;
switch(param.svm_type)
{
case 0:
switch(param.kernel_type) { case 1: { param.degree=m_pMyPropSheet->m_kdegree; param.coef0=m_pMyPropSheet->m_kr; param.C=m_pMyPropSheet->m_cset; degreey=m_pMyPropSheet->m_kdegreeend; kry=m_pMyPropSheet->m_krend; krystep=m_pMyPropSheet->m_krstep; cy=m_pMyPropSheet->m_csetend; cystep=m_pMyPropSheet->m_csetstep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy, this );//线程运行 break; } case 2: { param.C=m_pMyPropSheet->m_cset; cy=m_pMyPropSheet->m_csetend; cystep=m_pMyPropSheet->m_csetstep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy1, this );//线程运行 break; } case 3: { param.coef0=m_pMyPropSheet->m_kr; param.C=m_pMyPropSheet->m_cset; kry=m_pMyPropSheet->m_krend; krystep=m_pMyPropSheet->m_krstep; cy=m_pMyPropSheet->m_csetend; cystep=m_pMyPropSheet->m_csetstep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy2, this );//线程运行 break; } }
break;
case 1:
switch(param.kernel_type) { case 1: { param.degree=m_pMyPropSheet->m_kdegree; param.coef0=m_pMyPropSheet->m_kr; param.nu=m_pMyPropSheet->m_nu; degreey=m_pMyPropSheet->m_kdegreeend; kry=m_pMyPropSheet->m_krend; krystep=m_pMyPropSheet->m_krstep; nuy=m_pMyPropSheet->m_nuend; nuystep=m_pMyPropSheet->m_nustep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy3, this );//线程运行 break; } case 2: { param.nu=m_pMyPropSheet->m_nu; nuy=m_pMyPropSheet->m_nuend; nuystep=m_pMyPropSheet->m_nustep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy4, this );//线程运行 break; } case 3: { param.coef0=m_pMyPropSheet->m_kr; param.nu=m_pMyPropSheet->m_nu; kry=m_pMyPropSheet->m_krend; krystep=m_pMyPropSheet->m_krstep; nuy=m_pMyPropSheet->m_nuend; nuystep=m_pMyPropSheet->m_nustep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy5, this );//线程运行 break; } }
break;
case 2:
switch(param.kernel_type) { case 1: { param.degree=m_pMyPropSheet->m_kdegree; param.coef0=m_pMyPropSheet->m_kr; param.nu=m_pMyPropSheet->m_nu; degreey=m_pMyPropSheet->m_kdegreeend; kry=m_pMyPropSheet->m_krend; krystep=m_pMyPropSheet->m_krstep; nuy=m_pMyPropSheet->m_nuend; nuystep=m_pMyPropSheet->m_nustep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy3, this );//线程运行 break; } case 2: { param.nu=m_pMyPropSheet->m_nu; nuy=m_pMyPropSheet->m_nuend; nuystep=m_pMyPropSheet->m_nustep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy4, this );//线程运行 break; } case 3: { param.coef0=m_pMyPropSheet->m_kr; param.nu=m_pMyPropSheet->m_nu; kry=m_pMyPropSheet->m_krend; krystep=m_pMyPropSheet->m_krstep; nuy=m_pMyPropSheet->m_nuend; nuystep=m_pMyPropSheet->m_nustep; delete m_pMyPropSheet; m_pMyPropSheet=NULL; m_mythread=AfxBeginThread( (AFX_THREADPROC)lpRecvProcy5, this );//线程运行 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -