続々登場新ライフラリ 0 ソースコード付属 / 組み込みロイヤルティ無料 0 すわ e C 儿′ 'a es fo 「 PC -9800 series UWindow & Menu 2.0 IKey & Di 叩 y 2.0 価格ア 2 クク 価格ア 2 クク テキスト画面を対象として、オーバーラップ可能なウインドウを 100 個まてオープン、操作 1 文字単位のキー入力から、 1 行工テイタ、数値 / 全角等文字種指定のテータ入力関数ま で、また 1 文字表示から、指定領域に折り返し表示を行う関数、カーソル移動キーにより 可能なライプラリ。オープン / クローズ / 切り換え / 移動 / サイズの変更 / 文字列のスク ロール、折り返し表示等の機能を備えています。目的別に 5 つのタイプのウインドウがあ 上下左右スクロール表示が可能なテキスト表示関数まで、キー入力、画面表示 / 制御のさ り、表示内容 / 形式によって使い分けることがてきます。また、ウインドウを利用したメ まざまな機能を提供するライプラリ。・キー入力ファンクションキー、カーソル移動キ ニュー選択関数ては、カーソル移動キー、ホットキーによる選択、サプメニューの表示 / 、 ANK 、漢字の各コードを 1 回のキー入力関数で取得できる。■日本語入力 FEP の制 御 ATOK6 / 7 、 VJE 、 NEC/NECAI 選択も可能。その他、 1 行編集入力関数、 の起動、入力 / 変換モードの切り替え、 スクロール表示関数、メニュー選択関数 終了等の機能を提供。・スクロール可能 で使用するキーの変更が可能です。 ー 00F / 齢コンソ - ルコントロ - ルライフラリ 20 価格 59 ク な 1 行工テイタにより、表示幅より大き ・スクロール表示 / メニュー選択 / 1 行 価格釤 編集入力時の操作キーの指定ができる。 いテキストの入力が可能。・テータ入力 ー CCF/EX 2.0 関数日本語入力 FEP の制御を伴った ・フレームの表示 / 非表示ーウインド キー入力、文字列表示、グラフィック、マウス、ウインドウ、メニュー、プリンタ等 290 ウタイプにより、スクロール / 折り返し 文字種指定のデータ入力関数カンマ編 以上の関数て構成される総合コンソールコントロールライプラリです。 集・折り返し表示可能な指定領域への / 部分スクロールが可能■スクロール TWindow & tKey & DiSDlayR tGraphic & Mousez を包含し 文字列表示関数■スクロール表示関数 関数はスクロール単位の指定が可能 ています。ウインドウ / メニュー機能、キー入力 / 文字 / 文字列表示 / 操作 / カーソル制 メニュー関数はホットキー / スキップ項 カーソル移動キーにより上下左右スクロ 御 / 日本語入力 FEP 制御 / 編集入力の各機能、グラフィック / マウス機能については 目の指定、メニューバーのサイズ / 表示 ール表示が可能なテキスト表示関数。・ それぞれのライプラリの説明をこ覧ください。 その他各種シフトキーの取得、文字属 項目の指定ができ、また、サプメニュー ■プリンタ関数には OS 経由でプリンタに文字コード / 制御コードを送り、文字の印字、 性 ( 表示色 / リノヾース / プリンク / アンダ の表示 / 選択ができるのて、階層化が可能 拡大、強調、アンダライン等のモードの設定 / 解除、印字方向、改行幅等の指定から、 ーライン等 ) の設定。・画面を複数領域に 文字列印字、罫線印字機能付き文字列印字関数までをサポート。 ( PC - P 日系プリンタに 分割し、情報の変化を逐次表示したり、 対応 ) ・対応 C 言語 MS-C 6.0 / TC 2.0 / TC + + /QC 2.0 IGraphic & Mouse スクロール表示が可能なバネルウイドウ ※バネルウインドウ機能はウインドウ機能のサフセットと考えられるため、含まれません。 機能。 * MS - C は 6.0 のみに対応 ※ CCF / EX はノーマル / ハイレソの両モードに対応し、八イレゾモード時は互換モードもあります。 点、線、矩形、円、文字等を描画する関数、 指定領域を切り出す、貼り戻す、表示モードの設定を行う制御関数が、またマウスカーソ ルの表示 / 非表示、ホタン情報の取得、移動範囲の取得等の関数かあります。拡張グラフ ィック関数 ( 線 / 矩形 / 円 / 連続線分描画 ) ではラスタオペレーションの指定か可能。グラ フィック / テキストの個別 / 混在八一ドコピー関数も用意。標準で 16 色ホードが装着され ている機種では 16 色表示可能 ( 拡張グラフィック関数を除く ) IBGM/5 ラ成プロクラム価格ア 9 ククク NEW 価格ア 3 クり IBGM/Kit 0 側訂 S 12 種類のグラフ作成機能を提供するバッケージ。例えば、必要なバラメータを設定し、関 数を呼び出すだけで円グラフや棒グラフを簡単に描画することができます。さらに、タイ ヒジネスアプリケーションで必要とされるあらゆるグラフ情報を表現できます。 ・八一ドコピーによりグラフの印刷が可能。■標準で 16 色ボードが装着されている機種で は 16 色表示可能 ( 一部の関数を除く ) ◆「日 GM / Kit 」は「 CCF / 総合コンソールコントロールライプラリ」、 CG 「 aphic & MOUS 印ユーサーのためのグラフ描画関数ライプラリ。 第 ranes IMenu & select 物 ? 咽 s 価格ア 29 りク rMenu & S 引 ect 』はメニュー表示と項目選択に関する機能を提供する C 言語用ライプ ラリてす。画面のまん中に数個のメニューを表示するべージメニュー、指定行に表示する ラインメニュー、ポップアップメニュー、一度に多くの項目を選択対象として表示できス クロール可能なワイドメニュー、一覧表のような形式のリストメニューが提供され、カー ソル移動キー、ホットキーおよびマウスによる選択が可能です。各メニュー関数は組み合 わせて利用することかできるので、用途に合わせて最適なメニューを利用することができ ます。また、選択されたメニューを表示したまま次のレベルのメニュー選択が可能です。 メニュー選択時のキーコードは簡単に変更することができるので、アプリケーションに合 わせたキー設定か可能です。簡単に呼び出せる A 曰メニューバーの大きさの変更、メニ ュー選択中に他の処理を行う等のフレキシプルな処理か可能な A 曰の 2 種類の A 曰をサポ ートしています。ページメニューを除くすべてのメニューを階層化することかできる階層 メニュー機能があり、一連のメニュー選択を自動化することができます。また、キーの変 更によりメニューカーソルの移動キー、選択キーを変更することも可能です。 マシン共通化ライフラリ PF / 98 P ドし / J3100 PFL/AX PFL/FMR 物 0 訂 s PFL ライプラリは複数のパソコンて同一仕様の関数を提供するライプラリシリーズ。 NE C PC -9800 シリーズ、東芝 J ー 3100 シリーズ、各社 AX 仕様パソコン、富士通 FM 日 -50 シ リーズ間て、各機種の日 OS 、八一ドウェア等の差異を吸収し、統合化された関数インタ ーフェイスを提供することにより、同一仕様の関数を提供し、マシンインテペンテントな ソフト開発が可能なプラットフォームライプラリてす。 このライフ・ラリシリーズを利用することにより、例えば 98 シリーズ用に開発したソフトを J -3100 、 AX 等他の機種に移植する、同時開発するといった作業が非常に簡単に行えます。 キー入力、テキスト画面表示、カーソル制御、テキストウインドウ、メニュー選択、グラ フィックス、マウス等の関数か提供されます。 ・キー入力 SH 旧 T / CT 日 L / ALT と各種ファンクションキー・ INS ・ DEL 等を組 価格各ア 9 ククク み合わせての取得が可能。・テキスト表示高速画面表示 / 矩形領域の切り張り・移動・ コピー / 部分・全体の上下左右スクロール etc ・カーソル移動・位置の取得・形状の 変更・移動範囲の指定・表示の切り替え■ウインドウ / メニュー「 Window & MenLlJ と同等の機能を提供。■グラフィックスほとんとの図形描画関数で 5 種類のラスタオペ レーションをサポート / 矩形領域のスクロール・移動・コピ—etc ・マウスカーソルの 移動 / 位置の取得 / 移動範囲の指定 / 表示の切り替え / ボタン押下情報の取得 etc ・完全ソースコード付属、組み込みロイヤルティ無料。 ◆ MS-DOS Ve 「 3 」以上◆対象 C コンバイラ Mic 「 osoft-C Ve 「 . 5.1 / 6 ラージモテルに対応 ◆テモティスクを用意しています。切手 1030 円分をお送りください。 メティアは 98 用 5 " 2HD 、 J3100 用 3.5 " 2DD 、 AX 用 3.5 " 2DD 、 FM 日用 5 " 2HD となっています。 ■走行環境等 ( PFL 、指定のある製品を除く ) ・機種 ・ NEC PC -9800 シリーズ ( LT を除く ) * 製品によっては XL 、 XL2 、日 L の 八イレゾリューション / ノーマルの両モードに対応。 ・対象 C 言語・ Mic 「 osoft-C 5.1 / 6.0 Quick-C 2.0 Turbo-C 2.0 / C 十十 ・ MS-DOS ・ Ve 「 sion 3.1 / 3.3 ・メティア・・・・・・ 5 " 2HD 、 3.5 ″ 2HD ■お求め方法 お近くのパソコンソフト取扱店、秋葉原の石丸電気マイコンセンター ( 03 ー 325 ト 0011) または弊社てお求めになれます。 * すべての表示価格には消費税は含まれておりません。 * 各製品は C 言語毎の対応になっています。 * 各製品の仕様は断わりなく変更されることかあります。 ■テモティスク / 詳しい資料を用意しています ・デモティスク CCF/Menu & Select/BGM/Window@Menu/Key@DisDlay G 「 aDhic & Mouse の総合テモティスク郵便小為替または切手 515 円 分をお送りください。メディアは 5 ″ 2HD または 3.5 〃 2HD となっています。 ・詳しい資料は、 PHONE / FAX でこ請求ください。 元 台 株〒 三一 三三 ・ PHONE 03-5828-0511 03 ー 5828 ー 0513 ・ FAX く資料請求番号レ 0 〉
特集・ Borland い 3.0 研究 返します。 TMenuBar のコンストラクタに コントロール main( ) 渡す引数として , TSubMenu, TMenuItem TurboVision のアプリケーションは , 通常 のインスタンスを、、十〃演算子によって結合 ダイアログボックスのコントロールは , の DOS アプリケーションなのて、 , main ( ) 関 したものを渡します 0TMenuItem のコンス ダイアログボックスに対する相対座標によ 数が最初に実行されます。ここて、 , TAppl トラクタに渡す引数は , メニュータイトル , って位置を決めます。このときも , 左上点 メッセージ , ホットキー , ヘルプインデッ ication のインスタンスを生成し , そのメン と右下点の座標を TRect によって指定しま バ関数 run ( ) によって , メッセージループを クス , ホットキータイトルとなります。 す。コントロールは , insert ( ) によってダイ アログボックスに配置されます。 起動します。 メニュータイトルの文字列て、 , 、、气チル コントロールとのデータのやり取りは , ダ ) て挟んだ文字がショートカット文字とな アプリケーション getData( ),setData( ) によって明示的に行 ります。また , メニューラインは , newLin アプリケーションは , メニューバーとデ う必要があります。バッフアは , ObjectW e ( ) て、設定て、きます。 スクトップとステータスラインの 3 要素から indows のトランスフアノヾッフアと同様 , コ イベントハンドラ 構成されています ( Fig. 9 ) 。メニューバーは ントロールごとのバッフアを new の順番に集 説明を必要としないて、しよう。ステータス TurboVision て、は , イベントハンドラを自 めた構造体によって示します。 分て、用意する必要があります。それには , ラインとは画面の最下行て、ホットキーやメ チェックポックスやラジオボタンは , ひ 一項目の説明などを表示する部分て、す。 handIeEvent( ) という仮想関数を再定義し とつのまとまりにひとつの ushort 型が割り当 残りの部分がデスクトップて、あり , 生成さ ます (List 26 ) 。親クラスのハンドラて、拾わ てられています。チェックポックスて、は選 択された番号のビットが立ち , ラジオボタ れるウインドウの親となります (Fig. 10 ) 。 れなかったイベントについて , 処理を記述 TApplication は , 親クラスの TProglnit の していきます。 ンて、は選択された番号が代入されます。 コンストラクタを呼び出すときに , 上の 3 要 ウインドウの生成 素を初期化する関数へのポインタを渡しま サンプルプログラム す。その初期化関数をカスタマイズするこ TWindow のコンストラクタに ,TRect に よって位置と大きさを指定しますが , Obje とにより , メニューやステータスラインを ctWindows とはちがって , 左上点と右下点 付録ディスクに ,testl. cpp—test6. cpp と 設定て、きるのて、す。 の座標を指定することに注意しましよう。 いうサンプルプログラムを収録しておきま メニューの設定 ウインドウは , デスクトップに対して ins test6. cpp が TurboVision の使用例 ert ( ) を実行すると出現します。 て , 残りは ObjectWindows の例てす。 TurboVision て、は , メニューの設定にリソ また , ObjectWindows と TurboVison 共 ースファイルを用いず , TMenuBar, TSu ダイアログボックスの生成 bMenu, TMenuItem のインスタンスを生成 通のアプリケーションとして , アウトライ モードつきダイアログボックスは , デス ンプロセッサ「 Ofin 」 ( [ お詫び ] 付録ディ して行います。それには , TProgram の ini クトップに対して execView( ) を実行するこ tMenuBar ( ) というスタティックメンノヾ関 スクに wofin. id ファイルが抜けています。 とて、出現します。一方 , モードなしダイア 数を再定義します (List 25 ) 。 のファイルは次号に収録します ) を作ってみ ログボックスは , ウインドウと同様に inser initMenuBar( ) て、は , メニューの表示領 たのて、参考にしてください t ( ) て、出現させます。 域を設定したあと , TMenuBar を生成して イベント八ンドラ lSt Tu 「 boVision でメニューの設定 旧 1 : const int cmMyWin = 101 , cmMyDIg ニ 102 : 2 : 4 : TMenuBar* MyApp: : initMenuBar(TRect r) ( r. b. y : r. a. y + 1 ; / / 1 行確保 5 : return new TMenuBar(r, 6 : *new TSubMenu( ” -F ile ” , kbAltF) + *new TMenuItem( ”ー0ー四n", cmMYWin, kbF3' hcNOContext' 8 : *new TMenuItem( ”ー0ー四n ” , cmMYDlg, kbF3' hcNOContext• 9 : newLine() + 10 : *new TMenuItem("E-x-it", cmQuit, kbAltX' hcNOC0text' "Alt-X") 12 : 13 : } 1 : void MyApp: :handleEvent(TEvent& e) ( 2 : TAppIic.ation: :handIeEvent(e の : if (event. 響 t = evCommand ) 3 : switch (). message. command) 4 : 5 : case cmMyD lg : showMyWindow(); clearEvent(e); break; 6 : 7 : case cmMyD 1 g : showMyDialog() ; clearEvent(e); break; 8 : 9 : 10 : 11 : } 1 ヨ」 ~ 1 ョ一ョいョ 1 1 一、 ( 1 一一宿ョ ~ ー 特集 Borland C 十 + ver. 3.0 研究 49
ファイル入出力のためのハンドラが定義 済みて、あり , メニューに CM FILENEW, CM FILEOPEN, CM FILESAVE, CM FILESAVEAS の項目を定義しておくと , 各 種操作が可能となります。 以上の具体的なコンストラクタについて は付録ディスクに TABLE B. TXT として収 録しましたのて、参照ください。また , TabI e 5 に示したヘッダファイルをソースファイ ルに読み込みます。メニューやアクセラレ ータの定義されたリソースファイルもある のて、 , 適宜読み込んて、おきます。 なお , Windows 3.1 て、は , Windows シス テムが , ファイル名入力 , 文字列探索・置 換ダイアログボックスを提供しており , TF ileDialog ( ) , TSearchDialog ( ) を使う必要 がなくなりました。 ーユーノヾー TurboVision て、はなく , アプリケーション作成の方法論 on もプラットホームをカプセル化する目的 もっとも , ObjectWindows も TurboVisi そのようにはなっていません。 して , 同じソースが使えるとよいのて、すが , トホームの違いをクラスライプラリが吸収 理想をいえば , Windows と DOS のプラッ 同等のインタフェイスて、す。 の IDE や TurboDebugger などの統合環境と ンタフェイスを提供します。 Borland C 十十 TurboVision は DOS 環境て、強力なユーザイ ーションフレームワークてあったのに対し , ObjectWindows が Windows 上のアプリケ を提示する目的て、構築されていますのて、 , 多かれ少なかれプラットホーム固有の機能 を使わざるを得ません。もし , Windows 並 の機能を完全に抽象化するとすれば , 非常 に規模の大きいクラスライプラリになって しまい , DOS アプリケーションには向かな いて、しよう。 TurboVision の階層は Fig. 8 のようになっ ています。これは OjbectWindows と似て非 なるものて、す。 ObjectWindows て、は , Windows がウイン ドウやコントロールなどの部品のまとまり を管理しますが , TurboVision て、はそれらの 管理もクラスライプラリて、請け負わなけれ ばならず , 全体的にかなり細かい機育ヒ部ロ ヒロロロ の集まりとなっています。 Fig. 8 Tu 「 boVision のクラス階層 Fig ・ 9 TurboVision の画面構造 テスクトップ メニューバー ステータスライン ウインドウ ウインドウ 48 TView TGroup TDeskTop TProgram TApplication TWindow TDiaIog TChDirDiaIog TFileDialog THistoryWindow TEditWindow TFrame TButton TClustoe 「 TCheckBoxes TRadioButtons TMenuView TMenuBar TMenuBox TStatusLine THistory TInputLine L—TFilelnputLine TListViewer L—TListBox TSortedListBox L—TFileList TDirListBox TSc 「 0 阨「 L—TText D ev ice L—TTe rm i nal TScrolIBar l—THistoryViewer TFilelnfoPane TStati cText TLa bel TParamText TBackGround Tlndicato 「 TEditor TMemo TFileEditor C MAGAZINE 1 2 9 矩形表示領域 ひとつ以上の子ビューを持つピュー テスクトップのビュー プロクラムの仮想クラス アプリケーションのピュー ウインドウ ダイアログホックス ティレクトリ変更ダイアログ ファイル名入力ダイアロク 入力履歴ウインドウ 工テイタウインドウ ウインドウの枠 ブッシュボタン ホタンの集まり チェックホックス ラジオホタン メニュー メニューバー ボップアップメニュー ステータスライン 履歴ホタン 1 行工テイタ ファイル名入力工テイタ リストのヒュー リストボックス ソートつきリストホックス ファイルリスト ティレクトリー覧 スクロール処理 テキストヒュー 端末工ミュレータ スクロールバー 履歴リストヒュー ファイル情報表示 文字列表示 ラベル表示 バラメータつきテキスト バックグラウンド 行 , 桁表示 工デイタ 埋め込み用工テイタ ファイルと結合したエテイタ Fig . 10 ピューの階層 メー アプリケーション テスクトップステータスライン ウインドウ 枠インテリア ウインドウ 枠インテリア
2 第鹿新 6 言鹹第物第端満懿第第第巍物ま物 Fig. 1 1 TCW file Edit Search ßun Compile Project 旦「朝 tions Elnd0W 旦 elp 特集・ Borland 3 』研究 Fig. 12 「 Japanese Messages 」オプションを選択した場合。やはりちょっと苦しい T リ「 bo C + + ー カイル ( E) 編集に ) 検索 ( 印実行 ( 区 ) 構築 ( 0 アロジ、 1 外アラ唳、但 ) オア ) 0 ウインド、ウ ) ect: cur ← ヘルア ( 旦 ) 0 }include く stdio. h> main() p 「 intf("He110 vwrld!*n"); retu 「 n \ 新訓 0 ェ M esage っていいくらい , ある種完成の域に達して います。いわば「ウインドウ物」のツポを得 小細工をろうせずとも , 本 ていただけに 来的に Windows にも一脈通するものがあっ たといえます。 また , 単なる移植に終わることなく , W indows プログラム独特の風味を加えて , B orland のセンスを見せつけています (Fig. 11 , Fig. 12 ) 。 「スヒ。ードバー」と呼ばれるアイコンバー は , TCW の特徴的な機能のひとって、す。ア イコン列に , ファイルのセープやロード , コンパイルといった主要な機能が集約され スビー。バー :%usrhcw*curs. cpp hlnstance, HAh0LE hP 「 evlnstance. LPSTR 一 . i nt nCmdShow) pp ( ”「こ hlnstanc, 「 evlnstance, C . nCmdShow) ; ていて , こをクリックするだけて、利用す ることがて、きます。 機能をアイコン群に押し込めるというの は , MacPaint の昔からある珍しくもない手 法て、すが , それをどこに配置するかには , 大別して 3 パターンあります。 Excel のツー ルバーのように , メニューの下にバー状に 横並びする形。べイントプラシのような縦 並び。そしてべージメーカーのツールポッ 刑て、す。 クスのような Tear Off メニュー亠 TCW のスピードバーのおもしろいのは , これらの 3 パターンのどれて、も , 好きなパタ ーンを選択て、きることて、す。「バー」と名づ けられているとおり , デフォルトて、は Excel ふうにメニューの下にひつついています。 べきて、しよう。というのも , 提唱者て、ある ているのて、すが , これは褒められてしかる て、 , もちろん TCW はこれをきっちり守っ ェイスが MDI て、す。 ったアプリが守るべきだとされるインタフ が入れ子になる構造をしています。こうい ように , 親ウインドウの中に子ウインドウ グラムマネージャやファイルマネージャの TCW のワークスペースは基本的に , プロ bocumentlnterface) Dl(Multiple わりといえるて、しよう。 ェクト指向」を標榜する BorIand らしい い , このあたりの工夫が , さすがに「オプジ TurboDebugger のローカルメニューとい されるのて、す (Fig. 13 , Fig. 14 , Fig. 15 ) 。 そのときどきに有効なアイコンだけが表示 とて、す。作業状況に応じてバーが変化し , スヒ。ードバーが状況検知型て、あるというこ ほかの「〇〇バー」などと一線を画すのは , らて、す。 が , TCW のスヒ。ードバーの真骨項はこ だね」て、済まされてしまうかもしれません これだけの話ならば , 「ああ , 最近の流行 は縦並びのほうが好みて、す。 圧迫感がバカになりません。ちなみに筆者 と , とくに 400 ライン程度の低解像度て、は , が , 垂直方向にワークスペースを食われる Mesage 川住 : い厚リ (Borland Windows Custom Controls) と これらのコントロール ( 部品 ) は , BWCC タンて、す。 に美しいのは何といってもビットマップポ チェックボックスなども秀逸て、すが , 無類 ンド , ちゃんとチェックマーク ( レ ) がっく とて、は大違いて、す。グレーなバックグラウ (Fig. 18 ) て、あるのと , 「パネル」感があるの 思うかもしれませんが , 単なる「ポックス」 通した特徴て、す。カッコいいから何だ , と これが , Borland 製の Windows アプリに共 カッコいいダイアログボ、ツクス (Fig. 17 ) 。 イアログボックス たような・・ 知らせる , みたいな工夫があってもよかっ ージが発生したときにチカチカして着信を こまて、凝るんならいっそ , 何らかのメッセ カチカ点滅させていて可愛い (Fig. 16 ) 。 機のアイコンになったやつが , ランプをチ メッセージウインドウを最小化して電話 ということて、す。 よりはて、きたほうがよい , うか , というだけのことて、すが , て、きない ンドウが邪魔なとき最小化しておけるかど らて、す。守る守らないといっても , 子ウィ 4.0 て、は準拠 ) , 皆さん案外いいかげんだか クセルて、守られていなかったり (ExcelVer. はずの当の Microsoft がリリースしている工 Borland C 十十 Ver. 3.0 研究 51 して BWCC. DLL にまとめられており , ュー 特集
ウインドウて、は , そのコンストラクタて、リ します。たとえば , ウインドウの大きさが メンバ変数て、 , ウインドウのハンドルが代 ソースのロードなど , アプリケーション全 変わったときに送られるメッセージ WM S 入されています。 体に関するさまざまな初期化を行います。 IZE については , Windows の API 関数はウインドウのハン ドルが第 1 引数にくることが多いのて、 , その 以下て、は , ウインドウの諸設定をどこて、ど virtual void WMSize(RTMessage) [WM FIRST 十 WM SIZE] ; うするのか述べることにしましよう。 場合に用いるようにします。 とします。 以上のことて、わかるように , ObjectWind コンストラクタ WM COMMAND に続くメニューメッセ ows て、は , クラスを継承し , メンバ関数を再 ージは , 特別に CCM FIRST 十 CM xxx] 定義することによって , さまざまな用途の TWindow の派生クラスのコンストラクタ て、は , という形て、受け取れます。 CM xxx はメニ ウインドウを生成する方針をとっているよ ①メニューのロード ューアイテムにつけた ID て、す。 うて、す。 ②ウインドウのスタイル 同様にコントロールなど子ウインドウか このとき , SetupWindow ( ) や GetWindo ③ウインドウの位置と大きさ らのメッセージは CID FIRST 十 ID xxx] wCIass ( ) など , 親クラスて、定義しているメ ④子ウインドウの生成 て、受け取れます。 ンバ関数を呼ばなければならない場合があ を必要に応じてそれぞれ設定て、きます。 るのて、 , 注意が必要て、す。これを忘れると アイコンの変更 ①は , AssignMenu( ) というメンバ関数 誤動作する可能性があります。 によって簡単にリソースからロードて、きま ウインドウを最小化したときのアイコン ーウインドウの生成 す。 を変更するには , GetWindowCIass ( ) によ ②③については , List 16 のコンストラク って , ウインドウクラスを変更する必要が メインウインドウは , TApplication : タの定義部分に見られるように , メンバ変 あります。このとき , GetClassName() て、 InitMainWindow ( ) て、生成しますが , それ 数 Attr を変更すればよいて、しよう。 返すクラス名も変更しなければなりません。 以外のウインドウは ,MakeWindow() によ ④のコントロールなど子ウインドウの定 なお , アイコンのほかに , カーソルの形 って生成します。通常 , 次のように記述し 義は , List 16 のリストボックスの例のよう などウインドウクラスのメンバを書き換え こて、 , parent win は , 親ウインド ます。 にします。ただし , 実際に子ウインドウが るときにも , GetClassName( ) て、ユニーク ウへのポインタて、す。 な名前を返すようにしておきます。 生成されるのは , 親ウインドウが生成され , GetApplication ( ) ー > MakeWindow(new 続いて SetupWindow( ) が実行されてからて、 TWindow(parent win, ℃ aption")); そのほかの定義 すから , 子ウインドウの操作はコンストラ TMDlFrame ' 92 年 7 月号て、も説明していましたが , 再 クタて、はて、きません。 描画ハンドラとして Paint ( ) という関数を再 子ウインドウの操作は ,SetupWindow( ) TMDIFrame は , MDI の枠ウインドウの 定義すれば , ウインドウ内のグラフィック て、行うようにします。 List 16 て、は , リスト クラスて、あり , TWindow の派生クラスて、す。 が簡単に描画て、きます。 ボ、ツクスに初期値として文字列を代入して TMDIFrame を生成するときには , メニ また , CanCIose() という関数は , ウイン います。 ューのリソース ID を合わせて指定します。 ドウがクローズされる直前に呼び出され , TMDIFrame を親ウインドウとしてウィ 戻り値が TRUE か FALSE かによって , クロ ンドウを生成すると , メニューにそのウィ ーズを制御て、きます (List 17 ) 。 ンドウのタイトルが追加され , ウインドウ なお , List 17 て、 HWindow という変数が の切り換えに役立つようになっていますが , 現れていますが , これは , TWindow の親ク どのポップアップメニューに追加するのか ラスの TWindowsObject て、定義されている を ChildMenuPos というメンバ変数に指定し is CanCIose() の例 メッセージハンドラの定義 BorlandC 十十て、は , ダイナミックディス パッチバーチャルテープルの機能により , Windows から送られるメッセージとそのハ ンドラとを容易に対応づけることがて、きま す。 List 16 のクラスの定義部分に見られるよ うに , 純粋仮想関数の表記法のようにして , メッセージを記述します。 ウインドウメッセージ WM xxx を受け取 る場合には , CWM FIRST 十 WM xxx] と 1 : BOOL MyWin: :CanClose() ( 2 : return MessageBox(HWindow, ” ReaIIy Quit?" 3 : ? TRUE : FALSE; , MB_YESNO) = IDYES 42 C MAGAZINE 1992 9
' 92 年 8 月号特別付録 ( 5 " 1.2M バイト 8 セク タ / トラック MS-DOS フォーマット ) には , 次のプログラムが収録されています。 ①付録ディスクの説明 README ( テキストファイル ) ②フォーマットトランスレータ 「 Japan2HD 」 YJAPAN2HD くディレクトリ > ③テキスト整形プログラム「 Efin 」 YEFI N < ディレクトリ > ④アプリケーション起動 メニュープログラム「 GAS 」 幸いてす。収録したファイルは , *JAPAN2HD*JAPAN2HD. EXE という自動解凍圧縮ファイルとして収録し 、 0 テキスト整形プログラム 「 Efin 」 Frameworks と総称される ObjectWindows BorIand C 十十 Ver. 3.0 には AppIication 本誌特集をご覧いただけたて、しようか ? 「 Ofin 」 Fin 用アウトラインプロセッサ を得て収録しました。 も多く , 今回 , 著作権者 ( KOBA 氏 ) の了解 ーショナルだったせいか , 読者からの反響 の筆者てある野口雄平氏の紹介文がセンセ tor) てす。フリーソフトウェア最新レポート 介した GAS (Graphical Application Selec 簡単」の三位一体のメニュープログラムと紹 ポートて、「カッコいい & 使いやすい & 設定が 本誌 ' 92 年 4 月号フリーソフトウェア最新レ メニュープログラム「 GAS 」 アプリケーション起動 ました。 という自動解凍圧縮ファイルとして収録し *EFIN*EFINIOOM. EXE *EFIN*EFINIIOE. EXE には , ファイルをご一読ください。付録ディスク 詳しくは解凍後生成されるドキュメント 了解を得て再収録しました。 hi Kusakabe 氏 , Takuma Yamada 氏 ) の 続き著作権者 (Syohei Yamada 氏 , Youic てある Efin を本誌 ' 92 年 3 月号付録ディスクに が必要となります。そこて、 Fin の機能拡張版 は , テキスト整形プログラム Fin または Efin 「 Ofin 」 ( 本付録ディスクに収録 ) 実行に として作成されたアウトラインプロセッサ ws と TurboVision の共通アプリケーション 本号特集 Part2 て、解説した ObjectWindo と TurboVision というクラスライプラリが付 属しています。「 Application Framework s といわれてもいったい何がてきるのだろ う ? 」ということて , ObjectWindows と T urboVison 共通のアプリケーションを作成し てみようということになり , その結果誕生 したのが , Fin/Efin 用アウトラインプロセ ッサ「 Ofin 」て、す。 Ofin を実行するには , Ef in が正しくインストールされている必要があ ります。 : 本誌掲載プログラム YGAS くディレクトリ > ⑤ Fin 用アウトラインプロセッサ「 Ofin 」 YOFI N ⑥本誌掲載プログラム YCMAGA くディレクトリ > くディレクトリ > ⑦ READ. ME 参照ューティリティ README. EXE ( 実行ファイル ) 付録ディスクの説明 (README) に , 解凍 方法など , さらに詳しい説明が収録してあ ります。必ずご一読ください README はテキストファイル形式てす。 本誌付録ディスク収録の README プログラ ム , MS-DOS の TYPE コマンド , あるいは ご使用のエデイタ , ワープロソフトて読む ことがてきます。 フォーマットトランスレータ 「 Japan2HD 」 特別記事「フォーマットの壁を打破するフ オーマットランスレータ Japan2HD 」をご覧 いただけたてしようか ? Japan2HD とは , PC / AT マシン ( 互換機を含む ) の MS ー DOS 上て、 5 " フロッヒ。ーディスクドライプを使っ て日本形式 ( PC ー 9801 , FM, X68000 など ) の 5 " 2HD フロッビーディスクを読むためのデ バイスドライバてす。 PC / AT マシン ( 互換 機を含む ) て , このディスクを読むことはて きないかもしれませんが , お近くにメディ アコンバートてきる環境がございましたら Japan2HD をコヒ。ーし , お使いいただければ REFCN T TOKUSYU STRATE J2HD STEPC M SDOS TRYCPP DOJ I ESSENCE BOHYOH OUYOU CZATU OPPK X68K PUZZLE NIWA INFO : C + 十に実装するメモリ管理 : BorIand C 十十 Ver. 3.0 研究 : 実践アルゴリズム戦略 : フォーマットの壁を打破 : 実践 C プログラミング入門 : 新 MS-DOS 入門 : Try The C 十十 : 恥ずかしながらドジりました : プログラミングの工ッセンス : プログラミング道場 : 応用 C 言語 C の道具箱 : C 言語雑学講座 : ワンポイントプログラミング : X68k 活用講座 : C マガ電脳クラブ : 迷走プログラミング : インフォメーション READ.ME 参照 ユーティリティ ' 92 年 4 月号「新 MS-DOS プログラミング 入門」て、紹介した READ. ME 参照ューティリ ティ ( テキストファイルを画面上て読むプロ グラム ) の実行ファイル (README. EXE) を README と同じルートディレクトリに収録 しました。付録ディスクをセットしたドラ イプにカレントを移し README@ て README ファイルが画面に表示されます。 ディスク内容のお知らせ 167
啝し ・関数を 4 つ使ラ事でウインドウの OPE ・上ア左右の スクロール・ページ送ク戻し・移動・大きさ変更・アクテイプ ウインドウの変更・ CLOSE することができるウインドウをご利用する ことができます。 ・ユーザー偲でメモグの確保・用放をする必要はありません。 ・ウインドウを小さくする事に伴い入力領域不足力性じた時には、自動的に スクロール入力ーは久スカすることができます。 ・カーノノレが移動できる目を文字の種類や文字コードにより設定すと ができます。 ・カーソノレが示す項目先頭文字を基準に、ウインドウの大きさ変更や、上下 左右のスクロールをしますので、目的の疲目を容易に選択することができ、 操作性を向上させています。 ・ウインドウ内に表示されている内容を製品中の数で、編集・登録 しながら表示させることが可能です。その時の状況ーはク素早くメニューや メ : 地ージ、の内容を更新させて表示させます。 ・ウインドウの表現力を補足する多くの関数が含まれています。 発されるシステムの工数低減に貢献致します。 ・ノースは全て C 言語で記述されています。 ソースを眺めることで、ウインドウシステム自身を だ握することができます。 ・機能の追加・変更が簡単にできるよラに、 〃個のウインドウ関数が用意されています。
特集 oBorland 3 』研究 そのまま IBM 以外の機種て、も利用て、きました。 TurboCVer. 1.0 の登場に際しては , さ まざまな衝撃がありました。まず , 99.95 米 ドルという価格て、す。それまて、にも , 安価 なコンパイラは存在しました。しかし , そ のほとんどがスモールモデルしかサポート していなかったり , 機能が低いものて、した。 フルセットのものを購入しようとすると , どうしても価格の高い製品を購入せざるを 得なかったのて、す。 TurboC は , タイニィ からヒュージまて、の 6 メモリモデルをサポー トし , レジスタ変数やムダなジャンプの最 適化を行い , 充実したライプラリ関数をサ ポートするなど , 従来のコンパイラがサポ ートしていたおもな機能はほとんど取り込 んて、いました。 また , ANSIC に対する積極的な対応も行 っていました。規格に対する姿勢も積極て、 言語仕様に対する拡張もまた積極 したが , 的て、した。 TurboC は , 当時の MS ー C がサポ ートしていた near/far/huge という修飾子の ほかに , interrupt て、割り込み関数を定義し たり , cs, ds などの特定のセグメントに対 するデータポインタ修飾子を定義したり , 疑似レジスタ変数を使って直接 C プログラム の中て、 CPU レジスタを操作させられるよう になっていました。 きめ細かい警告の設定も可能て、した と くに , 条件式の中の代入文 ( = ) を警告とし て判断する機能は , 従来のコンパイラには ないものて、した。 こうした多くの機能をサポートしながら も , コンパイル速度は驚異的に高速て、した。 ほかの処理系に比べて何倍も高速だったの て、す。さらに , 生成されるコードも当時と しては十分良質なものて、した。 また , Turbo PascaI と同じくエデイタ , コンパイラ , リンカがまとめられた統合開 発環境 (IDE, lntegrated Development En vironment) が提供されました。 もはや , 工 スケープシーケンスによる制御て、はなくな り , 直接テキスト VRAM をアクセスしてプ ルダウンメニューやポップアップメニュー による操作がて、きるようになりました。 Tu rbo Pascal と違って , Turbo C には数多く のコンパイルオプションが存在しましたが , それらはすべてメニューて、設定て、きました。 ウインドウに表示されたエラーや警告に対 応するソースコードに直ちに表示したり , 分割コンパイルのためにプロジェクトファ イルを使って必要なファイルだけをコンパ イルするメイク機能が組み込まれたり , オ ンラインヘルプによって今何をしているか を調べることがて、きました。このときの ID E のスタイルは現在にも引き継がれていると ころがあります。 細かいことかもしれませんが , ライプラ リソースコードが 150 米ドルて提供された とも重要なことて、しよう。それまて、 , ほか の処理系て、はライプラリ関数のソースコー ドを入手することがて、きないか , 多額のロ イヤリティを支払わなければならなかった のて、す。 まもなくアップデートされた Turbo C V er. 1.5 て、は , IBM ー PC に依存するテキスト / グラフィックスや BIOS に対応するライプラ リが提供されました。コンパイラが機種依 存性を持つライプラリをサポートするとい うことは , それまて、にはあまりなかったこ とて、す。オンラインヘルプて、は , ライプラ リ関数ごとに解説を参照て、きるようになり ました。日本語版への移植が行われたのも このバーションて、した そして , その 1 年後 , Turbo C Ver. 2.0 が登場しました。最大の特徴は , ソースレ ベルデバッガが組み込まれたことて、しよう。 Turbo C Ver. 1. x まて、は , IDE からは「実 際に走らせてみる」以外には作成したプログ ラムのデバッグはて、きなかったのて、すが , TurboCVer. 2.0 て、は , ソースレベルて、の トレース / ステップ実行 , プレークポイント やウォッチ式の指定などがサポートされま した。 TurboCVer. 2.0 には , 強力な助つ人が いました。同時に発売された TurboAssem bler&Debugger て、す。 MASM 互換の Turb 0 Assembler もそうて、すが , 何よりも Turb 0 Debugger の強力さが Turbo C Ver. 2.0 の開発環境をより快適なものにしたといえ るて、しよう。 Turbo Debugger の操作性はコ マンド行からの入力を排除し , すべての機 能がプルダウンメニューやウインドウに特 有のローカルメニューて、選択て、きるように なっていました。 また , Turbo Debugger て、は i80386 の仮想 86 モードを使うことて、 MS ー DOS のメインメ モリを消費することなくプログラムのデバ ッグがて、きました。それまて、のデバッガは デバッガのためにプログラムを小さくしな ければならなかったのに対して , Turbo D ebugger は MS-DOS の 640K バイトて、動作す るプログラムをそのままデバッグ情報っき て、デバッグて、きるようにしてしまったのて、 す。 Borland は , Turbo C Ver. 2.0 に Tur bo Assembler&Debugger をバンドルして 「 Turbo C Ver. 2.0 ProfessionaI 」という名 前をつけました。 TurboCVer. 2 . 0 は , フロッピーベース て使われているマシンが決して少なくない 日本て、は , 現在て、も愛用されている方がい らっしやるようて、す。 Turbo C Ver. 2.0 が発売されて 1 年がす ぎ , 新しい C コンパイラが登場しました。 B orland は , このコンパイラに TurboCVer. 3.0 という名前をつけませんて、した。 Turbo C は , Turbo C 十十として新しいスタートを 切ることになったのて、す。 名前のとおり , TurboC 十十は C 十十をサ ポートしたことが最大の特徴て、す。すて、に オプジェクト指向の考え方を Turbo Pasca 1 に取り入れていた BorIand は , オプジェク ト指向こそが大規模化するアプリケーショ ン開発への解決策て、あり今後の主流になる と考えていました。 Turbo C 十十という名 前は , その主張の表現だったのて、しよう。 特集 Borland C 十十 Ver. 3.0 研究 27 Turbo C 十十の登場
特集。 Borland い 3 』研究 TabIe 7 トランスファ用パッフアの型 クラス名 Fig. 7 モードっきダイアログボックスのトランスファ バッフアの型 なし WORD WORD なし なし (char [LEN] ) char [LEN] TListBoxData * TComoBoxData * TScrollBarData TButton TCheckBox TRadioButton TGroupBox TStatic TEdit TListBox TComboBox TScrollBar * LEN はコンストラクタに渡した最大文字数 * TStatic はテフォルトでトランスフアされない ついて Table 7 のような型の変数を使用しま アへの参照も指定します。 プロンプト文字列と文字列を受け取るバッ フアとそのサイズを指定します。バッファ す。 new て、生成する順番に従ってこれらを構 TEditWindow 造体にまとめたものをバッフアとします。 にはデフォルト文字列を入れておくことが なお , TStatic については , デフォルトて、ト て、きます。 TEditWindow は , ウインドウ全体が複数 ランスフアされないのて、 , EnableTransfer 行工ディットコントロールて、あるウインド 、 TSearchDiaIog ( ) を実行した場合に ーかぎってノヾッフアに加 ウて、す。 TSearchDialog は , 文字列検索・置換の 検索・置換のためのハンドラが定義済み えます。 ためのダイアログボ、ツクスて、す。検索・置 具体例を List 24 に示しておきましたのて、 なのて、 , メニューに CM EDITFIND, CM 換文字列のエディットコントロールのほか , 参考にしてください EDITREPLACE, CM EDITFINDNEX T を ID とするメニュー項目を追加するだけ 大文字・小文字の区別 , 全置換を行うかど て、 , 検索・置換を行えます。 うか , 置換のたびに問い合わせをするのか どうかのチェックボ、ツクスがあります。 ー TFileWindow コンストラクタには , 検索ならば SD SE ARCH, 置換ならば SD REPLACE のリソ TFileWindow は , TEditWindow を継承 ObjectWindows には以下のような便利な ース ID を指定します。また , 検索・置換情 してファイル入出力を可能としたクラスて、 クラスがあって , ューザがわざわざ一から 報が格納される TSearchStruct というバッフ 定義しなくてもそのまま使うことがて、きま す。 す。 トランスファ TransferBuffer ←バッフアのホインタ バッファ→コントロールへテータ転送 OK ホタンが押された場合には , コントロール→バッフアへテータ転送 ↓ ↓ 応用クラス lSt TFileDiaIog TFiIeDialog は , ファイル名入力のための ダイアログボックスて、す。コンストラクタ には , オープン用には SD FILEOPEN, セ ープ用には SD FILESAVE のリソース ID を 指定し , また , ファイル名を受け取るため のバッファ (char CMAXPATH] ) へのポイ ンタを渡します。 TlnputDialog TInputDialog は , 1 行入力のためのダイア ログボックスて、す。 コンストラクタには , 1 : 〃詳しくは test5. cpp を参照 2 : s truct { WORD check; 3 : 4 : WORD radiol, radi02; char editCLEN] ; 5 : 6 : PTListBoxData plbox; 7 : PTComboBoxData pcbox ; TScrol lBarData scr; 8 : 9 : } diaIogData; 10 : 11 : TListBoxData lbox; 12 : TComboBoxData cbox : 13 : 14 : class MYDlg : public TDiaIog { 15 : public: 16 : MyDlg(PTWindowsObject p) : TDiaIog(), "CONT DLG") { new TCheckBox(this, 105 , の ; new TRadioButton(this, 107 , の : 18 : new TRadioButton(this, 108 , の : new TEdit(this, 101 , LEN); 20 : new TListBox(this, 102 ) : 21 : new TComboBox(this, 104 , LEN) : 22 : new TScroIIBar(this, 106 ) : 23 : TransferBuffer ニ (void*)&dialogData; 24 : 25 : 26 : } ; 特集 BorIand C 十十 Ver. 3.0 研究 47
日聞 C++ 3.1 特集。 Borland 3 』研究 これがオプジェクト and のクラスライプラリだけのことはあっ がたかったのて、すが , おそらくライセンス供与されているのて、し て , もともとかなり読みやすいし , プログ とリアルに感じる 指向のパワーなんだな , よフ。このデノヾッグカーネルは当然ほかの ことがて、きるライプラリて、す。 ラムの流れがわかりやすく , 拡張も容易て、 3 製品にも含まれています。それぞれに Tur BC 十十 3.1 と BC 十十 & AFX3.1 のパッケ す。 ProtoGen て、骨組みを作って ObjectWin bo Debugger for Windows がバンドルされ ージに FREE ProtoGen というシールが貼っ dows にコードを足していくことて、かなり安 ているからて、す。 windows. h も新しいものが含まれていま てあり , 「これを貼ってレジストしてくれれ 直に Windows プログラミングが行えます。 す。さらに , 古い 3.0 用のヘッダファイル ば製品を送付しますよ」とかいうやっか , と この安易な方法がくせになりそうて、す。 も , win30. h とリネームされて入っているの 思ってパッケージを開けたら Prot0Gen その ProtoGen は当然日本語に対応していません て、 , Windows 3.0 向けのアプリケーション が , ObjectWindows のコードを生成するの ものがマニュアルごと入っていました。 Pr を万が一作る場合にも対応て、きます。 otoGen は Borland の製品て、はないのて、 , て、すから , PC ー 9801 版の BC 十十に持ってき また , TP/Win1.5 には Amish という仮想 れもアメリカ / カナダだけのキャンペーンな てメニューリソースやダイアログをいじれ スクリーンユーティリティがおまけて、つい ば利用て、きます。 のて、しよう。 ていました (Fig. 27 ) 。これもキャンペーン ProtoGen は CASE/W と同じように , Wi とくに BorIand C 十十の ObjectWindows なのて、しよう。 ndows アプリケーションのインタフェイス部 はダイナミックメッセーシディスパッチと ProtoGen は日本の BorIand から買えると 分をビジュアルに作成してソースコードを いう独自の機能を持っていて , 特定のメッ いうことて、すが , Amish は扱っていないそ セージに応答する関数を定義するだけて、処 吐き出す Case ツールて、す。 CASE / W とのい うて、す。秋葉原あたりて、売っていそうな気 ちばん大きな違いは , C 十十のクラスライプ 理の分岐がて、きます。 Windows からメッセ ージが送られてくると , 自動的に C 十十のメ はしますが・・ ラリ , ObjectWindows のコードを直接生成 ンバ関数呼び出しに変換してくれます。定 BC 十十 &AFX には ,API のリファレンス て、きるところて、す。もちろん C のコードも生 が 3 分冊てパッケージに含まれています。 義がされてない場合はデフォルトの処理を 成て、きます。実際に試してみるとなかなか とうりて、重くなったと思いました。この中 行ってくれるし , めんどうな記述も必要あ おもしろいものて、した。 ProtoGen のウイン りません。実にオプジェクト指向らしいア には当然 3.1 て、拡張された OLE やコモンダイ ドウの中にある , 生成されるターゲットの アログなどに関する記述が含まれています。 プローチだといえるて、しよう。 アプリケーションにメニューやダイアログ ProtoGen の追加はおまけとして , 付属の をマウスて、選んて、張り付けていくと , すっ Windows Ver. 3.1 マニュアルにもかなり手が加えられている きりとしてわかりやすい ObjectWindows の 対応の新機能 ようて、す。バーションナンバも 3.1 に変更さ コードがコメントつきて、生成されるのて、す。 これはとても楽て、す。 れています 0TurboDebugger のノヾージョン ObjectWindows のコードは , オプジェク は 3.0 のままて、すが , 当然デバッグカーネル Windows Ver. 3.1 て、は OLE (Object Lin は 3.1 対応に変更されていました。これは ト指向技術に関しては一日の長がある B 。 rl king&Embedding) が OS レベルて、サポート Fig. 25 BC + 十 &AFX3.1 Fig. 26 BC 十十 3.1 のアイコン 要 Eilc 0 ions 、 Yindow BORLÅND C + + &APPLICATION FRAMEWORKS FORWINDOWSAND DOS 材日 BORLAND 0 + & A 10 砂にを岱 緲 W 愛 0 し、、辞 5 田 , B 0 ー A N 0 特集 BorIand C 十十 Ver. 3.0 研究 57