SOL9 2.0 Sample: Timer

SOL9 2.0 Samples

1 Screenshot


2 Source code

/*
 * Timer.cpp 
 * Copyright (c) 2009 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL++2000
// 2000.02.18

#include <sol\ApplicationView.h>
#include <sol\Font.h>
#include <sol\PaintDC.h>
#include <sol/StringConverter.h>
#include <sol/StringT.h>
#include <time.h>

namespace SOL {

class AppView :public ApplicationView {
private:
    Font          font;

public:
    /**
     * Constructor
     */
    AppView(Application& applet, const TCHAR* name, Args& args) 
        :ApplicationView(applet, name, args)
    {
        Args ar;
        ar.set(XmNheight, (-12)*2);
        ar.set(XmNweight, (ulong) FW_BOLD);
        ar.set(XmNfaceName, _T("Arial"));
        font.create(ar);
        
        addEventHandler(WM_TIMER, this, 
            (Handler)&AppView::timeout, null);
        addEventHandler(WM_PAINT, this, 
            (Handler)&AppView::paint, null);
        
        setTimer(1, 1000, null);
    }

public:
    ~AppView() { 
        killTimer(1);
    }

private:
    long    paint(Event& event) 
    {
        time_t ntime;
        time(&ntime);
        
        char buffer[128];

        sprintf(buffer, "%s", ctime(&ntime));
        buffer[strlen(buffer)-1] = Zero;
        StringConverter converter;
        StringT<TCHAR> tstring;
        converter.convert(buffer, tstring);
        const TCHAR* string = (const TCHAR*)tstring;
        PaintDC pdc(this);
        HFONT prev = (HFONT)pdc.select(&font);
        pdc.textOut(10, 10, string, strlen(string));
        pdc.select(prev);
        return 0;
    }

private:
    long    timeout(Event& event) 
    {
        invalidate((RECT*)null);
        update();
        return 0;
    }

};

}
//
void    Main(int argc, TCHAR** argv)
{
    const String appClass = "TimerApplet";
    try {
        Application applet(appClass, argc, argv);

        Args args;
        args.set(XmNwidth, 400);
        args.set(XmNheight, 80);
        AppView appView(applet, appClass, args);
        appView.realize();
        applet.run();
    } catch (...) {

    }

}

Last modified: 11 Nov 2009

Copyright (c) 2009 Antillia.com ALL RIGHTS RESERVED.