Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
20 / 20 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
1

Зачем нужна функция GetPrivateProfileString?

12.11.2014, 09:41. Показов 1230. Ответов 5
Метки нет (Все метки)

Объяснить "кусочек" кода)), из то го что есть я понял что с начало в комбобокс добавляются значения с помощью функции InserCBItem, далее вызывается функция ReadCBConfig которая в свою очередь вызывает ReadConfigString
далее GetPrivateProfileString и возвращает первое значение в комбобоксе и далее выставляется фокус в комбобоксе на это значение. Но суть функции GetPrivateProfileString так и не понял читал на msdn но не особо понял там говорится что функция предназначена для чтения данных из ini файлов.


C++
1
2
3
    InserCBItem( &m_Polarity, "Rise", SPI_CPOL_RISE );
    InserCBItem( &m_Polarity, "Fall", SPI_CPOL_FALL );
    ReadCBConfig( &m_Polarity, "POLARITY");


C++
1
2
3
4
5
6
7
8
void CSPIDialog::InserCBItem(
                             CComboBox *pCB, 
                             LPCTSTR lpszText, 
                             DWORD dwData)
{
    pCB->AddString(lpszText);
    pCB->SetItemData(pCB->GetCount()-1, dwData);
}


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void CSPIDialog::ReadCBConfig(
                             CComboBox *pCB, 
                             LPCTSTR lpszVarName)
{
    int index;
    CString str;
 
    str=m_pDlg->ReadConfigString(
        CONFIG_SPI_SECTION_NAME,
        lpszVarName,
        "");
 
    index=pCB->FindString(0, str);
 
    if(-1==index)
    {
        index=0;
    }
 
    pCB->SetCurSel(index);
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CString CSubWinDlg::ReadConfigString(
                                   LPCTSTR pSectionName, 
                                   LPCTSTR pKeyName, 
                                   LPCTSTR pDefault)
{
    char str[256];
    CString ret;
 
    if(GetPrivateProfileString(
        pSectionName,
        pKeyName,
        pDefault,
        str,
        sizeof(str),
        m_IniFileName))
    {
        ret=str;
    }
 
    return ret;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2014, 09:41
Ответы с готовыми решениями:

Зачем нужна функция cin.ignore()?
Объясните пожалуйста почему если убрать из кода cin.ignore(); , в 55 строке присваиваем n = 1, оно...

Зачем нужна член-функция cout.setf?
Всем здравствуйте, у меня такой вопрос: Начал изучать программирование C++. Попался мне вот такой...

Что такое виртуальная функция и зачем она нужна?
Мне с трудом пришлось понять, пока не прочитал книгу и не проработал код на виртуальных функциях....

Что делает функция compare в коде и зачем она нужна в qsort
Объясните, пожалуйста, что делает функция compare (17 строка) в данном случае и зачем она нужна в...

5
Эксперт С++
4968 / 3075 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
12.11.2014, 11:11 2
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Цитата Сообщение от generation472 Посмотреть сообщение
там говорится что функция предназначена для чтения данных из ini файлов
Так и есть. Эта функция читает строку из указанной секции INI-файла, которая соответствует указанному ключу.
[section]
key=string
1
20 / 20 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
12.11.2014, 11:50  [ТС] 3
castaway, получается что данные из комбобокса хранятся в ini файлов? и зачем это делать нельзя просто поставить фокус в комбобоксе на первое значение?
0
Эксперт С++
4968 / 3075 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
12.11.2014, 12:10 4
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Насколько я понял из кода, в INI-файле хранится выбранный пункт ComboBox. Могу предположить что при закрытии программы, текущий выбор ComboBox сохраняется в INI-файле. При запуске программы, из INI-файла читается последний выбранный пункт ComboBox и устанавливается текущим.
1
20 / 20 / 7
Регистрация: 04.11.2011
Сообщений: 566
Записей в блоге: 1
12.11.2014, 12:27  [ТС] 5
castaway, да есть и такая функция

C++
1
2
3
4
5
6
7
8
9
10
11
BOOL CSubWinDlg::WriteConfigString(
                                   LPCTSTR pSectionName, 
                                   LPCTSTR pKeyName, 
                                   LPCTSTR pString)
{
    return WritePrivateProfileString(
        pSectionName,
        pKeyName,
        pString,
        m_IniFileName);
}
спс большое разобрался

Добавлено через 8 минут
castaway, а где хранится этот файл так как я его в проекте не нашёл, или он виртуально создаётся?
0
Эксперт С++
4968 / 3075 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
12.11.2014, 13:21 6
Лучший ответ Сообщение было отмечено generation472 как решение

Решение

Они хранятся в директории Windows.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2014, 13:21

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Зачем нужна инкапсуляция?
Зачем, например, нужно писать переменную в private поле, и обращаться к нему с помощью функций в...

Зачем нужна перестановка?
для чего нужна перестановка в этой программе? #include <stdio.h> #include <ctype.h> #include...

Зачем нужна инкапсуляция?
Никак не могу понять, зачем в классах нужно объявлять атрибуты в private. Везде пишут, что, чтобы...

Зачем нужна конструкция else if
Для чего используется конструкция else if. В чем различие между просто if


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.