Ув. эксперты, помогите разобраться с API функцией Shell_NotifyIcon и типом NOTIFYICONDATA. С помощью этой функции можно поместить иконку в System Tray. Заранее благодарю.
Здравствуйте, GVC! www.rsdn.ru - там есть отличный экзампл по работе с иконками в трее. И купи себе MSDN. Лучшн описалова нету. Ответ отправлен: 22.10.2002, 13:11 Отправитель: Jadd Отвечает Gibbel
Приветствую Вас, GVC! Приложение может добовлять, изменять и удалять значки на панели задач используя функцию Shell_NotifyIcon. BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata ); dwMessage [in] Переменная типа DWORD, определяющая требуемое действие. Может принимать одно из следующих значений: NIM_ADD Добавляет иконку в область индикаторов на панели задач. Значения hWnd и uID структуры NOTIFYICONDATA используются для последующей идентификации иконки при вызове функции Shell_NotifyIcon. NIM_DELETE Удаляет иконку из области индикаторов на панели задач. NIM_MODIFY Изменяет параметры иконки. NIM_SETFOCUS (Только с версии 5.0 shell32.dll) Возврат фокуса панели задач. Приложение должно посылать это сообщение, когда оно закончило операцию интерфейса пользователя. Например, если было выведено контекстное меню, но пользователь
нажал ESC, необходимо вернуть фокус панели задач. NIM_SETVERSION (Только с версии 5.0 shell32.dll) Инструктирует панель задач вести себя согласно версии, указанной в поле uVersion структуры NOTIFYICONDATA. По умолчанию, это значение является нулевым, что говорит, что вы желаете пользоваться только возможностями версии 4.0. lpdata [in] Адрес структуры NOTIFYICONDATA. Содержимое структуры зависит от значения dwMessage. Для того, чтобы приложение могло реагировать на действия пользователя необходимо определить ответное сообщение для значка в момент его добавления к панели задач. Для этого используется элемент uCallbackMessage структуры NOTIFYICONDATA. Как только происходит событие, связанное с значком на панели задач, система посылает ответное сообщение в окно, указанное в элементе hWnd. При этом, параметр wParam определяет идентификатор этого значка, а lParam - сообщение, сгенерированное
системой в ответ на событие. Если необходимо более подробное описание - обращайся к MSDN - там все прекрасно описано, или, если будут вопросы - пиши: Gibbel@narod.ru
Приложение: Ответ отправлен: 22.10.2002, 12:25 Отправитель: Gibbel
Вопрос № 302
Преведствую Вас, о эксперты. Подскажите пожалуйста основные функции работы с реестром, и если можно, описалочку где бы на них взять (а уж если на русском, то цены вам не будет) З.Ы. Я так посмотрел, и чето не нашел в билдере этих функций, или мне так показалось? Спасибо.
Приветствую Вас, YAR! Function Description RegCloseKey Releases a handle to the specified registry key. RegConnectRegistry Establishes a connection to a predefined registry handle on another computer. RegCreateKeyEx Creates the specified registry key. RegDeleteKey Deletes a subkey. RegDeleteValue Removes a named value from the specified registry key. RegDisablePredefinedCache Disables the predefined registry handle table of HKEY_CURRENT_USER for the specified process. RegEnumKeyEx Enumerates subkeys of the specified open registry key. RegEnumValue Enumerates the values for the specified open registry key. RegFlushKey Writes all the attributes of the specified open registry key into the registry. RegGetKeySecurity Retrieves a copy of the security descriptor protecting the specified open registry key. RegLoadKey Creates
a subkey under HKEY_USERS or HKEY_LOCAL_MACHINE and stores registration information from a specified file into that subkey. RegNotifyChangeKeyValue Notifies the caller about changes to the attributes or contents of a specified registry key. RegOpenCurrentUser Retrieves a handle to the HKEY_CURRENT_USER key for the user the current thread is impersonating. RegOpenKeyEx Opens the specified registry key. RegOpenUserClassesRoot Retrieves a handle to the HKEY_CLASSES_ROOT key for the specified user. RegOverridePredefKey Maps a predefined registry key to a specified registry key. RegQueryInfoKey Retrieves information about the specified registry key. RegQueryMultipleValues Retrieves the type and data for a list of value names associated with an open registry key. RegQueryValueEx Retrieves the type and data for a specified value name associated with an open registry
key. RegReplaceKey Replaces the file backing a registry key and all its subkeys with another file. RegRestoreKey Reads the registry information in a specified file and copies it over the specified key. RegSaveKey Saves the specified key and all of its subkeys and values to a new file. RegSetKeySecurity Sets the security of an open registry key. RegSetValueEx Sets the data and type of a specified value under a registry key. RegUnLoadKey Unloads the specified registry key and its subkeys from the registry.
MSDN Ответ отправлен: 22.10.2002, 14:51 Отправитель: Aldr Отвечает Avl2k
Доброе время суток, YAR! http://delan.narod.ru/article/reg.htm http://cprime.hypermart.net/rus/lesson/43.htm P.S. Функции работы с registry являются частью Win32 API, а не Builder'а, хотя возможно в нем и есть какие-либо обертки для них. С уважением, Avl2k.
Ответ отправлен: 22.10.2002, 11:10 Отправитель: Avl2k Отвечает Jadd
Приветствую Вас, YAR! RegCreateKeyEx RegCloseKey RegOpenKeyEx и в таком духе. Описание в MSDN Ответ отправлен: 22.10.2002, 13:04 Отправитель: Jadd Отвечает Pablo
Добрый день, YAR! В Билдере есть такой класс TRegistry так, что для работы с реестром можешь использовать его. Ответ отправлен: 22.10.2002, 09:11 Отправитель: Pablo Отвечает Eugene
Доброе время суток, YAR! При инсталле 6-го Builder'a надо было ставить все хелпы, если ты так сделал, то когда зайдешь в меню HELP, там увидишь WINDOWS SDK. В этом хелпе по реестру есть куча инфы. Или пользуй, как тебе уже посоветовали, компонент TRegistry, лично мне этот компонент не нравится.
Ответ отправлен: 22.10.2002, 10:47 Отправитель: Eugene
Вопрос № 303
Ответ для dan! Доброе время суток, dan! Borland C++ это C++ от фирмы Borland Inc. имеет поддержку как WinAPI функция так и классов OWL (Object Windows Library), которая имплементирует в себе как органы управлдения Windows так и другие классы. Главный недостаток OWL это то, что прогламмы на нем написанный имеют огромный размер. Visual C++ это C++ от Microsoft имеет поддержку как WinAPI так и MFC(Microsoft Foundation Classes). Эти классы включаются в себя компоненты органов управления Windows и другие классы визуальны и не-визуальные. Основным недостатком этой библиотеки является сложность вызовов, сравнимая с WinAPI. Delphi это продукт Borland использующий в качестве программирования язык Паскаль. В Дельфи встрона библиотека классов VCL(Visual Component Library). Эта библиотека почти недосттатков не имеет, если писать прогарммы на дельфах и не
встаивать в программу используемые классы, то можно получить испольняемый файл малеьнького размера. Если встраивать VCL классы в программу, то такую программу можно переносить с машиы на машину и она будет рабюотать без внешней библиотеки VCL, но у программы увеличится объем ненамного, сравнимо с программами на MFC. У VCL есть достоинство перед MFC это простота вызово и использолвания самих VCL-классов. Также у Borland есть такой продукт как Borland C++ Builder это тот же Дельфи, но сделанный на основе языка C++. MySQL и MSSQL это комплекты (сервера) обеспечивающие доступ к базам данных. MySQL - бесплатынй, MSSQL - платный. MSSQL широко растпостранен и на нем можно делать вложенные выворки, также MSSQL поддерживает транзакции. MySQL не можнет делать вложенные выборки и не поддерживает транзакции, но эта система позволяет создавать кроссплатформенные приложения, также MySQL позволяет
обойти вложенные выборки и транзации использованием дополнительных запросов и временной блокировки таблицы соответственно. Если что соберешься изучить, то купи книжки лучше.
Доброе время суток, Pablo! Не стоит идеализировать Delphi и иже сним. Продукты от Борланд и компания - весьма удобные продукты, но, вкупе, они имеют огромный перечень недостатков(если тебе они неизвестны, это не значит, что их нет). Первый, и главный, недостаток - размер исполняемого фала. Ненадо говорить про консольные приложения, т.к. основная цель - полноценное оконное приложение для виндов. А минимальный размер exe подчас составляет сотни килобайт ( не так обстоят дела с MS VC++). У Билдера дела обстоят еще хуже. В 4-й версии Билдер не давал писать конструкции switch(), содержащие более 2-х (!) case(Выдавал ошибку синтаксиса). В 5-й версии постоянные проблемы с циклами, и это лишь единичные проблемы ( я уже не описываю траблы с вложенными with в Дельфях и гадским оптимизатором). Так что, господин адепт Борланда, не стоит так уничтожать продукты других фирм,
к тому же, ИМХО для профессионального програзма на С++ я лично выбрал бы VC++, хотя и имею солидный опыт разработки на Borland средствах (ок. 10 лет). Ответ отправлен: 22.10.2002, 13:22 Отправитель: Jadd
Вопрос № 304
Здравствуйте эксперты! Помогите разобраться в работе с формами (BuilderC++ 5.0). Совсем запутался. Имеем основную форму. При нажатии на кнопочку открывается еще одна форма, что-то типа диалога. При этом основная форма становится недоступной. После совершения каких-нито действий на этой второй форме она закрывается, активизируется основная форма и в основную форму передаються несколько параметров (т.е. значений) из второй формы. И как это все сделать? Пытался сделать так: есть две формы, описанные в двух моделях, и переключаться между ними с помошью SetFocus(). Однако уже на этапе выполения сразу возникает какая-то фатальная ошибка, и прога дальше не работает. Help!!!
Добрый день, Дмитрий! Под твоё описание очень хорошо подходит ShowModal(). Из главной формы вызываешь 2-ю как if(Form2->ShowModal() == mrOk) ... А неглавную закрываешь таким образом: ModalResult = mrOk;(mrNone, mrCancel и т.п.). Или на кнопке есть свойство ModalResult. Если хочешь другие данные возвращать, то сделай общую переменную в области public, и меняй её.
Ответ отправлен: 22.10.2002, 11:05 Отправитель: Eugene Отвечает Jadd
Здравствуйте, Дмитрий! Если вызываешь свой диалог методом ShowModal, или чем-то вроде этого, то все правильно. Если нужен эффект MDI приложения, то делается все совсем иначе.Вызывется форма тогда Show() методом. Ответ отправлен: 22.10.2002, 14:17 Отправитель: Jadd Отвечает Painbringer
Доброе время суток, Дмитрий! попробуй Show() или ShowModal() Ответ отправлен: 22.10.2002, 21:55 Отправитель: Painbringer
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.