C:\home\SVGCats_src\src\InputIntDlg1.cpp
1|// InputIntDlg1.cpp : インプリメンテーション ファイル 2|// 3| 4|#include "mixer_precomp.h" 5|#ifdef USES_MXP_AUTOINC 6| #include "SVGCat.ah" 7|#endif 8| 9|#include <imm.h> 10| 11| 12|#ifdef _DEBUG 13|#define new DEBUG_NEW 14|#undef THIS_FILE 15|static char THIS_FILE[] = __FILE__; 16|#endif 17| 18|///////////////////////////////////////////////////////////////////////////// 19|// CInputIntDlg1 ダイアログ 20| 21| 22|CInputIntDlg1::CInputIntDlg1(CWnd* pParent /*=NULL*/) 23| : CDialog(CInputIntDlg1::IDD, pParent) 24|{ 25| //{{AFX_DATA_INIT(CInputIntDlg1) 26| m_Msg = _T(""); 27| m_Value = 0; 28| //}}AFX_DATA_INIT 29| m_bSetAtCursor = true; 30| m_XY.x = 0; m_XY.y = 0; 31| m_PenInputPanel = NULL; 32|} 33| 34| 35|void CInputIntDlg1::DoDataExchange(CDataExchange* pDX) 36|{ 37| CDialog::DoDataExchange(pDX); 38| //{{AFX_DATA_MAP(CInputIntDlg1) 39| DDX_Control(pDX, IDC_Value, m_ValueCtrl); 40| DDX_Control(pDX, IDC_Spin, m_Spin); 41| DDX_Text(pDX, IDC_Msg, m_Msg); 42| DDX_Text(pDX, IDC_Value, m_Value); 43| //}}AFX_DATA_MAP 44|} 45| 46| 47|BEGIN_MESSAGE_MAP(CInputIntDlg1, CDialog) 48| //{{AFX_MSG_MAP(CInputIntDlg1) 49| ON_WM_ACTIVATE() 50| //}}AFX_MSG_MAP 51|END_MESSAGE_MAP() 52| 53|///////////////////////////////////////////////////////////////////////////// 54|// CInputIntDlg1 メッセージ ハンドラ 55| 56|BOOL CInputIntDlg1::OnInitDialog() 57|{ 58| CDialog::OnInitDialog(); 59| 60| CString s; 61| RECT rect; 62| POINT point; 63| int w, h; 64| int scr_w = GetSystemMetrics( SM_CXFULLSCREEN ); 65| int scr_h = GetSystemMetrics( SM_CYFULLSCREEN ); 66| 67| 68| /* ペン入力パネルを設定する */ 69|#if 0 70| if ( m_PenInputPanel != NULL ) { 71| BSTR s; 72| HRESULT hr; 73| 74| hr = m_PenInputPanel->put_AttachedEditWindow( (LONG_PTR)m_Value2Ctrl.GetHwnd() ); 75| if ( hr != 0 ) error(); 76| 77| s = SysAllocString( OLESTR("DIGIT") ); 78| hr = m_PenInputPanel->put_Factoid( s ); 79| SysFreeString( s ); 80| if ( hr != 0 ) error(); 81| 82| hr = m_PenInputPanel->EnableTsf( VARIANT_TRUE ); 83| if ( hr != 0 ) error(); 84| 85| hr = m_PenInputPanel->put_AutoShow( VARIANT_FALSE ); 86| if ( hr != 0 ) error(); 87| 88| hr = m_PenInputPanel->put_HorizontalOffset( -40 ); 89| if ( hr != 0 ) error(); 90| hr = m_PenInputPanel->put_VerticalOffset( 47 ); 91| if ( hr != 0 ) error(); 92| } 93|#endif 94| 95| 96| /* テキストボックスの初期化をする */ 97| if ( m_PenInputPanel == NULL ) { 98| m_ValueCtrl.SetFocus(); 99| m_ValueCtrl.GetWindowText( s ); 100| m_ValueCtrl.SetSel( 0, s.GetLength() ); 101| } 102| else { 103|#if 0 104| char ss[16]; 105| 106| sprintf( ss, "%d", m_Value ); 107| m_Value2Ctrl.SetText( ss ); 108| m_Value2Ctrl.SetFocus(); 109| m_Value2Ctrl.SetSelStart( 0 ); 110| m_Value2Ctrl.SetSelLength( strlen(ss) ); 111|#endif 112| } 113| 114| m_Spin.SetBuddy( &m_ValueCtrl ); 115| m_Spin.SetRange32( m_Min, m_Max ); 116| 117| GetWindowRect( &rect ); 118| if ( m_bSetAtCursor ) { 119| GetCursorPos( &point ); 120| point.x += 0; point.y += 80; 121| } 122| else { 123| point.x = m_XY.x; point.y = m_XY.y; 124| } 125| w = rect.right - rect.left; h = rect.bottom - rect.top; 126| rect.left = point.x - w / 2; rect.right = rect.left + w; 127| rect.top = point.y - h / 2; rect.bottom = rect.top + h; 128| if ( rect.right >= scr_w ) { rect.left -= rect.right - scr_w; rect.right = scr_w; } 129| if ( rect.bottom >= scr_h ) { rect.top -= rect.bottom - scr_h; rect.bottom = scr_h; } 130| if ( rect.left < 0 ) { rect.right += -rect.left; rect.left = 0; } 131| if ( rect.top < 0 ) { rect.bottom += -rect.top; rect.top = 0; } 132| MoveWindow( &rect ); 133| 134| ImmAssociateContext( m_ValueCtrl.m_hWnd, NULL ); /* 日本語入力を不可にする, imm.h, imm32.lib */ 135|// ImmAssociateContext( m_Value2Ctrl.m_hWnd, NULL ); 136| 137|// m_ValueCtrl.ShowWindow( m_PenInputPanel == NULL ? SW_SHOW : SW_HIDE ); 138| m_ValueCtrl.ShowWindow( SW_SHOW ); 139|// m_Value2Ctrl.ShowWindow( m_PenInputPanel == NULL ? SW_HIDE : SW_SHOW ); 140| 141| return TRUE; // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります 142| // 例外: OCX プロパティ ページの戻り値は FALSE となります 143|} 144| 145|void CInputIntDlg1::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized) 146|{ 147| CDialog::OnActivate(nState, pWndOther, bMinimized); 148| 149| if ( nState == WA_ACTIVE || nState == WA_CLICKACTIVE ) { 150|#if 0 151| if ( m_PenInputPanel != NULL ) { 152| HRESULT hr; 153| 154| m_Value2Ctrl.SetFocus(); 155| 156| hr = m_PenInputPanel->put_Visible( VARIANT_TRUE ); 157| if ( hr != 0 ) return; /* コントロールが準備できていない */ 158| } 159|#endif 160| } 161|} 162| 163|void CInputIntDlg1::OnOK() 164|{ 165|#if 0 166| if ( m_PenInputPanel != NULL ) { 167| VARIANT_BOOL busy; 168| CString s; 169| 170| m_PenInputPanel->CommitPendingInput(); 171| for (;;) { 172| m_PenInputPanel->get_Visible( &busy ); 173| if ( ! busy ) break; 174| Sleep(50); 175| } 176| 177| s = m_Value2Ctrl.GetText(); 178| m_ValueCtrl.SetWindowText( s ); 179| } 180|#endif 181| 182| CDialog::OnOK(); 183|} 184| 185|