В чем разница между Windows API-интерфейсами TrackPopupMenuEx и TrackPopupMenu? - PullRequest
2 голосов
/ 10 октября 2009

Я читал об этих API на этой веб-странице: http://www.ex -designz.net / apicat.asp? Apicat = 34

Я протестировал API-интерфейсы TrackPopupMenuEx и TrackPopupMenu, и они сделали то же самое: отобразили меню в позиции курсора. Исходные коды одинаковы, вам просто нужно добавить или стереть «Ex» в конце имен этих API. Почему два API для одного действия?

Примечание: TrackPopupMenu вызывает сбой моего приложения во время выполнения при использовании элемента управления изображениями, в то время как TrackPopupMenuEx работает нормально. TrackPopUpMenu, похоже, не имеет смысла.

Ответы [ 2 ]

0 голосов
/ 10 октября 2009

Согласно документации, есть некоторые тонкие различия:

  1. TrackPopupMenu имеет параметр nReserved
  2. TrackPopupMenuEx принимает LPTPMPARAMS для последнего параметра, но TrackPopupMenu принимает CONST RECT * (который игнорируется)

Таким образом, они имеют разное количество и тип параметров с разными значениями - что объясняет, почему ваше приложение падает при изменении вызова.

0 голосов
/ 10 октября 2009

Это довольно похожие функции, но большая разница в том, что TrackPopupMenuEx позволяет вам указать прямоугольник, над которым не будет отображаться всплывающее меню (чтобы иметь такой, который не затемняет то, что вам нужно видеть). Вот и все, насколько я вижу.

...