Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дополнительное место в Пуске, в Виндусе ХР 
:(
    Опции темы
Дрон
Дата 6.6.2004, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



В Spy++ в дереве окон находим:
"Главное меню" DV2ControlHost -> "" Desktop User Pane -> "Эльфит" Static

Там можно и текущее HWND окна посмотреть.
Только оно будет у тебя при каждом запуске Windows разное.

Пробуем теперь так:
(Пример со спецификой C++Builder, т.к., на сколько я помню, ты на нём пишешь)
Код
    HWND Win1 = FindWindow("DV2ControlHost","Главное меню");
    HWND Win2 = FindWindowEx(Win1,NULL,"Desktop User Pane","");
    HWND Win3 = FindWindowEx(Win2,NULL,"Static","Эльфит");
    RECT Rect;
    ::GetClientRect(Win3,&Rect);
    int Xp = Rect.right-90;
    int Yp = Rect.bottom/2 - 12;
    CreateWindow("Button","Test",WS_VISIBLE|WS_CHILD,Xp,Yp,70,25,Win3,NULL,Application->Handle,NULL);

Этот код создаст кнопочку с надписью тест в правой части синего окошка.
После закрытия твоей программы кнопка будет уничтожена.
Как поставить на неё обработчик попробуй придумать сам -- у меня пока что нет времени.

Есть один недостаток. Эта кнопка просто так видна не будет.
Как я понял, чтобы она нормально рисовалась, надо, чтобы прога использовала CommonControls версии 6.0. Проще говоря, нужно добавить манифест, который устанавливает элементы управления в стиле Windows XP.
Если до сих пор не знаешь как, то вот один из способов.
Копируем это в текстовый файл manifest.txt:
Код
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
  name="Тут название твоей проги"
  processorArchitecture="x86"
  version="1.0.0.1"
  type="win32"/>
<description>Сюда описание твоей проги</description>
<dependency>
  <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="x86"
          publicKeyToken="6595b64144ccf1df"
          language="*"
      />
  </dependentAssembly>
</dependency>
</assembly>
Далее создаём файл resource.rc такого содержания:
Код
1 24 manifest.txt

В Билдере выбираем в меню Project -> Add to Project... и добавляем к проекту файл resource.rc

Всё smile.gif

ЗЫ: Выяснено экспериментально -- ничего гарантировать не могу smile.gif

Это сообщение отредактировал(а) Дрон - 6.6.2004, 15:46


--------------------
Да. Именно так.
PM   Вверх
Дрон
Дата 6.6.2004, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Только что заметил, что кнопка не видна если нажать мышой на кнопку Пуск, правда при наведении в то место, где она должна быть -- становится видна.
Если же нажимать клавишу Windows на клавиатуре -- видна сразу.


Это сообщение отредактировал(а) Дрон - 6.6.2004, 15:54


--------------------
Да. Именно так.
PM   Вверх
Elfet
Дата 6.6.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Цитата
кнопка не видна если нажать мышой на кнопку Пуск

угу, и что тогда делать? notify.gif

Но всё равно классно работает, огромное спасибо! thumbs-up.gif



--------------------
PM MAIL WWW Skype   Вверх
Elfet
Дата 6.6.2004, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



И ещё :
как пользоватся этой функцией?:
CreateWindow();
Как кнопки создавать я ужё понял, а как например ProgressBar или Edit?


--------------------
PM MAIL WWW Skype   Вверх
Дрон
Дата 6.6.2004, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

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



Хмм... Ничего особо толкового больше выкопать не смог.

Насчёт CreateWindow можешь не париться smile.gif
Любой Билдеровский Control можно легко туда запихнуть.

Пусть у тебя есть Button1, а Win -- HWND нужного окна. Пишем так:
Код
Button1->Left = Xp;
Button1->Top = Yp;
Button1->Width = 70;
Button1->Height = 25;
Button1->Parent = NULL;
Button1->ParentWindow = Win;

Рисуется так же криво. ProgressBar рисоваться не захотел вообще. Edit ещё более или менее работал.
Но главная проблема в том, что теперь этот Control будет посылать сообщение другому окну (ведь мы поменяли его Parent) и OnClick не сработает sad.gif

В общем, направление поиска я указал, а дальше похоже ничем помочь не могу...



--------------------
Да. Именно так.
PM   Вверх
Elfet
Дата 6.6.2004, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Все равно спасибо! thumbs-up.gif


--------------------
PM MAIL WWW Skype   Вверх
Elfet
Дата 7.6.2004, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Уф! ну я и запутался!
Кто-нибудь подскажите как обработать эту кнопку! smile.gif
withstupid.gif


--------------------
PM MAIL WWW Skype   Вверх
_hunter
Дата 7.6.2004, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



можно подменить оконную процедуру кнопки и в ней отправлять копию сообщений в свое приложение


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
chipset
Дата 8.6.2004, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

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



я бы попробовал посмотреть что за мессаги приходят пуску и поставить на них хук.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Elfet
Дата 8.6.2004, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

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



Я бы так и зделал если бы знал как! smile.gif
Можно примерчик? baaa.gif


--------------------
PM MAIL WWW Skype   Вверх
_hunter
Дата 8.6.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



внедряеш свой код в Explorer:
http://ldg.h11.ru/modules.php?name=Content&pa=showpage&pid=6
в этом коде меняеш оконную процедур своей кнопки:
Код

LONG SetWindowLong(
   HWND hWnd,
   int nIndex,
   LONG dwNewLong
);

( сохранив адрес старой )
и в новой оконной процедуре посылаеш опии необходимых сообщений своем приложению

хотя гемора ... smile.gif


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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