​​

进程二双向计时器

// Time.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include<stdio.h>
#include "resource.h"

HWND hwndEdit;
HWND hwndEdit1;

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
    TCHAR szBuff[10] = {0};
    int num = 0;    
    GetWindowText(hwndEdit, szBuff, 10);
    sscanf(szBuff, "%d", &num);
    while(num > 0)
    {
        --num;
        sprintf(szBuff, "%d", num);
        Sleep(1000);
        SetWindowText(hwndEdit, szBuff);
    }
    return 0;
}


DWORD WINAPI ThreadProc1(LPVOID lpParameter)
{
    TCHAR szBuff[10] = {0};
    int num = 0;    
    GetWindowText(hwndEdit1, szBuff, 10);
    sscanf(szBuff, "%d", &num);
    while(num < 1000)
    {
        ++num;
        sprintf(szBuff, "%d", num);
        Sleep(1000);
        SetWindowText(hwndEdit1, szBuff);
    }
    return 0;
}


BOOL CALLBACK ProcDlg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    TCHAR szBuff[10] = {0};
    int num = 0;
    switch(uMsg)
    {
    case WM_CLOSE:
        EndDialog(hwnd, 0);
        break;
    case WM_INITDIALOG:
        hwndEdit = GetDlgItem(hwnd, IDC_EDIT1);
        SetWindowText(hwndEdit, "1000");

        hwndEdit1 = GetDlgItem(hwnd, IDC_EDIT2);
        SetWindowText(hwndEdit1, "0");
        return TRUE;
    case WM_COMMAND:
        switch(LOWORD(wParam))
        {
        case IDC_BUTTON:
            HANDLE hThread = ::CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL);
            ::CloseHandle(hThread);

            HANDLE hThread1 = ::CreateThread(NULL, 0, ThreadProc1, NULL, 0, NULL);
            ::CloseHandle(hThread1);
            return TRUE;
        }
    }

    return FALSE;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
     // TODO: Place code here.
    DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, ProcDlg);
    return 0;
}

 

posted @ 2020-09-19 18:36  w_athena  阅读(139)  评论(0编辑  收藏  举报