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


付録 B

Motif XP リファレンス


はじめに

Motif XP ライブラリは、ほとんどの MFC クラスおよびメソッドを Motif ウィジェットと X または UNIX 呼び出しに変換することで、Motif と Microsoft Windows との間でコード共有を可能にします。本章では、ライブラリについて説明します。

Motif XP の使用

以下の情報を有効に活用するために、まず、取り扱う MFC クラスを確認してください。 「Motif ウィジェットの Microsoft Windows ウィジェットへの変換」で、この情報が記述されています。次に、本章で説明するクラスの記述を参照し、使用可能なメソッドを確認してください。

    注 - xd _ で始まるすべての変数およびメソッドは、Motif XP に固有のものです。これらは Motif 上では使用することができますが、Microsoft Windows 上で使用することはできません。

MFC およびメソッドについての詳細は、Microsoft Windows 上で使用している環境に対応した MFC のマニュアルを参照してください。

Motif XP の強化

Sun WorkShop Visual では、Motif XP に対してのソースコードが用意されています。ユーザーは、希望に応じてこのソースコードに内容を追加することができます。

Motif XP 用のソースコードは、$VISUROOT/src/motifxp/lib にあります ($VISUROOT は、Sun WorkShop Visual のインストールディレクトリです)。各クラスはそれぞれ独立したソースファイルを持っており、場所を示すコメントが付けられています。公開ヘッダー (インクルードファイル) は、 $VISUROOT/src/motifxp/h ディレクトリ内の xdclass.h にあります。

Motif XP ライブラリ

class CObject

CObject クラスは、MFC ライブラリの主要な基底クラスです。他のすべてのクラスは、このクラスから派生しています。

virtual ~CObject();

CObject オブジェクトを破壊します。

protected CObject();

CObject オブジェクトを構築します。

virtual Widget xd_rootwidget();
virtual void xd_rootwidget(Widget xd_rootwidget);

最初の xd_rootwidget() は、 CObject オブジェクトが表わす階層のルートにあるウィジェットのウィジェットポインタを返します。2 番目の xd_rootwidget は、ルートウィジェットを設定します。

class CFrameWnd : public CWnd

CFrameWnd クラスは、Microsoft Windowsの単一文書インタフェ−スのオ−バ−ラップした機能、あるいはポップアップフレ−ムウィンドウの機能を提供します。この機能は、アプリケーションシェル・ウィジェットをサポートするために、Sun WorkShop Visual が使用します。

protected virtual int xd_get_window_text (LPSTR lpszStringBuf, int nMaxCount) const;

シェルウィジェットに対しての XmNtitle の値を獲得します。ウィジェットがまだ作成されていない場合には 0 を返し、その他の場合にはテキストの長さを返します。

protected virtual int xd_get_window_text_length() const;

ウィジェットの XmNtitle リソースの長さを返します。ウィジェットがまだ作成されていない場合には 0 を返します。

protected virtual void xd_set_window_text(LPCSTR lpszString);

シェルウィジェットの XmNtitle および XmNiconName lpszString に設定します。

protected virtual BOOL xd_show_window(int nCmdShow);

アプリケーションシェルに対して ShowWindow を実装するために使用されます。 SW_SHOWMINIMIZED SW_HIDE そして SW_RESTORE のみをサポートします。

class CCmdTarget : public CObject

CCmdTarget クラスは、XP ライブラリのメッセージマップ・アーキテクチャの基底クラスです。メッセージマップは、コマンドまたはメッセージをユーザー定義のメンバー関数へ送ります。この Motif バージョンには、機能が組み込まれていません。クラスは、Microsoft Windows コードとの互換性のためだけに組み込まれます。

class CWnd : public CCmdTarget

CWnd クラスは、XP ライブラリ内にあるすべてのウィンドウクラスの基本機能を提供します。以下の MFC のメソッドが実装されています。

CWnd();

virtual ~CWnd();

int GetWindowText(LPSTR lpszStringBuf, int nMaxCount) const;

ウィジェットのウィンドウテキストを獲得します。これは、仮想メンバー関数 xd_get_window_text() を呼び出すことにより実装されます。

int GetWindowTextLength() const;

ウィジェットのウィンドウテキストの長さを獲得します。これは、仮想メンバー関数 xd_get_window_text_length() を呼び出すことにより実装されます。

