プロパティシートのボタン位置がずれる – 固定ページ 2 – プログラミング – Home

プロパティシートのボタン位置がずれる
 
通知
すべてクリア

[解決済] プロパティシートのボタン位置がずれる

固定ページ 2 / 2

gak
 gak
(@gak)
ゲスト
結合: 21年前
投稿: 132
 

> 同じ場所にボタンをクリエイトしてもなぜ場所が大きくずれるのか、全く分かりません。
単純に、この処理を行った段階(WM_INITDIALOG)では IDOK ボタンはまだ適切な位置に
配置されていなかった。という可能性は無いかな。
プロパティシートのメッセージに PSM_RECALCPAGESIZES てのがあるんだけど、恐らくこ
のメッセージが処理されないと IDOK ボタン等は適切な位置に配置されないと思われ。

> WS_CHILD
CWnd::Create() って↓な感じで実装されてるみたいだから、今回は運良く?大丈夫かも。

BOOL CWnd::Create(..., DWORD dwStyle, ...) {
return CreateEx(..., dwStyle | WS_CHILD, ...);
}


返信引用
タフマン
 タフマン
(@タフマン)
ゲスト
結合: 16年前
投稿: 26
Topic starter  

何とか解決しましたので、報告させて頂きます。

その前に、ご指摘頂いていたWS_CHILDについては、念のため付加させて頂きました。

BOOL CMySheet::OnInitDialog()
{
// TODO: この位置に固有の処理を追加するか、または基本クラスを呼び出してください
BOOL ret = CPropertySheet::OnInitDialog();
CRect rectOK, rectCANCEL, rectSEND;

GetDlgItem( IDOK )->ShowWindow( SW_HIDE );
GetDlgItem( IDCANCEL )->ShowWindow( SW_HIDE );

m_font= new CFont();
m_font->CreatePointFont(100,FONT_NAME);

// IDOKの場所を取得
GetDlgItem( IDOK )->GetWindowRect(rectOK);
ScreenToClient(rectOK);
// IDCANCELの場所を取得
GetDlgItem( IDCANCEL )->GetWindowRect(rectCANCEL);
ScreenToClient(rectCANCEL);
// 追加ボタンの場所を計算
int dx = rectCANCEL.left - rectOK.left;
rectSEND = rectOK;
rectSEND.left -= dx;
rectSEND.right -= dx;

m_Bsend = new CButton();
m_Bsend->Create(GET_STR(EV_TXT_MAIN_SET_BTN01), WS_VISIBLE | WS_TABSTOP |
WS_CHILD, rectSEND, this, IDC_BSEND );
m_Bsend->SetFont(m_font);

m_Bsave = new CButton();
m_Bsave->Create(GET_STR(EV_TXT_MAIN_SET_BTN02), WS_VISIBLE | WS_TABSTOP |
WS_CHILD, rectOK, this, IDC_BSAVE );
m_Bsave->SetFont(m_font);

m_Bclose = new CButton();
m_Bclose->Create(GET_STR(EV_TXT_MAIN_SET_BTN03), BS_DEFPUSHBUTTON | WS_VISIBLE
| WS_TABSTOP | WS_CHILD, rectCANCEL, this, IDC_BCLOSE );
m_Bclose->SetFont(m_font);

return ret;
}

このような形で3つのボタンの描画に成功しました。
一番の要因は最初に
CPropertySheet::OnInitDialog();
を呼ばなければいけなかった点です。
この中でサイズを決定しているのだと思います。
今までは最後に
return CPropertySheet::OnInitDialog();
となっていました。

この方法でしたらOSによる違いも受けませんでした。
皆さんのアドバイスを複合して解決する事ができました。
とても感謝しております。
誠にありがとうございました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました