Ширина всплывающего меню Win32 [дубликат]

Мне нравится писать простые объяснения для толстых людей, потому что я толстый, поэтому здесь идет ...

У нас есть 5 разделов на странице, каждый с ID ... div1, div2, div3, div4, div5

jQuery может это сделать ...

for (var i=1; i<=5; i++) { $("#div" + i).click ( function() { alert ($(this).index()) } ) }

Но действительно решая проблему (и медленно ее создавая) ...

ШАГ 1

for (var i=1; i<=5; i++) { $("#div" + i).click ( // TODO: Write function to handle click event ) }

ШАГ 2

for (var i=1; i<=5; i++) { $("#div" + i).click ( function(num) { // A functions variable values are set WHEN THE FUNCTION IS CALLED! // PLEASE UNDERSTAND THIS AND YOU ARE HOME AND DRY (took me 2 years)! // Now the click event is expecting a function as a handler so return it return function() { alert (num) } }(i) // We call the function here, passing in i ) }

ПРОСТО ДЛЯ ПОНИМАНИЯ АЛЬТЕРНАТИВА

Если вы не можете опустить голову, тогда это должно быть легче понять и иметь тот же эффект ...

for (var i=1; i<=5; i++) { function clickHandler(num) { $("#div" + i).click ( function() { alert (num) } ) } clickHandler(i); }

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

0
задан Shog9 21 June 2009 в 22:54
поделиться

3 ответа

С помощью дескриптора меню вы можете перемещаться по пунктам меню и вызывать SetMenuItemInfo, указывая, что вы хотите, чтобы владелец рисовал элементы меню. Когда вы это сделаете, окно, в которое подключено меню, получит сообщение WM_MEASUREITEM, на которое вы ответите, установив необходимые для этого параметры. Здесь вы можете установить свою ширину.

Конечно, это означает, что вы должны подклассифицировать обработчик сообщений Windows для окна, содержащего меню.

2
ответ дан casperOne 22 August 2018 в 15:08
поделиться

Прежде всего, попробуйте получить HWND в меню: (1) WM_DRAWITEM (2) получит HDC (3) WindowFromDC (), тогда вы можете произвольно отрегулировать аспекты меню. ПРИМЕЧАНИЕ. Не отправляйте WM_QUIT WM_CLOSE в меню, иначе вы эффективно отключите компьютер без подсказки.

0
ответ дан 6qing88 22 August 2018 в 15:08
поделиться

Это не имеет никакого отношения к WM_MEASUREITEM

Просто используйте внутренние сообщения меню win32

(Win32 FAQ: news: //comp.os.ms-windows.programmer.win32)

-1
ответ дан user 22 August 2018 в 15:08
поделиться
  • 1
    Немного больше информации было бы оценено. Я нашел FAQ, но на первый взгляд я не вижу ничего полезного. – Grant Limberg 6 February 2009 в 17:53
Другие вопросы по тегам:

Похожие вопросы: