CLinkCtrl クラス

Windows コモン SysLink コントロールの機能が用意されています。

構文

class CLinkCtrl : public CWnd

メンバー

パブリック コンストラクター

名前 説明
CLinkCtrl::CLinkCtrl CLinkCtrl オブジェクトを構築します。

パブリック メソッド

名前 説明
CLinkCtrl::Create リンク コントロールを作成し、 CLinkCtrl オブジェクトにアタッチします。
CLinkCtrl::CreateEx 拡張スタイルを持つリンク コントロールを作成し、 CLinkCtrl オブジェクトにアタッチします。
CLinkCtrl::GetIdealHeight リンク コントロールの理想的な高さを取得します。
CLinkCtrl::GetIdealSize リンクの指定した幅に応じて、現在のリンク コントロールのリンク テキストの高さを計算します。
CLinkCtrl::GetItem リンク コントロール項目の状態と属性を取得します。
CLinkCtrl::GetItemID リンク コントロール項目の ID を取得します。
CLinkCtrl::GetItemState リンク コントロール項目の状態を取得します。
CLinkCtrl::GetItemUrl リンク コントロール項目によって表される URL を取得します。
CLinkCtrl::HitTest ユーザーが指定したリンクをクリックしたかどうかを判断します。
CLinkCtrl::SetItem リンク コントロール項目の状態と属性を設定します。
CLinkCtrl::SetItemID リンク コントロール項目の ID を設定します。
CLinkCtrl::SetItemState リンク コントロール項目の状態を設定します。
CLinkCtrl::SetItemUrl リンク コントロール項目で表される URL を設定します。

解説

"リンク コントロール" は、ハイパーテキスト リンクをウィンドウに埋め込むのに便利な方法です。 実際のコントロールは、ユーザーが埋め込みリンクをクリックしたときに、マークされたテキストをレンダリングし、適切なアプリケーションを起動するウィンドウです。 1 つのコントロール内で複数のリンクがサポートされており、0 から始まるインデックスからアクセスできます。

このコントロール (したがって、 CLinkCtrl クラス) は、Windows XP 以降で実行されているプログラムでのみ使用できます。

詳細については、Windows SDK の「 SysLink Control 」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CLinkCtrl

要件

ヘッダー: afxcmn.h

CLinkCtrl::CLinkCtrl

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

CLinkCtrl();

CLinkCtrl::Create

リンク コントロールを作成し、 CLinkCtrl オブジェクトにアタッチします。

