这个函数是在消息WM_INITDIALOG用的 
目的是在程序启动时自动在ComboBox中加入各驱动器的根目录
但是编译运行程序后ComboBox里没有任何东西
但是我在跟踪这段代码后 ComboBox_AddString()是执行成功的 返回的是ComboBox的索引
但是却显示编译运行后 却没有添加的东西
这是代码void FindDiskRoot(void)
{
TCHAR szLogicalDriverStrings[1024];
PTCHAR szDrive; ZeroMemory(szLogicalDriverStrings,1024);
GetLogicalDriveStrings(1023,szLogicalDriverStrings); //获取所有驱动器根目录
szDrive = (PTCHAR)szLogicalDriverStrings; //指向第一个驱动器 do
{
ComboBox_AddString( GetDlgItem(g_hDlg,IDC_COMBO), szDrive);//g_hDlg为主对话框句柄
szDrive += (lstrlenW(szDrive)+1);//指向下一个驱动器
}while(*szDrive!='\x00'); return;
}

解决方案 »

  1.   

    TCHAR szLogicalDriverStrings[1024];
        PTCHAR szDrive;

        ZeroMemory(szLogicalDriverStrings,1024);
        GetLogicalDriveStrings(1023,szLogicalDriverStrings); //获取所有驱动器根目录
        szDrive = (PTCHAR)szLogicalDriverStrings; //指向第一个驱动器

        do
        {
    SendMessage(GetDlgItem(g_hDlg, IDC_COMBO1), CB_ADDSTRING, 0, (LPARAM)szDrive);
            szDrive += (_tcslen(szDrive)+1);//指向下一个驱动器
        }while(*szDrive!='\x00');
      

  2.   

    用vs2010测试了,代码没问题
    不知你开发环境是?
    先打印出szDrive的内容看看
      

  3.   

    MFC的combobox貌似再窗体上添加后,要选中,把鼠标放到那个三角上往下拉一下,拉大点
      

  4.   

    在编辑对话框时,把ComboBox 控件拉长。拉大。
      

  5.   

    return返回之前别忘了设置Combox的当前选项;
    ComboBox_SetCurSel(GetDlgItem(g_hDlg, IDC_COMBO1),0);
      

  6.   

    在创建窗口函数中无论是CreateWindow还是CreateWindowEx,你把那个CreateWindow中的第7个参数 int nHeight, 或者 CreateWindowEx第8个参数int nHeight,搞得大一点就行了。我以前也有过类似情况。
      

  7.   

    AddString()后调用CComBoBox:SetCurSel(0)显示第一项
      

  8.   

    如果你使用的Combox控件的话,那么你在添加控件的时候要把这个控件向下拉长一点,这样才会显示内容