InputComboBox.cpp
上传用户:tenhai
上传日期:2021-02-19
资源大小:492k
文件大小:2k
源码类别:

组合框控件

开发平台:

Visual C++

  1. // InputComboBox.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "prop.h"
  5. #include "InputComboBox.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CInputComboBox
  13. CInputComboBox::CInputComboBox()
  14. {
  15. }
  16. CInputComboBox::~CInputComboBox()
  17. {
  18. }
  19. BEGIN_MESSAGE_MAP(CInputComboBox, CComboBox)
  20. //{{AFX_MSG_MAP(CInputComboBox)
  21. ON_CONTROL_REFLECT(CBN_SELCHANGE, OnSelchange)
  22. //}}AFX_MSG_MAP
  23. END_MESSAGE_MAP()
  24. /////////////////////////////////////////////////////////////////////////////
  25. // CInputComboBox message handlers
  26. void CInputComboBox::OnSelchange() 
  27. {
  28. // TODO: Add your control notification handler code here
  29. int nIndex = GetCurSel();
  30. GetLBText(nIndex, m_strInput);
  31. // InvokeAction();
  32. }
  33. BOOL CInputComboBox::PreTranslateMessage(MSG* pMsg) 
  34. {
  35. // TODO: Add your specialized code here and/or call the base class
  36. if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) {
  37. OnCmd();
  38. }
  39. return CComboBox::PreTranslateMessage(pMsg);
  40. }
  41. void CInputComboBox::InvokeAction()
  42. {
  43. extern CPropApp theApp;
  44. theApp.ExecCmd(m_strInput);
  45. }
  46. void CInputComboBox::UpdateInput()
  47. {
  48. int nIndex=AddUniqueString(m_strInput);
  49. SetCurSel(nIndex);
  50. }
  51. void CInputComboBox::OnCmd()
  52. {
  53. GetWindowText(m_strInput);
  54. AddUniqueString(m_strInput);
  55. InvokeAction();
  56. }
  57. int CInputComboBox::AddUniqueString(CString str)
  58. {
  59. int nIndex=0;
  60. int nCount=GetCount();
  61. nIndex=FindStringExact(nIndex, LPCSTR(str));
  62. if (nIndex!=LB_ERR)
  63. return nIndex;
  64. else
  65. return InsertString(0, (LPCSTR)str);
  66. }