⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wince.c

📁 PB 熟悉的哥们希望大家可以互相学习一下
💻 C
字号:
#include "platform.h"
#include "mco.h"

char strbuf[2048];
char scr[2048] = "\n\n";

extern HWND hscr;
char input[256];
int inoffs = 0;
HANDLE InEvent;

timer_unit mco_system_get_current_time()
{
    return (timer_unit)GetTickCount();
}

time_t __cdecl time(time_t* timer)
{
    SYSTEMTIME t;
    time_t tm;

    GetLocalTime(&t);

    tm = ((((((t.wYear - 1980)* 12) + t.wMonth)* 31+t.wDay)* 24+t.wHour)* 60+t.wMinute)* 60+t.wSecond;
    if (timer != 0)
    {
        * timer = tm;
    }
    return tm;
}

static char str[100];
char* __cdecl ctime(time_t* pt)
{
    time_t t = * pt;
    time_t s = t % 60;
    time_t m = (t = (t - s) / 60) % 60;
    time_t h = (t = (t - m) / 60) % 24;
    time_t d = (t = (t - h) / 24) % 31;
    time_t mm = (t = (t - d) / 31) % 12;
    time_t y = (t = (t - mm) / 12+1980);

    sprintf(str, "%ld-%ld-%ld:%ld:%ld:%ld\n", d, mm, y, h, m, s);
    return str;
}

int __cdecl _vprintf(const char* fmt, void* args)
{
    int cnt = 0, i;
    char* pi, * po;

    vsprintf(strbuf, fmt, args);

    for (po = scr + 2; * po; po++)
        ;
    pi = strbuf;

    for (i = 0; * pi;)
    {
        if (*pi == '\n')
        {
            i = 0;
        }
        *po++ = * pi++;
        if ((++i) >= SCR_WIDTH)
        {
            *po++ = '\r';
            * po++ = '\n';
            i = 0;
        }
    }

    *po = 0;
    if (*(po - 1) == '\n')
    {
        Sleep(0);
    }

    for (pi = scr + 2; * pi; pi++)
    {
        if (*pi == '\n')
        {
            cnt++;
        }
    }

    if (cnt > SCR_HEIGHT)
    {
        cnt = cnt - SCR_HEIGHT;
        for (pi = scr + 2, i = 0; i < cnt;)
        {
            if (*pi == 0)
            {
                break;
            }
            if (*pi++ == '\n')
            {
                i++;
            }
        }
        memcpy(scr + 2, pi, strlen(pi) + 1);
    }

    PostMessage(hscr, WM_PAINT, 0, 0);
    return 0;
}

int __cdecl printf(const char* fmt, ...)
{
    int res;
    va_list argptr;

    va_start(argptr, fmt);
    res = _vprintf(fmt, argptr);
    va_end(argptr);

    return res;
}

char* __cdecl fgets(char* str, int size, FILE* file)
{
    char* pi;

    WaitForSingleObject(InEvent, INFINITE);
    memcpy(str, input, inoffs + 1);
    for (pi = scr + 2; * pi; pi++)
        ;
    *pi++ = '\n';
    * pi = 0;
    inoffs = 0;
    return str;
}

char* __cdecl gets(char* str)
{
    char* pi;

    WaitForSingleObject(InEvent, INFINITE);
    memcpy(str, input, inoffs + 1);
    for (pi = scr + 2; * pi; pi++)
        ;
    *pi++ = '\n';
    * pi = 0;
    inoffs = 0;
    return str;
}

int __cdecl getchar(void)
{
    char* pi;

    WaitForSingleObject(InEvent, INFINITE);
    for (pi = scr + 2; * pi; pi++)
        ;
    *pi++ = '\n';
    * pi = 0;
    return (int)input[0];
}

unsigned long __cdecl _beginthread(void(__cdecl* initialcode)(void*), unsigned stacksize, void* argument)
{
    DWORD errcode;
    DWORD tid;
    HANDLE thdl;

    /*
     * Create the new thread. Bring it up in a suspended state so that
     * the _thandle and _tid fields are filled in before execution
     * starts.
     */
    if ((thdl = CreateThread(NULL, 0, (unsigned long(__stdcall*)(void*))initialcode, argument, CREATE_SUSPENDED,  &tid))
        == 0L)
    {
        errcode = GetLastError();
        goto error_return;
    }

    /*
     * Start the new thread executing
     */
    if (ResumeThread((HANDLE)thdl) == (DWORD)( - 1L))
    {
        errcode = GetLastError();
        goto error_return;
    }

    /*
     * Good return
     */
    return (DWORD)thdl;

    /*
     * Error return
     */
    error_return: return ((unsigned long) - 1L);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -