TextGridCtrlライブラリは、MFC(Microsoft Foudation Class)拡張ライブラリであり、CWndから派生した、プレーンテキストのグリッドコントロールのクラスである。このライブラリは、Excelのようにグリッド上にテキストを入力できる他、グリッド数の設定や、選択部の切り取り・コピー・貼り付け機能を有する。
TextGridCtrlライブラリはC++言語で書かれており、ソースコードのほか、ダイナミックリンクライブラリ(*.dll)の形で提供される。ライセンスはオープンソースで、LGPL又はMPLのデュアルライセンスである。

▲デフォルトの見え方

▲選択して右クリックをし、「コピー」しようとしているところ。

▲切り取り・コピー・貼り付けは、Excelなどの表計算ソフトと互換している。
CTextGridCtrlは、MFCの拡張クラスであり、CWndより派生する。
CObject └CWnd └CTextGridCtrl
主にダイアログボックス内にコンボボックス同様に配置して使う。ただし、リソーススクリプト上では配置できないので、CDialog::OnCreateで手動で作成し、CDialog::OnInitDialogで手動で位置合わせする。ここではリソーススクリプト上でダミーのStaticを配置し、そこに手動でCTextGridCtrlを重ねる方法を示す。
class CTextGridCtrl143TestDlg : public CDialog {
...
CTextGridCtrl m_theTextGridCtrl;
...
};
int CTextGridCtrl143TestDlg::OnCreate (LPCREATESTRUCT lpCreateStruct) {
if (CDialog::OnCreate(lpCreateStruct) == -1) {
return -1;
}
// カラーコンボボックスの作成
m_theTextGridCtrl.Create (
WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_VSCROLL,
CRect (10, 10, 300, 300), this, IDC_COLOR_COMBO_BOX);
return 0;
}
BOOL CTextGridCtrl143TestDlg::OnInitDialog () {
CDialog::OnInitDialog();
...
// テキストグリッドコントロールの位置とサイズ調整
CRect rcStaticDummy;
CWnd* pStaticDummy = GetDlgItem (IDC_STATIC_DUMMY);
pStaticDummy->GetWindowRect (&rcStaticDummy);
this->ScreenToClient (&rcStaticDummy);
m_theTextGridCtrl.MoveWindow (&rcStaticDummy);
pStaticDummy->DestroyWindow ();
return TRUE;
}
関数リファレンスを参照してください。
上記の場合、m_theTextGridCtrlは親ウィンドウの破棄と同時に自動で行われるので、何もしなくてよい。
ソースコードで、Windows及びMFC関係のものを#includeしてから、#include "TextGridCtrl.h"をすること。ファイル名だけでなくヘッダーファイルのパスを通してくこと。
プロジェクトの設定-詳細で、「共有DLLでMFCを使う」「Unicode文字セットを使用する」を選択すること。
プロジェクトの設定-C/C++-プリプロセッサ-プリプロセッサの定義で、_UNICODE, UNICODEを有効にすること。
プロジェクトの設定-リンカ-入力-追加の依存ファイルで、"TextGridCtrl(d).lib"を追加すること。ファイル名だけでなく、パスを通しておくこと。
Visual Stuido 2015以降では、MFCはデフォルトのC/C++デスクトップ開発に付属しておりません。MFCをインストールしていない場合は、Visual Studio Intallerで、MFCのオプションを追加インストールする必要があります。
このライブラリを使った最小限のCTextGridCtrl143Testも別途配布しておりますので参考にしてください。
ドキュメントデータ(protected)
| 変数定義 | 解説 |
|---|---|
| int m_nNumRows; | 行数(グレータイトル行を含まない) |
| int m_nNumCols; | 列数(グレータイトル列を含まない) |
| int m_nTitleWidth; | タイトル部の幅[ドット] |
| int m_nTitleHeight; | タイトル部の高さ[ドット] |
| CUIntArray m_theColWidthArray; | 列幅配列[ドット] |
| CUIntArray m_theColHeightArray; | 列高さ配列[ドット] |
| CStringArray m_theRowTitleArray; | 行タイトルの文字列配列 |
| CStringArray m_theColTitleArray; | 列タイトルの文字列配列 |
| CStringArray m_theCellStringArray; | 各セルの文字列配列 |
| CUIntArray m_theReadOnlyArray; | 各セルがリードオンリーか。 |
| CUIntArray m_theTextColorArray; | 各セルの文字色 |
非ドキュメントデータ(protected)
| 変数定義 | 解説 |
|---|---|
| int m_nCurRow; | 現在の行 |
| int m_nCurCol; | 現在の列 |
| int m_nVisibleTopRow; | 画面に表示されている最も上の行 |
| int m_nVisibleLeftCol; | 画面に表示されている最も左の列 |
| int m_nSelectedTopRow; | 選択されている最も上の行 |
| int m_nSelectedBottomRow; | 選択されている最も下の行 |
| int m_nSelectedLeftCol; | 選択されている最も左の行 |
一時的な状況保存用データ(protected)
| 変数定義 | 解説 |
|---|---|
| CPoint m_ptMouseDown; | マウスが押された座標 |
| CPoint m_ptMouseMove; | 最後にマウスが動かされた座標 |
| int m_nMouseMode; | |
| int m_nMouseDownRowBorder; | |
| int m_nMouseDownColBorder; | |
| int m_nKeyMoveRow; | |
| int m_nKeyMoveCol; | |
| int m_bCut; | |
| int m_nMouseDownRowHeight; | |
| int m_nMouseDownColWidth; | |
| int m_nLastNotifyRow; | 最後に親ウィンドウに通知したときの行(2025/09廃止)→後述のTextGridNotify構造体に移行 |
| int m_nLastNotifyCol: | 最後に親ウィンドウに通知したときの列(2025/09廃止)→後述のTextGridNotify構造体に移行 |
| int m_nLastNotifyTopRow: | 最後に親ウィンドウに通知したとき選択範囲の上行(2025/09廃止)→後述のTextGridNotify構造体に移行 |
| int m_nLastNotifyLeftCol: | 最後に親ウィンドウに通知したとき選択範囲の左列(2025/09廃止)→後述のTextGridNotify構造体に移行 |
| int m_nLastNotifyBottomRow: | 最後に親ウィンドウに通知したとき選択範囲の下行(2025/09廃止)→後述のTextGridNotify構造体に移行 |
| int m_nLastNotifyRightRow: | 最後に親ウィンドウに通知したとき選択範囲の右列(2025/09廃止)→後述のTextGridNotify構造体に移行 |
描画オブジェクトなど(protected)
| 変数定義 | 解説 |
|---|---|
| CPen m_theGridPen; | グリッド描画用ペン |
| CPen m_theCurCellPen; | カレントセル描画用ペン |
| CBrush m_theWindowBackBrush; | ウィンドウ背景描画用ブラシ |
| CFont m_theTextFont; | 文字描画用フォント |
| CTextGridEdit m_theTextBox; | テキスト入力時だけVisibleになるテキストボックス |
| CMenu m_theContextMenu; | 右クリック用のコンテキストメニュー |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| int GetNumRows () const; | なし | グリッド行数 | グリッド行数を取得する。 |
| int GetNumCols () const; | なし | グリッド列数 | グリッド列数を取得する。 |
| BOOL SetNumRows (int nNumRows); | nNumRows:新しい行数 | 正常終了:TRUE, 異常終了:FALSE | グリッド行数を設定する。設定された新しい行数に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SetNumCols (int nNumCols); | nNumCols:新しい列数 | 正常終了:TRUE, 異常終了:FALSE | グリッド行数を設定する。設定された新しい列数に従いアトリビュートを更新する。また、画面を更新する。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| int GetTitleHeight () const; | なし | タイトル行の高さ | タイトル行の高さを取得する。 |
| int GetTitleWidth () const; | なし | タイトル列の幅 | タイトル列の幅を取得する。 |
| BOOL SetTitleHeight (int nHeight); | nHeight:高さ | 正常終了:TRUE, 異常終了:FALSE | タイトル行の高さを設定する。設定された新しい高さに従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SetTitleWidth (int nWidth); | nWidth:幅 | 正常終了:TRUE, 異常終了:FALSE | タイトル列の幅を設定する。設定された新しい幅に従いアトリビュートを更新する。また、画面を更新する。 |
| int GetRowHeight (int nRow) const; | nRow:行番号(0オリジン) | 指定行の幅 | 指定行の高さを取得する。 |
| int GetColWidth (int nCol) const; | nRow:列番号(0オリジン) | 指定列の幅 | 指定列の幅を取得する。 |
| BOOL SetRowHeight (int nRow, nHeight); | nRow:行番号(0オリジン) | 正常終了:TRUE, 異常終了:FALSE | 指定行の高さを設定する。設定された新しい高さに従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SetColWidth (int nCol, int nWidth); | nCol:列番号(0オリジン) | 正常終了:TRUE, 異常終了:FALSE | 指定列の幅を設定する。設定された新しい幅に従いアトリビュートを更新する。また、画面を更新する。 |
| int GetCellSumHeight () const; | なし | セル部(タイトル部を除く)の合計高さ | セル部(タイトル部を除く)の合計高さを取得する。 |
| int GetCellSumWidth () const; | なし | セル部(タイトル部を除く)の合計幅 | セル部(タイトル部を除く)の合計幅を取得する。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| CString GetRowTitle (int nRow) const; | nRow:行番号(0オリジン) | タイトル文字列 | 指定列のタイトル文字列を取得する。 |
| CString GetColTitle (int nCol) const; | nCol:列番号(0オリジン) | タイトル文字列 | 指定行のタイトル文字列を取得する。 |
| CString GetCellString (int nRow, int nCol) const; | nRow:行番号(0オリジン)、 nCol:列番号(0オリジン) |
セル文字列 | 指定行・指定列のセル文字列を取得する。 |
| BOOL SetRowTitle (int nRow, CString strRowTitle); | nRow:行番号(0オリジン), strRowTitle:タイトル文字列 |
正常終了:TRUE, 異常終了:FALSE | 指定行のタイトル文字列を設定する。設定された新しい文字列に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SetRowTitleWithNotify (int nRow, CString strRowTitle); | nRow:行番号(0オリジン), strRowTitle:タイトル文字列 |
正常終了:TRUE, 異常終了:FALSE | SetRowTitleを行い、親ウィンドウに通知する。 |
| BOOL SetColTitle (int nCol, CString strColTitle); | nCol:列番号(0オリジン), strColTitle:タイトル文字列 |
正常終了:TRUE, 異常終了:FALSE | 指定列のタイトル文字列を設定する。設定された新しい文字列に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SetColTitleWithNotify (int nCol, CString strColTitle); | nCol:列番号(0オリジン), strColTitle:タイトル文字列 |
正常終了:TRUE, 異常終了:FALSE | SetCellTitleを行い、親ウィンドウに通知する。 |
| BOOL SetCellString (int nRow, int nCol, CString strGridString); | nRow:行番号(0オリジン)、 nCol:列番号(0オリジン) strGridString:セル文字列 |
正常終了:TRUE, 異常終了:FALSE | 指定行・指定列のセル文字列を設定する。設定された新しい文字列に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SetCellStringWithNotify (int nRow, int nCol, CString strGridString); | nRow:行番号(0オリジン)、 nCol:列番号(0オリジン) strGridString:セル文字列 |
正常終了:TRUE, 異常終了:FALSE | SetCellStringを行い、親ウィンドウに通知をする。 |
| double GetCellDouble (int nRow, int nCol, double dValue) const ; | nRow:行番号(0オリジン)、 nCol:列番号(0オリジン) |
正常終了:TRUE, 異常終了:FALSE | 指定行・指定列のセル値をdouble型で取得する。 |
| BOOL SetCellDouble (int nRow, int nCol, double dValue, LPCTSTR lpszFormat); | nRow:行番号(0オリジン)、 nCol:列番号(0オリジン) dValue:セル値 lpszFormat:フォーマット文字列へのポインタ |
正常終了:TRUE, 異常終了:FALSE | 指定行・指定列のセルの文字列をdouble型で設定する。設定された新しい文字列に従いアトリビュートを更新する。また、画面を更新する。lpszFormatには、C言語のdouble型の表示フォーマットを指定する。NULLを指定した場合、デフォルトの文字列、現在のところ_T("%1.15g")を採用する。 |
| BOOL SetCellDoubleWithNotify (int nRow, int nCol, double dValue, LPCTSTR lpszFormat); | nRow:行番号(0オリジン)、 nCol:列番号(0オリジン) dValue:セル値 lpszFormat:フォーマット文字列へのポインタ |
正常終了:TRUE, 異常終了:FALSE | SetCellDoubleを行い、親ウィンドウに通知する。 |
| void DeleteAllRowTitle (); | なし | なし | すべての行のタイトル文字列を削除する。 |
| void DeleteAllRowTitleWithNotify (); | なし | なし | DeleteAllRowTitleを行い、親ウィンドウに通知する。通知の行番号と列番号は-1とする。 |
| void DeleteAllColumnTitle (); | なし | なし | すべての列のタイトル文字列を削除する。 |
| void DeleteAllColumnTitleWithNotify (); | なし | なし | DeleteAllColumnTitleを行い、親ウィンドウに通知する。通知の行番号と列番号は-1とする。 |
| void DeleteAllCellString (); | なし | なし | すべてのセルの文字列を削除する。 |
| void DeleteAllCellString (); | なし | なし | DeleteAllCellStringを行い、親ウィンドウに通知する。通知の行番号と列番号は-1とする。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| BOOL InsertRow (int nRow); | nRow:行番号(0オリジン) | 正常終了:TRUE, 異常終了:FALSE | 未実装。 |
| BOOL InsertCol (int nCol); | nCol:列番号(0オリジン) | 正常終了:TRUE, 異常終了:FALSE | 未実装。 |
| BOOL RemoveRow (int nRow); | nRow:行番号(0オリジン) | 正常終了:TRUE, 異常終了:FALSE | 未実装。 |
| BOOL RemoveCol (int nCol); | nCol:列番号(0オリジン) | 正常終了:TRUE, 異常終了:FALSE | 未実装。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| BOOL GetSelectedArea (int* pRow1, int* pRow2, int* pCol1, int* pCol2); | pRow1:上行番号格納領域 pRow2:下行番号格納領域 pCol1:左列番号格納領域 pCol2:右列番号格納領域 |
正常終了:TRUE, 異常終了:FALSE | 選択範囲を取得する。 |
| BOOL SelectCell (int nRow, int nCol); | nRow:行番号(0オリジン) nCol:列番号(0オリジン) |
正常終了:TRUE, 異常終了:FALSE | 指定のセルを選択する。新しい選択範囲に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SelectArea (int nRow1, int nRow2, int nCol1, int nCol2); | nRow1:上行番号(0オリジン) nRow2:下行番号 nCol1:左列番号 nCol2:右列番号 |
正常終了:TRUE, 異常終了:FALSE | 任意の矩形範囲を選択する。新しい選択範囲に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SelectRow (int nRow1, int nRow2); | nRow1:上行番号(0オリジン) nRow2:下行番号 |
正常終了:TRUE, 異常終了:FALSE | 任意の行範囲を選択する。新しい選択範囲に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SelectCol (int nCol1, int nCol2); | nCol1:左列番号(0オリジン) nCol2:右列番号 |
正常終了:TRUE, 異常終了:FALSE | 任意の列範囲を選択する。新しい選択範囲に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL SelectAll (); | なし | 正常終了:TRUE, 異常終了:FALSE | すべてのセルを選択する。新しい選択範囲に従いアトリビュートを更新する。また、画面を更新する。 |
| BOOL IsSelectedCell (int nRow, int nCol) const; | nRow:行番号(0オリジン) nCol:列番号(0オリジン) |
はい:TRUE, いいえ:FALSE | 指定したセルは選択されているかを返す。 |
| BOOL IsSelectedRow (int nRow) const; | nRow:行番号(0オリジン) | はい:TRUE, いいえ:FALSE | 指定した行はすべて選択されているかを返す。 |
| BOOL IsSelectedCol (int nCol) const; | nCol:列番号(0オリジン) | はい:TRUE, いいえ:FALSEE | 指定された列はすべて選択さえているかを返す。 |
| BOOL IsSelectedAll () const; | なし | はい:TRUE, いいえ:FALSEE | すべてのセルが選択されているかを返す。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| int GetCurRow () const | なし | カレント行番号(0オリジン) | カレント行番号を取得する。 |
| int GetCurCol () const | なし | カレント列番号(0オリジン) | カレント列番号を取得する。 |
| BOOL SetCurCell (int nRow, int nCol); | nRow:行番号(0オリジン) nCol:列番号(0オリジン) |
正常終了:TRUE, 異常終了:FALSE | 現在のカレントセルを設定する。新しい設定位置に従いアトリビュートを更新する。また、画面を更新する。カレントセルがはみ出した位置にある場合は自動的にスクロールする。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| BOOL GetLastNotifyInfo (int* pRow, int* pCol, int* pLeft, int* pTop, int* pRight, int* pBottom) const | pRow:行番号格納領域(0オリジン) pCol:列番号格納領域(0オリジン) pLeft:左番号格納領域(0オリジン) pTop:上番号格納領域(0オリジン) pRight:右番号格納領域(0オリジン) pBottom:列番号格納領域(0オリジン) |
正常終了:TRUE, 異常終了:FALSE | 親ウィンドウに通知されたときの、最後に変更された行、列、左、上、右、下(すべて0オリジンを取得する。SetCellStringWithNotifyでは行と列を格納する。その他の場合は、選択範囲を左、上、右、下に格納する。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| BOOL AutoScrolltoShowCell (int nRow, int nCol, long lLogPixelsX, long lLogPixelsY); | nRow:行番号(0オリジン) nCol:列番号(0オリジン) lLogPixelX:Windowsの高DPI表示設定値X(100%=96) lLogPixelY:Windowsの高DPI表示設定値Y(100%=96) |
正常終了:TRUE, 異常終了:FALSE | 指定したセルが見えるように自動スクロールする。この関数は内部的に呼び出される。 |
| BOOL AutoScrolltoShowRow (int nRow, long lLogPixelsX, long lLogPixelsY); | nRow:行番号(0オリジン) lLogPixelX:Windowsの高DPI表示設定値X(100%=96) lLogPixelY:Windowsの高DPI表示設定値Y(100%=96) |
正常終了:TRUE, 異常終了:FALSE | 指定した行が見えるように自動スクロールする。この関数は内部的に呼び出される。 |
| BOOL AutoScrolltoShowCol (int nCol, long lLogPixelsX, long lLogPixelsY); | nCol:列番号(0オリジン) lLogPixelX:Windowsの高DPI表示設定値X(100%=96) lLogPixelY:Windowsの高DPI表示設定値Y(100%=96) |
正常終了:TRUE, 異常終了:FALSE | 指定した列が見えるように自動スクロールする。この関数は内部的に呼び出される。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| BOOL IsReadOnly () const; | なし | はい:TRUE, いいえ:FALSE | このコントロールは読み込み専用(ユーザー入力不可か)を返す。 |
| BOOL IsCellReadOnly (int nRow, int nCol) const; | nRow:行 nCol:列 |
はい:TRUE, いいえ:FALSE | 指定セルは読み込み専用(ユーザー入力不可か)を返す。 |
| BOOL SetReadOnly (BOOL bReadOnly = TRUE); | bReadOnly:読み込み専用にするときはTRUE, しないときはFALSE | 正常終了:TRUE, 異常終了:FALSE | このコントロールは読み込み専用(ユーザー入力不可か)を設定する。読み込み専用の場合セル部背景はグレーになる。 |
| BOOL SetCellReadOnly (int nRow, int nCol, BOOL bReadOnly = TRUE); | nRow:行 nCol:列 bReadOnly:読み込み専用にするときはTRUE, しないときはFALSE |
正常終了:TRUE, 異常終了:FALSE | 指定セルは読み込み専用(ユーザー入力不可か)を設定する。読み込み専用の場合セル部背景はグレーになる。 |
| COLORREF GetCellTextColor (int nRow, int nCol) const; | nRow:行 nCol:列 |
テキスト色 | 指定セルのテキストの色を取得する。 |
| BOOL SetCellTextColor (int nRow, int nCol, COLORREF nColor) const; | nRow:行 nCol:列 nColor:テキスト色 |
正常終了:TRUE, 異常終了:FALSE | 指定セルのテキストの色を設定する。この関数は、表のテキスト色をデザインするためでなく、入力データが変である場合に赤にするなど、警告などの目的で使うこと。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
| BOOL IsRowHeightFixed () const; | なし | はい:TRUE, いいえ:FALSE | 行高さは固定か(ユーザー調整不可か)を返す。 |
| BOOL SetRowHeightFixed (BOOL bRowHeightFixed = TRUE); | bRowHeightFixed:固定するときはTRUE, しない時はFALSE | 正常終了:TRUE, 異常終了:FALSE | 行高さは固定か(ユーザー調整不可か)を設定する。 |
| BOOL IsColWidthFixed () const; | なし | はい:TRUE, いいえ:FALSE | 列幅さは固定か(ユーザー調整不可か)を返す。 |
| BOOL SetColWidthFixed (BOOL bRowHeightFixed = TRUE); | bRowHeightFixed:固定するときはTRUE, しない時はFALSE | 正常終了:TRUE, 異常終了:FALSE | 列幅は固定か(ユーザー調整不可か)を設定する。 |
| 関数定義 | 引数 | 戻り値 | 解説 |
|---|---|---|---|
| BOOL CTextGridCtrl::Undo (); | なし | 正常終了:TRUE, 異常終了:FALSE | 元に戻す。 |
| BOOL CTextGridCtrl::UndoWithNotify (); | なし | 正常終了:TRUE, 異常終了:FALSE | 元に戻し、親ウィンドウに通知する。 |
| BOOL CTextGridCtrl::Redo (); | なし | 正常終了:TRUE, 異常終了:FALSE | やり直し。 |
| BOOL CTextGridCtrl::RedoWithNotify (); | なし | 正常終了:TRUE, 異常終了:FALSE | やり直しし、親ウィンドウに通知する。 |
| BOOL CTextGridCtrl::Cut (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲をクリップボードに切り取りする。 |
| BOOL CTextGridCtrl::CutWithNotify (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲をクリップボードに切り取りし、親ウィンドウに通知する。 |
| BOOL CTextGridCtrl::Copy (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲をクリップボードにコピーする。 |
| BOOL CTextGridCtrl::CopyWithNotify (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲をクリップボードにコピーし、親ウィンドウに通知する。 |
| BOOL CTextGridCtrl::Paste (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲にクリップボードから貼り付けする。 |
| BOOL CTextGridCtrl::PasteWithNotify (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲にクリップボードから貼り付けし、親ウィンドウに通知する。 |
| BOOL CTextGridCtrl::Delete (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲を削除する。 |
| BOOL CTextGridCtrl::DeleteWithNotify (); | なし | 正常終了:TRUE, 異常終了:FALSE | 選択範囲を削除し、親ウィンドウに通知する。 |
このコントロールは、ダイアログの子コントロールである場合、所定のイベントが発生すると次のメッセージを親ウィンドウに送る。
メッセージは常にpParent->SendMessage (WM_NOTIFY, (WPARAM)GetDlgCtrlID (), (LPARAM)(&theTextGridNotify));で送られる。親ウィンドウの受信側で、theTextGridNotifyを解析することにより送られてきた送られてきたメッセージの種類(下記参照)、ウィンドウのハンドル、送られてきたコントロールのID、さらに特定のセルに関わるものは、メッセージが送られたときのセル行、セル列、範囲上、範囲下、範囲左、範囲右を取得することができる。
| メッセージID | 値(仮) | 解説 |
|---|---|---|
| NMHDR hdr; | HWND hwndFrom; | 送られてきたメウィンドウのハンドル |
| UINT_PTR idFrom; | 送られてきたコントロールのID | |
| UINT code; | 送られてきたメッセージの種類(下記参照) | |
| int m_nRow; | セル行(単一セルの変更) | |
| int m_nCol; | セル列(単一セルの変更) | |
| int m_nTop; | 範囲上(選択関係・コピー・切り取り・貼り付け・削除関係) | |
| int m_nBottom; | 範囲下(選択関係・コピー・切り取り・貼り付け・削除関係) | |
| int m_nLeft; | 範囲左(選択関係・コピー・切り取り・貼り付け・削除関係) | |
| int m_nRight; | 範囲右(選択関係・コピー・切り取り・貼り付け・削除関係) | |
| メッセージID | 値(仮) | 解説 |
|---|---|---|
| TGN_SETFOCUS | 0x9E01 | フォーカスを得た時(実装済み) |
| TGN_KILLFOCUSS | 0x9E02 | フォーカスを失った時(実装済み) |
| TGN_ROWTITLECHANGES | 0x9E03 | 行タイトルが変更された時(実装済み) |
| TGN_COLTITLECHANGES | 0x9E04 | 列タイトルが変更された時(実装済み) |
| TGN_CELLSTRINGCHANGE | 0x9E05 | セルの文字列が変更されたとき(実装済み) |
| TGN_CURCELLCHANGE | 0x9E06 | 現在のセルが変更されたとき(未実装) |
| TGN_SELECTCHANGE | 0x9E07 | 選択範囲が変更されたとき(実装済み) |
| TGN_ROWHEIGHTCHANGE | 0x9E08 | 行高さが変更されたとき(SetRowHeightで実装済み・非推奨) |
| TGN_COLWIDTHCHANGE | 0x9E09 | 列幅が変更されたとき(SetColWidthで実装済み・非推奨) |
| TGN_UNDO | 0x9E0A | 元に戻すが実行されたとき(実装済み) |
| TGN_CUT | 0x9E0B | 切り取りが実行されたとき(実装済み) |
| TGN_COPY | 0x9E0C | コピーが実行されたとき(実装済み) |
| TGN_PASTE | 0x9E0D | 貼り付けが実行されたとき(実装済み) |
| TGN_DELETE | 0x9E0E | 削除が実行されたとき(実装済み) |
| TGN_HSCROLL | 0x9E0F | 水平スクロールが実行されたとき(未実装) |
| TGN_VSCROLL | 0x9E10 | 垂直スクロールが実行されたとき(未実装) |
| TGN_REDO | 0x9E11 | やり直しが実行されたとき(実装済み) |
| ヴァージョン | 開発環境 | 特記事項 |
|---|---|---|
| TextGridCtrl40 (2009/09/20) | Visual C++ 4.0 | MBCS, 32bit。 |
| TextGridCtrl90 (2016/07/31) | Visual Studio 2008 Standard | MBCS, 32bit。Visual Stuido 2008へ移植 |
| TextGridCtrl140 (2022/09/24) | Visual Studio 2015 Community | UNICODE, 64bit対応。Visual Studio 2015へ移植 |
| TextGridCtrl143 (2025/06/09) | Visual Studio 2022 Community | Visual Studio 2022へ移植 |
| TextGridCtrl143 (2025/11/22) | Visual Studio 2022 Community |
|
| TextGridCtrl143 (2026/02/19) | Visual Studio 2022 Community |
|