前へ 次へ 目次 文書セット ホーム


第 12 章

 

Microsoft Windows と Motif の
アプリケーション作成


はじめに

本章では、Motif と Microsoft Windows の両方で、図 12-1 に示す簡単なアプリケーションを作成する方法について説明します。さらに、 本章の最後の 「ソースの共有化」では、コールバックファイルを UNIX と Microsoft Windows で共有する方法を示します。

 

    図 12-1 最終のアプリケーション

デザインの開始

この学習では、アプリケーションのメインウィンドウとサブダイアログをまとめる 方法について説明します。さらに、ユーザーインタフェースの構築に加えて、リンクやコールバックを使用 し、ピックスマップなどのリソースを設定します。また、描画領域にメニューをポップアップする方法も示 します。さらに、これらすべてを Microsoft Windows に移植します。

読者は Sun WorkShop Visual の基本的な使用法に精通しているものとします。したがって、この学習用の完成した階層が収められている デザインファイルは、あらかじめ Sun WorkShop Visual に添付されています。手順 2 の説明に従ってこのファイルを開いても、指示に従って階層を自分で構築してもかまいません。

  1. Microsoft Windows モードで Sun WorkShop Visual を起動します。

    起動方法については、「Microsoft Windows モードでの起動」を参照してください。

  2. 自分で階層を構築する時間を節約したい場合には、次のファイルを開いて、手順 18 に進んでください。

    $VISUROOT/src/examples/tutorial/windows.xd

    ここで、VISUROOT は、インストールした Sun WorkShop Visual のルートディレクトリです。

    注 - 自分で階層を構築する場合には、手順 3手順 17 を実行してください。

  3. アプリケーションシェルから始めます。これにフォームを追加し、フォームの中にメニ ューバー、ボタン、スクロールウィンドウ、ラベル、およびテキストフィールドを置きます。

    この階層を図 12-2 に示します。

     

    図 12-2 最初の階層

  4. シェルに「shell」、メニューバーに「menubar」、スクロールウィンドウに「popup_window」、ボタンに「 subd_pixmap」と名前を付けます。

    その他のウィジェットには名前を付ける必要はありません。[ウィジェットクラス][ 番号] という形式の名前 (たとえば「button1」) が、Sun WorkShop Visual によってデフォルトで割り当てられます。

  5. メニューバーに、3 つのカスケードボタンを追加します。それぞれ「file_menu」、「edit_menu」、「help_menu」という名前 を付けます。

  6. 「file_menu」カスケードボタンにメニューを追加します。このメニューに、2 つのボタン、セパレータ、およびもう 1 つのボタンを追加します。

  7. メニューに追加した最後のボタンを「exit_b」という名前を付けます。

  8. 「edit_menu」カスケードボタンにメニューを追加します。このメニューに 3 つのボタンを追加します。

  9. 「help_menu」カスケードボタンにメニューを追加します。このメニューに 2 つのボタンを追加し、最初のボタンに「subd_b」という名前を付けます。

    メニューバーの完成した階層を図 12-3 に示します。

     

    図 12-3 メニューバーの下の階層

  10. 「popup_window」スクロールウィンドウに描画領域を追加します。これに「draw_area」という名前を付け ます。

  11. 描画領域にポップアップメニューを追加し、それに「popup」という名前を付けます。ポップアップメニュ ーに 3 つのボタンを追加します。

    完成したスクロールウィンドウ階層を図 12-4 に示します。

     

    図 12-4 スクロールウィンドウの下の階層

  12. ダイナミックディスプレイが図 12-5 のようになるように、フォームの配置エディタを使用して、フォーム内のウィジェットの配置を調整します 。

    ウィジェットを適切な場所に移動し、アタッチメントを指定する必要があります。 この操作については、第 4 章「配置エディタ」を参照してください。

    フォームウィジェットは (まだ C++ クラスにしていないため) Microsoft Windows コードには生成されませんが、アタッチメントと位置については、生成コード内で Sun WorkShop Visual によって計算と処理が行われます。このようにして、サイズ変更動作は変わることなく保持されます。詳細 については、「マネージャウィジェットとその配置」を参照してください。

     

    図 12-5 メインウィンドウのダイナミックディスプレイ

  13. デザインを MyWinApp.xd というファイルに保存します。

  14. デザインにもう 1 つのシェルを追加します。今度はダイアログシェルです。これに「sub_shell」という名前を付けます。

  15. シェルにフォームを追加して「sub_form」という名前を付けます。

  16. フォームにラベルとボタンを追加します。ボタンに「close_b」という名前を付けます。

    このサブダイアログの完成した階層を図 12-6 に示します。

     

    図 12-6 サブダイアログの階層

  17. 図 12-7 に示すように、ボタンをダイアログの下部に置き、ダイアログがサイズ変更されたときにラベルのサイズも 変更されるように、フォームの配置エディタを使用してウィジェットを配置します。

    ウィジェットを適切な場所に移動し、アタッチメントを指定する必要があります。 ダイアログのサイズにあわせてラベルのサイズを変更するには、たとえば、ラベルの下部をボタンの先頭に 接続し、他のすべての端をフォームの側面に接続します。この操作については、第 4 章「配置エディタ」を参照してください。

     

    図 12-7 サブダイアログ

  18. デザインを保存します。

    手順 2 で用意されているデザインファイルを開いた場合でも、この保存操作は行なってください。ここで保存する ファイルの名前は MyWinApp.xd とします。

コールバックの追加

ここで、サブダイアログを閉じる「close」ボタンにコールバック・メソッドを追加 し、メインアプリケーションシェルのファイルメニューの「exit_b」にコールバック・メソッドを追加しま す。

  1. 「close」ボタン「close_b」を選択します。

  2. 「コールバック」ダイアログを表示し、コールバックのリストから活性化コールバックを選択します。

  3. 定義されたコールバックの下にあるオプションメニューが「メソッドの名前」になっていることを確認しま す。

    C++ を生成するため、追加対象はメソッドになります。

  4. テキストボックスに DoClose と入力し、「追加」ボタンを押します。

  5. 「コールバック」ダイアログを閉じます。

  6. ウィンドウ保持領域で「shell」というシェルを選択します。

  7. ファイルメニュー (file_name) の下にある「exit_b」というボタンを選択します。

  8. 「コールバック」ダイアログを表示し、コールバックのリストから活性化コールバックを選択します。

  9. 定義されたコールバックのリストの下にあるオプションメニューが「メソッドの名前」になっていることを 確認します。

  10. テキストボックスに DoExit と入力し、「追加」ボタンを押します。

  11. 「コールバック」ダイアログを閉じます。

  12. デザインを保存します。

注 - Motif 専用のアプリケーションでは、ボタンからアプリケーションを閉じるコールバックを追加する必要はありま せん。sub_form の「自動アンマネージ」リソースを「はい」に設定するだけで十分です。一方、Microsoft Windows の場合には、コールバックを追加する必要があります。

リンクの追加

リンクを追加して、メインウィンドウからサブダイアログが表示されるようにしま す。Sun WorkShop Visual では、Motif と Microsoft Windows の両方で機能するリンクを実装するコードを生成できます。リンクを作成するときに考慮すべき Microsoft Windows での制限事項については、「リンクの使用」を参照してください。ダイアログでのリンクの設定方法については、「リンク」を参照してください。

  1. メインアプリケーションシェル「shell」の「help_menu」というメニューで「subd_b」を選択し、「リンク 編集」ダイアログを表示します。

    これを行うには、ツールバーのボタンを押すか、または「ウィジェット」メニュー から「リンク編集」を選択してください。ツールバー上のリンク編集ボタンについては、図 2-1 を参照してください。

    なお、宛先ウィジェットとしてメニューボタンが選択されているときには、追加ボ タンがピンク色になります。表示、非表示、マネージ、およびアンマネージのリンクは、Motif のメニューボタンでのみ有効です。有効化と無効化のリンクは、Motif と Microsoft Windows の両方のメニューボタンで有効です。ただし、現在選択されているメニューボタンは、この学習での宛先ウ ィジェットではありません。

  2. ウィンドウ保持領域で「sub_shell」を選択します。

    「リンク編集」ダイアログ内の「ウィジェット」というテキストボックスには、Abo ut ダイアログのシェルである「sub_shell」が追加されています。

  3. 「リンク編集」ダイアログで「表示」リンクを選択し、「追加」ボタンを押して「sub_shell」に表示リン クを追加します。

  4. 「リンク編集」ダイアログを閉じます。

    次に、メインアプリケーションシェルの「subd_pixmap」から同じリンクを追加しま す。

  5. メインアプリケーションシェル「shell」に戻ります。

    ウィンドウ保持領域からシェルを選択します。

  6. 「subd_pixmap」を選択し、「リンク編集」ダイアログを再表示します。

    選択したウィジェットが「リンク元」ウィジェットとなるよう、ダイアログを再表 示する必要があります。さもなければ、これは「リンク先」ウィジェットとなります。

  7. ウィンドウ保持領域で「sub_shell」を再び選択します。

  8. 「リンク」ダイアログで「表示」リンクを選択し、「追加」ボタンを押して「sub_shell」に表示リンクを 追加します。

  9. 「リンク」ダイアログを閉じて、デザインを保存します。

ポップアップメニュー

どの言語で生成する場合も、描画領域ウィジェットにポップアップメニューを追加 すると便利です。学習の次の段階では、その追加方法を示します。Sun WorkShop Visual ではメニューをポップアップするコードを自動生成しないため、特別なコードを少し記述する必要がありま す。Motif と Microsoft Windows ではメニューのポップアップ方法が異なるため、プラットフォームごとにコードを変えることが必要です。 コードの追加については後述します。最初に、コールバックを設定しなければなりません。

  1. メインアプリケーションシェルのスクロールウィンドウ「popup_window」の中から「draw_area」を選択し ます。

  2. 「コールバック」ダイアログを表示します。

  3. コールバックのリストから「入力」を選択し、 DoInput というコールバックメソッドを追加します。

    「入力」コールバックタイプにはアスタリスク (*) が付いており、このコールバックは Microsoft Windows 版のアプリケーションに使用できないことを示します。

  4. 「コールバック」ダイアログを閉じます。

  5. 図 12-8 に示す描画領域リソースパネルを表示します。

    表示方法としてには、描画領域上でダブルクリックするのが最も簡単です。

    Motif XP ライブラリには、Microsoft Windows の描画モデルや入力モデルを模倣したものはありません。したがって、Microsoft Windows のリストはメッセージハンドラを対象としています。

     

    図 12-8 描画領域リソースパネル

  6. 「OnRButtonDown」トグルをオンにし、「適用」を押してリソースパネルを閉じます。

    これにより、対応する Microsoft Windows メッセージへの応答で呼び出される、適切な Microsoft Windows メッセージハンドラと、該当するコールバックスタブが生成されます。

    メニューをポップアップするためのスタブの記入方法については、「スタブへの記入」を参照してください。

  7. デザインを保存します。

リソースの設定

Sun WorkShop Visual は、Motif と Microsoft Windows に対するリソースファイルを生成します。Motif では、そのウィジェットによる制御が広い範囲で可能です。Microsoft Windows でのリソースも存在しますが、Motif/X リソースに比べると制御可能な範囲が限られています。Microsoft Windows リソースは、実行可能ファイルにコンパイルして組み込まれます。したがって、Motif の場合とは異なり、Microsoft Windows でリソースを変更するということは、アプリケーションを再コンパイルすることになります。

ラベルリソースの設定

このアプリケーション例には、文字列、ピックスマップ、およびキーボードのリソ ースがあります。最初に、ラベル、ボタン、およびシェルの文字列を設定します。

  1. メインアプリケーションシェルの子であるフォームを選択します。

  2. フォームのリソースパネルを表示します。

  3. 「タイトル」というラベルの付いたテキストフィールドに「Tutorial」と入力して、ダイアログのタイトル を設定します。

  4. 「適用」を押してリソースパネルを閉じます。

  5. 「file_menu」カスケードボタンのリソースパネルを表示し、それにラベル文字列「File」を指定します。 「適用」を押します。

  6. 「edit_menu」にラベル「Edit」が表示され、「help_menu」にラベル「Help」が表示されるよう、他の 2 つのカスケードボタンにも同じ操作を行います。

    これを図 12-9 に示します。

     

    図 12-9 メニューバーラベルとシェルタイトル

  7. 「file_menu」のボタンのラベルに「New」、「Open」、「Exit」を設定します。

  8. 「edit_menu」のボタンのラベルに「Cut」、「Copy」、「Paste」を設定します。

  9. 「help_menu」のボタンのラベルに「About...」、「Help」を設定します。

    これら 3 つのメニューを図 12-10 に示します。

     

    図 12-10 メニューの項目ラベル

  10. 描画領域の子であるポップアップメニューから最初のボタンを選択し、そのリソースパネルを表示します。

  11. ボタンのラベルを「Cut」に設定します。

  12. ポップアップメニュー内の他の 2 つのボタンをそれぞれ選択して、それらのラベルをそれぞれ「Copy」、「Paste」に設定します。

  13. ウィンドウ保持領域内のダイアログシェル「sub_shell」を選択します。

    現在、デザイン領域にはこのサブダイアログの階層が表示されています。

  14. ラベルを選択し、そのリソースパネルを表示します。

  15. 次のような行を表示するよう、ラベルウィジェットの文字列を設定します。

    The quick brown fox
    jumped over
    the lazy dog

  16. ラベルの文字列を中央揃えするには、リソースパネルの「設定」ページに移動して、「揃え方」オプション メニューを「中央揃え」に変更します。「適用」を押します。

  17. ボタンのラベルを「Close」に設定します。

  18. サブダイアログのタイトルに「Information」を設定します。

    そのためには、シェルの子であるフォームのリソースパネルで「タイトル」という テキストボックスに入力してください。完成したダイアログを図 12-11 に示します。

     

    図 12-11 完成したサブダイアログ

    デザインを保存します。

文字列リソースの生成

これらすべてのラベルは文字列リソースです。Motif 版のデザイン用のコードを生成する場合には、これらのリソースを生成する場所 (コード内またはリソースファイル内) を決めることができます。Microsoft Windows 版の場合には、すべての文字列リソースは自動的にソースコード内に生成されます。

ピックスマップの使用

デザインにピックスマップを使用している場合には、ピックスマップはコード生成 時に、Sun WorkShop Visual によって Windows のビットマップに自動変換されます。このことを示すため、ボタンの 1 つにピックスマップラベルを指定します。

  1. メインアプリケーションシェルで「subd_pixmap」というボタンを選択し、そのリソースパネルを表示しま す。

  2. ボタンの「種類」リソースをピックスマップに設定します。

    これはボタンリソースパネルの「設定」ページにあります。

  3. ボタンリソースパネルの「表示」ページに移動し、「ピックスマップ」というボタンを押します。

    これにより、ピックスマップセレクタのダイアログが表示されます。

  4. ピックスマップセレクタのダイアログでは、既存のピックスマップを選択するか、または「編集」を押して ピックスマップエディタを表示します。

  5. ピックスマップエディタで新しいピックスマップを作成している場合には、上部のテキストフィールドにそ の名前を入力し、「バインド」を押してください。ピックスマップエディタを閉じます。

  6. ピックスマップセレクタのダイアログで「適用」を押します。リソースパネルの「ピックスマップ」という ボタンの横のテキストフィールドにオブジェクト名が表示されます。

    ピックスマップオブジェクトの作成方法と使い方については、「ピックスマップの選択」を参照してください。

  7. リソースパネルで「適用」を押すと、指定したピックスマップがボタンに表示されます。

  8. デザインを保存します。

ピックスマップの命名

MS-DOS (および Microsoft Windows) の場合のファイル名は、拡張子の前部分が 8 バイトを超えてはならないことに注意してください。Sun WorkShop Visual は、Microsoft Windows モードでは、ピックスマップをバインドした名前がファイルのベース名として使われます。そのため、ファ イル名が 8 バイトを超えないように注意してください。

以上でアプリケーションのデザインが終了しました。以降の学習では、UNIX と Microsoft Windows 用のコードの生成方法、および各プラットフォームでのアプリケーションの構築方法を示します。

アプリケーションの構築

Sun WorkShop Visual でのアプリケーション・ユーザーインタフェースのデザインが終わったので、Motif および Microsoft Windows コードを生成することができます。コードを生成したら、2 つのアプリケーションの構築準備ができたことになります。この節では、コールバックスタブへの記入方法 も含めて、操作の詳細について説明します。

ソースの管理

この学習では、Motif 用と Microsoft Windows 用に 2 つの異なるアプリケーションを生成する必要があります。これらのアプリケーションは、上書きしたり、不 正なヘッダーファイルをインクルードすることのないよう、2 つの別のディレクトリに生成してください。この学習では、ソースファイルの共有化は行いません。これに ついては 「ソースの共有化」を参照してください。

Motif 用のコード生成

  1. 「コード生成」ダイアログを表示します。

    ファイル名フィールドには、Sun WorkShop Visual の保存ファイル名に基づく名前が与えられています。

  2. 「言語」オプションで「C++ (Motif XP)」が選択されていることを確認します。

    「コード生成」ダイアログの最上部には、ベースディレクトリの名前を入力するテ キスト領域があります。すべてのファイル名は、このベースディレクトリからの相対パスで入力します。ベ ースディレクトリを確認するには「...」ボタンを使用してください。

  3. コードファイルを生成したい領域をベースディレクトリに設定します。

    混乱を避けるには、Motif XP コードと Microsoft Windows MFC コードを別々のディレクトリに生成してください。

  4. 「コード」ファイルに「生成」トグルが設定されていることを確認してください。

  5. 「C++ コードのオプション」ダイアログを開きます。

    「コード」テキストボックスの横にある「オプション」というボタンを押してくだ さい。

  6. 「ヘッダファイルをインクルード」トグルをオンにします。

  7. 「Motif ヘッダファイルをインクルード」トグルがオンになっていることを確認します。

  8. 「了解」ボタンを押します。

    変更が保存され、「C++ コードのオプション」ダイアログが閉じます。

  9. 「外部宣言」の横にある「生成」トグルがオンになっていることを確認します。

  10. 「スタブ」ファイルの横にある「生成」トグルをオンにします。

  11. 「メインプログラム」テキストボックスの横にある「生成」トグルがオンになっていることを確認します。

  12. 「コードオプション」ダイアログを表示します。

    そのためには、「生成」ダイアログの最下部にある、「オプション」というラベル のついたボタンを押します。

  13. 「リンク」オプションメニューが「コードに生成」に設定されていることを確認します。

  14. 「文字列」オプションメニューを「コード」に変更し、その他のすべてのリソースが「コード」に設定され ていることを確認します。

    便宜上、この学習ではすべてのリソース設定が「ハードコード」されます。実際の アプリケーションでは、リソース設定を別個のリソースファイル内に生成するのが普通です。

  15. 「了解」ボタンを押します。

    変更が保存され、「コードオプション」ダイアログが閉じます。

  16. 「メークファイル」の横にある「生成」トグルをオンにします。

  17. 「コード生成」ダイアログの「生成」ボタンを押します。

    ファイルは選択したディレクトリ内に生成されます。

  18. デザインを保存します。これにより、「コード生成」ダイアログ内の設定が保存されます。

メークファイル

Sun WorkShop Visual のインストール方法と構成方法によっては、Motif XP コードにアクセスするためにメークファイル (Makefile) を編集する必要が生じる場合もあります。 XPCLASSLIBS および CCFLAGS の定義が Motif XP ライブラリとインクルードファイルをアクセスすることを確認してください。VISUROOT は、Sun WorkShop Visual のインストールディレクトリのルートへのパスです。

XPCLASS = $(VISUROOT)/src/motifxp
XPCLASSLIBS = $(XPCLASS)/lib${ABIDIR}/libmotifxp.a
GEN_CFLAGS=-I. ${XINCLUDES} -I${XPMDIR} ${GROUP_COMPILEFLAGS}
CCFLAGS=${CFLAGS} ${ABICCFLAGS} -I${XPCLASS}/h ${GROUP_COMPILEFLAGS}

Microsoft Windows 用のコード生成

