エンタープライズ:特集 2003/07/18 11:58:00 更新
C Magazine

[C Magazine連載]プログラムのレシピ(第1回)
デスクトップメモを作る (5/9)

C MAGAZINE 2002年9月号より転載

メモの作成と表示
 次はメモのウィンドウを作りましょう。このデスクトップメモでは、複数のメモをそれぞれ独立したウィンドウにします。

 おのおののメモはFig.5のようになっています。左側にある絵はタブで、メモをドラッグするために使います。右側がテキスト入力領域で、ここにメモの内容を書きます。多くのライブラリにはテキスト入力用のコンポーネントが用意されているので、積極的に利用して楽をしましょう。Win32APIの場合には、Windows標準のテキストボックスを使います。

Fig.5
Fig.5 1枚のメモ

 メモに関しては、新しくメモを作成したり、不要なメモを消したりといった処理が必要です。これはポップアップメニューから操作するのが便利でしょう。そこで、次のようにします。

・タスクトレイ用のポップアップメニューに、「メモの新規作成」という項目を追加する

・おのおののメモ用にポップアップメニューを作る。そして、「メモの新規作成」と「このメモを削除」という項目を追加する

 複数のメモを管理するには、配列やリストなどを使います。メモの個数は実行時までわからないので、可変長のリストを使うと便利でしょう。メモの追加と削除は、次のような処理になります。

・メモを追加するには新しくメモ用のウィンドウを作成し、リストに登録する

・メモを削除するにはメモ用のウィンドウを消去し、リストから取り除く

●プログラム例

 C++Builderの場合、メモ用のフォーム(ウィンドウ)はFig.6のように作ります。これをオブジェクトツリーで見たものがFig.7です。画像表示用にImageコンポーネントを、テキスト入力用にMemoコンポーネントを使いました。

Fig.6
Fig.6 メモフォーム

Fig.7
Fig.7 メモフォームのコンポーネント構成

 また、ポップアップメニューはFig.8のように作ります。もちろん最初からこんなにメニュー項目はいりません。必要に応じて追加していけば大丈夫です。

Fig.8
Fig.8 メモフォームのポップアップメニュー

 次に、メモを追加したり削除したりする処理を作りましょう。まず、メモを管理するためのリストを宣言します。ヘッダファイル(UConsoleForm.h)に、

TList *MemoFormList;

のような宣言を追加します。そしてC++ソースファイル(UConsoleForm.cpp)に、List6のような処理を書きます。

List 6 メモを追加/削除する(UConsoleForm.cpp)

//============================================================= (1)
// 「メモの新規作成」メニュー項目のイベント処理
void __fastcall TConsoleForm::MINewMemoClick(TObject *Sender)
{

   // メモを新しく作成し、表示する
   TMemoForm* memo=NewMemo();
   memo->Show();

}

//============================================================= (2)
// メモの新規作成
TMemoForm* TConsoleForm::NewMemo() {

   // メモフォームの作成と、一覧への登録
   TMemoForm *memo=new TMemoForm(this);
   MemoFormList->Add(memo);

   // ... 中略 ...

   return memo;
}

//============================================================= (3)
// メモを削除
void TConsoleForm::DeleteMemo(void *memoForm) {

   // 引数で指定されたメモをリストから探す
   int i=MemoFormList->IndexOf(memoForm);

   // メモが見つかったら、フォームを削除し、リストから取り除く
   if (i>=0) {
       ((TMemoForm*)memoForm)->Release();
       MemoFormList->Delete(i);
   }

}

 List 6-(1)は、タスクトレイ用ポップアップメニューの「メモの新規作成」に対するイベント処理です。メモを新しく作成し、表示します。実際にメモを作成する処理はList 1-(2)で、ここではメモフォームを作成し、リストに登録します。

 List 6-(3)はメモを削除する処理です。引数で指定されたメモをリストから探し、フォームを削除して、リストからも取り除きます。

 メモフォーム用のポップアップメニューにも、イベント処理が必要です。こちらはList 7のように書きます。List 7-(1)がメモの新規作成、List 7-(2)がメモの削除です。いずれもList 6で定義したメソッドを呼び出して、メモの追加や削除を行います。

[C Magazine連載]プログラムのレシピ(第1回)
(1)連載のはじめに
(2)どんな機能を作るか
(3)作成のポイント
(4)タスクトレイの操作
(5)メモの作成と表示
(6)メモデータの保存と読み込み
(7)タブ画像の選択
(8)日程管理機能
(9)まとめ
・実行ファイル/リソース一式(.lzh形式/1.32MB)
・リスト(.lzh形式/5.45KB)

関連リンク
▼C MAGAZINE
▼定期購読のご案内
▼バックナンバー一覧
▼バックナンバー販売協力店
▼ひぐぺん工房
▼「デスクトップマスコットを作ろう」紹介ページ
▼「デスクトップマスコットを作ろう」著者ページ

前のページ | 1 2 3 4 5 6 7 8 9 | 次のページ

[松浦健一郎(ひぐぺん工房),C MAGAZINE]