C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Корректное скрытие всплывающих менюшек / Окна и интерфейс / Visual C++

Корректное скрытие всплывающих менюшек
A: (Codemaster)
Оригинальная ссылка: нету

Вот так следует показывать менюшки:
    SetForegroundWindow(hWnd); // HWND hWnd - указатель на окно

    // Показываем меню
    TrackPopupMenu(hMenu, // указатель на меню
                TPM_RIGHTBUTTON, // наши флаги показа менюхи
                pt.x, // коордитаны меню
                pt.y, // коордитаны меню
                0, // ничего такого, просто зарезервировано
                hDlg, // родитель меню
                NULL); // тоже ставьте 0

    // когда чел кликнет куда-нибудь мышой, то 
    PostMessage(hDlg, WM_NULL, 0, 0); // посылаем нашему окну пустое сообщение, которое и закроет наше меню
Кто понимает буржуйский, то читайте:

To display a context menu for a notification icon, the current window must be the foreground window before the application calls TrackPopupMenu or TrackPopupMenuEx. Otherwise, the menu will not disappear when the user clicks outside of the menu or the window that created the menu (if it is visible). However, when the current window is the foreground window, the second time this menu is displayed, it displays and then immediately disappears. To correct this, you must force a task switch to the application that called TrackPopupMenu at some time in the near future. This is done by posting a benign message to the window or thread.