DataGridViewコントロールで行番号を表示
DataGridViewコントロールで行番号を表示するには?[2.0のみ、C#、VB] − @IT
http://www.atmarkit.co.jp/fdotnet/dotnettips/506dgvlinenum/dgvlinenum.html
を C++/CLIで書いたのメモ
private: System::Void dataGridView1_RowPostPaint(System::Object^ sender, System::Windows::Forms::DataGridViewRowPostPaintEventArgs^ e)
{DataGridView^ dgv = (DataGridView^)sender;
// 行ヘッダのセル領域を、行番号を描画する長方形とする
// (ただし右端に4ドットのすき間を空ける)
System::Drawing::Rectangle rect = System::Drawing::Rectangle(
e->RowBounds.Location.X,
e->RowBounds.Location.Y,
dgv->RowHeadersWidth - 4,
e->RowBounds.Height);// 上記の長方形内に行番号を縦方向中央&右詰めで描画する
// フォントや前景色は行ヘッダの既定値を使用する
TextRenderer::DrawText(
e->Graphics,
(e->RowIndex + 1).ToString(),
dgv->RowHeadersDefaultCellStyle->Font,
rect,
dgv->RowHeadersDefaultCellStyle->ForeColor,
TextFormatFlags::VerticalCenter | TextFormatFlags::Right);
}
#include
してた場合、
#define DrawText DrawTextA みたいなことになってるので
どこかで
#undef DrawText
やらないと駄目っぽい><
おまけ
第2回 DataGridViewコントロールでマインスイーパ − @IT
http://www.atmarkit.co.jp/fdotnet/vblab/gridlab_02/gridlab_02_01.html
正規表現
■正規表現とは?
文字列の特定のパターンを指定する表記。で、そこの文字列の部分を抽出したり、置換できるの。
個人的には、htmlの部分(画像リンク)抽出や大量のテキストから要らない部分除去等に使ってる。
1日かけて勉強したら一生使えてる便利なやつ。
正規表現とは 【regular expression】 - 意味・解説 : IT用語辞典
http://e-words.jp/w/E6ADA3E8A68FE8A1A8E78FBE.html
正規表現 - wikipedia
http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE
■プログラムで使うには?
最近の言語はだいたい標準装備。
C++は、boostにあるでよ。
boost::regex
http://www.s34.co.jp/cpptechdoc/article/regexpp/
boost
http://www.boost.org/
■忘れやすいメモ
- \を普通に書く
\\\\
\\\\が文字列の\\とみなされ正規表現で\になる場合があるので4つ。
\\の2個でいいのもあるかも。環境しだい?
- ()で囲んだところ文字列取得
1個目()...\1
2個目()...\2
...
これも環境でちがうのあるかも。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
以下、書きかけ
■つかいそうなパターン
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
■勝手にリンク
正規表現最新リンク集2005
http://www2.famille.ne.jp/~akio1998/l_grep.html
2ch::過去スレのテンプレにあった参考サイトたち
Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Regex::Diagram.pm
http://www.cc.rim.or.jp/~midorin/mad-p/RegexDiagram.html
正規表現
http://www.cc.rim.or.jp/~midorin/mad-p/perl/benkyou/PRC2kRegex/
UNIX正規表現入門
http://web.archive.org/web/20021219021503/http://www01.u-page.so-net.ne.jp/jc4/hiroyuki/rex_index.html
Regular Expression(Riue ちゃんの正規表現講座)
http://www.sixnine.net/regexp/
スタティックライブラリでエラー出た
C++/CLIでない、スタティックライブラリリンクしたら
DotNetTest2005_00 error LNK2020: 未解決のトークン (0A000013) exception.__ctor
DotNetTest2005_00 error LNK2020: 未解決のトークン (0A000030) exception.__dtor
DotNetTest2005_00 fatal error LNK1120: 外部参照 2 が未解決です。
こんなエラー出た。
コンパイルオプションでランタイムライブラリを
Debug: マルチスレッド デバッグ DLL(/MDd)
Release: マルチスレッド DLL(/MD)
に変更で直った。
windows.hなプログラムを利用する方法
stdafx.hとかに
#include
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "gdi32.lib")
とか
で、
- MessageBox( 0 , "test" , "caption" , MB_OK );
等が使える。
- HWND取得
//丁寧にキャスト
HWND hWnd = reinterpret_cast(this->Handle.ToPointer()); //てきとうにキャスト
HWND hWnd = (HWND)this->Handle.ToPointer();
- HDC取得
・Paintイベントの時
private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
HDC hdc = (HDC)(e->Graphics->GetHdc().ToPointer());...
e->Graphics->ReleaseHdc((System::IntPtr)hdc);
}
まあ、
HWND取れれば、GetDC/ReleaseDCできるじゃん。
関連スレ
http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200601/06010032.txt
C++/CLIはじめました。
WindowsでのGUI作るのに
APIで最初から書くのは凄まじくめんどくさく、
MFCの痒いところに手が届かない所に嫌気がさし、
かといっても(業務や個人的趣味で)C++でやらないといけないのでC#は無理であり、
C++Builderは、更新してないので
せっかくだから、俺はこの.NET Frameworkを使うぜ。
つーわけで、勉強し始める。
用語
http://ja.wikipedia.org/wiki/C++/CLI
C++で.NET Framework使うために拡張されたC++のことっぽい。
VC2005から対応
(String^ str)みたいな表記とかふえた
http://ja.wikipedia.org/wiki/CLR
Common Langage Runtime
.NET Frameworkのこと?
Windowのクラス化
クラス化する時、コールバックのときのために、thisポインタを記憶するが、
http://hilbert.elcom.nitech.ac.jp/~taki/program.html
SetWindowLongでもなく
std::mapでもなく
SetPropがいいんだと