動的にエディットボックスの幅をウィンドウの幅に合わせる

[戻る]
2005/06/04(土) 14:52:37
VC++6.0 MFC SDI WindowsXP SP2

動的に画面の幅に、エディットボックスの幅を合わせたいのですが、
どこで設定すればよいのかわかりません。
とりあえずFormViewの幅は取得できました。
その横幅のみをエディットボックスに設定したいです。
知っている方がいらっしゃたら教えてください。


// ビューのサイズにダイアログとエディットボックスの幅を合わせる
void XXXXView::OnSize(UINT nType, int cx, int cy) 
{
    CFormView::OnSize(nType, cx, cy);
    CRect   lpRect;
    GetClientRect(lpRect);

   // ダイアログ
    CWnd* pWnd = GetDlgItem( IDD_SEARCH_BAR );
    if( pWnd && pWnd->GetSafeHwnd() ) {
        pWnd->MoveWindow(lpRect);
    }

    // ここで設定するのでしょうか?
    CWnd* pWnd = GetDlgItem( IDC_EDIT );
    if( pWnd && pWnd->GetSafeHwnd() ) {
        pWnd->MoveWindow(lpRect);
    }
}

シャノン 2005/06/04(土) 16:29:11
引数がなんだかわかりますか?
そのコードを実行するとどうなりますか?
そのコードの問題点はどこでしょうか?

余談ですが、
> if( pWnd && pWnd->GetSafeHwnd() ) {
これは冗長です。

GetSafeHwnd の説明には、
> m_hWnd を返します。this ポインタが NULL の場合は、NULL を返します。
とありますので、

if( pWnd->GetSafeHwnd() ) {

だけでよいです。

2005/06/04(土) 16:42:47
[[解決]]
ありがとうございました。
無事出来ました。

古いスレッドには追加発言できません。