Chertenok.ru - все о программировании
Вход  |  Регистрация  |  Поиск 
Праздник
Завтра :

День славянской письменности и культуры


TrackPopupMenu и компания...


Новая тема  Ответить  Печать Предыдущая тема  Следующая тема
Автор Сообщение
Steel FedeX
Частый гость


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 13.09.2005
Сообщения: 48
Откуда: Житомир, Украина
СообщениеЧт, 05-Янв-2006 18:40    Заголовок сообщения: TrackPopupMenu и компания...
Цитата

Привет! Пишу прожку которая должна сидеть в трее. Использую только WinApi (чтобы памяти меньше занимала). И вообще пишу в среде "Странник" на Паскалике...
У меня сразу несколько вопросов.

Вопрос первый:
Почему может не работать функция TrackPopupMenu? Вообще-то она работает, но после щелчка мышью вне меню, оно (меню) не исчезает. Вот. Функцию использую в таком виде:
TrackPopupMenu(popupMenu,TPM_LEFTALIGN or TPM_LEFTBUTTON,pnt.x,pnt.y,0,hwindow,nil);
Последний параметр пробовал заменить на область в которой отображается меню - безрезультатно.

Вопрос второй:
Насколько я понимаю кроме стандартных диатогов выбора файлов, шрифтов и пр. есть ещё и стандартный диалог выбора папок (такой продолговатый с деревом каталогов). Как его отобразить? (Только WinApi).

Вопрос третий: (одно из трёх)
Как иконку (произвольного размера) вывести в контекст причём масштабируя ?
Как иконку превратить в BITMAP ?
Как иконку назначить пункту всплывающего меню меню ?
Условия: Имеется только хандл иконки. Нельзя пользоваться никакими обьектами - только WinApi.

Вопрос четвёртый:
Почему в командной строке программы то появляются скобки то исчезают ?!!
Можно ли узнать путь к своей программе какой-то стандартной Api функцией. Или только через командную строку?

Хм-м-м... Наверное достаточно на сегодня. :)
Заранее спасибо!

_________________
Я всё могу! ...но сегодня не успею.
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Пол:Муж Шурик
Я живу тут....


Возраст: 42
Знак зодиака: Овен
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
СообщениеЧт, 05-Янв-2006 21:10 
Цитата

Ответов тебе не дам, но предложу одно суждение -- попробуй покопаться в Борландовских исходниках соответствующих компонентов. Они в этом уже давно рабобрались. Ведь по сути ты повторяешь их только в урезаном варианте.
Ещё одно. Ты слыхал про KOL/MCK -- облегчённый вариант VCL. Посмотри, может тебе этого будет достаточно.

Цитата:
Почему в командной строке программы то появляются скобки то исчезают ?!!

Это ты о двойных кавычках? Они ставятся для имён файлов, содержащих пробелы.

Цитата:
Можно ли узнать путь к своей программе какой-то стандартной Api функцией. Или только через командную строку?

Мне кажется только так и делают. Погляди реализацию ParamStr(). А что тебя тут смущает?

Цитата:
Как иконку превратить в BITMAP ?

Ну, видимо нарисовать её на этом bitmap-е (см.CreateCompatibleDC,SelectObject)

Цитата:
Как иконку (произвольного размера) вывести в контекст причём масштабируя ?

DrawIconEx ?

Цитата:
Как иконку назначить пункту всплывающего меню меню ?

Мне кажется туда можно назначать только bitmap-ы и элементы ImageList.
Как говорил наш преподаватель философии "Читайте первоисточники". Борландовские первоисточники.

_________________
Ответ готов, готов ли твой вопрос?
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Steel FedeX
Частый гость


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 13.09.2005
Сообщения: 48
Откуда: Житомир, Украина
СообщениеПт, 06-Янв-2006 12:01 
Цитата

Отлично! Спасибо.
TrackPopupMenu нашол в нестандартных компонентах(как я сам не догадался!).
Правда ещё не понял почему у меня не работает...
А насчёт диалога - вроде бы только-что нашол:
SHBrowseForFolder и SHGetPathFromIDList. Правда, ещё не проверял.

Цитата:
Ещё одно. Ты слыхал про KOL/MCK -- облегчённый вариант VCL. Посмотри, может тебе этого будет достаточно.

Слыхал и юзал. Но если приложение с пустой формой на KOL/MCK весит около 60кг, то аналогичное приложение написанное на WinApi и скомпилированное на Страннике весит около 4кг!!! Я, конечно, не хочу сказать, что Странник очень удобная среда... Victory

_________________
Я всё могу! ...но сегодня не успею.
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Steel FedeX
Частый гость


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 13.09.2005
Сообщения: 48
Откуда: Житомир, Украина
СообщениеСр, 11-Янв-2006 0:06 
Цитата

А ведь функций SHBrowseForFolder и SHGetPathFromIDList нигде в делфе не описано... Только в SDK.
Так что если кому понадобится диалог выбора папок-
вот.Корявенький компонентик,но работает.

А в ParamStr действительно нашол функцию GetModuleFileName,которая даёт имя моей проги.

TrackPopupMenu нужно использовать вместе с SetForegrounWindow-тогда всё работает нормально.

Только с иконкми всё ещё куча проблем...

_________________
Я всё могу! ...но сегодня не успею.
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Пол:Муж Gelios
Oracle-вый маньяк, Админ


Возраст: 37
Знак зодиака: Водолей
Зарегистрирован: 10.03.2005
Сообщения: 6141
Откуда: Яблочный рай
СообщениеЧт, 12-Янв-2006 7:59 
Цитата

Код:
А ведь функций SHBrowseForFolder и SHGetPathFromIDList нигде в делфе не описано...
потому что это функции вин апи а не rtl delphi :)
_________________
нельзя давать всем всего, ибо всех много, а всего мало
В начало
Посмотреть профиль Отправить личное сообщение
Steel FedeX
Частый гость


Возраст: 26
Знак зодиака: Овен
Зарегистрирован: 13.09.2005
Сообщения: 48
Откуда: Житомир, Украина
СообщениеЧт, 12-Янв-2006 22:54 
Цитата

Так я имел в виду, что этих функций в модулях Windows и ShellApi не описано. При чём здесь rtl?
_________________
Я всё могу! ...но сегодня не успею.
В начало
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Пол:Муж Ktf
Администратор


Возраст: 32
Знак зодиака: Рак
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
СообщениеПт, 13-Янв-2006 5:34 
Цитата

Эти функции описаны в модуле ShlObj
_________________
Пойду посплю перед сном.
В начало
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Страница 1 из 1
Перейти:  
Новая тема  Ответить  Печать

Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете присоединять файлы в этом форуме
Вы можете скачивать файлы в этом форуме
хостинг от .masterhost 
Rambler's Top100