?? dialogs3.cpp
字號:
// Dialogs3.cpp : implementation file
//
#include "stdafx.h"
#include "最近鄰法分類器.h"
#include "Dialogs3.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDialogs3 dialog
CDialogs3::CDialogs3(CWnd* pParent /*=NULL*/)
: CDialog(CDialogs3::IDD, pParent)
{
//{{AFX_DATA_INIT(CDialogs3)
//}}AFX_DATA_INIT
m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON10);
}
void CDialogs3::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDialogs3)
DDX_Control(pDX, IDC_LIST2, m_l2);
DDX_Control(pDX, IDC_LIST1, m_l1);
DDX_Control(pDX, IDC_BUTTON5, m_b5);
DDX_Control(pDX, IDC_BUTTON4, m_b4);
DDX_Control(pDX, IDC_BUTTON3, m_b3);
DDX_Control(pDX, IDC_BUTTON2, m_b2);
DDX_Control(pDX, IDC_BUTTON1, m_b1);
DDX_Control(pDX, IDC_STATIC5, m_5);
DDX_Control(pDX, IDC_STATIC4, m_4);
DDX_Control(pDX, IDC_STATIC3, m_3);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDialogs3, CDialog)
//{{AFX_MSG_MAP(CDialogs3)
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDialogs3 message handlers
BOOL CDialogs3::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
int cx, cy;
HDC dc = ::GetDC(NULL);
cx = GetDeviceCaps(dc,HORZRES) +
GetSystemMetrics(SM_CXBORDER);
cy = GetDeviceCaps(dc,VERTRES) +
GetSystemMetrics(SM_CYBORDER)-20;
::ReleaseDC(0,dc); //
::SetWindowPos(m_hWnd, HWND_TOPMOST,
-(GetSystemMetrics(SM_CXBORDER)+1),
-(GetSystemMetrics(SM_CYBORDER)+1),
cx+1,cy+1, SWP_NOZORDER);
mybitmap.LoadBitmap(IDB_BITMAP1);
/////////////////////////////
f1=false;f2=false;fb1=true;fb2=false;
CRect rect,rects,rects1,rectp,rects2,rects3,rect5,rect6;
int tempw,temph;
GetClientRect(rect);
GetDlgItem(IDC_STATIC1)->GetClientRect(rects);
temph=rects.Height();
rects.left=rect.left;
rects.right=rect.right;
rects.top=rect.top;
rects.bottom=rect.top+temph;
GetDlgItem(IDC_STATIC1)->MoveWindow(rects,true);
CRect rt1,rt2,rt3,rt4,rt5;
GetDlgItem(IDC_BUTTON1)->GetWindowRect(rt1);ScreenToClient(rt1);
tempw=rt1.Width();
rt1.top=rects.top+10;
rt1.bottom=rects.bottom-10;
rt1.left=rect.left+6;
rt1.right=rt1.left+tempw;
GetDlgItem(IDC_BUTTON1)->MoveWindow(rt1,true);
GetDlgItem(IDC_BUTTON2)->GetWindowRect(rt2);ScreenToClient(rt2);
tempw=rt2.Width();
rt2.top=rects.top+10;
rt2.bottom=rects.bottom-10;
rt2.left=rt1.right+6;
rt2.right=rt2.left+tempw;
GetDlgItem(IDC_BUTTON2)->MoveWindow(rt2,true);
GetDlgItem(IDC_BUTTON3)->GetWindowRect(rt3);ScreenToClient(rt3);
tempw=rt3.Width();
rt3.top=rects.top+10;
rt3.bottom=rects.bottom-10;
rt3.left=rt2.right+6;
rt3.right=rt3.left+tempw;
GetDlgItem(IDC_BUTTON3)->MoveWindow(rt3,true);
GetDlgItem(IDC_BUTTON4)->GetWindowRect(rt4);ScreenToClient(rt4);
tempw=rt4.Width();
rt4.top=rects.top+10;
rt4.bottom=rects.bottom-10;
rt4.left=rt3.right+6;
rt4.right=rt4.left+tempw;
GetDlgItem(IDC_BUTTON4)->MoveWindow(rt4,true);
GetDlgItem(IDC_BUTTON5)->GetWindowRect(rt5);ScreenToClient(rt5);
tempw=rt5.Width();
rt5.top=rects.top+10;
rt5.bottom=rects.bottom-10;
rt5.left=rt4.right+6;
rt5.right=rt5.left+tempw;
GetDlgItem(IDC_BUTTON5)->MoveWindow(rt5,true);
rects1.left=rects.left+10;
rects1.right=rects1.left+100;
rects1.top=rects.bottom+10;
rects1.bottom=rects1.top+20;
GetDlgItem(IDC_STATIC3)->MoveWindow(rects1,true);
rectp.top=rects1.bottom+10;
rectp.bottom=rect.bottom-50;
rectp.left=rect.left+20;
rectp.right=rectp.left+600;
GetDlgItem(IDC_STATIC2)->MoveWindow(rectp,true);
rects3.left=rectp.left+80;
rects3.right=rects3.left+200;
rects3.top=rectp.bottom+10;
rects3.bottom=rects3.top+20;
GetDlgItem(IDC_STATIC5)->MoveWindow(rects3,true);
rects2.left=rectp.right+30;
rects2.right=rects2.left+100;
rects2.top=rects.bottom+10;
rects2.bottom=rects2.top+20;
GetDlgItem(IDC_STATIC4)->MoveWindow(rects2,true);
GetDlgItem(IDC_LIST1)->GetWindowRect(rect5);ScreenToClient(rect5);
tempw=rect5.Width();temph=rect5.Height();
rect5.left= rectp.right+10+(rect.right-rectp.right)/2-tempw/2;
rect5.right=rect5.left+tempw;
rect5.top=rects2.bottom+10;
rect5.bottom =rect5.top+2*temph-348;
GetDlgItem(IDC_LIST1)->MoveWindow(rect5,true);
GetDlgItem(IDC_LIST2)->MoveWindow(rect5,true);
GetDlgItem(IDOK2)->GetWindowRect(rect6);ScreenToClient(rect6);
tempw=rect6.Width();temph=rect6.Height();
rect6.left= rectp.right+10+(rect.right-rectp.right)/2-tempw/2;
rect6.right=rect6.left+tempw;
rect6.top=rect5.bottom+20;;
rect6.bottom =rect6.top+temph;
GetDlgItem(IDOK2)->MoveWindow(rect6,true);
////////////////////////////////////
strcpy(m_3.mychar,"以2,3類為考慮對象進行分析");
strcpy(m_4.mychar,"固定k值為84");
///////////////////////////////////
m_l1.SetExtendedStyle (LVS_OWNERDRAWFIXED);
CRect ClientRect;
GetDlgItem(IDC_LIST1)->GetClientRect(&ClientRect);
m_l1.InsertColumn (0, "k的取值");
m_l1.InsertColumn (1, "準確率");
m_l1.InsertColumn (2, "拒判率");
m_l1.InsertColumn (3, "運行時間");
m_l1.SetColumnWidth (0, ClientRect.Width() / 4);
m_l1.SetColumnWidth (1, ClientRect.Width() / 4);
m_l1.SetColumnWidth (2, ClientRect.Width() / 4);
m_l1.SetColumnWidth (3, LVSCW_AUTOSIZE_USEHEADER+130);
for(int i=0;i<20;i++)
{
m_l1.InsertItem (i, " ");
}
m_l2.SetExtendedStyle (LVS_OWNERDRAWFIXED);
GetDlgItem(IDC_LIST2)->GetClientRect(&ClientRect);
m_l2.InsertColumn (0, "k`的取值");
m_l2.InsertColumn (1, "準確率");
m_l2.InsertColumn (2, "拒判率");
m_l2.InsertColumn (3, "運行時間");
m_l2.SetColumnWidth (0, ClientRect.Width() / 4);
m_l2.SetColumnWidth (1, ClientRect.Width() / 4);
m_l2.SetColumnWidth (2, ClientRect.Width() / 4);
m_l2.SetColumnWidth (3, LVSCW_AUTOSIZE_USEHEADER+130);
for(int i1=0;i1<20;i1++)
{
m_l2.InsertItem (i1, " ");
}
m_b3.flagv=true;GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
m_b4.flagv=true;GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);
m_b5.flagv=true;GetDlgItem(IDC_BUTTON5)->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDialogs3::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CDialog::OnPaint() for painting messages
}
BOOL CDialogs3::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect rect;
GetClientRect(rect);
//////////////////////////////////////////////////////
CDC memdc;
BITMAP bm1;
mybitmap.GetObject(sizeof(BITMAP),&bm1);
memdc.CreateCompatibleDC(pDC);
CBitmap* oldbitmap=memdc.SelectObject(&mybitmap);
int wide=rect.Width()/4;
int mheight=rect.Height()/4;
for (int j=0;j<4;j++)
{
for(int i=0;i<4;i++)
{
pDC->StretchBlt(rect.left,rect.top,wide,mheight,&memdc,0,0,bm1.bmWidth,bm1.bmHeight,SRCCOPY);
rect.left+= wide;
}
rect.left-=wide*4;
rect.top+=mheight;
}
CRect rects;GetClientRect(rect);
GetDlgItem(IDC_STATIC1)->GetClientRect(rects);
for(int i=0;i<18;i++)
{
rects.top=rect.top+i*3;
rects.bottom=rects.top+3;
pDC->FillSolidRect(rects,RGB(188+i,212+i,249));
}
CRect rectp,rectp1;
CPen *pOldPen;
GetDlgItem(IDC_STATIC2)->GetWindowRect(rectp);ScreenToClient(rectp);
pDC->FillSolidRect(rectp,RGB(255,255,255));
CPen mypen1(PS_SOLID,1,RGB(0,0,0));
pOldPen=pDC->SelectObject(&mypen1);
pDC->MoveTo(rectp.left+20, rectp.bottom-20);
pDC->LineTo(rectp.left+20, rectp.bottom-560);
pDC->LineTo(rectp.left+15, rectp.bottom-545);
pDC->MoveTo(rectp.left+20, rectp.bottom-560);
pDC->LineTo(rectp.left+25, rectp.bottom-545);
pDC->MoveTo(rectp.left+20, rectp.bottom-20);
pDC->LineTo(rectp.left+20+560, rectp.bottom-20);
pDC->LineTo(rectp.left+20+545, rectp.bottom-25);
pDC->MoveTo(rectp.left+20+560, rectp.bottom-20);
pDC->LineTo(rectp.left+20+545, rectp.bottom-15);
if(f3)
{
CPoint lp[19];
for(int i=0;i<19;i++)
{
int k=zt[i];
if(m_b1.down)
{
lp[i].x=rectp.left+20+45+5*k;
}
if(m_b2.down)
{
lp[i].x=rectp.left+20+k;
}
lp[i].y=rectp.bottom-20-int(ct[i]*540);
}
CPen mypen2(PS_SOLID,2,RGB(255,0,0));
pDC->SelectObject(&mypen2);
pDC->PolyBezier(lp,19);
}
if(f4)
{
CPoint lp[19];
for(int i=0;i<19;i++)
{
int k=zt[i];
if(m_b1.down)
{
lp[i].x=rectp.left+20+45+5*k;
}
if(m_b2.down)
{
lp[i].x=rectp.left+20+k;
}
lp[i].y=rectp.bottom-20-int(rt[i]*540);
}
CPen mypen2(PS_SOLID,2,RGB(255,0,0));
pDC->SelectObject(&mypen2);
pDC->PolyBezier(lp,19);
}
if(f5)
{
double max=0;
for(i=0;i<20;i++)
{
if(max<tt[i])max=tt[i];
}
CPoint lp[19];
for(int i=0;i<19;i++)
{
int k=zt[i];
if(m_b1.down)
{
lp[i].x=rectp.left+20+45+5*k;
}
if(m_b2.down)
{
lp[i].x=rectp.left+20+k;
}
lp[i].y=rectp.bottom-20-int(tt[i]*540/max);
}
CPen mypen2(PS_SOLID,2,RGB(255,0,0));
pDC->SelectObject(&mypen2);
pDC->PolyBezier(lp,19);
}
return true;
}
void CDialogs3::OnButton2()
{
// TODO: Add your control notification handler code here
if(fb2 )return;
fb2=true;fb1=false;f3=false;f4=false;f5=false;
for(int yt=0;yt<20;yt++)
{
m_l1.flag[yt]=false;m_l2.flag[yt]=false;
}
for(int i=0;i<20;i++)
{
m_l1.SetItemText (i, 0, " ");
m_l1.SetItemText (i, 1, "");
m_l1.SetItemText (i, 2, "");
m_l1.SetItemText (i, 3, "");
m_l2.SetItemText (i, 0, " ");
m_l2.SetItemText (i, 1, "");
m_l2.SetItemText (i, 2, "");
m_l2.SetItemText (i, 3, "");
}
m_b3.flagv=true;GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
m_b4.flagv=true;GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);
m_b5.flagv=true;GetDlgItem(IDC_BUTTON5)->EnableWindow(FALSE);
m_b1.down =false;
m_b2.down=true;
m_b1.Invalidate();m_b2.Invalidate();
m_l2.ModifyStyle(WS_VISIBLE,LVS_OWNERDRAWFIXED);
m_l1.ModifyStyle(0,LVS_OWNERDRAWFIXED|WS_VISIBLE); strcpy(m_4.mychar ,"固定k'值為K/2+3");
Invalidate();
UpdateWindow();
}
void CDialogs3::OnButton1()
{
// TODO: Add your control notification handler code here
if(fb1 )return;
fb1=true;fb2=false;
f3=false;f4=false;f5=false;
m_b2.down =false;
m_b1.down=true;
m_b1.Invalidate();m_b2.Invalidate();
m_l1.ModifyStyle(WS_VISIBLE,LVS_OWNERDRAWFIXED);
m_l2.ModifyStyle(0,LVS_OWNERDRAWFIXED|WS_VISIBLE);
strcpy(m_4.mychar ,"固定k值為84");strcpy(m_4.mychar ," ");
m_b3.flagv=true;GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
m_b4.flagv=true;GetDlgItem(IDC_BUTTON4)->EnableWindow(FALSE);
m_b5.flagv=true;GetDlgItem(IDC_BUTTON5)->EnableWindow(FALSE);
for(int yt=0;yt<20;yt++)
{
m_l1.flag[yt]=false;m_l2.flag[yt]=false;
}
for(int i=0;i<20;i++)
{
m_l1.SetItemText (i, 0, " ");
m_l1.SetItemText (i, 1, "");
m_l1.SetItemText (i, 2, "");
m_l1.SetItemText (i, 3, "");
m_l2.SetItemText (i, 0, " ");
m_l2.SetItemText (i, 1, "");
m_l2.SetItemText (i, 2, "");
m_l2.SetItemText (i, 3, "");
}
Invalidate();
UpdateWindow();
}
BEGIN_EVENTSINK_MAP(CDialogs3, CDialog)
//{{AFX_EVENTSINK_MAP(CDialogs3)
ON_EVENT(CDialogs3, IDOK2, 1 /* Click */, OnClickOk2, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CDialogs3::OnClickOk2()
{
// TODO: Add your control notification handler code here
int i1=0;
if(m_b1.down)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -