SOL9 2.0 Class: OperationNotifier

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * OperationNotifier.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


#pragma once

#include <sol\PopupView.h>
#include <sol\Static.h>
#include <sol\TextField.h>
#include <sol\IntegerField.h>
#include <sol\PushButton.h>
#include <sol\MessageFont.h>
#include <sol/ClientDC.h>

//2009/10/18
#include <sol/StringT.h>

namespace SOL {

class OperationNotifier :public PopupView {
private:
    Static        label;
    MessageFont        font;

public:
    /**
     */
    OperationNotifier()
        :PopupView()
    {

    }

public:
    Boolean create(View* parent, const TCHAR* name, Args& args)
    {
        Boolean rc = PopupView::create(parent, name, args);//.set(XmStyle, WS_POPUP));

        Args ar;
        font.create(9);
    
        ar.reset();
        label.create(this, name, ar);
        label.setFont(&font);


        addEventHandler(WM_GETMINMAXINFO, this,
            (Handler)&OperationNotifier::minMaxInfo, NULL);
    
        resize();

        return rc;
    }

private:
    long minMaxInfo(Event& event)
    {
        LPMINMAXINFO lpmm = (LPMINMAXINFO)event.getLParam();
       lpmm->ptMinTrackSize.x = 320;
       lpmm->ptMinTrackSize.y = 60;
       lpmm->ptMaxTrackSize.x = 600;
       lpmm->ptMaxTrackSize.y = 60;

        return 0;
    }

public:
    ~OperationNotifier()
    {
    }

    void    setLabel(const char* string) 
    { 
        label.setText(string); 
    }

    void    setLabel(const wchar_t* string) 
    { 
        label.setText(string); 
    }

private:
    long size(Event& event)
    {
        int w, h;
        event.getSize(w, h);
        
        ClientDC cdc(this);
        HGDIOBJ prev = cdc.select(font);
        int h1 = cdc.getTextHeight() * 7/5;
        int fh = cdc.getTextHeight() + 8;
        cdc.select(prev);
        
        int w1 = 80;//button width;

        label.reshape(4, 4, w-8, fh);

        update(NULL);

        return 0L;
    }
};

}


Last modified: 1 Feb 2012

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