SOL9 2.0 Class: PageSetupDialog

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

Source code

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


// SOL++2000
// 2000.02.18
#pragma once

#include <sol\CommonDialog.h>

namespace SOL {

class PageSetupDialog :public CommonDialog {
public:
    PageSetupDialog(): CommonDialog() { }

public:
    PageSetupDialog(View* parent, const TCHAR* name, Args& args)
    :CommonDialog(parent, new PAGESETUPDLG)
    {
        PAGESETUPDLG* pd = get();
        memset(pd, 0, sizeof(PAGESETUPDLG));
        pd -> lStructSize = sizeof(PAGESETUPDLG);
        pd -> hInstance  = GetModuleHandle(NULL);//Application::getInstance();

        if(parent) {
            pd -> hwndOwner = parent -> getWindow();
        }
        pd -> Flags   = PSD_DEFAULTMINMARGINS|PSD_INHUNDREDTHSOFMILLIMETERS;
        setValues(args);
    }

public:
    PageSetupDialog::~PageSetupDialog() 
    {
        PAGESETUPDLG* pd = get();
        delete pd;
    }

public:
    virtual Boolean create(View* parent, const TCHAR* name, Args& args)
    {    
        Boolean rc = True;
        CommonDialog::create(parent, new PAGESETUPDLG);

        PAGESETUPDLG* pd = get();
        memset(pd, 0, sizeof(PAGESETUPDLG));
        pd -> lStructSize = sizeof(PAGESETUPDLG);
        pd -> hInstance  = GetModuleHandle(NULL);//Application::getInstance();

        if(parent) {
            pd -> hwndOwner = parent -> getWindow();
        }
        pd -> Flags   = PSD_DEFAULTMINMARGINS|PSD_INHUNDREDTHSOFMILLIMETERS;
        setValues(args);

        return rc;
    }

public:
    void PageSetupDialog::getValues(Args& args)
    {
        PAGESETUPDLG* pd = get();
        ulong* val = NULL;
        int num   = args.getCount();
        Arg* arg  = args.getArgList();

        for (int i = 0; i<num; i++) {
            const TCHAR* name = arg[i].name;
            *val = (ulong)arg[i].value;
            if (name == XmNflags) {
                *val = (ulong)pd->Flags;
                continue;
            }
        }
    }

public:
    void PageSetupDialog::setValues(Args& args)
    {
        PAGESETUPDLG* pd = get();
        ulong val;
        if (args.get(XmNhook, &val)) {
            pd -> Flags |= PSD_ENABLEPAGESETUPHOOK;
            pd -> lpfnPageSetupHook = (HOOKFUN)val;
        }
        if (args.get(XmNtemplateName, &val)) {
            pd -> Flags |= PSD_ENABLEPAGESETUPTEMPLATE;
            pd -> lpPageSetupTemplateName  = (TCHAR*)val;
        }
        if (args.get(XmNflags, &val)) {
            pd ->Flags |= (DWORD)val;
        }
    }

public:
    void PageSetupDialog::popup(Action& action)
    {
        int result = pageSetup();
        action.setResult(result);
    }

    PAGESETUPDLG* get() {
        return (PAGESETUPDLG*)getCallData();
    }

    int    pageSetup() {
        return PageSetupDlg(get());
    }
/*
    void    getValues(Args& args);
    void    setValues(Args& args);

    void    popup(Action& action);
*/
};

}



Last modified: 1 Feb 2012

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