void CFirstDlg::InitCombo()
{
CString* pArray = new CString;
char device;
int inser = 0;
DWORD dw=::GetLogicalDrives();
DWORD dwMask=1;
for(int i=0;i<32;i++)
{
if((dw & dwMask)!=0)
{
device='A'+i;
device=device&&":";
TRACE("%s\n",device);
pArray->Insert(inser,device);
inser=inser+1;
}
dwMask=dwMask*2;
}
int Leng = pArray->GetLength();
if((pArray->IsEmpty())!=0)
{
for(i=0;i<Leng-1;i++)
{
TRACE("%s\n",pArray[i]);
}
}
for(i=0;i<Leng-1;i++)
{
m_Device.AddString(pArray[i]);
}
delete pArray;
}
编译能通过,执行所找到的磁盘有问题

解决方案 »

  1.   

    device=device&&":";//什么意思?
    device='A'+i;//device!=0
    //":"!=NULL
    //因此,device=1
      

  2.   

    zswzwy(对! 我就是被封杀的☆ZSWZWY☆!很感谢你,但是我是在学习不想让人帮写wzt2000(愚人码头):我写上注释,你们再看一下,而且我也改了一下:
    void CFirstDlg::InitCombo()
    {
    CString* pArray = new CString;//存储盘符的数组
    CString device;//从GetLogicalDrives函数中取出有几个驱动器,有则加入到pArray;
    int inser = 0;\\插入位置
    DWORD dw=::GetLogicalDrives();
    DWORD dwMask=1;
    for(int i=0;i<32;i++)
    {
    if((dw & dwMask)!=0)
    {
    device='A'+i;
    device=device+":";\\连接成A:这种形式
    TRACE("%s\n",device);\\调试输出
    pArray->Insert(inser,device);\\插入数组,可能是这里错了,因为TRACE("%s\n",device);在Dubug窗口有输出,而TRACE("%s\n",pArray[i]);就没有了。
    inser=inser+1;\\改变下一个位置
    }
    dwMask=dwMask*2;
    }
    int Leng = pArray->GetLength();\\得到长度
    if((pArray->IsEmpty())!=0)
    {
    for(i=0;i<Leng-1;i++)
    {
    TRACE("%s\n",pArray[i]);
    }
    }
    for(i=0;i<Leng-1;i++)
    {
    m_Device.AddString(pArray[i]);
    }
    delete pArray;
    }
      

  3.   

    有什么问题?
    一个字符不就是一个数字吗?
    A的代码是多少我忘了,但是‘A’+1就是B是没有错的