BOOL EnableWindow(BOOL bEnable=TRUE);

ウィンドウを使用可能、あるいは使用不可能にします。ウィジェットがまだ作成されていない場合には 0 を、ウィジェットが以前に使用可能とされた場合には 0 を、そしてウィジェットが以前に使用不可能にされた場合には 0 以外を返します。

void SetWindowText(LPCSTR lpszString);

ウィジェットのウィンドウテキストを設定します。これは、仮想メンバー関数 xd_set_window_text() を呼び出すことにより実装されます。

BOOL ShowWindow(int nCmdShow);

ウィンドウを表示、アイコン化 (アプリケーションシェルまたは最上位シェルのみ) 、あるいは非表示にします。ウィジェットがまだ作成されていない場合には 0 を、ウィジェットが以前に非表示にされた場合には 0 を、そしてウィジェットが以前に可視状態にされた場合には 0 以外を返します。これは、仮想メンバー関数 xd_show_window() を呼び出すことにより実装されます。

void xd_call_data ( XmAnyCallbackStruct *call_data );
XmAnyCallbackStruct *xd_call_data () { return _xd_call_data; }

最初の xd_call_data() は、そのクラスにコールバックの call_data を格納するために、Sun WorkShop Visual の生成したコードで使用されます。call_data は、2 番目の xd_call_data() を使用して、コールバック・メソッドに取り出すことが可能です。

protected virtual int xd_get_window_text (LPSTR lpszStringBuf, int nMaxCount) const;

GetWindowText() を実装するために、サブクラスによって使用されます。

protected virtual int xd_get_window_text_length() const;

GetWindowTextLength() を実装するために、サブクラスによって使用されます。

protected virtual void xd_set_window_text(LPCSTR lpszString);

SetWindowText() を実装するために、サブクラスによって使用されます。

protected virtual BOOL xd_show_window(int nCmdShow);

ShowWindow に対してのデフォルトの表示および非表示動作を実装します。ガジェットに対しては、そのガジェットをマネージおよびアンマネージし、ウィジェットに対しては適切に mappedWhenManaged を設定します。

class CDialog : public CWnd

CDialog クラスは、画面上にダイアログボックスを表示するために使用される基底クラスです。有効なクラスを作成するためには、通常は Cdialog から別のクラスを派生させます。

protected virtual int xd_get_window_text(LPSTR lpszStringBuf, int nMaxCount) const;

シェルウィジェットの XmNtitle の値を獲得します。ウィジェットがまだ作成されていない場合には 0 を返します。その他の場合にはテキストの長さを返して、そのテキストを lpszStringBuf に配置します。

protected virtual int xd_get_window_text_length() const;

ウィジェットの XmNtitle リソースの長さを返します。ウィジェットがまだ作成されていない場合には 0 を返します。

protected virtual void xd_set_window_text(LPCSTR lpszString);

シェルウィジェットの XmNtitle および XmNiconName lpszString に設定します。

protected virtual BOOL xd_show_window(int nCmdShow);

最上位シェルまたはダイアログシェルに対して ShowWindow を実装します。 SW_SHOWMINIMIZED (最上位シェルのみ) 、 SW_HIDE および SW_RESTORE をサポートします。

class CScrollBar : public CWnd

CScrollBar クラスは、Microsoft Windows のスクロールバーコントロールの機能を提供します。

int GetScrollPos() const;

ウィジェットがまだ作成されていない場合には 0 を返し、その他の場合には XmNvalue を返します。

void GetScrollRange(LPINT lpMinPos, LPINT lpMaxPos) const;

ウィジェットが作成されている場合には、 lpMinPos および lpMaxPos XmNminimum および XmNmaximum にそれぞれ設定します。

int SetScrollPos(int nPos, BOOL bRedraw = TRUE);

ウィジェットが設定されている場合には、 XmNvalue nPos に設定し、以前の XmNvalue を返します。その他の場合には 0 を返します。

void SetScrollRange(int nMinPos, int nMaxPos, BOOL bRedraw = TRUE);

ウィジェットが作成されている場合には、 XmNminimum および XmNmaximum nMinPos および nMaxPos にそれぞれ設定します。

void ShowScrollBar(BOOL bShow = TRUE);

