とにかくwin32のCOMBOXOXのドロップダウンリストの幅を制御することはできますか?どのようにコンボボックスのドロップダウンリストボックスの幅を制御しますか
答えて
私は自分のアプリケーションクラスのパブリックメソッドがあります。
void CSoundRotaApp::UpdateComboDroppedWidth(CComboBox& rCombo)
{
int iWidth = theApp.GetRequiredComboDroppedWidth(rCombo);
if (iWidth > rCombo.GetDroppedWidth())
rCombo.SetDroppedWidth(iWidth);
}
このメソッドを呼び出します。
int CSoundRotaApp::GetRequiredComboDroppedWidth(CComboBox& rCombo)
{
CString str;
CSize sz;
int dx = 0;
TEXTMETRIC tm;
CDC* pDC = rCombo.GetDC();
CFont* pFont = rCombo.GetFont();
// Select the listbox font, save the old font
CFont* pOldFont = pDC->SelectObject(pFont);
// Get the text metrics for avg char width
pDC->GetTextMetrics(&tm);
for (int i = 0; i < rCombo.GetCount(); i++)
{
rCombo.GetLBText(i, str);
sz = pDC->GetTextExtent(str);
// Add the avg width to prevent clipping
sz.cx += tm.tmAveCharWidth;
if (sz.cx > dx)
dx = sz.cx;
}
// Select the old font back into the DC
pDC->SelectObject(pOldFont);
rCombo.ReleaseDC(pDC);
// Adjust the width for the vertical scroll bar and the left and right border.
dx += ::GetSystemMetrics(SM_CXVSCROLL) + 2 * ::GetSystemMetrics(SM_CXEDGE);
return dx;
}
は、この情報がお役に立てば幸いです。
+1であり、 'UpdateComboDroppedWidth'を呼び出す代わりに、ドロップダウンイベントハンドラで行うことができます。 – acraig5075
このコードは私にとっては妥当ですが、なぜそれを使用する必要があるのでしょうか?私はコンボボックスのドロップ幅をカスタマイズする必要はありませんでした。動的に項目を追加したり削除していても、常に適切な処理を行います。 –
@CodyGrayはローカリゼーションなどの理由で問題が発生しましたが、ドロップリストは十分に幅がありませんでした。コンボの幅にデフォルト設定されていて、幅を拡張していませんでした。それは私の経験でした。 –
- 1. どのようにModernUIダイアログの幅を制御しますか?
- 2. geom_barの幅を制御しますか?
- 3. SELECTドロップダウンの幅はどのように制御できますか?
- 4. オーバーフローメニューの幅を制御するにはどうすればよいですか?
- 5. Spring&Hibernateでトランザクションをどのように制御しますか?
- 6. どのようにスレッドの数を制御できますか?
- 7. コンボボックスのGtk(mm)制限幅
- 8. サブレポートのレイアウトはどのように制御できますか?
- 9. Javaでのリソースのキャッシングをどのように制御しますか?
- 10. アプリケーションタイプのバージョン保持をどのように制御しますか?
- 11. どのようにHTMLの互換モードを制御しますか
- 12. Google Androidマップでオーバーレイアイテムのサイズをどのように制御しますか?
- 13. ZF2のZend \ Dbはトランザクションをどのように制御しますか?
- 14. コンボボックスを使用してリストボックスを制御できますか?
- 15. 別のコンボボックスのスイングを使用してコンボボックスを制御する方法
- 16. TensorFlowの開発では、どのようにソースをオープンするかどうかを制御しますか?
- 17. 最後の列の幅を制御するにはどうすればよいですか?
- 18. どのようにビュークラスのクエリセットの項目を制御できますか?
- 19. キャンバスゲーム|どのように火災の速度を制御する?
- 20. 帯域幅の制限はどのように機能していますか?
- 21. 制御ファイル内のデータをどのように検証できますか?
- 22. コンパイラ(GCC)はC++のアクセス制御をどのように扱いますか?
- 23. どのように私はcassandraの複製を制御できますか?
- 24. 多くのスレッドをどのように制御できますか?
- 25. divの幅を制御しています
- 26. UIScrollViewの幅と高さの制御
- 27. どのようにWindowsシステムでサウンドを制御するには?
- 28. Matlabではプロット時にカラーイテレータをどのように制御できますか?
- 29. 表示するモニタプロットをどのように制御できますか?
- 30. .NETサービス参照のファイル名はどのように制御できますか?
[CB_SETDROPPEDWIDTH](https://msdn.microsoft.com/en-us/library/windows/desktop/bb775901.aspx) – IInspectable
これをちょっと追加すると、SendDlgItemMessage(m_hWnd、IDC_MYCOMBO、CB_SETDROPPEDWITH、width、0)の処理が終了しました。ここでの幅はピクセル単位です。 – MyDeveloperDay