InputIntDlg1.cpp

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|