コンボボックスの高さ指定

//*******************************************************************************
// 関数名 :コンボボックスの高さを,親ウィンドウの下に合わせる
// 作成日 :’09/07/01
//*******************************************************************************
#ifndef CBM_FIRST       // C:Program Files (x86)Microsoft SDKsWindowsv7.0AIncludeCommCtrl.h
#define CBM_FIRST 0x1700  // Combobox control messages
#define CB_SETMINVISIBLE (CBM_FIRST + 1)
#define CB_GETMINVISIBLE (CBM_FIRST + 2)
#define CB_SETCUEBANNER (CBM_FIRST + 3)
#define CB_GETCUEBANNER (CBM_FIRST + 4)
#endif

inline
BOOL FitDropHeight (CComboBox* ctrl,CWnd* parent)
{
  if (ctrl == NULL)               { return FALSE ; }
  if (ctrl->m_hWnd == NULL) { return FALSE ; }
  CRect tRect ;
  ctrl->GetWindowRect (&tRect) ;
  parent->ScreenToClient(&tRect) ;
  CRect pRect ;
  parent->GetClientRect(&pRect) ;
  tRect.bottom= pRect.bottom ;
  ctrl->MoveWindow(&tRect) ;
     // ここから上は,Visual Style が無効な exe の時に動作する
  { // ここから下は,Visual Style が有効な場合に必要 MoveWindow では変更されない?
    int minV = tRect.Height()/ctrl->GetItemHeight(0) ;
    if (minV >= 3) { minV-= 2 ; }
    if (minV <= 0) { minV = 1 ; }
    ctrl->SendMessage(CB_SETMINVISIBLE,minV) ;
    }
  return TRUE ;
  }

CB_SETCUEBANNER
CComboBox::SetCueBanner

Windows Vista コントロールの拡張


Windows Vista コモン コントロールの作成要件


サポートされなくなった ANSI API

この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。

  にほんブログ村 IT技術ブログへ

  • Categories:


コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください