プロパティシートのサイズの変更方法 – プログラミング – Home

プロパティシートのサイズの変更方法
 
通知
すべてクリア

[解決済] プロパティシートのサイズの変更方法


Raimuraito
 Raimuraito
(@Raimuraito)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

Vc++6.0を使用しています。

プロパティシートの各シートに表示されるダイアログの大きさを
小さくしました。
プロパティシートのサイズは自動的に以前よりも小さくはなったのですが、
ダイアログのサイズからするとかなり大きめです。
ダイアログサイズにあうように、シートの大きさを変更するには
どのようにすればよいでしょうか?

どなたか、よろしく御教授の程お願いいたします。


引用未解決
トピックタグ
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

「かなり大きめ」と言われてもこちらには伝わらないのですが、CPropertySheet::OnInitDialogでMoveWindowすれば
いいのでは。
ページ(タブコントロール)やボタンのサイズを変えたいということなら、それらのウィンドウハンドルを取得しなければ
なりませんが。


返信引用
Raimuraito
 Raimuraito
(@Raimuraito)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

CdSさん、こんにちは。
アドバイスをしていただき、どうもありがとうございました。

「かなり大きめ」について補足させていただきます。
もとのダイアログはエディットボックスが縦に3列並んでいます。
ダイアログエディタではエディットボックス同士が密に接しており、余白もほとんど無い状態で、かつシートに表示されるダイアログは全て同じサイズとコントロール配置になっている状態なのですが、プロパティシートで表示すると
エディットボックスの間隔が画面上で1cm程度の広がり、シートの右側の余白が3cm位となってしまいます。
コンパクトなシートを作成したいと思っていますので、この余白が気になります。
(私のCRTは17インチで1024×768表示に設定しています)

アドバイスにしたがって、CPropertySheet::OnInitDialogでMoveWindowでウィンドウのサイズを変更してみました。
確かにウィンドウのサイズは小さくなるのですが、下記の2点の問題が残りました。

<1>
最下段に表示される「OK」、「キャンセル」、「適用」のボタンの位置とサイズが変わらないので、プロパティシートの右側の余白を小さくするべくMoveWindowでウィンドウの幅を狭くすると、「キャンセル」ボタンの右半分と「適用」ボタンの全てがウィンドウ外となってしまい、画面表示されなくなる。

<2>
ダイアログエディタではエディットボックス同士が密に接しているのですが、プロパティシートで表示するとエディットボックスの間隔が画面上で1cm程度の広がる現象はそのまま残る。

この前のアドバイスでは、
>ページ(タブコントロール)やボタンのサイズを変えたいということなら、それらのウィンドウハンドルを取得しなけれ>ばなりませんが
ということでしたが、どうもそのようにする必要がありそうです。

すみませんが、どのようにすればできるのか教えていただけないでしょうか。
ウィンドウ(コントロール)のハンドルの取り方もわからない初心者ですので、お手数をおかけしますが、よろしくお願いいたします。


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

<1>
EnumChildWindowsを調べてみてください。

<2>
分かりません。


返信引用
Raimuraito
 Raimuraito
(@Raimuraito)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

CdSさん、こんにちは。

EnumChildWindowsを調べて下記のようにしてみたのですが、
EnumSheetControlの中を実行していないようです。
(「icheck = 6;」のステートメントにブレークポイントを
  設定してチェックしました。 )
どこが悪いのかよくわかりません。
ご教示していただきたくよろしくお願いいたします。

ColorSheet.h

bool CALLBACK EnumSheetControl(HWND hwnd, LPARAM lparam);

class CColorSheet : public CPropertySheet
{
.............
}
-------------------------------------------------------------
ColorSheet.cpp

BOOL CColorSheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();
MoveWindow(0, 0, 300, 400, true);
EnumChildWindows((HWND)GetParent(), (WNDENUMPROC)EnumSheetControl, (LPARAM)(LPCSTR)a);
return bResult;
}

BOOL CALLBACK EnumSheetControl(HWND hwnd, LPARAM lparam)
{
int icheck;
icheck = 6; //ここにブレークポイントを設定
return true;
}


返信引用
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

>CdSさん、こんにちは。
こういう書き方は控えてほしいですね。
私だけが回答するわけではありません。

なぜGetParent()をHWNDにキャストしているんでしょう?
GetParent()->GetSafeHwnd()かGetParent()->m_hWndだと思いますけど。
というかGetParentじゃあ駄目なのでは。

EnumChildWindows(m_hWnd, (WNDENUMPROC)EnumSheetControl, (LPARAM)(LPCSTR)a);

なのでは。


返信引用
Raimuraito
 Raimuraito
(@Raimuraito)
ゲスト
結合: 23年前
投稿: 7
Topic starter  

>>CdSさん、こんにちは。
>こういう書き方は控えてほしいですね。
>私だけが回答するわけではありません。

→ どうも失礼しました。
  以後、気をつけるようにします。

>GetParent()->GetSafeHwnd()かGetParent()->m_hWndだと思いますけど。

→ GetParent()->GetSafeHwnd()とすることで、うまくいきました。
  どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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