Microsoft Windows 用のコード生成手順は、上記の Motif 用の手順とほとんど同じですが、一部が異なっています。Sun WorkShop Visual は、様式ごとに異なる一連のファイルをそれぞれ記憶するため、異なる様式に対して一度ファイルの名前を 指定すると、ツールバーの様式メニューおよびコード生成ボタンを使用することができます。

PC の場合には、ファイル名の拡張子前部分は 8 バイト以下であることが必要です。Visual C++ などいくつかの IDE (統合開発環境) では、C++ コードを含むソースファイルの拡張子として .c を指定しても受け入れられません。 .cpp または .cxx を指定してください。

  1. まだ画面に開いていない場合には、「コード生成」ダイアログを表示させます。

  2. 「言語」オプションメニューから「C++ (Microsoft Windows MFC)」が選択されていることを確認します。

  3. 「コード生成」ダイアログの最上部にあるベースディレクトリには、ファイルを生成したいディレクトリを 設定します。

    混乱を避けるには、Motif XP コードと Microsoft Windows MFC コードを別々のディレクトリに生成してください。

  4. 「コード」ファイルの横にある「生成」トグルがオンであることを確認します。

  5. 「C++ コードのオプション」ダイアログを開きます。

    「コード」テキストボックスの横にある「オプション」というボタンを押します。

  6. 「ヘッダファイルをインクルード」トグルをオンにします。

  7. 「了解」ボタンを押します。

    変更が保存され、「C++ コードのオプション」ダイアログが閉じます。

  8. 「外部宣言」ファイルと「スタブ」ファイルの「生成」トグルがオンになっていることを確認します。

  9. 「メインプログラム」テキストボックスの横にある「生成」トグルがオンになっていることを確認します。

  10. 「Microsoft Windows リソース」ファイルの横にある「生成」トグルをオンにします。

    このファイルにはダイアログテンプレートが含まれています。このトグルがオンに されると、「ピックスマップ、 ビットマップ、アイコン」で説明するように、Sun WorkShop Visual は、ピックスマップを Windows ビットマップに (ファイルごとに 1 つずつ) 変換します。

  11. 「コードオプション」ダイアログを表示します。

    「コードオプション」ダイアログの下部にある「オプション」ボタンを押します。

  12. 「コードオプション」ダイアログで、「リソースとして生成」トグルがオンになっていることを確認します 。

    これにより Sun WorkShop Visual は、「ダイアログテンプレートの生成」で説明するように、Microsoft Windows リソースファイルであるダイアログテンプレートを生成します。

  13. MFC 4 または 5 を使用している場合には、「MFC 4.X 拡張」トグルをオンにします。

    これにより 3D の見た目と使い心地が得られます。

  14. 「リンク」のオプションメニューとすべてのリソースが「コードに生成」に設定されていることを確認しま す。

  15. 「了解」ボタンを押します。

    変更が保存され、「コードオプション」ダイアログが閉じます。

    注 - Microsoft Windows コードの場合には、メークファイルを生成する必要はありません。これらのファイルは別の方法で構築され ます。これについては、「Microsoft Windows 版のコンパイル」を参照してください。

  16. 「コード生成」ダイアログで「生成」を押します。

    ピックスマップ用のビットマップファイルが生成されたことを知らせるメッセージ が表示されます。ファイルのベース名は、ピックスマップオブジェクトの名前です。

生成されるファイル

MFC を生成すると、コード、スタブ、およびヘッダーファイルに加えて、特別なファイルも生成されます。これ らのファイルは次のとおりです。

  1. ビットマップファイル
    ピックスマップオブジェクトを作成した場合には、それらのオブジェクトは、ピックスマップごとに 1 つの Windows ビットマップファイルに変換されます。これらのファイルの接尾辞は「.ico」です。

  2. プロジェクトファイル
    これらは Visual C++ バージョン 5 (以降) のファイルであり、メークファイルと同様に、アプリケーションの構築場所である Visual C++ にアプリケーションを読み込むために必要なすべての情報が含まれています。これらのファイルの接尾辞は 「.dsw」と「.dsp」です。詳細については 「プロジェクトファイル」を参照してください。

日本語テキスト

生成したコードに日本語テキストが含まれる場合には、そのコードを PC に転送する前に、Sun WorkShop Visual に付属のフィルタユーティリティ xdtosj を使用して、コードの後処理を行う必要があります。詳細については、「日本語フォントの使用」を参照してください。

スタブへの記入

スタブファイルには、Motif 用と MFC 用の 2 つがあります。この学習では Motif アプリケーション用に Motif XP コードを生成したため、いくつかのコードを共有できます。これは、Sun WorkShop Visual の XP ライブラリが Motif 用に MFC の一部を模倣しているためです。しかし、単純化と速度向上のため、この学習ではこの 2 つを別個に扱います。ソースの共有の詳細については、「ソースの共有化」を参照してください。

MFC スタブ

コールバックには、アプリケーションを終了するためのものと、描画領域からメニ ューをポップアップするためのものがあります。スタブは下記のように記入してください。

void 
shell_c::DoExit ( )
{
	exit(0);		 /* この行を追加 */
}
 