ウィジェットが作成されている場合には、 bShow の値に従ってマネージあるいはアンマネージします。

class CFileDialog : public CDialog

CFileDialog クラスは、Microsoft Windows の共通ファイルダイアログボックスをカプセル化します。それによって、(その他のファイル選択ダイアログボックスのように) 「開くファイル」および 「別名保存」ダイアログボックスが、Microsoft Windows 準拠の形式で容易に実装されます。

	CFileDialog (BOOL bOpenFileDialog, 
		LPCSTR lpszDefExt = NULL, 
		LPCSTR lpszFileName = NULL,
		DWORD dwFlags = 
		OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, 
		LPCSTR lpszFilter = NULL,
		CWnd* pParentWnd = NULL);

コンストラクタは、単純に CFileDialogObject を構築します。 lpszFileName および lpszFilter 引数は、 DoModal() メソッドでファイル選択ボックスの XmNdirSpec XmNpattern リソースを設定するために使用されます。 pParentWnd リソースは、 CFrameWnd オブジェクトを指します。

virtual ~CFileDialog();

非公開クラス変数を解放して、 CFileDialog オブジェクトを破壊します。

virtual int DoModal();

XmNdirSpec および XmNpattern リソースをコンストラクタで指定されている通りに設定し、了解、取消し、ポップダウンコールバックが処理されるまで非公開イベントループを実行します。

CString GetPathName() const;

ファイル選択ボックスの XmNdirSpec リソースの値を返します。

protected virtual void OnCancel();

ユーザーが取消しボタンを押した場合、あるいはウィンドウメニューからダイアログをポップダウンした場合に呼び出されます。ファイル選択を完了する必要がある場合、サブクラスは OnCancel() を上書きする際にこのメソッドを呼び出します。

protected virtual void OnOK();

ユーザーが了解ボタンを押した場合に呼び出されます。ファイル選択を完了する必要がある場合、サブクラスは OnOk() を上書きする際にこのメソッドを呼び出します。

virtual BOOL OnInitDialog();

デフォルトで True を返します。これは、ウィジェットを作成する作成メソッドを呼び出すために、Sun WorkShop Visual 生成コード内で上書きされます。

class CSplitterWnd : public CWnd

区画ウィンドウを実装するために使用されます。

class CMenu : public CObject

クラス CMenu は、Microsoft Windows メニューコントロールを処理するためのクラスです。

CMenu();

CMenu オブジェクトを作成します。

~CMenu();

CMenu オブジェクトを破壊します。

UINT CheckMenuItem(UINT nIDCheckItem, UINT nCheck);

トグルボタンに対応するメニュー項目に対してのチェック状態を設定します。 nCheck 引数は、項目の要求されている状態 ( MF_CHECKED または MF_UNCHECKED ) と nIDCheckItem の解釈 ( MF_BYCOMMAND および MF_BYPOSITION ) の両方を指定します。これらの 2 つの値は、ビットごとの OR、たとえば menu->CheckMenuItem ( ID_toggle_b , MF_BYCOMMAND | MF_CHECKED ) を使用して指定される必要があります。関数は、メニュー項目が見つからない、あるいはトグルボタンではない場合 (MFC Windows では、セパレータを含むどのようなメニュー項目もチェックすることが可能です) には、-1 を返します。その他の場合には、以前の状態 ( MF_CHECK または MF_UNCHECKED ) が返されます。 nCheck MF_BYCOMMAND を含む場合には、すべてのサブメニューが検索されます。

UINT EnableMenuItem(UINT nIDEnableItem, UINT nEnable);

メニュー項目を使用可能または不可能にします。 nEnable 引数は、項目の要求されている状態 ( MF_ENABLED または MF_GRAYED ) および nIDEnableItem の解釈 ( MF_BYCOMMAND および MF_BYPOSITION ) の両方を指定します。これらの 2 つの値は、ビットごとの OR、たとえば menu->EnableMenuItem ( ID_toggle_b , MF_BYCOMMAND | MF_GRAYED ) を使用して指定される必要があります。メニュー項目が見つからない場合、あるいは MF_BYCOMMAND が指定されていて、メニューバー、メニュー、セパレータまたはカスケードボタンである場合は、-1 を返します。その他の場合には、以前の状態 ( MF_ENABLED または MF_GRAYED ) が返されます。 nEnable MF_BYCOMMAND を含む場合には、すべてのサブメニューが検索されます。 MF_DISABLED 状態 (応答不可能であるが、グレー表示されていない) はサポートされていないことに注意してください。

UINT GetMenuState(UINT nID, UINT nFlags)const;

メニュー項目の状態を獲得します。 nFlags 引数は、 nID の解釈 ( MF_BYCOMMAND または MF_BYPOSITION ) を指定します。関数は、メニュー項目が見つからない場合、あるいは セパレータである場合に -1 を返します。その他の場合は、状態のビットごとの OR ( MF_CHECKED MF_UNCHECKED MF_SEPARATOR MF_ENABLED または MF_GRAYED ) が返されます。 nFlags MF_BYCOMMAND である場合には、すべてのサブメニューも検索されます。MFC の場合は、ポップアップメニューに対する GetMenuState では高順位バイトに項目数をも返します。これは、Motif XP ではサポートされていません。

BOOL TrackPopupMenu (UINT nFlags, int x, int y, CWnd *pWnd, LPCRECT lpRect = 0);

この関数は、MFC Windows の TrackPopupMenu 関数と同様の動作をします。関数は、 pWnd によって指定されているウィンドウから call_data を取り出します (これは、コールバック関数によって保存されています) 。call_data にあるイベントが ButtonPress イベントである場合には、ポップアップメニューは call_data のイベントを使用して (関数引数ではない) 配置され、メニューがマネージされて、TRUE が返されます。その他の場合には、FALSE が返されます。

void xd_register_menu(CMenu *menu);

IDをメニュー項目に割り当てるために、ツールキットによって使用されます。

void xd_register_menu_item(UINT nIDItem, Widget item);

IDをメニュー項目に割り当てるために、ツールキットによって使用されます。

protected Widget xd_get_menu_item_by_position(UINT nPos);

IDをメニュー項目に割り当てるために、ツールキットによって使用されます。

protected Widget xd_get_menu_item_by_id(UINT nIDItem);

IDをメニュー項目に割り当てるために、ツールキットによって使用されます。

class CComboBox : public CWnd

CComboBox クラスは、 ComboBox に等価のインタフェースを提供するためにオプションメニューをラップするために使用されます。

int GetCurSel() const;

現在選択されている項目の索引 (最初の項目は 0 ) を返します。ウィジェットがまだ作成されていない場合には 0 を返します。

int GetLBText(int nIndex, LPSTR lpszText) const;

nIndex によって識別される項目のテキストのコピーを lpszText 内に獲得し、その長さを返します。ウィジェットがまだ作成されていない場合には 0 を返し、索引が範囲外である場合には LB_ERR を返します。

int GetLBTextLen(int nIndex) const;

nIndex によって識別される項目のテキストの長さを返します。ウィジェットがまだ作成されていない場合には 0 を返し、索引が範囲外である場合には LB_ERR を返します。

int SetCurSel(int nSelect);

現在の選択を、 nSelect によって識別される項目に設定します。ウィジェットがまだ作成されていない場合には 0 を返し、索引が範囲外である場合には LB_ERR を返します。その他の場合には、選択された項目の索引を返します。MFC Windows とは異なり、選択を消去するために nSelect を -1 として渡す動作処理はサポートされていません。

protected virtual int xd_get_window_text(LPSTR lpszStringBuf, int nMaxCount) const;

lpszStringBuf で選択された項目のテキストを返します。ウィジェットがまだ作成されていない場合には 0 を返し、選択された項目がない場合には LB_ERR を返します。その他の場合には、テキストの長さを返します。

protected virtual int xd_get_window_text_length() const;

ウィジェットがまだ作成されていない場合には -1 を返し、作成されている場合には 0 を返します。これは MFC 動作に対応しています。

protected virtual void xd_set_window_text(LPCSTR);

これは、 CComboBox に対する空の命令です。

class CStatic : public CWnd

CStatic クラスは、ラベルウィジェットと一緒に実装される単純なテキストフィールドである、Microsoft Windows の静的コントロールを実装します。

protected virtual void xd_set_window_text(LPCSTR lpszString);

XmStringCreateLocalized() で作成されたXmString に、ウィジェットの XmNlabelString リソ−スを lpszString を使用して設定します

protected virtual int xd_get_window_text(LPSTR lpszStringBuf, int nMaxCount) const;

ウィジェットの XmNlabelString の値を lpszStringBuf 内に獲得します。ウィジェットがまだ作成されていない場合には 0 が返され、その他の場合には文字列の長さが返されます。

protected virtual int xd_get_window_text_length() const;

ウィジェットに対しての XmNlabelString リソースの長さを返します。ウィジェットがまだ作成されていない場合には 0 が返されます。

class CButton : public CWnd

Cbutton クラスは、Microsoft Windows のボタンコントロールの機能を提供し、プッシュボタンまたはトグルボタンのいずれかとともに実装されます。

int GetCheck() const;

ボタンのチェック状態を獲得します。ウィジェットがまだ作成されていない、ウィジェットがトグルボタンではない、あるいはトグルボタンであっても設定されていない場合には 0 が返されます。ウィジェットがトグルボタンであり、設定されている場合は、1が返されます。MFC では、Motif XP でサポートされていない値 2 (未確定状態) を返すことができます。

void SetCheck(int nCheck);

nCheck に従って、トグルボタンの状態を設定します。これは、プッシュボタンに対しては空の命令です。

protected virtual void xd_set_window_text(LPCSTR lpszString);

XmStringCreateLocalized() で作成された XmString に、ウィジェットの XmNlabelString リソースを、 lpszString を使用して設定します。

protected virtual int xd_get_window_text(LPSTR lpszStringBuf, int nMaxCount) const;

ウィジェットの XmNlabelString の値を lpszStringBuf 内に獲得します。ウィジェットがまだ作成されていない場合には 0 が返され、その他の場合には文字列の長さが返されます。

protected virtual int xd_get_window_text_length() const;

ウィジェットの XmNlabelString リソースの長さを返します。ウィジェットがまだ作成されていない場合には 0 が返されます。

class CBitmapButton : public CButton

CBitmapButton クラスは、テキストの代わりにビットマップを使用してボタンを実装します。

class CListBox : public CWnd

CListBox クラスは、ユーザーが表示して選択することができる項目を表示するリストボックスの機能を提供します。

CListBox();

非公開データを初期化します。

virtual Widget xd_rootwidget();
virtual void xd_rootwidget( Widget xd_rootwidget );

クラスがリストとスクロールリストとを区別することができるように、 Cobject 内のメソッドを書き換えます。

virtual Widget xd_listwidget();

オブジェクトのリストウィジェットを返します。通常のリストの場合には、これはルートウィジェットと同じですが、スクロールリストの場合には、ルートウィジェットとは異なります。

int DeleteString(UINT nIndex);

nIndex (最初の項目は 0 ) によって識別されるリスト項目を削除します。ウィジェットがまだ作成されていない場合には 0 を返し、索引が範囲外、あるいはリスト内の残りの項目数以外の場合には LB_ERR を返します。

int GetCount() const;

ウィジェットがまだ作成されていない場合には 0 を、その他の場合にはリスト内の項目数 ( XmNitemCount ) を返します。

int GetCurSel() const;

単一選択リスト内で現在選択されている項目の索引を獲得します ( XmNselectionPolicy XmSINGLE_SELECT または XmBROWSE_SELECT である場合)。ウィジェットがまだ作成されていない場合は 0 を、リストが複数選択リストである場合または項目が選択されていない場合には LB_ERR を返します。その他の場合は、選択されている項目の索引が返されます。リストが複数選択リストである場合には、Motif XP は常に LB_ERR を返しますが、MFC は任意の正の値を返します。

int GetSel(int nIndex) const;

nIndex によって示される項目の選択状態を返します。ウィジェットがまだ作成されていない、あるいは項目が選択されていない場合には 0 を返します。索引が範囲から外れている場合には LB_ERR を、また、項目が選択されている場合には正の値を返します。

int GetSelCount() const;

複数選択リスト内で選択されている項目の数を返します。ウィジェットがまだ作成されていない場合には 0 を返します。リストが単一選択リストである場合には LB_ERR を、また、その他の場合には選択されている項目の数を返します。

int GetSelItems(int nMaxItems, LPINT rgIndex) const;

複数選択リスト内で選択されている項目の索引を獲得し、それを配列 rgIndex にコピーします。ウィジェットがまだ作成されていない場合には 0 を、リストが単一選択リストである場合には LB_ERR を、また、その他の場合にはコピーされた索引の数を返します。

