home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
WIREVIEW.LZH
/
WIRVWAPP.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1996-07-10
|
7KB
|
282 lines
/* Project wireview
DoGA
Copyright (c) 1995. Project Team DoGA. All Rights Reserved.
サブシステム: wireview.exe Application
ファイル: wirvwapp.cpp
作成者: Masamichi Takatsu
概要
====
wireviewApp (TApplication) のインプリメンテーション用のソースファイル
*/
#include <owl\owlpch.h>
#pragma hdrstop
#include "wirvwapp.h"
#include "wrvwabtd.h" // 「プログラムについて」ダイアログボックスの定義
#include "winframe.h"
#include "suflib.h"
#include "files.h"
#include "anim.h"
//{{wireviewApp Implementation}}
//
// アプリケーションが処理するすべてのメッセージ/コマンドに対する応答テーブルを作成する
//
DEFINE_RESPONSE_TABLE1(wireviewApp, TApplication)
//{{wireviewAppRSP_TBL_BEGIN}}
EV_COMMAND(CM_FILENEW, CmFileNew),
EV_COMMAND(CM_FILEOPEN, CmFileOpen),
EV_COMMAND(CM_FILECLOSE, CmFileClose),
EV_COMMAND(CM_HELPABOUT, CmHelpAbout),
//{{wireviewAppRSP_TBL_END}}
END_RESPONSE_TABLE;
//////////////////////////////////////////////////////////
// wireviewApp
// =====
//
wireviewApp::wireviewApp () : TApplication("WireView")
{
// 「開く」と「名前を付けて保存」ダイアログボックスに共通の,ファイルフラグとフィルタ。ファイル名と
// ディレクトリは,メンバー関数 CmFileOpen と CmFileSaveAs で計算される
FileData.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
FileData.SetFilter("すべてのファイル (*.*)|*.*|");
// INSERT>> コンストラクタ用のコードはここに
}
wireviewApp::~wireviewApp ()
{
// INSERT>> デストラクタ用のコードはここに
}
//////////////////////////////////////////////////////////
// wireviewApp
// =====
// アプリケーションの初期化
//
void wireviewApp::InitMainWindow ()
{
TWinFrame *client = new TWinFrame(0);
SDIDecFrame *frame = new SDIDecFrame(0, GetName(), client, FALSE);
// TFrameWindow *frame = new TFrameWindow(0, GetName(), client, TRUE);
// TFrameWindow *frame = new TFrameWindow(0, GetName(), client, FALSE);
nCmdShow = nCmdShow != SW_SHOWMINIMIZED ? SW_SHOWNORMAL : nCmdShow;
int screenX = GetSystemMetrics(SM_CXSCREEN);
int screenY = GetSystemMetrics(SM_CYSCREEN);
if (wireview_x < 0 || wireview_y < 0 || wireview_w < 0 || wireview_h < 0) {
frame->Attr.W = 320;
frame->Attr.H = 240;
wireview_x = wireview_y = 0;
wireview_w = frame->Attr.W;
wireview_h = frame->Attr.H;
} else {
if (wireview_w > screenX) wireview_w = screenX;
if (wireview_h > screenY) wireview_h = screenY;
if (wireview_x + wireview_w > screenX) wireview_x = screenX - wireview_w;
if (wireview_y + wireview_h > screenY) wireview_y = screenY - wireview_h;
frame->Attr.X = wireview_x;
frame->Attr.Y = wireview_y;
frame->Attr.W = wireview_w;
frame->Attr.H = wireview_h;
}
//
// このアプリケーションに,アイコンを設定する
//
frame->SetIcon(this, IDI_SDIAPPLICATION);
//
// ウィンドウに対応したメニューと,テーブルに対応したアクセラレータのテーブル
//
// frame->AssignMenu(SDI_MENU);
//
// アクセラレータテーブルへの関連付け
//
// frame->Attr.AccelTable = SDI_MENU;
SetMainWindow(frame);
}
//////////////////////////////////////////////////////////
// wireviewApp
// ===========
// 「ファイル」メニューの「新規作成」コマンド
void wireviewApp::CmFileNew ()
{
// TEditFile *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TEditFile); // フレーム用のクライアントウィンドウ
// client->NewFile();
TWinFrame *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TWinFrame);
client->anim->NewFile();
}
//////////////////////////////////////////////////////////
// wireviewApp
// ===========
// 「ファイル」メニューの「開く」コマンド
void wireviewApp::CmFileOpen ()
{
//
// 標準の「開く」ダイアログボックスを表示し,ファイル名を選ぶ
//
// *FileData.FileName = 0;
// TEditFile *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TEditFile); // フレーム用のクライアントウィンドウ
// if (client->CanClose())
// if (TFileOpenDialog(GetMainWindow(), FileData).Execute() == IDOK)
// OpenFile();
TWinFrame *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TWinFrame);
char name[128];
if (client->anim->GetMotionName(name)) {
client->anim->ReadFile(name);
}
}
void wireviewApp::OpenFile (const char *fileName)
{
if (fileName)
lstrcpy(FileData.FileName, fileName);
TEditFile *client = TYPESAFE_DOWNCAST(GetMainWindow()->GetClientWindow(), TEditFile); // フレーム用のクライアントウィンドウ
client->ReplaceWith(FileData.FileName);
}
//////////////////////////////////////////////////////////
// wireviewApp
// =====
// 「ファイル」メニューの「閉じる」コマンド
void wireviewApp::CmFileClose ()
{
CmFileNew();
}
//
// このアプリケーションで処理するすべてのメッセージ/コマンドの
// 応答テーブルを作成する
//
DEFINE_RESPONSE_TABLE1(SDIDecFrame, TDecoratedFrame)
//{{SDIDecFrameRSP_TBL_BEGIN}}
EV_WM_SIZE,
EV_WM_MOVE,
EV_WM_WINDOWPOSCHANGING,
//{{SDIDecFrameRSP_TBL_END}}
END_RESPONSE_TABLE;
//{{SDIDecFrame Implementation}}
SDIDecFrame::SDIDecFrame (TWindow *parent, const char far *title, TWindow *clientWnd, BOOL trackMenuSelection, TModule *module)
: TDecoratedFrame(parent, title, clientWnd, trackMenuSelection, module)
{
// INSERT>> コンストラクタ用のコードはここに
}
SDIDecFrame::~SDIDecFrame ()
{
// INSERT>> デストラクタ用のコードはここに
FileWriteWireview();
}
void SDIDecFrame::EvSize (UINT sizeType, TSize& size)
{
// INSERT>> 追加コードはここに
TDecoratedFrame::EvSize(sizeType, size);
if (sizeType == SIZE_MAXIMIZED || sizeType == SIZE_RESTORED) {
int edgew = GetSystemMetrics(SM_CXBORDER) * 2;
int edgeh = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYBORDER);
wireview_w = size.cx + edgew;
wireview_h = size.cy + edgeh;
}
}
void SDIDecFrame::EvMove (TPoint& clientOrigin)
{
TDecoratedFrame::EvMove(clientOrigin);
// INSERT>> 追加コードはここに
int edgew = GetSystemMetrics(SM_CXBORDER);
int edgeh = GetSystemMetrics(SM_CYCAPTION);
wireview_x = clientOrigin.x - edgew;
wireview_y = clientOrigin.y - edgeh;
}
void SDIDecFrame::EvWindowPosChanging (WINDOWPOS far& windowPos)
{
TDecoratedFrame::EvWindowPosChanging(windowPos);
// INSERT>> 追加コードはここに
#define BUTTONSIZE 24
int edgew = GetSystemMetrics(SM_CXBORDER) * 2;
int edgeh = GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYBORDER);
if (windowPos.cy - edgeh - BUTTONSIZE > (windowPos.cx - edgew) * 3 / 4) {
windowPos.cy = (windowPos.cx - edgew) * 3 / 4 + edgeh + BUTTONSIZE;
} else {
windowPos.cx = (windowPos.cy - edgeh - BUTTONSIZE) * 4 / 3 + edgew;
}
// wireview_w = windowPos.cx + edgew;
// wireview_h = windowPos.cy + edgeh;
}
//////////////////////////////////////////////////////////
// wireviewApp
// ===========
// 「ヘルプ」メニューの「wireview.exe について」コマンド
void wireviewApp::CmHelpAbout ()
{
//
// モーダルダイアログを表示する
//
wireviewAboutDlg(MainWindow).Execute();
}
int OwlMain (int , char* [])
{
wireviewApp App;
int result;
FileInit();
Object::UsePoly();
result = App.Run();
return result;
}