MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« : 24-08-2004 08:06 » |
|
Есть мфцэшные функции : SetRegistryKey)_T)"BlaBlaBla"::; и LoadStdProfileSettings)0:; Есть ли аналог под билдер ?
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #1 : 24-08-2004 08:48 » |
|
MOPO3, не понял - зачем тебе аналоги мфцшных функций? пользуйся апишными RegSetValueEx и тд итд в msdn - ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/sysinfo/base/registry_functions.htm
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #2 : 24-08-2004 08:52 » |
|
Pu, спасибо. Я просто не знаю АПИ практически Вот и мучаюсь, имею мфцэшные сорцы примеров и на базе их пытаюсь наваять апликашку мне нужную А МФЦ, как я понял есть просто обёртка над АПИ ?
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
USBLexus
Опытный
Offline
Пол:
Кот рыжий
|
|
« Ответ #3 : 24-08-2004 08:53 » |
|
Используй APIшные типа RegFlushKey RegCreateKey и т д
|
|
|
Записан
|
#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #4 : 24-08-2004 09:09 » |
|
MOPO3 мне понравилась фраза, не помню уж откуда, "программировать с MFC все равно что танцевать со слоном в посудной лавке" . Но вообще то все что делается с помощью мфц можно написать и на чистых апи. если б была возможность забраться в недра мфц , я уверен что каждая функция , каждый метод упирается в вызов апи функции. посему предположу что твои подозрения не лишены основания
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Кот
Гость
|
|
« Ответ #5 : 24-08-2004 09:20 » |
|
Pu,
Это ни подозрения это реальность
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #6 : 24-08-2004 11:27 » |
|
Pu, USBLexus, простите за тупость, но я всё же не совсем догоняю что то. У функции МФЦ SetRegistryKey(_T("BlaBlaBla")); тока один параметр, а у этих АПИшных много. Вот я и не врубаюсь как это переписать :oops:
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #7 : 24-08-2004 11:41 » |
|
вот тебе примерчик как работать с энтими фунциями HRESULT hr = S_OK; HKEY hKey; if ( S_OK != RegOpenKeyEx( HKEY_CURRENT_USER, _T("SOFTWARE\\melkosoft\\"), 0, KEY_ALL_ACCESS, &hKey) ) if ( S_OK != RegCreateKey( HKEY_CURRENT_USER, _T("SOFTWARE\\melkosoft\\"), &hKey) ) { MessageBox("Ошибка при работе с реестром!", "Ошибка", MB_OK); return 1; } } RegSetValueEx(hKey, _T("Item1"), 0, REG_DWORD, (BYTE*)&m_any1, sizeof(DWORD) ); RegCloseKey(hKey); ну и тд
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #8 : 24-08-2004 12:20 » |
|
Pu, спасибо за примеры. Ещё один вопрос : После отработки проги с использованием SetRegistryKey(_T("BlaBlaBla")); обнаружил запись в реестре вот тут : HKEY_USERS\S-1-5-21-2078894507-92143966-638672422-2712\Software\BlaBlaBla . Эта функция всегда в эту ветку пишет и мне её и использовать ?
И ещё : if ( S_OK != RegOpenKeyEx( HKEY_CURRENT_USER, _T("SOFTWARE\\melkosoft\\"), 0, KEY_ALL_ACCESS, &hKey) )
что значит префикс _T ?
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #9 : 24-08-2004 12:38 » |
|
1. что значит префикс _T ? - создает строку типа TCHAR. В примере который я использовал так было (те типа макрос) 2. мфц вероятно делает для себя IDшники ключей их впоследствии и пишет и читает. поэтому у ее фунций работы с реестром мало параметров, все маскируется и типа упрощается , а также засирается . Аналог : в VB есть процедурка для работы с реестром аналог мфц и тоже пишет в ключ \Software\VB and VBA Program Settings . В апи ты можешь писать как угодно куда угодно и разделить права и властвовать.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #10 : 24-08-2004 12:41 » |
|
вспомнил в VB функцейки называются GetSetting и SaveSetting
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #11 : 24-08-2004 12:43 » |
|
Pu, понятно, хотя меня уже порядком задолбали эти разные типы TCHAR, LONG_PTR, SERVICE_STATUS, SC_HANDLE и так далее... мля, пока найдёш где нить этот грёбаный тайпдеф или дефайн где это объявлено
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #12 : 24-08-2004 12:50 » |
|
1. что значит префикс _T ? - создает строку типа TCHAR. В примере который я использовал так было (те типа макрос) Еще вспомнил есть такой OLESTR(s) я думаю работает по тому же принципу. 2. мфц вероятно делает для себя IDшники ключей их впоследствии и пишет и читает. поэтому у ее фунций работы с реестром мало параметров, все маскируется и типа упрощается , а также засирается . Аналог : в VB есть процедурка для работы с реестром аналог мфц и тоже пишет в ключ \Software\VB and VBA Program Settings . В апи ты можешь писать как угодно куда угодно и разделить права и властвовать.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
npak
|
|
« Ответ #13 : 24-08-2004 12:50 » |
|
MOPO3, на сайте есть книга Петцольда "Программирования для Windows" (на английском). Во второй главе подробно объясняется, зачем нужны макросы _T и TEXT. Если лень читать, могу объяснить в этой теме.
|
|
|
Записан
|
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #14 : 24-08-2004 12:52 » |
|
чтойто глюкнуло
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #15 : 24-08-2004 13:01 » |
|
MOPO3, на сайте есть книга Петцольда "Программирования для Windows" (на английском). Во второй главе подробно объясняется, зачем нужны макросы _T и TEXT. Если лень читать, могу объяснить в этой теме. действительно лень, а вернее нет времени. будь добр, объясни тут
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
Pu
Большой босс
Offline
78
|
|
« Ответ #16 : 24-08-2004 13:12 » |
|
npak, да да объясни.
|
|
|
Записан
|
Насколько я опытен? Достаточно, чтобы понимать, что дураков нельзя заставить думать по–другому, но недостаточно, чтобы отказаться от попыток это сделать. (с) Артур Джонс
|
|
|
npak
|
|
« Ответ #17 : 24-08-2004 13:23 » |
|
MOPO3,
как ты, наверное, знаешь, таблицы размером 256 символов уже давно не хвататет для многоязыковой поддержки. Поэтому к языку С добавили поддержку "широких" символов -- двухбайтных. Строки двухбайтных символов представляются в исходниках как L"abc". В качестве кодировки "широких" символов используется стандарт 16-битного Unicode
макрос TEXT("abc") раскрывается в "abc", если файл компилируется без поддержки Unicode, и как L"abc", если файл транслируется с поддержкой Unicode. Использование такого макроса позволяет легко переносить программы с ASCII на Unicode.
Большинство функций Win32 на самом деле макросы. Например, RegOpenKeyEx раскрывается в RegOpenKeyExA при отключенном Unicode и в RegOpenKeyExW при включенном Unicode. Функции с суффиксом A принимают на вход строки 8-битных символов, функции с суффисом W принимают на вход строки 16-битных символов.
К сожалению, строковые литералы "abcd" компилятором всегда интерпретируются как 8-битные строки. Поэтому строковые литералы необходимо оборачивать в макросы, чтобы при компиляции с поддержкой Unicode строковые литералы получали префикс L: "abc" -> L"abc". Если забыть поставить TEXT(), то при включенном Unicode скомпилируется всё нормально, но во время исполнения полезут ошибки, ведь функция ожидает получить строку 16-битных символов, а 8-битные строки, если их интерпретировать как 16-битные, дают полный бред.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #18 : 24-08-2004 13:38 » |
|
npak, понятно, спасибо.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
|