int GetText(int nIndex, LPSTR lpszBuffer) const;

nIndex によって識別される項目のテキストを、 lpszBuffer に獲得します。ウィジェットがまだ作成されていない場合には 0 を、索引が範囲から外れている場合には LB_ERR を、また、その他の場合にはテキストの長さを返します。

int GetTextLen(int nIndex) const;

nIndex によって識別されるテキストの長さを獲得します。ウィジェットがまだ作成されていない場合には 0 を、索引が範囲から外れている場合には LB_ERR を、また、その他の場合にはテキストの長さを返します。

int GetTopIndex() const;

リスト上部で可視状態である項目の索引を返します。ウィジェットがまだ作成されていない場合には 0 を返します。

int InsertString(int nIndex, LPCSTR lpszItem);

nIndex により指定されたリスト内の位置に項目を挿入します。nIndex が -1 である場合には、項目はリストの末尾に追加されます。ウィジェットがまだ作成されていない場合には 0 を、索引が範囲から外れている場合には LB_ERR を、また、その他の場合には項目が挿入された位置が返されます。

void ResetContent();

リストからすべての項目を削除します。

int SelItemRange(BOOL bSelect, int nFirstItem, int nLastItem);

bSelect に従って、複数選択リスト内の項目の範囲を選択あるいは選択解除します。ウィジェットがまだ作成されていない場合には 0 を、リストが単一選択リストである場合には LB_ERR を、また、その他の場合には LB_ERR 以外の値を返します。

int SetCurSel(int nSelect);

単一選択リスト内で、 nSelect により識別される項目を選択し、スクロールしてその項目を表示します。 nSelect が -1 である場合には、選択は消去されます。ウィジェットがまだ作成されていない場合には 0 を、リストが複数選択リストである、あるいは索引が範囲から外れている場合には LB_ERR を、また、その他の場合には LB_ERR 以外の値を返します。

int SetSel(int nIndex, BOOL bSelect = TRUE);

bSelect に従って、複数選択リスト内の項目を選択または選択解除します。nIndex が -1 である場合には、すべての項目が選択または選択解除されます。ウィジェットがまだ作成されていない場合には 0 を、リストが単一選択リストである、あるいは索引が範囲から外れている場合には LB_ERR を、また、その他の場合には LB_ERR 以外の値を返します。

int SetTopIndex(int nIndex);

nIndex により識別される項目を可視状態にするために、リストをスクロールします。ウィジェットがまだ作成されていない場合には 0 を、索引が範囲から外れている場合には LB_ERR を、また、その他の場合には LB_ERR 以外の値を返します。

class CEdit : public CWnd

クラス CEdit は、ユーザーがテキストを入力することが可能な矩形ウィンドウである、Microsoft Windows 編集コントロールの機能を提供します。テキストまたはテキストフィールドウィジェットと一緒に実装されます。

CEdit();

非公開データを初期化します。

virtual Widget xd_rootwidget();
virtual void xd_rootwidget( Widget xd_rootwidget );

クラスがテキストとスクロールテキストとを区別することができるように、 Cobject 内のメソッドを書き換えます。

virtual Widget xd_textwidget();

オブジェクトのテキストウィジェットを返します。通常のテキストに対しては、これはルートウィジェットと同じですが、スクロールテキストの場合には異なっています。

void Clear();

現在選択されているテキストを削除します ( XmTextRemove() )。

void Copy();

現在選択されているテキストをクリップボードにコピーします ( XmTextCopy() )。

void Cut();

現在選択されているテキストを削除して、それをクリップボードにコピーします( XmTextCut() )。

void GetSel(int & nStartChar, int & nEndChar) const;

選択されているテキストの先頭および末尾を獲得します。テキストが選択されていない場合には、先頭および末尾を 0 として返します。

void LimitText(int nChars = 0);

入力可能な文字の数を制限します。 nChars が 0 である場合には、制限が最大値に設定されます。

void Paste();

クリップボードからのデータをテキストウィジェットに挿入します ( XmTextPaste() )。

void ReplaceSel(LPCSTR lpszNewText);

現在の選択を、 lpszNewText 内に供給されるテキストで置き換えます。選択が存在しない場合には、挿入カーソル位置にテキストが挿入されます。

