怎样CreateWindow创建ComboBox,然后演示一下怎样使用,比如往里面加几条和处理Change事件。

解决方案 »

  1.   

    Using Combo Boxes 
    http://msdn.microsoft.com/library/en-us/shellcc/platform/commctls/comboboxes/usingcomboboxes.asp?frame=true
      

  2.   

    1、生成Dialog工程为测试工程,工程名为CreateCombox
    2、在CCreateComboxDlg类中声明ComboBox类的对象
       CComboBox  m_wndCombo;
    3、在BOOL CCreateComboxDlg::OnInitDialog()函数结尾处(return 前)添加如下语句
        if (!m_wndCombo.Create(
                       WS_CHILD | WS_VISIBLE | 
                       WS_VSCROLL | CBS_DROPDOWNLIST,
     CRect(1, 1, 200, 300), this, 100))
    {
    TRACE0("Failed to create ComboBox\n");
    return -1;
    }
    m_wndCombo.ShowWindow(SW_NORMAL);
    m_wndCombo.AddString("Test 1");
    m_wndCombo.AddString("Test 2");
    m_wndCombo.AddString("Test 3");
    m_wndCombo.AddString("Test 4");
              m_wndCombo.SetCurSel(0);4、生成void CCreateComboxDlg::OnOK()函数,添加测试语句,函数如下
    void CCreateComboxDlg::OnOK() 
    {
    CString strTemp;
    m_wndVCKBase.GetWindowText(strTemp);
    AfxMessageBox(strTemp);
    }   
      

  3.   

    我编译时说找不到CComboBox定义,加了#include winuser.h windows.h后依然没有,是不是还有什么要加
      

  4.   

    处理OnChange事件也比较容易in .h
    afx_msg void OnCbnSelchangeCombo1();
    in.cpp
    ON_CBN_SELCHANGE( YouCtrlID/*100*/, OnCbnSelchangeCombo1)void CYouDlg::OnCbnSelchangeCombo1()
    {
    // TODO: 在此添加控件通知处理程序代码
    }
      

  5.   

    现在我发现是因为我的这个工程不能用include下面这些头文件
    #include <afxwin.h>         // MFC core and standard components
    #include <afxext.h>         // MFC extensions
    #include <afxdisp.h>        // MFC Automation classes
    #include <afxdtctl.h>
    如果在stdaxf.h中加了,就会报错这么说,我不能用CComboBox Class,CB_ADDSTRING程序也不会知道是什么,因为这些都是在windowsh里定义的,我找到了windows。h,找到CB_ADDSTRING对应的是0X147但没用。
      

  6.   

    HWND m_hComboxHandle =CreateWindow(_T("ComboBoX"),
    _T("combo1"),
    WS_CHILD | WS_VSCROLL | WS_VISIBLE | CBS_DROPDOWNLIST | CBS_HASSTRINGS  ,
    0,0,200,20,
    this->m_hWnd ,NULL,
    NULL,NULL); ::ShowWindow(m_hComboxHandle,SW_SHOW);
    ((CComboBox*)FromHandle( m_hComboxHandle ) )->AddString( "aaaaa" ) ;
    ((CComboBox*)FromHandle( m_hComboxHandle ) )->AddString( "bbbbb" ) ;
    ((CComboBox*)FromHandle( m_hComboxHandle ) )->AddString( "cccccc" ) ; ((CComboBox*)FromHandle( m_hComboxHandle ) )->SetTopIndex( 10  ) ;