virtual BOOL Create(
    LPCTSTR lpszLinkMarkup,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

virtual BOOL Create(DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

lpszLinkMarkup
表示するマーク付きテキストを含む、0 で終わる文字列へのポインター。 詳細については、「SysLink コントロールの概要のトピックの「マークアップおよびリンク アクセス」セクションを参照してください。

dwStyle
リンク コントロールのスタイルを指定します。 コントロール スタイルの任意の組み合わせを適用します。 詳細については、Windows SDKの「Common コントロール スタイル」を参照してください。

rect
リンク コントロールのサイズと位置を指定します。 CRect オブジェクトまたは RECT 構造体のいずれかを指定できます。

pParentWnd
リンク コントロールの親ウィンドウを指定します。 NULL は指定できません。

nID
リンク コントロールの ID を指定します。

戻り値

初期化が成功した場合は TRUE。それ以外の場合は FALSE。

解説

CLinkCtrl オブジェクトは、2 つの手順で作成します。 まず、コンストラクターを呼び出してから Create を呼び出します。これにより、リンク コントロールが作成され、 CLinkCtrl オブジェクトにアタッチされます。 コントロールで拡張ウィンドウ スタイルを使用する場合は、Createの代わりに CLinkCtrl::CreateEx を呼び出します。

Create メソッドの 2 番目の形式は非推奨です。 lpszLinkMarkup パラメーターを指定する最初のフォームを使用します。

最初のコード例では、 m_Link1m_Link2 という名前の 2 つの変数を定義します。この変数は、2 つのリンク コントロールにアクセスするために使用されます。

afx_msg void OnNMClickSyslink1(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMClickSyslink2(NMHDR *pNMHDR, LRESULT *pResult);
// Link variable associated with resource editor CLinkCtrl control.
CLinkCtrl m_Link1;
// Link variable associated with programmatic CLinkCtrl control.
CLinkCtrl m_Link2;

次のコード例では、別のリンク コントロールの場所に基づいて 1 つのリンク コントロールを作成します。 リソース ローダーは、アプリケーションの起動時に最初のリンク コントロールを作成します。 アプリケーションが OnInitDialog メソッドに入ると、最初のリンク コントロールの位置を基準にして 2 番目のリンク コントロールを作成します。 次に、表示されるテキストに合わせて 2 番目のリンク コントロールのサイズを変更します。

CRect rect1, rect2;
int height = 0;
SIZE sz = {0};
PTCHAR url =
    _T("Link 2)  ")
    _T("<A HREF=\"https://visualstudio.microsoft.com\">")
    _T("Microsoft VC++ Home")
    _T("</A>");
m_Link1.GetWindowRect(&rect1);
m_Link2.Create(url,
               (WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER),
               CRect(
                   rect1.left, rect1.bottom + rect1.Height(),
                   rect1.right, rect1.bottom + (2 * rect1.Height())),
               this,
               IDC_SYSLINK2);
m_Link2.GetClientRect(&rect2);
// The return value of GetIdealSize() is the same as sz.cy
height = m_Link2.GetIdealSize(
    rect2.Width(), &sz);
if ((sz.cx != 0) && (sz.cy != 0))
{
   int rc = m_Link2.SetWindowPos(
       this,
       0, 0, sz.cx, sz.cy,
       (SWP_NOMOVE | SWP_NOZORDER | SWP_NOREPOSITION | SWP_NOACTIVATE));
}

CLinkCtrl::CreateEx

拡張スタイルを持つリンク コントロールを作成し、 CLinkCtrl オブジェクトにアタッチします。

virtual BOOL CreateEx(
    LPCTSTR lpszLinkMarkup,
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

virtual BOOL CreateEx(DWORD  dwExStyle,
    DWORD  dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT  nID);

パラメーター

lpszLinkMarkup
表示するマーク付きテキストを含む、0 で終わる文字列へのポインター。 詳細については、「SysLink コントロールの概要のトピックの「マークアップおよびリンク アクセス」セクションを参照してください。

dwExStyle
リンク コントロールの拡張スタイルを指定します。 拡張 Windows スタイルの一覧については、Windows SDK の CreateWindowExdwExStyle パラメーターを参照してください。

dwStyle
リンク コントロールのスタイルを指定します。 コントロール スタイルの任意の組み合わせを適用します。 詳細については、Windows SDK の「 Common コントロール スタイル 」を参照してください。

rect
リンク コントロールのサイズと位置を指定します。 CRect オブジェクトまたは RECT 構造体のいずれかを指定できます。

pParentWnd
リンク コントロールの親ウィンドウを指定します。 NULL は指定できません。

nID
リンク コントロールの ID を指定します。

戻り値

初期化が成功した場合は TRUE。それ以外の場合は FALSE。

解説

拡張 Windows スタイル定数を適用するには、Create の代わりにCreateExを使用します。

CreateEx メソッドの 2 番目の形式は非推奨です。 lpszLinkMarkup パラメーターを指定する最初のフォームを使用します。

CLinkCtrl::GetIdealHeight

リンク コントロールの理想的な高さを取得します。

int GetIdealHeight() const;

戻り値

コントロールの理想的な高さ (ピクセル単位)。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ LM_GETIDEALHEIGHTの動作を実装します。

CLinkCtrl::GetIdealSize

リンクの指定した幅に応じて、現在のリンク コントロールのリンク テキストの高さを計算します。

int GetIdealSize(
    int cxMaxWidth,
    SIZE* pSize) const;

パラメーター

cxMaxWidth
[in]リンクの最大幅 (ピクセル単位)。

pSize
[out]Windows SIZE 構造体へのポインター。 このメソッドから制御が戻ると、SIZE構造体の cy メンバーには、cxMaxWidth で指定されたリンク テキスト幅の理想的なリンク テキストの高さが含まれます。 構造体の cx メンバーには、実際に必要なリンク テキストの幅が含まれています。

戻り値

リンク テキストの好ましい高さ (ピクセル単位)。 戻り値は、SIZE構造体の cy メンバーの値と同じです。

解説

GetIdealSize メソッドの例については、CLinkCtrl::Create の例を参照してください。

このメソッドは、Windows SDK で説明されている LM_GETIDEALSIZE メッセージを送信します。

CLinkCtrl::GetItem

リンク コントロール項目の状態と属性を取得します。

BOOL GetItem(PLITEM pItem) const;

パラメーター

pItem
アイテム情報を受け取る LITEM 構造体へのポインター。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ LM_GETITEMの動作を実装します。

CLinkCtrl::GetItemID

リンク コントロール項目の ID を取得します。

BOOL GetItemID(
    int iLink,
    CString& strID) const;

BOOL GetItemID(
    int iLink,
    LPWSTR szID,
    UINT cchID) const;

パラメーター

iLink
リンク コントロール項目のインデックス。

strID
指定した項目の ID を含む CStringT オブジェクト。

szID
指定した項目の ID を含む null で終わる文字列。

cchID
szID バッファーの文字単位のサイズ。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

Note

この関数は、 szID または strID のバッファーがMAX_LINKID_TEXTよりも小さい場合にも FALSE を返します。

解説

特定のリンク コントロール項目の ID を取得します。 詳細については、Windows SDK で LM_GETITEM Win32 メッセージを参照してください。

CLinkCtrl::GetItemState

リンク コントロール項目の状態を取得します。

BOOL GetItemState(
    int iLink,
    UINT* pnState,
    UINT stateMask = LIS_FOCUSED | LIS_ENABLED | LIS_VISITED) const;

パラメーター

iLink
リンク コントロール項目のインデックス。

pnState
指定した状態項目の値。

stateMask
取得する状態項目を記述するフラグの組み合わせ。 値の一覧については、LITEM 構造体のstate メンバーの説明を参照してください。 許可される項目は、 stateで許可されているものと同じです。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

特定のリンク コントロール項目の指定した状態項目の値を取得します。 詳細については、Windows SDK で LM_GETITEM Win32 メッセージを参照してください。

CLinkCtrl::GetItemUrl

リンク コントロール項目によって表される URL を取得します。

BOOL GetItemUrl(
    int iLink,
    CString& strUrl) const;

BOOL GetItemUrl(
    int iLink,
    LPWSTR szUrl,
    UINT cchUrl) const;

パラメーター

iLink
リンク コントロール項目のインデックス。

strUrl
指定したアイテムによって表される URL を含む CStringT オブジェクト

szUrl
指定した項目で表される URL を含む null で終わる文字列

cchUrl
szURL バッファーの文字単位のサイズ。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

Note

この関数は、 szUrl または strUrl のバッファーがMAX_LINKID_TEXTよりも小さい場合にも FALSE を返します。

解説

指定したリンク コントロール項目によって表される URL を取得します。 詳細については、Windows SDK で LM_GETITEM Win32 メッセージを参照してください。

CLinkCtrl::HitTest

ユーザーが指定したリンクをクリックしたかどうかを判断します。

BOOL HitTest(PLHITTESTINFO phti) const;

パラメーター

phti
ユーザーがクリックしたリンクに関する情報を含む LHITTESTINFO 構造体へのポインター。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ LM_HITTESTの動作を実装します。

CLinkCtrl::SetItem

リンク コントロール項目の状態と属性を設定します。

BOOL SetItem(PLITEM pItem);

パラメーター

pItem
設定する情報を含む LITEM 構造体へのポインター。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ LM_SETITEMの動作を実装します。

CLinkCtrl::SetItemID

リンク コントロール項目の ID を取得します。

BOOL SetItemID(
    int iLink,
    LPCWSTR szID);

パラメーター

iLink
リンク コントロール項目のインデックス。

szID
指定した項目の ID を含む null で終わる文字列。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

特定のリンク コントロール項目の ID を設定します。 詳細については、Windows SDK の Win32 メッセージ LM_SETITEM を参照してください。

CLinkCtrl::SetItemState

リンク コントロール項目の状態を取得します。

BOOL SetItemState(
    int iLink,
    UINT state,
    UINT stateMask = LIS_FOCUSED | LIS_ENABLED | LIS_VISITED);

パラメーター

iLink
リンク コントロール項目のインデックス。

pnState
設定されている指定された状態項目の値。

stateMask
設定されている状態項目を記述するフラグの組み合わせ。 値の一覧については、LITEM 構造体のstate メンバーの説明を参照してください。 許可される項目は、 stateで許可されているものと同じです。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

特定のリンク コントロール項目の指定した状態項目の値を設定します。 詳細については、Windows SDK の Win32 メッセージ LM_SETITEM を参照してください。

CLinkCtrl::SetItemUrl

リンク コントロール項目で表される URL を設定します。

BOOL SetItemUrl(
    int iLink,
    LPCWSTR szUrl);

パラメーター

iLink
リンク コントロール項目のインデックス。

szUrl
指定した項目で表される URL を含む null で終わる文字列

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

指定したリンク コントロール項目で表される URL を設定します。 詳細については、Windows SDK の Win32 メッセージ LM_SETITEM を参照してください。

関連項目

階層図
CWnd クラス