2013-12-18 2 views
0

Это, наверное, смешной вопрос, но кто-нибудь может указать мне в правильном направлении для получения числовых значений, представляющих сообщения here, я просмотрел файлы Commctrl.h, которые я нашел в сети, но никто, кажется, предлагает значение, очевидно, от суда я могу определить некоторые, как правый клик 4294967291 и левая 4294967294.Константы сообщений управления Windows

Edit:

@Remy Леба, так что я подклассы родителя в виде списка, то поймала WM_NOTIFY и hWndFrom - это представление списка и перемещение мыши к списку, а затем щелчок правой кнопкой мыши в окне отладки:

4294967146 
4294967175 
4294967175 
4294967280 
4294967196 
4294967289 
4294967291 
4294967284 
4294967146 

из элемента кода структуры NMHDR, это функция печати Lua, выводящая код, поэтому я предполагаю, что Lua преобразует dec/hex, так что я делаю что-то плохое здесь? Я получил хорошую копию Commctrl.h из пробной версии Visual Studio и принял ваши рекомендации и получил коды, которые мне так нужны, спасибо.

+0

Написать программу на С ++, которая включает в 'commctrl.h' и печатает все значения. Вставьте имена сообщений в объявление константного массива и зацикливайтесь на нем. Должно быть 5-10 минут работы. Я думаю, вам это нужно, потому что вы хотите перевести код на другой язык. Возможно, было бы полезно рассказать нам, что именно задает вопрос. –

+0

'4294967291'' '0xFFFFFFFB', а' 4294967294' - '0xFFFFFFFE', ни один из которых не является допустимым идентификатором сообщения окна, не говоря уже о любых сообщениях о праве/левом клике. Откуда вы берете эти ценности? –

+1

Здесь, похоже, возникает некоторая путаница, потому что сообщения, с которыми вы связаны, являются сообщениями, которые вы * отправляете *, а не сообщениями, которые вы * получаете *. –

ответ

2

Все эти сообщения определяются в Commctrl.h, который можно просмотреть в любом текстовом редакторе. ListView сообщения положительные сдвиги от LVM_FIRST, который определен в том же файле 0x1000 (десятичное 4096), например:

#define LVM_FIRST    0x1000  // ListView messages 

#define LVM_GETBKCOLOR   (LVM_FIRST + 0) 
#define LVM_SETBKCOLOR   (LVM_FIRST + 1) 
#define LVM_GETIMAGELIST  (LVM_FIRST + 2) 
... 
#define LVM_GETNEXTITEMINDEX (LVM_FIRST + 211) 
1

Если вы нажмете на одну из этих ссылок, вы получите документацию для этого сообщения. Если вы прокрутите вниз, вы увидите, что они определены в commctrl.h. Вы можете посмотреть в своей локальной копии, чтобы получить фактические значения.

2

Вы можете попробовать установить любые привязки Python для WinAPI, например this one.

В источнике, номера не легко видны, но вы можете импортировать их в интерпретатор Python и увидеть их:

> python 
>>> import comctl 
>>> comctl.LVM_GETVIEW 
4239 

Или, если вы хотите, чтобы все они вместе, вы можете написать скрипт:

import comctl 
for n in dir(comctl): 
    if n.startswith('LVM_'): # or whatever prefix you want 
     print n, '=', getattr(comctl, n) 
+0

Я люблю этот сценарий, чтобы выплюнуть их всех. Хорошая работа. –

Смежные вопросы