void 
sub_shell_c::DoClose ( )
{
	this->ShowWindow(SW_HIDE); /* この行を追加 */
}
 
afx_msg void popup_window_c::OnRButtonDown( UINT nFlags, CPoint point )
{
	ClientToScreen(&point);	 /* この行を追加 */
	popup->TrackPopupMenu( TPM_LEFTALIGN|TPM_RIGHTBUTTON, /* この行を追加 */
				point.x, point.y, this, NULL);
}

Motif スタブ

MFC スタブファイルには、Motif スタブファイルに合わせて 2 つのコールバックがあります。終了コールバックのシグニチャーは両方のプラットフォームで同じですが、 内容は異なっています。

void 
shell_c::DoExit ( )
{
	exit (0);	/* この行を追加 */
}
 
 
void 
sub_shell_c::DoClose ( )
{
	this->ShowWindow(SW_HIDE);	/* この行を追加 */
}
 
void 
popup_window_c::DoInput ( )
{
	popup->TrackPopupMenu(0, 0, 0, this, NULL);	/* この行を追加 */
}

アプリケーションのコンパイル

デザインを作成し、コードを生成し、コールバックスタブを記入すると、Motif および Microsoft Windows のどちらでもアプリケーションをコンパイルできます。以降の節では、Motif アプリケーションの構築に関する簡単な説明の後に、Microsoft Windows 上でアプリケーションを構築する手順について記述します。

Microsoft Windows 上で Visual C++ バージョン 4.0 および 5 を使用してアプリケーションを構築する手順の詳細については、「Microsoft Windows 版のコンパイル」で説明します。ただし、Microsoft Foundation Class を統合できる Symantec C++ などの C++ 開発環境であれば、生成コードを構築することができます。Microsoft Windows ベースの C++ コンパイラでアプリケーションを構築する方法に関する一般説明については、「他のアプリケーションの使用」を参照してください。

Motif 版のコンパイル

すでにコードが生成されているため、Motif コードを生成したディレクトリのコマンドプロンプトから

make

と入力するだけで、アプリケーションを作成できます。メークファイルが生成して あるため、アプリケーション内のすべてのファイルが自動構築されます。

アプリケーションを実行する前に、「X リソースファイルの設定」で説明したように、読み込むリソースファイルを準備してください。

Microsoft Windows 版のコンパイル

Visual C++ バージョン 5 を使用している場合には、Sun WorkShop Visual がユーザーに代わって Visual C++ のプロジェクトファイルをすべて生成するため、PC 上でのアプリケーションのコンパイルはきわめて簡単です。Visual C++ の古いバージョンを使用している場合には、プロジェクトファイルを作成する必要があります。これはあま り便利ではありませんが、操作は短時間で終わり、一度行うだけで済みます。Visual C++ バージョン 5 と Visual C++ バージョン 4.0 を使用するための詳細を以下に示します。Visual C++ を使用していない場合には、アプリケーションをコンパイルするためのヒントとして 「他のアプリケーションの使用」を参照してください。

Visual C++ についての簡単な注意

Visual C++ は、Microsoft Windows 上で実行するアプリケーションの開発を支援する IDE であり、コンパイラ、デバッガ、および各種のエディタなど、多数のツールから構成されます。これは、ア プリケーションのソースを構築、デバッグ、制御するための便利なツールです。しかし、Visual C++ でのコード変更は、Sun WorkShop Visual には反映できません。Visual C++ では、プロジェクトの概念を使用しています。アプリケーション内のファイルの管理に Visual C++ を使用する場合には、必ずプロジェクトが必要となります。バージョン 5 の場合には、Sun WorkShop Visual がユーザーに代わってプロジェクトファイルを生成します。

    注 - サンから入手できる PC-NFS は、PC と Solaris システム間のファイル共有を簡単にするために設計されたツールです。

Visual C++ バージョン 5

Sun WorkShop Visual は、バージョン 5 以降の Visual C++ に対して、フル構成のプロジェクトファイルを生成します。これらは、「.dsw」と「.dsp」の接尾辞で終わ るファイルです。これらのファイルは、すべての MFC ソースファイル (コードファイル、リソースファイル、ビットマップファイル、ヘッダーファイルを含む) と一緒にPC で使用してください。

  1. Windows 環境下の PC で、Sun WorkShop Visual によって生成された「.dsw」ファイルをダブルクリックします。

    これによって、Sun WorkShop Visual は、プロジェクトを読み込んだ状態で Visual C++ を開きます。

  2. 「構築」メニューから「Build <プロジェクト名>.exe」を選択します。

    Visual C++ がエラーを検出した場合には、エラーが表示され、コンパイルが停止します。F4 キーを押すと、エラーを含むファイルが開き、エラーに関連のある場所が報告されます。続けて F4 キーを押すと、次のエラーへと進み、関連のあるファイルが必要に応じて開きます。エラー項目をダブルク リックすると、関連するファイルが開き、エラーの発生箇所にカーソルが移動します。このようなファイル を表示するウィンドウでは、直接ファイルの内容を編集することもできます。「ファイル」メニューから「 開く」を選択しても、ファイルの表示と編集を行うことができます。

  3. アプリケーションを正しく構築したら、それを試してみることができます。「構築」メニューから「Execut e <プロジェクト名>.exe」を選択します。

