Usage With ListBox, CheckBox, Timer

2010/11/13

本文对ListBox,CheckBox,Timer三种控件进行了学习。

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"

/*
本节介绍了CheckBox、ListBox、Timer三种控件的使用
*/
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
        HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }

    return FALSE;
}

void CALLBACK MyTimerProc(HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
{
    SYSTEMTIME stLocal;
    GetLocalTime(&stLocal);
    TCHAR strTime[256];
    wsprintf(strTime,"%i年%i月%i日 %i:%i:%i",
        stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond);
    SetDlgItemText(hwnd,IDC_EDITTIME,strTime);
}

BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    SetTimer(hwnd,0,1000,MyTimerProc);
    return TRUE;
}

void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    HWND hwnd_check1 = GetDlgItem(hwnd,IDC_CHECK1);
    int checkStatus = Button_GetCheck(hwnd_check1);
    switch(id)
    {
    case IDC_OK:
        {
            //::SendMessage(HWND_BROADCAST,WM_SYSCOMMAND,SC_MONITORPOWER,2); //关闭显示器的API
            HWND hwnd_check1 = GetDlgItem(hwnd,IDC_CHECK1);
            int checkStatus = Button_GetCheck(hwnd_check1);
            if(BST_CHECKED == checkStatus)
            {
                MessageBox(hwnd,TEXT("CheckBox被选中"),TEXT("提示"),MB_OK);
            }
            if(BST_UNCHECKED == checkStatus)
            {
                MessageBox(hwnd,TEXT("CheckBox未被选中"),TEXT("提示"),MB_OK);
            }
        }
        break;
    case IDC_CHANGE:
        {
            HWND hwnd_check1 = GetDlgItem(hwnd,IDC_CHECK1);
            int checkStatus = Button_GetCheck(hwnd_check1);
            if(BST_CHECKED == checkStatus)
            {
                Button_SetCheck(hwnd_check1,BST_UNCHECKED);
            }
            if(BST_UNCHECKED == checkStatus)
            {
                Button_SetCheck(hwnd_check1,BST_CHECKED);
            }

        }
        break;
    case IDC_LISTBUTTON:
        {
            HWND hwnd_list1 = GetDlgItem(hwnd,IDC_LIST1);
            ListBox_AddString(hwnd_list1,TEXT("新的一项"));
            /*类似的有ListBox_InsertString(hwnd_list1,int index,TEXT(""))
            ListBox_DeleteString(hwnd_list1,int index)
            ListBox_GetCurSel(hwnd_list1)
            ListBox_SetCurSel(hwnd_list1,int index)//其中index设置为-1意为取消所有选择
            ListBox_GetCount(hwnd_list1)等等函数*/
        }
    default:
        break;
    }
}

void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}