2010-03-25 3 views
11

MSVS 2008에서 코드를 통해 초기화하는 ComboBox 컨트롤이있는 앱을 코딩하고 있습니다.드롭 다운 메뉴를 클릭하면 MFC 콤보 상자 컨트롤에 전체 항목 목록이 표시되지 않습니다.

static char*     OptionString[4] = {"Opt1", 
                "Opt2", 
                "Opt3", 
                "Opt4"}; 


BOOL CMyAppDlg::OnInitDialog() 
{ 
    CDialog::OnInitDialog(); 

// Set the icon for this dialog. The framework does this automatically 
// when the application's main window is not a dialog 
SetIcon(m_hIcon, TRUE); // Set big icon 
SetIcon(m_hIcon, FALSE); // Set small icon 

    // TODO: Add extra initialization here 

    m_Option.AddString(OptionString[0]); 
    m_Option.AddString(OptionString[1]); 
    m_Option.AddString(OptionString[2]); 
    m_Option.AddString(OptionString[3]); 
    m_Option.SetCurSel(0); 

    return TRUE; // return TRUE unless you set the focus to a control 
} 

위의 코드에서 m_Option은 ComboBox Control의 컨트롤 변수입니다. 나는 응용 프로그램을 구축하고 아래쪽 화살표를 클릭 할 때 (나는 내 ​​코드를 통해이 선택 했으므로)

지금, 드롭 다운 상자는 첫 번째 옵션을 보여줍니다. 그러나 키보드의 아래쪽 화살표 키를 누르면 삽입 한 순서대로 옵션이 순환되지만 상자에 1 개 이상의 옵션이 표시되지 않습니다. 그래서, 사용자가 option3을 선택하기를 원한다면 옵션 1과 2를 순환시켜야합니다 !! 일단 키보드를 사용하여 옵션을 선택 했더라도 적절한 이벤트 핸들러가 해고되었지만 이해할 수있는대로이 동작에 의해 miffed됩니다.

나뿐만 아니라 콤보 상자 컨트롤의 속성을 나열하고있어 - (나머지는 false로 설정) 해당 속성 만 : - 드롭 다운

  • 수직 스크롤 막대
    1. 유형 눈에 보이는 탭 위치

    이 지금 주 동안 저를 도청했다. 누구 pls 내게 계몽 수 있습니까?

  • 답변

    19

    대화 상자 레이아웃 디자이너에서 대화 상자를 디자인하는 동안 콤보 상자의 "아래쪽 화살표"를 클릭하십시오. 그런 다음 콤보 상자의 윤곽선 아래로 끌어 내려 높이를 높일 수 있습니다.

    +3

    MFC는 빤다! 이것은 재산이어야한다. .. 그 밖의 방법은 어느 정도 알고있다! !! http://www.eggheadcafe.com/software/aspnet/29801328/how-to-increase-the-ccomb.aspx – TCSGrad

    +2

    에서 : 은 어쨌든, MFC와 함께 붙어 (나 같은) PPL을 위해, 여기에 좋은 링크입니다 공평성, 그건 MFC가 아니라 네이티브 코드 대화 디자이너의 것입니다. 그리고 이러한 일반적인 컨트롤은 "컨트롤"에 대한 아이디어보다 앞서 생각합니다 (속성 등). 또한 MFC는 C에서 스트레이트 API 프로그래밍보다 훨씬 낫습니다! 그렇습니다. 콤보 상자의 드롭 다운 높이를 설정 한이 관용구를 모르는 사람이라면 스스로 찾을 수 없을 것입니다. – jwismar

    +0

    와우, C# 및 VS2008-10에서 나온 사람들에게 C# 이전의 제품을 사용 해본 적이 없으므로 이는 매우 직관력이없는 것처럼 보입니다. 나는이 질문이 없으면 이것을 결코 이해하지 못했을 것이라고 확신한다. 감사! – JToland

    9

    디자이너의 콤보 상자 드롭 다운 높이를 늘려야합니다.

    디자이너를 통해 기본적으로 ComboBox 너비의 크기를 조정할 수 있습니다. 드롭 다운 목록 높이를 조정하려면 오른쪽의 드롭 다운 화살표를 클릭해야합니다. 그러면 드롭 다운 컨트롤 높이의 크기를 조정할 수 있습니다. 이것은 매우 쉬운 것처럼 보이지만 아무도 알려주지 않는다면 그것은 직관적 인 것입니다.

    희망 사항을 이해합니다.

    +0

    어떻게 수행하나요? 적어도 재산 이름을 말해 줄 수 있니? – TCSGrad

    +0

    알았어 .... 나는 처음에는 UR로 편집 한 것을 보지 못했고 다른 하나는 대답으로 표시했다 !! 어쨌든, 둘 다 덕분에 ... 나는 또한 근면하게 이것을 설명하는 링크를 포함 ... :) – TCSGrad

    2

    콤보 상자의 드롭 다운 높이를 설정하는 또 다른 방법은 rc 파일을 수동으로 편집하는 것입니다. 드롭 다운 높이 (이 예제에서는 72)를 담당하는 다섯 번째 매개 변수를 설정할 수 있습니다.

    COMBOBOX IDC_COMBOBOX1,17,35,157,72,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP 
    
    0

    또한이 문제로 인해 어려움을 겪었으며 마침내 MFC 응용 프로그램에 대한 해결책을 찾았습니다. 문제는 응용 프로그램에 매니페스트 버전 6을 적용하지 않았기 때문입니다. 이 문제를 해결하기 위해 다음과 같이 매니페스트를 표시하는 코드를 추가했습니다.

    ifdef _UNICODE 
    if defined _M_IX86 
    pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") 
    elif defined _M_X64 
    pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") 
    else 
    pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 
    endif 
    endif 
    

    잘 작동했습니다. 자세한 내용은 [여기] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb773175%28v=vs.85%29.aspx) 링크를 참조하십시오. 도움이 되길 바랍니다.

    관련 문제