- エディットボックスのスクロール制御 -



≪ MFC・ダイヤログベースでの作成例 ≫


 ■ ダイヤログにエディットボックスとボタンを作成



※エディットボックスのIDは IDC_MSGCHECK とします
※エディットボックスの大きさを画像の様に適当に変えてください
※ボタンを画像の様に2つ作成 ○サンプルではIDをIDC_UPと、IDC_DOWNとします





 ■ エディットボックスのプロパティを呼び出しスタイルタブをクリック



※「複数行」「垂直スクロールバー」「改行許可」をチェックします





 ■ ClassWizardを呼び出しエディットボックスのメンバー変数の追加



※カテゴリーをコントロールにしCEdit型のメンバー変数 m_CharacterData を作成





 ■ OnInitDialog関数でエディットボックスの初期化

////////////////////////////////////////////////////////
// CTest02Dlg メッセージ ハンドラ

BOOL CTest02Dlg::OnInitDialog()
{
CDialog::OnInitDialog();

// "バージョン情報..." メニュー項目をシステム メニューへ追加します。

// IDM_ABOUTBOX はコマンド メニューの範囲でなければなりません。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL) {
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty()) {
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// このダイアログ用のアイコンを設定します。フレームワークはアプリケーションのメイン
// ウィンドウがダイアログでない時は自動的に設定しません。
SetIcon(m_hIcon, TRUE); // 大きいアイコンを設定
SetIcon(m_hIcon, FALSE); // 小さいアイコンを設定

// TODO: 特別な初期化を行う時はこの場所に追加してください。


//エディットボックスの初期化
//※CWndクラスのSetWindowText()メンバ関数を呼び出してエディットボックスを初期化する
m_CharacterData.SetWindowText(
  "1.スピンコントロールの使い方\r\n"
  "2.プログレスバーの使い方\r\n"
  "3.エディットボックスに文字列を送る\r\n"
  "4.エディットボックス内の文字列を取得\r\n"
  "5.エディットボックス内の文字列の行数を取得\r\n"
  "6.エディットボックスのスクロール制御\r\n"
  "7.タイマーを使ってみよう\r\n"
  "8.日付・時間を取得してみよう\r\n"
  "9.ジョークソフトを作ってみよう"
);


return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}





 ■ ClassWizardを呼び出し2つのボタンにクリックイベントを追加



※IDC_UP → BN_CLICKED → 関数追加
※IDC_DOWN → BN_CLICKED → 関数追加





 ■ 「↑」ボタンにエディットボックスがスクロールするソースを追加

void CTest02Dlg::OnUp()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

//※CEditクラスのメンバ関数LineScrollを使いエディットボックスをスクロールさせる
//※最初の引数に-1を設定する事によりエディットボックスを上に1つスクロールさせる
m_CharacterData.LineScroll(-1,0);
}





 ■ 「↓」ボタンにエディットボックスがスクロールするソースを追加

void CTest02Dlg::OnDown()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

//※CEditクラスのメンバ関数LineScrollを使いエディットボックスをスクロールさせる
//※最初の引数に1を設定する事によりエディットボックスを下に1つスクロールさせる
m_CharacterData.LineScroll(1,0);
}





 ■ 以上コンパイルすれば完成



※ダイヤログの「↑」「↓」ボタンを押すとエディットボックスがスクロールする