ウィンドウスタイルの変更

[戻る]
ナオーバ 2002/06/27(木) 22:12:43
ダイアログのエディットボックスのウィンドウスタイルの変更をしようとして

void CListDlg::OnButton1()
{
    UpdateData();
    CEdit* pEdit = (CEdit *)GetDlgItem( IDC_EDIT1 );
    LONG lstyle = ::GetWindowLong( pEdit->m_hWnd, GWL_STYLE );
    lstyle |= WS_VSCROLL ;
    ::SetWindowLong( pEdit->m_hWnd, GWL_STYLE , lstyle );
    UpdateData(FALSE);
}

を記述しました。ですが垂直スクロールバーが表示されません。
Spy++で確認するとWS_VSCROLLが追加されています。

<環境>
vc++6.0 SP2
WIN2000 SP2

宜しくお願いします。

ナオーバ 2002/06/27(木) 22:13:48
環境を間違ってしまいました

<環境>
vc++6.0 SP5
WIN2000 SP2

に訂正します

とおりすがり 2002/06/28(金) 09:40:33
確認はしていませんが、まあ、エディットボックスがWS_VSCROLLスタイルの
動的変更には対応していないということでしょう。
動的に作成しては?

けみ 2002/06/28(金) 10:22:48
SetScrollInfoを呼ぶとスクロールバーが出るみたいです。

tagSCROLLINFO scr;
memset(&scr,0,sizeof(tagSCROLLINFO));
scr.cbSize = sizeof(scr);
scr.fMask= SIF_RANGE;
scr.nMax = 1;

m_edit.SetScrollInfo(SB_VERT ,&scr);

一応これで出ます。でもただ出るというだけ。
tagSCROLLINFO の値を調べてみてみてださい。

猫でもわかるプログラミング 
Windows SDK編 第1部 
の100章を調べるといいかも

けみ 2002/06/28(金) 10:35:00
補足です。
自動スクロールを有効にしてあげれば一応動くみたいです。
でも、パラメータの値は自信がないので調べて下さい。

ナオーバ 2002/06/28(金) 12:46:17
ありがとうございます。
tagSCROLLINFO を調べてみます。

もうひとつありまして、WS_VSCROLL を ES_CENTER としても
文字がセンターになりません。
Spy++で確認するとが ES_CENTER 追加されています

ウィンドウスタイルの変更の方法が間違っているのでしょうか?

再度、よろしくお願いします

とおりすがり 2002/06/28(金) 12:53:02
    pEdit->ModifyStyle(NULL, ES_CENTER, SWP_FRAMECHANGED);
ではどうなります?

ナオーバ 2002/06/28(金) 13:32:26
とおりすがりさんありがとうございます。
早速やってみましたが、変わりませんでした。

ウィンドウスタイルの変更の方法がどっか間違っているのでしょうか?

再度、再度、よろしくお願いします

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