友人のススメでtwitterのアカウントを作ってみました。
http://twitter.com/TAKABO_SOFT

フォローしてくださる方募集中~ヾ(o゚ω゚o)ノ゙ プニプニ!プニプニ!
友達百人できるかなー?
(それよりメールの返事を早く書けよ自分)

K’z meeting 2009 HAMAMATSU
9月6日(日)開催決定!
フェアレディ&Z大集合!
http://www.370z.jp/

って今日かよ!終わってるじゃん!!(T_T)
見に行きたかったなぁ・・・。

行きたかったなぁ・・・。

CSplitterWndと言えば、CView系のみスプリット表示するというイメージがありますが、ヘルプを見ていたら

静的分割ウィンドウを作成するとき、同時にすべてのペインを作成する必要があります。CreateView メンバ関数は、この目的のために使われます。しかし、さらにほかの非ビュー クラスも作成できます

と書いてあるではありませんか。

が、具体的にどうやって実装すれば良いかは書かれておらず、ソースを読んでいたところ、

  • 親にCSplitterWndのインスタンスを指定してコントロール等を作成
  • IDをCSplitterWnd::IdFromRowCol関数で算出した値にしておく

だけで良いみたいです。

m_wndSplitter.CreateStatic(this, 2, 1, WS_CHILD | WS_VISIBLE);
m_edit1.CreateEx(WS_EX_CLIENTEDGE, _T("Edit"), _T(""), WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_MULTILINE, CRect(0, 0, 300, 300), &m_wndSplitter, m_wndSplitter.IdFromRowCol(0, 0));
m_edit2.CreateEx(WS_EX_CLIENTEDGE, _T("Edit"), _T(""), WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_WANTRETURN | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_MULTILINE, CRect(0, 0, 300, 300), &m_wndSplitter, m_wndSplitter.IdFromRowCol(1, 0));

あとはm_wndSplitter自体をウィンドウ全体に広げて配置したりだとか、m_wndSplitter.SetRowInfoで行の高さを変更したりするだけです。
ダイアログベースのアプリでも気軽に使えそうですね。

表形式でデータを表示するだけならリストコントロールのレポートビューでなんとでもなりますが、入力に対応させようとするとリストコントロールではちょっと無理があります(頑張ればこれでも行けないことはないと思いますが)。

他の開発環境ではグリッドコントロールなどと呼ばれている物が有りますが、VC(MFC)には付いてきません。
(標準のコントロールとしては、そのような物が無いため)

とはいえ、実際にアプリを作る際には、グリッドコントロールはしょっちゅう必要になってきますし、ソフトウェアハウスなんかではグリッドコントロールを独自開発して使っているのが実状だと思います。

そんな中、商品でも何でも良いのである程度汎用的に使えるグリッドコントロールは無いものか、ざっくりと探してみたので、ざっくりとまとめておきます。

Microsoft FlexGrid Control

ActiveXで使うグリッドコントロール。
http://noribeat.s38.xrea.com/developer/03031501.html
http://hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/004.html

DataGridという奴もあるようですが、こちらはDB用なのかな?

MFC Grid control

Code Projectで公開されているライブラリ。
http://www.codeproject.com/KB/miscctrl/gridctrl.aspx

UNICODE環境でコンパイルするとOLEデータの貼り付け時に文字化けたり、そもそもコピペ時にCF_TEXT使ってたり(UNICODEなら本来はCF_UNICODETEXT)、ちょっとプログラムを修正する必要がありますが、結構いろんな事ができます。

ただ、操作性やデザイン面で好き嫌いが出そうな予感です。

BCGControlBar Library Professional Edition

VS2008 Future Packの元ネタである、このライブラリ集にもグリッドコントロールがあります。
http://www.bcgsoft.com/samples/grid.htm(サンプル)

デザインがなかなか格好良く、しかもかなりの高機能っぷりです。
なんでも出来そうです。

ただ、これだけデザイン良くて高機能なのに、すごく動作が重いんです。
とても実用に耐えられるものではありません。
(データが1画面に納まるような時でないと使い物になりません。)
これが動作が軽ければ文句なしに買っていたのに、非常に残念です。

ご意見お待ちしております

うちの会社はこの万能グリッドコントロールを使ってるよ!とか、むしろうちの会社でグリッドコンポーネント作ってるから買ってよ!みたいな宣伝とかありましたらメールください。

※ VS2005/VS2008 + UNICODE + MFC 環境でサクっと動く物をお願いいたします。

なにかと準備が大変でしたが、ようやくEDGE touchを審査に出せました。
たぶん数週間は掛かるでしょうね。
しかも初めてなのでリジェクトも覚悟しないといけません(^^;

ちょっと困ったのが、登録するときにアプリのカテゴリーを選ばなきゃいけないんですが、とりあえずユーティリティとエンターテイメントを希望として出しておきました。

早くストアに並ばないかな~。

記事検索

アーカイブ