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|