//*********************************************************************** // // lotto.cpp // //*********************************************************************** #include #include "lotto.h" CMyApp myApp; ///////////////////////////////////////////////////////////////////////// // CMyApp luokan aliohjelmien toteutus BOOL CMyApp::InitInstance () { m_pMainWnd = new CMainWindow; m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow (); return TRUE; } ///////////////////////////////////////////////////////////////////////// // CMainWindow luokan aliohjelmien toteutus BEGIN_MESSAGE_MAP (CMainWindow, CWnd) ON_WM_CREATE () // lomakkeen luominen ON_LBN_DBLCLK (1, OnListboxDoubleClicked) // listboxin tuplanapautus ON_BN_CLICKED (2, OnButtonClicked) // 'Reset'-nappia painettu END_MESSAGE_MAP () CMainWindow::CMainWindow () { CString strWndClass = AfxRegisterWndClass ( NULL, // ikkunan tyyli myApp.LoadStandardCursor (IDC_ARROW), // ikkunan kursori (HBRUSH) COLOR_WINDOW, // ikkunan taustan väri myApp.LoadStandardIcon (IDI_APPLICATION) // ikkunan ikoni ); // rekisteröi oman ikkunaluokan CreateEx ( NULL, // lomakkeen lisätyyli strWndClass, // lomakkeen ikkunaluokka "Lottonumerot", // lomakkeen otsikko WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, // ikkunan tyyli CW_USEDEFAULT, // aloitus x-positio CW_USEDEFAULT, // aloitus y-positio 500, // alkuleveys 300, // alkukorkeus NULL, // emoikkunan kahva NULL, // lomakkeen valikon kahva NULL // lisätietoja ); // lomakkeen luominen } int CMainWindow::OnCreate () // lomakkeen luomistapahtuma { m_fontMain.CreateFont (10, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "MS Sans Serif"); CRect rect (10, 10, 482, 266); m_ctlGroupBox.Create ("", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, rect, this, 0); // kehyskontrolli m_ctlGroupBox.SetFont (&m_fontMain, FALSE); // asettaa kehyskontrollin fontin m_ctlList.CreateEx (WS_EX_CLIENTEDGE, "LISTBOX", NULL, WS_CHILD | WS_VISIBLE | LBS_MULTICOLUMN | LBS_NOTIFY, 40, 50, 413, 130, m_hWnd, (HMENU) 1); // luetteloruutu m_ctlList.SetFont (&m_fontMain, FALSE); m_ctlList.SetColumnWidth (80); for (int i=1 ; i <= 39 ; i ++) // laskee lottonumerot luetteloruutuun { char merkki[2] ; itoa (i, merkki, 10) ; // tietotyypin muunnos m_ctlList.AddString (merkki) ; // lisää rivin } rect.SetRect (40, 191, 90, 207); m_ctlStaticNumerot.Create ("Numerot:", WS_CHILD | WS_VISIBLE, rect, this, (UINT) 0); // luodaan valintanappikontrolli m_ctlStaticNumerot.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti rect.SetRect (40, 223, 110, 239); m_ctlStaticLisanumerot.Create ("Lisänumerot:", WS_CHILD | WS_VISIBLE, rect, this, (UINT) 0); // luodaan valintanappikontrolli m_ctlStaticLisanumerot.SetFont (&m_fontMain, FALSE); // asetetaan valintanappikontrollin fontti for (i=0 ; i <= 6 ; i ++) // 7 lottonumeroa { rect.SetRect (130+40*i, 191, 160+40*i, 209); m_ctlStatic[i].Create ("", WS_CHILD | WS_VISIBLE | SS_CENTER | SS_SUNKEN, rect, this, (UINT) 0); // luodaan valintanappikontrolli } for (i=7 ; i <= 9 ; i ++) // 3 lisänumeroa { rect.SetRect (130+40*(i-7), 223, 160+40*(i-7), 241); m_ctlStatic[i].Create ("", WS_CHILD | WS_VISIBLE | SS_CENTER | SS_SUNKEN, rect, this, (UINT) 0); // luodaan valintanappikontrolli } rect.SetRect (360, 220, 460, 248); m_ctlButton.Create ("Reset", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, (UINT) 2); // painonappi m_ctlButton.SetFont (&m_fontMain, FALSE); m_iValittuNumero=0; // yhtään numeroa ei ole valittu return 0; // kaikki hyvin, 0 palautuu } void CMainWindow::OnListboxDoubleClicked () // Listboxia tuplanapautettu { CString numero; m_ctlList.GetText (m_ctlList.GetCurSel (), numero); // hakee valitun tekstin m_ctlStatic[m_iValittuNumero].SetWindowText (numero) ; // kirjoittaa tekstin m_ctlList.DeleteString (m_ctlList.GetCurSel ()) ; // poistaa rivin m_iValittuNumero++ ; // lisää valittua numeroa if (m_iValittuNumero == 10) m_ctlList.EnableWindow (FALSE) ; // kun kaikki numerot on valittu, poistuu lista käytöstä } void CMainWindow::OnButtonClicked () // 'Reset'-nappia painettu { for (int i=0; i<=9; i++) // kirjoittaa tyhjää m_ctlStatic[i].SetWindowText (NULL); m_ctlList.EnableWindow (TRUE); // avaa luetteloruudun... m_ctlList.ResetContent () ; // ...tyhjentää sen... for (i=1; i<=39; i++) // ...ja täyttää uudestaan { char merkki[2] ; itoa (i, merkki, 10) ; // tietotyypin muunnos m_ctlList.AddString (merkki) ; // lisää rivin } m_iValittuNumero=0; // yhtään numeroa ei ole valittu }