Visual C++ バージョン 4.0

Visual C++ バージョン 4 を使用している場合には、Sun WorkShop Visual によって生成されるプロジェクトファイルを使用できません。プロジェクトファイルの作成に必要な手順を 以下に説明します。

  1. すべての MFC ソースファイルを PC に取り込みます。

    「.dsp」ファイルと「.dsw」ファイルに関しては、Visual C++ バージョン 5 以降にだけ関連するファイルであるため、取り込む必要はありません。

  2. Visual C++ を起動します。

  3. 「ファイル」メニューから「新規」を選択します。

    下に示すように、作成できる新規項目のリストが表示されます。

     

    図 12-12 新規項目リスト

  4. 項目リストから「プロジェクトワークスペース」を選択し、「OK」を押します。

    「新規プロジェクトワークスペース」ダイアログが表示されます。

     

    図 12-13 「新規プロジェクトワークスペース」ダイアログ

  5. 「種類」リストから「アプリケーション」を選択し、「名前」フィールドに Tutorial などの名前を入力します。

  6. 「作成」ボタンを押して、新規アプリケーションを作成します。

    Visual C++ のメインウィンドウが表示されます。次に、構築したいファイルをプロジェクトに追加します。

  7. 「挿入」メニューから「ファイルをプロジェクトへ」を選択します。

    次のようなダイアログが表示されます。

     

    図 12-14 「ファイルを挿入」ダイアログ

  8. PC にコピーしたファイルのあるディレクトリを探し出します。

  9. リストの最初のファイルをクリックし、Shift キーを押しながらリストの最後のファイルをクリックすると、必要なファイルが強調表示されます。

  10. 「了解」ボタンを押して、選択したファイルをプロジェクトに追加します。

  11. 「構築」メニューから「設定」オプションを選択します。

    次に示すような「プロジェクト設定」ダイアログが表示されます。

     

    図 12-15 「プロジェクト設定」ダイアログ

  12. 上に示すように、「Microsoft Foundation Class 」オプションメニューから「MFC の共有 Dll を使用」オプションを選択し、「OK」を押します。

    最後に、次のようにしてアプリケーションを構築します。

  13. 「構築」メニューから「Build Tutorial.exe」を選択します。

    Visual C++ がエラーを検出した場合には、エラーが表示され、コンパイルが停止します。F4 キーを押すと、エラーを含むファイルが開き、エラーに関連のある場所が報告されます。続けて F4 キーを押すと、次のエラーへと進み、関連のあるファイルが必要に応じて開きます。エラー項目をダブルク リックすると、関連するファイルが開き、エラーの発生箇所にカーソルが移動します。このようなファイル を表示するウィンドウでは、直接ファイルの内容を編集することもできます。「ファイル」メニューから「 開く」を選択しても、ファイルの表示と編集を行うことができます。

  14. アプリケーションを正しく構築したら、それを試してみることができます。「構築」メニューから「Execut e <プロジェクト名>.exe」を選択します。

他のアプリケーションの使用

Sun WorkShop Visual によって生成されたコードは MFC コードです。これは特定の Microsoft Windows アプリケーション用に生成されたものではありません。Visual C++ を使用していない場合、Microsoft Windows 上でユーザーインタフェースを構築する際に注意すべき重要なポイントを以下に示します。この節はすべて のコンパイラに適用されます。

  1. C++ コンパイラ、および Microsoft Foundation Class (MFC) のインクルードファイルとライブラリをシステムにインストールする必要があります。

  2. Microsoft Windows の .EXE ファイルを構築するための構築ツールを設定します。

  3. コンパイラには MFC ヘッダーファイルへの有効なインクルードパスが含まれていることを確認します。

  4. コンパイラには、Sun WorkShop Visual が生成したソースファイルを含んでいるサブディレクトリへの有効なインクルードパスが含まれていること を確認します。

  5. ラージ・メモリーモデル設定を使用して、コードをコンパイルします。

    リンカーが MFC ライブラリまたは DLL でリンクすることを確認します。

ソースの共有化

Sun WorkShop Visual の Motif XP ライブラリを使用すると、一部のコールバックコードを Motif と MFC で共有することができます。Motif で使用できるクラスについては、付録 B「Motif XP リファレンス」を参照してください。この付録では、Motif と MFC の両方のプラットフォームで使用できる、MFC ツールキットへの呼び出しについて説明しています。

