InputSelectDlg.cpp

C:\home\SVGCats_src\src\InputSelectDlg.cpp

[関数 | マクロ]

関数一覧

マクロ一覧


   1|// InputSelectDlg.cpp : インプリメンテーション ファイル 
   2|//
   3|
   4|#include "mixer_precomp.h"
   5|#ifdef  USES_MXP_AUTOINC
   6| #include  "SVGCat.ah"
   7|#endif
   8|
   9|#ifdef _DEBUG
  10|#define new DEBUG_NEW
  11|#undef THIS_FILE
  12|static char THIS_FILE[] = __FILE__;
  13|#endif
  14|
  15|/////////////////////////////////////////////////////////////////////////////
  16|// CInputSelectDlg ダイアログ
  17|
  18|
  19|CInputSelectDlg::CInputSelectDlg(CWnd* pParent /*=NULL*/)
  20|  : CDialog(CInputSelectDlg::IDD, pParent)
  21|{
  22|  //{{AFX_DATA_INIT(CInputSelectDlg)
  23|  m_Msg = _T("");
  24|  //}}AFX_DATA_INIT
  25|  m_Value = 0;
  26|  m_Items = NULL;
  27|  m_bSetAtCursor = true;
  28|}
  29|
  30|
  31|void CInputSelectDlg::DoDataExchange(CDataExchange* pDX)
  32|{
  33|  CDialog::DoDataExchange(pDX);
  34|  //{{AFX_DATA_MAP(CInputSelectDlg)
  35|  DDX_Control(pDX, IDC_Value, m_ValueCtrl);
  36|  DDX_Text(pDX, IDC_Msg, m_Msg);
  37|  //}}AFX_DATA_MAP
  38|}
  39|
  40|
  41|BEGIN_MESSAGE_MAP(CInputSelectDlg, CDialog)
  42|  //{{AFX_MSG_MAP(CInputSelectDlg)
  43|  ON_CBN_CLOSEUP(IDC_Value, OnCloseupValue)
  44|  //}}AFX_MSG_MAP
  45|END_MESSAGE_MAP()
  46|
  47|/////////////////////////////////////////////////////////////////////////////
  48|// CInputSelectDlg メッセージ ハンドラ
  49|
  50|
  51|BOOL CInputSelectDlg::OnInitDialog()
  52|{
  53|  CDialog::OnInitDialog();
  54|
  55|  StrX_ListElem*  s;
  56|  RECT   rect;
  57|  POINT  point;
  58|  int  w, h;
  59|  int  scr_w = GetSystemMetrics( SM_CXFULLSCREEN );
  60|  int  scr_h = GetSystemMetrics( SM_CYFULLSCREEN );
  61|
  62|  m_ValueCtrl.ResetContent();
  63|  for ( ListX_forEach( m_Items, &s, StrX_ListElem ) ) {
  64|    m_ValueCtrl.AddString( s->p );
  65|  }
  66|  m_ValueCtrl.SetCurSel( m_Value );
  67|
  68|  GetWindowRect( &rect );
  69|  if ( m_bSetAtCursor )  GetCursorPos( &point );
  70|  else  point = m_XY;
  71|  point.x += 80;
  72|  w = rect.right - rect.left;   h = rect.bottom - rect.top;
  73|  rect.left = point.x - w / 2;  rect.right = rect.left + w;
  74|  rect.top = point.y - h / 2;   rect.bottom = rect.top + h;
  75|  if ( rect.right >= scr_w )  { rect.left -= rect.right - scr_w;  rect.right = scr_w; }
  76|  if ( rect.bottom >= scr_h )  { rect.top -= rect.bottom - scr_h;  rect.bottom = scr_h; }
  77|  if ( rect.left < 0 )  { rect.right += -rect.left;  rect.left = 0; }
  78|  if ( rect.top < 0 )  { rect.bottom += -rect.top;  rect.top = 0; }
  79|  MoveWindow( &rect );
  80|
  81|  ShowWindow( SW_SHOW );
  82|
  83|  m_ValueCtrl.ShowDropDown();
  84|
  85|  return TRUE;  // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
  86|                // 例外: OCX プロパティ ページの戻り値は FALSE となります
  87|}
  88|
  89|
  90|void CInputSelectDlg::OnOK()
  91|{
  92|  m_Value = m_ValueCtrl.GetCurSel();
  93|
  94|  CDialog::OnOK();
  95|}
  96|
  97|
  98|void CInputSelectDlg::OnCloseupValue()
  99|{
 100|  OnOK();
 101|}
 102| 
 103|