
No.2ベストアンサー
- 回答日時:
もし、コンボボックスのサイズ変更をMoveWindowでやっているなら、これで表示されるのは、リスト部分を含むサイズです。
たとえば、
m_combobox1.MoveWindow(20,20,200,300);
の300は、リスト部分を含みます。
エディット部分の高さを変更させる場合は、
m_combobox1.SetItemHeight( -1, 100);
というようにします。
普段、意識していないので、コンボボックスを貼り付けてみましたが、マウスでは、エディット部分の高さは変えられないようです。
ダイアログエディタ(リソースビューのコントロールを貼り付けるフォーム)で、▼ボタンを押下させると、点線と四角で囲まれた部分が表示されます。
(コンボボックスの絵とは違う部分が囲まれるはず)
その下辺をウニ~とドラッグすると、リスト部分の高さが変わります。
MDI・SDI・ダイアログベースいずれでも同じです。
回答の中でコンボボックスのサイズ変更の際に、リスト部分を含むサイズを含むということでヒントになりました。
コンボボックスの領域を、GetWindowRect()等で取得すると、リスト部分のサイズが含まれないですが、
m_combobox1.GetDroppedControlRect(&Rect)
とすれば、リスト部分も含めて取得できるので、これを基にサイズ変更することで、うまく動作することができました。
どうもありがとうございました。
No.1
- 回答日時:
こんにちは。
以下確認させて頂きます。>>MFCでアプリを作成
MDI・SDI・ダイアログベースのうちどれでしょうか?
>>アプリ画面のサイズを変更すると
サイズ変更は「マウス操作」によってでしょうか、「API側」からでしょうか?
VCのバージョンは幾つでしょうか?
私はVC++60なのでその範囲内なら回答できるかもしれません。
この回答への補足
説明は不十分ですみません。補足いたします。
●MFCアプリは、ダイアログベースです。
●アプリ画面のサイズ変更は、マウス操作でドラッグし、これに連動して、以下のコードの実装により、コンボボックスを含む子ウィンドウのサイズを変えるようにしています。
---------------------------------------------------------------
CSize m_szDefault;// 元のアプリ画面サイズ
BOOL CMailDemoDlg::OnInitDialog()
{
CRect rect;
CDialog::OnInitDialog();
// 元のアプリ画面サイズの取得
GetWindowRect(&rect);
m_szDefault = rect.Size();
}
void CAppDlg::OnSize(UINT nType,int cx,int cy)
{
CRect rect;
// アプリ画面の現在サイズの取得
GetWindowRect(&rect);
CSize sz = rect.Size();
// コンボボックスの画面の取得
CWnd *wnd = GetDlgItem(IDC_COMBOBOX);
wnd->GetWindowRect(&rect);
// コンボボックスの画面サイズの再設定
rect.left *= ((double)sz.cy / (double)m_szDefault.cy);
rect.top *= ((double)sz.cy / (double)m_szDefault.cy);
rect.right *= ((double)sz.cy / (double)m_szDefault.cy);
rect.bottom *= ((double)sz.cy / (double)m_szDefault.cy);
wnd->SetWindowPos(NULL,rect.left,rect.top, rect.Width(),rect.Height(),SWP_NOZORDER|SWP_NOACTIVATE|SWP_NOCOPYBITS);
}
---------------------------------------------------------------
●Visual Studio 2005 を使用しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
コンボボックスの高さを変更したい。
C言語・C++・C#
-
MFCでのコンボボックスについて
C言語・C++・C#
-
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
-
4
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
MFCでコンボボックスを選択不可状態にしたい
C言語・C++・C#
-
7
コンボボックス表示文字列を取得する場合
C言語・C++・C#
-
8
CFileDialogの最初のディレクトリ設定
C言語・C++・C#
-
9
コンボボックスでドロップダウンリストにしたときに・・・・
Visual Basic(VBA)
-
10
エディットボックスのフォントを変えたい
C言語・C++・C#
-
11
リソースエディタでスタティックテキストの文字サイズの変更
C言語・C++・C#
-
12
ダイアログ内コントロールの位置取得について
C言語・C++・C#
-
13
起動時に何のダイアログも表示されない
C言語・C++・C#
-
14
エディットボックスの入力制限について
C言語・C++・C#
-
15
Win32APIで作るコンボボックスの高さの調整
C言語・C++・C#
-
16
ボタンの配置を変更したい
C言語・C++・C#
-
17
charからLPTSTRへの変換方法
C言語・C++・C#
-
18
UpdateData( FALSE); による文字列データの表示更新(VC++6.0)
C言語・C++・C#
-
19
イベントハンドラが取得できない VC++ MFC
C言語・C++・C#
-
20
EDITコントロールで入力できる文字を制限するには?
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスのドロップダウ...
-
C# ボタンコントロール内で文字...
-
ツールチップの表示
-
ボタンの表示の色、フォントを...
-
メッセージボックスのボタン文...
-
ダイアログに表示されるアイコ...
-
エディットコントロールの色の...
-
ダイアログを自分の好きな位置...
-
VC++.NET DLLからのダイアログ...
-
メッセージボックスを大きくす...
-
MFC ポップアップメニューのチ...
-
リソースファイルとは・・・
-
フォーム上のリストボックスに...
-
ダイアログの上のテキストボッ...
-
タイトルバー左の小さいアイコ...
-
C++でメモ帳の「行へ移動」機能...
-
グラフの交点の求め方(Excel)
-
エクセルで作った新しいウイン...
-
コントロールの書式設定で、“コ...
-
「アイテムは収集されました」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
ボタンの表示の色、フォントを...
-
ダイアログの上のテキストボッ...
-
リソースファイルとは・・・
-
ボタンの配置を変更したい
-
コンボボックスのドロップダウ...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログボックスで指定した...
-
C# ボタンコントロール内で文字...
-
メッセージボックスのボタン文...
-
ダイアログの一部を半透明化す...
-
vbscriptで、ファイル選択ダイ...
-
【MFC】sleep関数を用いたモー...
-
【VC++2005】ダイアログサイズ...
-
Visual C++のダイアログ編集画...
-
MFCのリストボックスについて
-
エディットボックスの処理で画...
-
ダイアログを自分の好きな位置...
-
MFCダイアログボックスを最前面...
おすすめ情報