vs2005 WTL点击ComboBox的下拉框那个黑三角形,那个下拉矩形框就是没弹得出来
偶在测试过,新建新项目,把下面ComboBox代码复制过程序,都能弹出下拉框,弄了两天,都找不到原因,
偶的程序可能有问题了...// fortuneView.h : interface of the CFortuneView class
//
/////////////////////////////////////////////////////////////////////////////#pragma onceclass CFortuneView : public CWindowImpl<CFortuneView>
{
public:
DECLARE_WND_CLASS(NULL)
//DECLARE_FRAME_WND_CLASS(NULL, 0) BOOL PreTranslateMessage(MSG* pMsg); BEGIN_MSG_MAP(CFortuneView)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()// Handler prototypes (uncomment arguments if needed):
// LRESULT MessageHandler(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
// LRESULT CommandHandler(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
// LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/){ CRect rc1(10,10,100,30);
m_cb.Create(m_hWnd, rc1, NULL, WS_CHILD | WS_VISIBLE | CBS_DROPDOWN | CBS_AUTOHSCROLL); //WS_CLIPSIBLINGS | WS_CLIPCHILDREN
m_cb.SetFont(AtlGetDefaultGuiFont());                  m_cb.AddString(_T("ComboBox1"));
m_cb.AddString(_T("ComboBox2"));
m_cb.AddString(_T("ComboBox3"));
m_cb.AddString(_T("ComboBox4"));
m_cb.AddString(_T("ComboBox5"));
m_cb.AddString(_T("ComboBox6"));
m_cb.AddString(_T("ComboBox7"));
m_cb.AddString(_T("ComboBox8"));
m_cb.AddString(_T("ComboBox9"));
m_cb.AddString(_T("ComboBox0")); return 0;
} LRESULT OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/);private:
CComboBox m_cb;
};

解决方案 »

  1.   

    动态创建得也要设置高度啊,你动态创建得时候传的CRect变量的那个高度就是你CComboBox得下拉列表得高度,如果你设置为25(就是你只设置一行得高度)的话,是肯定拉不出来了,可以把那个高度设置为100试试看,就明白了
      

  2.   

    CRect rc1(10,10,100,30);把这个改为CRect rc1(10,10,100,300); 运行一看就明白咯
      

  3.   

    晕死,原来这样啊...
    偶还以为那个rc1只是ComboBox的框框的大小,没想到也要把那个下框的BOX算进去啊...
    谢谢了...
      

  4.   

    对了,偶不曾记得过书上有清楚讲过要也弹出的Box高算进去...