BOOL SetReadOnly(BOOL bReadOnly = TRUE);

ウィジェットの XmNeditable リソースを、! bReadOnly になるように設定します。ウィジェットがまだ作成されていない場合には 0 を、また、その他の場合には 1 を返します。

void SetSel(int nStartChar, int nEndChar, BOOL bNoScroll = FALSE);

現在の選択を nStartChar および nEndChar によって指定されているテキストに設定します。また、 XmNautoShowCursorPosition を ! bNoScroll に設定します。

protected virtual void xd_set_window_text(LPCSTR lpszString);

ウィジェットの値を lpszString に設定します ( XmTextSetString() )。

protected virtual int xd_get_window_text(LPSTR lpszStringBuf, int nMaxCount) const;

ウィジェットから XmTextGetString() でテキストを獲得し、 lpszStringBuf に設定します。ウィジェットがまだ作成されていない場合には 0 が返され、その他の場合には文字列の長さが返されます。

protected virtual int xd_get_window_text_length() const;

ウィジェットのテキストの長さが返されます。ウィジェットがまだ作成されていない場合には 0 が返されます。

class CWinApp : public CCmdTarget

クラス CWinApp は、アプリケーションを初期化して実行するための Microsoft Windows アプリケーションオブジェクトを派生させる基底クラスです。

CWinApp(const char* pszAppName = NULL);

CWinApp オブジェクトを構築します。

const char* m_pszAppName;

アプリケーションの名前です。これは、 CWinApp コンストラクタに渡される引数から取り込まれます。

int m_nCmdShow;

デフォルトを SW_RESTOR にします。

CWnd *m_pMainWnd;

アプリケーションのメインウィンドウ (ApplicationShell) です。

Display *xd_display();
void xd_display(Display *display);

これらの 2 個の関数は、アプリケーションの表示接続の保存および取り出しを行います。

char **xd_argv() const;
void xd_argv(char **argv);

これらの 2 個の関数は、 main() に渡される argv 引数の保存および取り出しを行います。

int xd_argc() const;
void xd_argc(int argc);

これらの 2 個の関数は、 main() に渡される argc 引数の保存および取り出しを行います。

char *xd_app_class() const;
void xd_app_class(char *app_class);

これらの 2 個の関数は、 XtOpenDisplay() で使用されるアプリケーションクラス名の保存および取り出しを行います。

CWinApp* AfxGetApp()

CWinApp オブジェクトのインスタンスを 1 つだけ返します。

コンパイラでのリンクエラー

C++ コンパイラによっては、リンクに失敗すると、以下のようなエラーが発生します。

Undefined symbol
CWnd::xd_get_window_text_length(void) const
CFrameWnd::xd_get_window_text_length(void) const
CButton::xd_get_window_text_length(void) const
CButton::__vtbl 
CMenu::xd_register_menu_item(unsigned int,
_WidgetRec*)
CDialog::xd_show_window(int)
CDialog::xd_get_window_text_length(void) const
CDialog::xd_set_window_text(const char*)
CEdit::__vtbl 

問題

コンパイラが、コピー・コンストラクタの実装を要求しています。

解決策

エラーが生じた場合には、以下の操作を行います。

  1. ヘッダーファイル xdclass.h$VISUROOT/src/motifxp/h 内で探します。 $VISUROOT は、Sun WorkShop Visual のルートディレクトリです。
  2. 次に示す行を検索します。
  3. private:
        	// Certain C++ compilers (e.g. gcc 2.5) require there to be an
        	// implementation of the copy constructor. If your application
        	// fails to link try using the second version of the constructor
        	CObject(const CObject& objectSrc);              // no default copy
        	//CObject(const CObject& objectSrc) { abort();} // no default
        	copy
  4. 指示に従って Cobject で始まる最初の行をコメントし、2 番目の行のコメントマーカーを削除します。
  5. 	//CObject(const CObject& objectSrc); 
    	// no default copy
    	CObject(const CObject& objectSrc) { abort();}
    	// no default copy
  6. 次のインクルード行を、 abort への呼び出しを含む行の上のどこかに追加します。
  7. 		#include <stdlib.h>
  8. 生成されたコードを再コンパイルします。
  9. 今度は問題なくリンクが行われます。


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

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