TextGridCtrlライブラリ
公式ガイドブック
(C)2000-2026 kuzu

はじめに

TextGridCtrlライブラリは、MFC(Microsoft Foudation Class)拡張ライブラリであり、CWndから派生した、プレーンテキストのグリッドコントロールのクラスである。このライブラリは、Excelのようにグリッド上にテキストを入力できる他、グリッド数の設定や、選択部の切り取り・コピー・貼り付け機能を有する。

TextGridCtrlライブラリはC++言語で書かれており、ソースコードのほか、ダイナミックリンクライブラリ(*.dll)の形で提供される。ライセンスはオープンソースで、LGPL又はMPLのデュアルライセンスである。


▲デフォルトの見え方


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


▲切り取り・コピー・貼り付けは、Excelなどの表計算ソフトと互換している。

第1章:概略

1-1.TextGridCtrlについて

CTextGridCtrlは、MFCの拡張クラスであり、CWndより派生する。

CObject
└CWnd
 └CTextGridCtrl

1-2.構築方法

主にダイアログボックス内にコンボボックス同様に配置して使う。ただし、リソーススクリプト上では配置できないので、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;
}

1-3.行数・列数・行幅・列幅・タイトル行文字列・タイトル列文字列・セル文字列の取得・設定方法

関数リファレンスを参照してください。

1-4.破棄方法

上記の場合、m_theTextGridCtrlは親ウィンドウの破棄と同時に自動で行われるので、何もしなくてよい。

1-5.プロジェクト設定事項

ソースコードで、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も別途配布しておりますので参考にしてください。

第2章:CTextGridCtrlリファレンス

2-1.概要

2-2.アトリビュート

ドキュメントデータ(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; 右クリック用のコンテキストメニュー

2-3.オペレーション

行数と列数の取得と設定
関数定義 引数 戻り値 解説
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 現在のカレントセルを設定する。新しい設定位置に従いアトリビュートを更新する。また、画面を更新する。カレントセルがはみ出した位置にある場合は自動的にスクロールする。
親ウィンドウへの通知時の状態取得(2025/09廃止)→後述のTextGridNotify構造体に移行
関数定義 引数 戻り値 解説
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 列幅は固定か(ユーザー調整不可か)を設定する。
編集処理(元に戻す(U)・やり直し(R)・切り取り(T)・コピー(C)・貼り付け(P)・削除(D))
関数定義 引数 戻り値 解説
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 選択範囲を削除し、親ウィンドウに通知する。

2-4.通知メッセージ

このコントロールは、ダイアログの子コントロールである場合、所定のイベントが発生すると次のメッセージを親ウィンドウに送る。

メッセージは常にpParent->SendMessage (WM_NOTIFY, (WPARAM)GetDlgCtrlID (), (LPARAM)(&theTextGridNotify));で送られる。親ウィンドウの受信側で、theTextGridNotifyを解析することにより送られてきた送られてきたメッセージの種類(下記参照)、ウィンドウのハンドル、送られてきたコントロールのID、さらに特定のセルに関わるものは、メッセージが送られたときのセル行、セル列、範囲上、範囲下、範囲左、範囲右を取得することができる。

TextGridNotify構造体

メッセージ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
  • 右クリックメニューに、「元に戻す」・「やり直し」のヒストリー機能を追加。
  • Ctrl+Z, Ctrl+X, Ctrl+C, Ctrl+Vなどのキーボード操作での「元に戻す」「切り取り」「コピー」「貼り付け」などに対応。
  • SetCellString, Copy, Cut, Paste, Delete, Undo, Redoの関数を、SetCellString(通知なし)とSetCellStringWithNotify(通知あり)に分別。
  • 親ウィンドウへの通知方法をWM_NOTIFY+TextGridNotify構造体に変更。また、SendMessage方式に変更。従来の最後の状態値とPostMessage方式は廃止。
TextGridCtrl143 (2026/02/19) Visual Studio 2022 Community
  • SetColumnTitle, SetRowTitle, SetCellDouble, DeleteAllRowTitle, DeleteAllColTilte, DeleteAllCellStirngの(通知なし)と(通知あり)に分別するのを忘れていたので分別。これまでの関数は通知なしになるので、通知ありが必要な場合はWithNotify付きの方を使うこと。