動的エディットボックスのフォントサイズの変更は
どうすればよいのでしょうか?
VSFrexGridのあるセルをダブルクリックすると
エディットボックスをセルにあわせて表示していますが、
そのフォントサイズをFrexGridのフォントサイズに合わせたいのです。
コードは以下のように記述しています。
frexgridのセルをダブルクリックした際のイベントハンドラです。
void CflexgridDlg::DblClickMsflexgrid1()
{
CRect rect;
CWnd *h =GetDlgItem(IDC_MSFLEXGRID1);
CEdit *pEdit=NULL;
pEdit = new CEdit();
// Windowのサイズを取得する
h->GetWindowRect(rect);
ScreenToClient(rect);
// ダブルクリックされた行、列を取得する
rows = m_flexgrid.get_Rows(); // 全行
cols = m_flexgrid.get_Cols(); // 全列
row = m_flexgrid.get_Row(); // 行
col = m_flexgrid.get_Col(); // 列
// 動的エディットボックスの表示位置を取得する
double y = (rect.bottom - rect.top)/rows;
double x = (rect.right - rect.left)/cols;
y = y*row;
x = x*col;
// 表示位置を補正する とりあえずの処理
rect.top=(long)y+rect.top+2;
rect.bottom=rect.top+18;
rect.left=(long)x+rect.left+5;
rect.right=rect.left+55;
// 動的エディットボックスを表示する
pEdit->Create(ES_MULTILINE | WS_VISIBLE | WS_TABSTOP | WS_BORDER | ES_RIGHT , rect, this, IDC_EDIT1);
// 入力フォーカスをウィンドウに設定
pEdit->SetFocus();
//m_flexgrid.DestroyWindow();
// TODO: ここにメッセージ ハンドラ コードを追加します。
}
大変よろしくお願い申し上げます。
モード MFC;ダイアログベース
ツール VC++2005
OS WINDOWS XP
大変すいません。3回も重複しました。
削除したいのですが、やり方がわかりません。
すいません。
普通にSetFontでは?
ところで
>pEdit
は誰がdeleteするのでしょうか?
Blueさま
ご返信ありがとうございます。
以下を追加しました。
CFont m_font;
m_font.CreatePointFont(50, _T("MS 明朝"));
pEdit->SetFont(&m_font);
pEdit->SetWindowTextA("FF");
上記を追加しても、エディットボックス内の”FF"の文字の下半分が
消えてしまう現象が発生しました。
pEditのdeleteが抜けていました、ご指摘ありがとうございます。
pEditをメンバ変数に移行し、
エディットボックス内文字入力後、deleteするように対処します。
font.CreateFont(9,0,0,0,FW_NORMAL,FALSE,FALSE,0,
SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,
FIXED_PITCH,"MS 明朝");
pEdit->SetFont(&font);
前回追加分を削除し上記を追加しましたが、
入力文字のした半分が、消えます。
どうしたらよいかわかりません。
解決しました。
いろいろためしましたが、MFCの不具合のようでした。
pEdit->Create
なので、別の方法で実現できました。
ありがとうございました。
ツイート | ![]() |