動的エディットボックス フォントサイズ変更

解決


ひろ  2007-09-29 01:10:30  No: 66484

動的エディットボックスのフォントサイズの変更は
どうすればよいのでしょうか?

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


ひろ  2007-09-29 01:12:19  No: 66485

大変すいません。3回も重複しました。
削除したいのですが、やり方がわかりません。
すいません。


Blue  2007-09-29 01:52:08  No: 66486

普通にSetFontでは?

ところで
>pEdit
は誰がdeleteするのでしょうか?


ひろ  2007-09-29 03:18:23  No: 66487

Blueさま

ご返信ありがとうございます。
以下を追加しました。

 CFont m_font;  

m_font.CreatePointFont(50, _T("MS 明朝"));
pEdit->SetFont(&m_font);
pEdit->SetWindowTextA("FF");

上記を追加しても、エディットボックス内の”FF"の文字の下半分が
消えてしまう現象が発生しました。

pEditのdeleteが抜けていました、ご指摘ありがとうございます。
pEditをメンバ変数に移行し、
エディットボックス内文字入力後、deleteするように対処します。


ひろ  2007-09-29 04:52:40  No: 66488

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);

前回追加分を削除し上記を追加しましたが、
入力文字のした半分が、消えます。

どうしたらよいかわかりません。


ひろ  2007-10-01 22:02:39  No: 66489

解決しました。
いろいろためしましたが、MFCの不具合のようでした。
pEdit->Create

なので、別の方法で実現できました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加