XP ライブラリを使用するには、Motif アプリケーション用に生成する言語として「コード生成」ダイアログで「C++ (Motif XP)」を選択してください。コードを生成する際には、UNIX と Windows の両方のプラットフォームで受け入れられる接尾辞は「.cxx」または「.cpp」だけであることを忘れないで ください。以下の手順リストでは、構築済みのデザインとスタブファイルを使用します。このスタブファイ ルは、Motif XP を使用して Motif と Windows の両方で使用できるコールバックファイルを記述する方法を示すために、すでに記入されているものです。 このために必要なファイルは $VISUROOT/src/examples/tutorial にあります。ここで、VISUROOT は Sun WorkShop Visual のインストールディレクトリです。

  1. Windows モードで Sun WorkShop Visual を起動します。

    この詳細については、「Microsoft Windows モードでの起動」を参照してください。

  2. 「ファイル」メニューから「開く」を選択し、次のファイルを読み込みます。

    $VISUROOT/src/examples/tutorial/singlesource.xd

  3. デザインが図 12-16 に示すようになっていることを確認します。

    これは、2 つのオプションメニュー、2 つのトグル、およびテキストフィールドから構成される簡単なダイアログです。

     

    図 12-16 デザイン階層とダイナミックディスプレイ

  4. 「コード生成」ダイアログを表示し、生成する最初の言語として「C++ (Motif XP)」を選択します。

    Motif 専用ソースのターゲットディレクトリがあることを確認します。

  5. コードファイル、外部宣言ファイル、メインコードファイル、メークファイル、およびスタブファイルを生 成します。「コード生成」ダイアログに表示されている名前を使用します。

    現在のスタブファイルは設定済みのスタブファイルによって上書きされますが、Su n WorkShop Visual を使用してメークファイル内にその依存情報を作成する必要があります。

  6. 「言語」を「C++ (Microsoft Windows MFC)」に変更します。ターゲットディレクトリも変更することを忘れないでください。

  7. コードファイル、外部宣言ファイル、メインコードファイル、および Windows リソースファイルを生成します。スタブファイルは生成しません。

    前述の同じ設定済みのスタブファイルを使用しますが、Sun WorkShop Visual を使用して、Visual C++ プロジェクトファイル内にその依存情報を作成する必要があります。

  8. 以下のスタブファイルを Motif XP ディレクトリにコピーします。

    $VISUROOT/src/examples/mfc/singlesource_stubs.cpp

    このファイルは、生成した MFC ソースと一緒に PC にコピーする必要があることを忘れないでください。

    テキストエディタでスタブファイルを見ることができます。3 つのコールバックがあります。

    1. JazzChanged
    「Jazz」トグルの状態をチェックし、オンになっている場合は「Jazz」オプションメニューを表示し、「Cl assical」オプションメニューを非表示にします。

    2. ClassicalChanged
    「Classical」トグルの状態をチェックし、オンになっている場合は「Classical」オプションメニューを表 示し、「Jazz」オプションメニューを非表示にします。

    3. DoSetText
    目に見えるオプションメニューから選択した項目を取り出し、テキストをテキストフィールドに書き込みま す。

    このコードはすべて、Motif XP アプリケーションと MFC アプリケーションによって共有できます。

  9. Motif アプリケーションをコンパイルするには、Motif 用のディレクトリで、コマンドプロンプトから次のように入力します。

    make

    コードの生成、コンパイル、および実行の詳細については、第 7 章「コードの生成」を参照してください。

  10. アプリケーションの構築後、それを Motif 上で実行して、コールバックが機能することを確認してください。2 つのトグルのオン / オフを切り替えたり、オプションメニューから何かを選択してみてください。

  11. MFC アプリケーションを構築するには、次のようにします。

    1. MFC ディレクトリに生成されたすべてのファイルを PC に取り込みます。
    2. Visual C++ バージョン 5 を使用している場合には、「.dsw」ファイルと「.dsp」ファイルを取り込むことを忘れないでください。こ れらは、Visual C++ のプロジェクトファイルです。

    3. 設定済みのスタブファイルを Motif XP ディレクトリから PC に取り込み、最初のスタブファイルを上書きします。このスタブファイルは、強制的に正しい依存関係にす ることだけを目的に生成されたものです。
    4. Visual C++ を使用していない場合には、PC 上でのコンパイル時の注意点について 「他のアプリケーションの使用」を参照してください。
    5. PC 上では、プロジェクトワークスペースとして Visual C++ で「.dsw」ファイルを開きます。
    6. この場合には、Visual C++ バージョン 5 を使用しているものと想定します。これより古いバージョンや別のアプリケーションを使用している場合に は、「Microsoft Windows 版のコンパイル」を参照してください。

    7. プロジェクトを構築します。
    8. プロジェクトを実行します。
    9. コールバックが機能することを確認します。トグルのオン / オフ、およびオプションメニューから何かを選択してみてください。

プラットフォーム間でソースを共有するその他の方法

コールバックファイルのソースを共有化するには、この他に 2 つの方法があります。

    1. Java の使用

    2. 取得/設定スマートコードの使用

Java プログラム言語を使用すれば、プラットフォームからの独立したコードを生成できます。Sun WorkShop Visual では、デザインを Java コードでも生成できます。さらに、デザインを Java アプリケーションビルダーである Visaj に取り込める形で保存できます。デザインから Java アプリケーションを作成する方法の詳細については、第 10 章「Java 用のデザイン」を参照してください。

取得/設定スマートコードにより、特定のウィジェットの周りにツールキットから 独立した「ラッパー」が提供されます。簡単な学習を含む詳細については、第 16 章「取得/設定用スマートコード」を参照してください。


前へ 次へ 目次 文書セット ホーム

サン・マイクロシステムズ株式会社
Copyright information. All rights reserved.