Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить список дисков : [c][d][e]..... Где я ошибся? 
V
    Опции темы
Dmitriy2k
Дата 6.4.2009, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.11.2005

Репутация: нет
Всего: нет



Подскажите пожалуйста, как получить имена дисков: [a][c][d][e].... на компе.
пробовал так:
Код

.............................

LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_INITDIALOG:
//InitCommonControls();
static HWND hWndCombo;
hWndCombo=GetDlgItem(hDlg,IDC_COMBO1);
SendMessage(hWndCombo,CB_DIR,(WPARAM)DDL_DRIVES,NULL);
            
            return TRUE;

        case WM_COMMAND:break;
    }
    return FALSE;
}
.................................


я пытался их послать в ComboBox(который находится на диалоговом окне), но он пуст, и видимо мое сообщение :
SendMessage(hWndCombo,CB_DIR,(WPARAM)DDL_DRIVES,NULL);
не проходит?

Мне впринципе не очень важно, куда посылать список дисков, но хотелось бы лучше в ComboBox.

PM MAIL   Вверх
GremlinProg
Дата 6.4.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



если просто список, то есть функция GetLogicalDrives
она возвращает маску логических дисков:
первый бит маски - диск 'A'
второй бит маски - диск 'B'
третий - 'C'
и т.д.
Код

for( drive_letter = 'a' , mask = GetLogicalDrives() ; mask ; mask >>= 1 , ++drive_letter ){
  if(mask & 1){
    //  добавить строку с буквой drive_letter в комбо
  }
}



--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Dmitriy2k
Дата 6.4.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 6.11.2005

Репутация: нет
Всего: нет



GremlinProg: Спасибо, это даже в консоле работает!

Код

#include <windows.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
    
 char drive_letter;
 int mask = GetLogicalDrives();
    
 for( drive_letter = 'a'; mask ; mask >>= 1 , ++drive_letter ){
       if(mask & 1){
             printf("%c ",drive_letter);
             //потом в винде добавлю в combo
       }
 }
    
 return 0;
}




PM MAIL   Вверх
HappyLife
Дата 6.4.2009, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: нет
Всего: 8



You may also use GetLogicalDriveStrings. 
It fills a buffer with strings that specify valid drives in the system.
Код

DWORD WINAPI GetLogicalDriveStrings(
  __in   DWORD nBufferLength,
  __out  LPTSTR lpBuffer
);


where

Parameters

nBufferLength [in]
    The maximum size of the buffer pointed to by lpBuffer, in TCHARs. This size does not include the terminating null character. If this parameter is zero, lpBuffer is not used.
lpBuffer [out]
    A pointer to a buffer that receives a series of null-terminated strings, one for each valid drive in the system, plus with an additional null character. Each string is a device name.



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0712 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.