iPhone/iPad用ドット絵エディタ「EDGE touch」

最近のエントリー

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

他の開発環境ではグリッドコントロールなどと呼ばれている物が有りますが、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を審査に出せました。
たぶん数週間は掛かるでしょうね。
しかも初めてなのでリジェクトも覚悟しないといけません(^^;

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

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

印刷したら大量の紙が出てくるとか(´・ω・`)ショボーン

プレビュー表示やPDFドライバへ印刷した時は問題無いのに(´・ω・`)ショボーン

ま、まぁプリンタから出てきた紙は幸い白紙だし業務時間外で人も少なかったので実害は無いんですが、これがちょっとでも印刷されてたと思うとゾっとします(^^;

皆さんも気をつけましょう(でもどうやって?)

#原因究明は明日にして帰ってきました。
#どうせメモリ破壊とかそんなところだと思うのですが。

「構築・消滅」というコメント文で中黒だけが文字化けしてしまうのですが、解決策ご存じの方いらっしゃいましたら教えてくださいm(_ _)m
edge4

追記

解決しました~。
VC6の頃の名残で「FixedSys」というフォントを使っていたのですが、「MS ゴシック」に戻したところ中黒が表示されるようになりました!

Microsoftは設定データなどをレジストリへ保存する事を推奨しているぽいですが、結構嫌がるユーザーさんが多いので私のソフトではiniファイルへ書き出すことが多いわけなのですが、久々にWritePrivateProfileString APIを調べていたら、やれば出来る子という事が判明しました。

APIの名前から機能を「文字列をiniファイルに書き出す」だけだと勝手に思いこんでいたのですが、引数の渡し方によってはキーを削除したり、セクションを削除したりできるようです。
(こういうのは削除専用のAPIを別途作った方が使い手は判りやすいと思うんですが。)

また、ユニコード版(WritePrivateProfileStringW)は、ユニコードのまま文字列を書き出せるという事も判明。
ただし、iniファイルがユニコードファイルである必要があります。
なので、iniファイルが存在していなかったら、BOM(バイトオーダーマーク)だけのファイルを生成した上でWritePrivateProfileStringWを実行すれば良さそうです(ファイルが無い状態でWritePrivateProfileStringWを呼ぶとShiftJisに変換されてしまうようです)。

こんな感じかな。

CString strIniPath = iniファイルのパス
if (!::PathFileExists(strIniPath)) {
	CFile file;
	if (file.Open(strIniPath, CFile::modeWrite | CFile::modeCreate | CFile::shareExclusive)) {
		BYTE bom[2] = {0xff, 0xfe};
		file.Write(bom, 2);
		file.Close();
	}
}
::WritePrivateProfileString(_T("Test"), _T("Test"), strUnicode, strIniPath);

記事検索

コミュニティ

Banner designed by しょさ様
ドット絵掲示板
ドット絵掲示板
自作の「ドット絵」を投稿することができます。ドッターさん同士の交流の場としてご利用ください。
TakaboSoft Wiki
TakaboSoft Wiki
ソフトウェアに関する質問・不具合報告・要望などを書き込むことができます。