はみ出しRAPTの戯言

- a day after yesterday -

目次

Blog 利用状況

ニュース

書庫

日記カテゴリ

コミュニティ リンク

2008年8月16日 #

INI 編集ツール IniModifier を作成してみる (2)

INI 編集ツール IniModifier を作成してみる (2)

過去の記事へのリンク:
INI 編集ツール IniModifier を作成してみる (1)

リソース配置が楽なのでダイアログベースで作ることにする。
とりあえずリソースエディタで適当にコントロールを配置して、UI を決める。
ダイアログの自動リサイズを実装するため、CDialogResize も継承しておく。

class CMainDlg
    : public CDialogImpl< CMainDlg >
    , public CDialogResize< CMainDlg >
{

テキストを編集したり色をつけたりしたいので、リッチエディットコントロールを使ってみようと思う。リッチエディットコントロールを使うのはこれが初めてだが、WTL のヘッダを見ていると結構いろいろできそうなので、せっかくなので調べながら作っていくことにする。

リソースエディタのイメージはこんな感じ↓

リソースエディタのイメージ

リッチエディットコントロールは 2.0 を使うこととする。
CDialogResize は atlframe.h
CRichEditCtrl は atlctrls.h
にそれぞれ定義されているので、stdafx.h は下記のようになった。

// stdafx.h
// Change these values to use different versions
#define WINVER          0x0500
#define _WIN32_WINNT    0x0501
#define _WIN32_IE       0x0501
#define _RICHEDIT_VER   0x0200

// WTL よりも ATL を優先する場合は、atlapp.h より前に include すること
#include <atlstr.h>
#include <atltypes.h>

#include <atlbase.h>
#include <atlapp.h>

extern CAppModule _Module;

#include <atlcrack.h>

#include <atlframe.h>  // CDialogResize
#include <atlctrls.h>  // CRichEditCtrl
#include <atldlgs.h>   // CFileDialog

処理の関係上、文字セットは UNICODE ではなく、マルチバイト文字セット(MBCS) でビルドすることにする。

// stdafx.cpp
#if defined( _UNICODE ) || defined( UNICODE )
#error This program doesn't assume unicode build.
#endif

# ところで、なぜ #error ディレクティブではマルチバイト文字が使えないんだろ。
# ダブルクォーテーションで括ってやってもだめ。L"" としてもだめ。何かうまくいくようにしてくれるといいんだけど。

posted @ 1:23 | Feedback (2)

INI 編集ツール IniModifier を作成してみる (1)

IniModifier

Inno Setup のフロントエンドである ISTool の日本語言語ファイル作成をしたりしているが、INI 形式のファイルをアップデートが非常にめんどくさすぎるので何かツールを作成しようと思う。

開発環境は以下の通り。

  • Windows XP sp2
  • Visual C++ .NET 2003 sp1
  • WTL 8.0

要件仕様は下記の通りとする。

  • ファイルのエンコーディングは SJIS/UTF-8 に対応。(できれば EUC も対応。)
  • セクション名・キー名で差分チェックを行う。
  • Visual SourceSafe の比較画面のように見比べつつ編集もできるようにする。
  • セクション:[太字表示]
  • コメント:緑色表示
  • 追加されたセクション・キー:青色表示
  • 削除されたセクション・キー:赤色表示
  • 削除されたキー:キーの先頭に ";<DEL>:" を追加。

IniModifier の完成イメージはこんな感じ↓

IniModifier の完成イメージ

posted @ 0:18 | Feedback (209)