//*********************************************************************** // // resurssit.cpp // //*********************************************************************** #include #include "resource.h" #include "resurssit.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 () // lomake luodaan ON_WM_MENUSELECT () // valikkoa selataan ON_WM_CONTEXTMENU () // pullahdusvalikkoa selataan ON_COMMAND (ID_FILE_EXIT, OnFileExit) // Exit ON_COMMAND (ID_FILE_VALINTA1, OnFileValinta1) // Valinta1 ON_COMMAND (ID_FILE_VALINTA2, OnFileValinta2) // Valinta2 ON_COMMAND (ID_CHECKEDVALIKKO_CHECKED1, OnCheckedValikkoChecked1) // Checked1 ON_COMMAND (ID_CHECKEDVALIKKO_CHECKED2, OnCheckedValikkoChecked2) // Checked2 ON_COMMAND (ID_CHECKEDVALIKKO_CHECKED3, OnCheckedValikkoChecked3) // Checked3 END_MESSAGE_MAP () CMainWindow::CMainWindow () { CString strWndClass = AfxRegisterWndClass ( NULL, // ikkunan tyyli AfxGetApp ()->LoadCursor (IDC_CURSOR1), // oma kursori (HBRUSH) COLOR_WINDOW, // ikkunan taustan väri AfxGetApp ()->LoadIcon (IDI_ICON1) // oma ikoni ); // rekisteröidään oma ikkunaluokka CreateEx ( NULL, // ikkunan lisätyyli strWndClass, // lomakkeen ikkunaluokka "Resurssit", // ikkunan otsikko WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, // ikkunan tyyli CW_USEDEFAULT, // x-positio aluksi CW_USEDEFAULT, // y-positio aluksi 500, // leveys aluksi 300, // korkeus aluksi NULL, // emoikkunan kahva NULL, // ikkunan valikon kahva NULL // lisätietoja ); // luodaan ikkuna CMenu menu; // menu-olion luonti menu.LoadMenu (IDR_MENU1); // menun lataus SetMenu (&menu); // valikon kiinnitys lomakkeelle menu.Detach (); // valikon irroitus menu-oliosta } int CMainWindow::OnCreate (LPCREATESTRUCT lpcs) // 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"); // fontin luominen CRect rect (10, 10, 482, 246); // luodaan CRect-luokan olio jota käytetään kehyskontrollin luomisessa m_ctlGroupBox.Create ("Resurssit", WS_CHILD | WS_VISIBLE | BS_GROUPBOX, rect, this, (UINT) -1); // luodaan kehyskontrolli m_ctlGroupBox.SetFont (&m_fontMain, FALSE); // asetetaan kehyskontrollin fontti rect.SetRect (20, 215, 472, 230); m_ctlStatic.Create ("Resurssit", WS_CHILD | WS_VISIBLE | SS_SUNKEN, rect, this, (UINT) 1); // luodaan etikettikontrolli m_ctlStatic.SetFont (&m_fontMain, FALSE); // asetetaan etikettikontrollin fontti return 0; // kaikki hyvin, palautetaan 0 } void CMainWindow::OnMenuSelect (UINT menuvalinta) // valikkoa selataan { switch (menuvalinta) // valikon kohta palatuu tässä { case ID_CHECKEDVALIKKO_CHECKED1 : case ID_CHECKEDVALIKKO_CHECKED2 : case ID_CHECKEDVALIKKO_CHECKED3 : m_ctlStatic.SetWindowText ("Checked valikko") ; // Checked-valikkoa selataan break; case ID_INACTIVEVALIKKO_INACTIVE1 : case ID_INACTIVEVALIKKO_INACTIVE2 : case ID_INACTIVEVALIKKO_INACTIVE3 : m_ctlStatic.SetWindowText ("Inactive valikko") ; // Inactive-valikkoa selataan break; case ID_FILE_VALINTA1 : case ID_FILE_VALINTA2 : case ID_FILE_VALINTA3 : m_ctlStatic.SetWindowText ("File valikko ja valinta kohta") ; // File-valikkoa selataan break; case ID_FILE_EXIT : m_ctlStatic.SetWindowText ("File valikko ja lopetus kohta") ; // Exit-kohtaa selataan } } void CMainWindow::OnContextMenu (CWnd *pWnd, CPoint point) { CRect rect; GetClientRect (&rect); ClientToScreen (&rect); // koordinaattimuunnos if (rect.PtInRect (point)) // tutkitaan onko hiiren koordinaatit lomakkeen sisällä { CMenu menu; // luodaan menu-olio menu.LoadMenu (IDR_POPUPMENU); // ladataan se muistiin CMenu *pContextMenu = menu.GetSubMenu (0); //asetetaan menu valikko pullahdusvalikoksi pContextMenu->TrackPopupMenu (TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, this); // näytetään valikko return; } CWnd::OnContextMenu (pWnd, point); } void CMainWindow::OnFileExit () { SendMessage (WM_CLOSE, 0, 0) ; // suljetaan ohjelma } void CMainWindow::OnFileValinta1 () { m_ctlStatic.SetWindowText ("Valinta1 valittu") ; // tulostetaan aputeksti } void CMainWindow::OnFileValinta2 () { m_ctlStatic.SetWindowText ("Valinta2 valittu") ; // tulostetaan aputeksti } void CMainWindow::OnCheckedValikkoChecked1 (UINT menuvalinta) { CMenu *pMenu = GetMenu (); // haetaan valikon kahva long ruksi = pMenu->GetMenuState (ID_CHECKEDVALIKKO_CHECKED1, MF_BYCOMMAND); // kysytään valikon tila if (ruksi == MF_CHECKED) // onko valikossa rastia pMenu->CheckMenuItem (ID_CHECKEDVALIKKO_CHECKED1, MF_UNCHECKED ) ; // otetaan merkki pois else // valikossa ei ole rastia pMenu->CheckMenuItem (ID_CHECKEDVALIKKO_CHECKED1, MF_CHECKED ) ; // merkataan valikko m_ctlStatic.SetWindowText ("Checked1 valittu ja merkki vaihdettu") ; // tulostetaan aputeksti } void CMainWindow::OnCheckedValikkoChecked2 (UINT menuvalinta) { CMenu *pMenu = GetMenu (); // haetaan valikon kahva long ruksi = pMenu->GetMenuState (ID_CHECKEDVALIKKO_CHECKED2, MF_BYCOMMAND); // kysytään valikon tila if (ruksi == MF_CHECKED) // onko valikossa rastia pMenu->CheckMenuItem (ID_CHECKEDVALIKKO_CHECKED2, MF_UNCHECKED ) ; // otetaan merkki pois else // valikossa ei ole rastia pMenu->CheckMenuItem (ID_CHECKEDVALIKKO_CHECKED2, MF_CHECKED ) ; // merkataan valikko m_ctlStatic.SetWindowText ("Checked2 valittu ja merkki vaihdettu") ; // tulostetaan aputeksti } void CMainWindow::OnCheckedValikkoChecked3 (UINT menuvalinta) { CMenu *pMenu = GetMenu (); // haetaan valikon kahva long ruksi = pMenu->GetMenuState (ID_CHECKEDVALIKKO_CHECKED3, MF_BYCOMMAND); // kysytään valikon tila if (ruksi == MF_CHECKED) // onko valikossa rastia pMenu->CheckMenuItem (ID_CHECKEDVALIKKO_CHECKED3, MF_UNCHECKED ) ; // otetaan merkki pois else // valikossa ei ole rastia pMenu->CheckMenuItem (ID_CHECKEDVALIKKO_CHECKED3, MF_CHECKED ) ; // merkataan valikko m_ctlStatic.SetWindowText ("Checked3 valittu ja merkki vaihdettu") ; // tulostetaan aputeksti }