Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt

Цитата:
Как при помощи АПИ определить, что под курсором находится BUTTON.

Есть функция, если не путаю -- WindowAtPos, ну, нечто близкое по названию. А там, уже дело техники, если интересно, через пару дней расскажу, примерно как можно.

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 01:09 17-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
Есть функция, если не путаю -- WindowAtPos,

на самом деле WindowFromPoint. Да она дает хэндл окна находящийся в данной точке. У меня другая проблема. При помощи этой функции нельзя определить класс, а функция GetClassName не возращает его для полученного хэндла. Вот в чем проблема.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:15 17-09-2003
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt

Цитата:
на самом деле WindowFromPoint

Точно. Я подумаю, наверное, всё же можно что-нибудь придумать. Должно быть тут что-то.

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 01:31 17-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
 Я подумаю, наверное, всё же можно что-нибудь придумать.

Хорошо.Я тоже буду думать. А то я пошел другим путем (как все нормальные герои ). Я создал контрол типа SpeedButton (не TSpeedButton). в ссмысле от фонаря назвал его. Потом зарегистрировал для него класс (его я тоже назвал SpeedButton) и заставил этот контрол обрабатывать сообщения предназначенные только для него (через DefWindowProc). Он себе их обрабатывает, на события отрисовки рисует как надо а при наводе мыши рисует всплытую кнопку. Вроде все хорошо, НО это не стандартный Button, а контрол порожденный моим извращенным воображением. А я видел проги на АПИ, в которых точно были баттоны с определением наезда на них мыши. (Именно тогда у меня зародилось желание сделать если не так то круче).

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 06:40 17-09-2003
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Я вот глянул немного на книжку Рихтера "Руководство разработчика для Windows 95" (на аглицком), да и документацию... GetClassInfo, кажется, должен дать требуемую информацию, в документации про это есть, да и Рихтер напоминает о тонкостях, в смысле зависимости от контекста процесса. Хотя говорится, что стандартные элементы управления -- общесистемные, в смысле регистрации имён классов. Вот проверить времени нет.
GetClassName не проверял, надо ещё раз, не спеша посмотреть.

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 23:43 18-09-2003
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Я вот глянул немного на книжку Рихтера "Руководство разработчика для Windows 95" (на аглицком), да и документацию... GetClassInfo, кажется, должен дать требуемую информацию,

Не совсем так. Там говорится

Цитата:
If the function finds a matching class and successfully copies the data, the return value is TRUE.
 

Если она находит такой класс в системе, так как в этой функции согласно синтаксису
The GetClassInfo function retrieves information about a window class.  
 
BOOL GetClassInfo(
 
    HINSTANCE  hInstance, // handle of application instance
    LPCTSTR  lpClassName, // address of class name string
    LPWNDCLASS  lpWndClass // address of structure for class data
   );
Parameters
 
hInstance
 
Identifies the instance of the application that created the class. To retrieve information about classes defined by Windows (such as buttons or list boxes), set this parameter to NULL.  
 
lpClassName
 
Points to a null-terminated string containing the class name. The name must be that of a preregistered class or a class registered by a previous call to the RegisterClass function. Alternatively, this parameter can be an integer atom. If so, it must be a global atom created by a previous call to the GlobalAddAtom function. The atom, a 16-bit value less than 0xC000, must be in the low-order word of lpClassName; the high-order word must be zero.  
 
lpWndClass
 
Points to a WNDCLASS structure that receives the information about the class.  
 
нельзя указать хэндл кнтролла для определения его класса. По идее как раз GetClassName должен работать, но что то не получается. Я еще попробую на неделе о результатах сообщу.

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:59 20-09-2003
react



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Народ !!!
 
 Подскажите плиз следующее:
 1. Как вставить строку текста(например из файла) в определенной позиции RichEdit
 2. Как очистить область RichEdit
 3. Как установить курсор в нужную позицию (line, position) в RichEdit
 
 Я уже обыскал все доки, которые вы тут предлагали по RichEdit'у, но ничего не нашел...
 
  Заранее big thanks !!!

Всего записей: 773 | Зарегистр. 08-02-2002 | Отправлено: 01:45 18-10-2003
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
react
Всё же документацию почитай внимательно -- хотя бы через список сообщений этого элемента...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 02:03 18-10-2003
react



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
Всё же документацию почитай внимательно -- хотя бы через список сообщений этого элемента...

 Да я уже пробовал через список сообщений, но на те сообщения, которые мне  
  подходят, к сожалению никто не отвечал

Всего записей: 773 | Зарегистр. 08-02-2002 | Отправлено: 02:23 18-10-2003
KubanovOV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста, функции API для программной генерации событий от мыши и клавиатуры, а также для перехвата событий от мыши и клавиатуры (определение нажатия кнопок мыши не зависимо от того, находится ли курсор в клиентской области приложения).  

Всего записей: 6 | Зарегистр. 03-11-2003 | Отправлено: 15:30 06-11-2003
redp

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2KubanovOV
см. описание ф-ции SetWindowsHookEx, а также читай Рихтера - у него там все подробно разжевано
генерация сообщения от клавиатуры - через keybd_event
от мыши - соотв-но mouse_event

Всего записей: 514 | Зарегистр. 16-06-2003 | Отправлено: 17:37 06-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
redp

Цитата:
также читай Рихтера - у него там все подробно разжевано  
генерация сообщения от клавиатуры - через keybd_event  
от мыши - соотв-но mouse_event

Действительно, не "превзойденная" классика...
KubanovOV Тем более есть на русском (и даже в електронном виде).

----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 16:42 08-11-2003
KubanovOV

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо. Обязательно почитаю. А можно ли найти эту книгу в интернете ?

Всего записей: 6 | Зарегистр. 03-11-2003 | Отправлено: 10:38 10-11-2003
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KubanovOV

Цитата:
А можно ли найти эту книгу в интернете ?

Да, есть много ссылок... По-моему, даже на нашем форуме...

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 10:43 10-11-2003 | Исправлено: mihas83, 10:44 10-11-2003
vito333



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такой вопрос - как отследить режим вставка/замена в ричедите?
C и WinAPI ...

Всего записей: 3319 | Зарегистр. 13-05-2002 | Отправлено: 18:43 16-11-2003
vito333



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в общем несложно - GetKeyState(VK_INSERT), и переключение из проги (из статусбара) - легко, но вот какой глюк - при выходе из проги в режиме замена (а окно - ричедит) при повторном запуске определяется опять режим замены (как запоминется), хотя в ричедит-окне - всегда сначала режим вставки - как будто в риче свой режим вставки-замены, а в винде свой.
нет ли у кого каких мыслей?
 
Добавлено
в общем не выходит корректное отображение режима ...

Всего записей: 3319 | Зарегистр. 13-05-2002 | Отправлено: 19:35 18-11-2003
vito333



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в общем сделал просто перехват нажатия клавиши Insert - все вышло правильнои корректно ...

Всего записей: 3319 | Зарегистр. 13-05-2002 | Отправлено: 01:12 24-11-2003
aplex

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня есть насущный вопрос: как для некой проги и ее окошек узнать используемые параметры API функции SendMessage плюс возвращаемое ею значение ? (т е чтобы потом посылать этим окошкам с помощью SendMessage сообщения)
Или где об этом прочесть ?
Спасибо!

Всего записей: 118 | Зарегистр. 17-04-2003 | Отправлено: 20:54 31-12-2003
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aplex
У тебя куча возможностей, я укажу лишь на некоторые:
а) Если не хочешь сам программить:  
   1) используй Spy++ из состава Visual Studio -- ты можешь наблюдать за всеми (если надо -- фильтровать) сообщениями, и возвращаемыми значениями;
   2) используй SoftICE -- ты можешь поставить крюк на SendMessage;
б) Если хочешь и можешь программировать, то можно:
  1) захватить оконную процедуру и перехватывать какие хочешь сообщения;
  2) захватить саму функцию SendMessage.
Последний пункт, вероятно, самое разумное для твоих целей.
 
Очень рекомендую книгу Рихтера, 4-е издание, там есть про перехват функций API. Как захватить оконную процедуру, есть во 2-м издании.

----------
Майкудук, Пришахтинск не предлагать!:)
А на Пирогова приходит снова весенний гомон...

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 21:55 01-01-2004
mihas83



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert

Цитата:
Очень рекомендую книгу Рихтера, 4-е издание, там есть про перехват функций API

Солидарен. Очень подробно и толково... И не только в этом вопросе...
К стати, и об альтернативах SendMessage()...
Классика есть классика...


----------
Мы знаем: время растяжимо. Оно зависит от того,
Какого рода содержимым Вы заполняете его. (C. Маршак)

Всего записей: 7832 | Зарегистр. 15-07-2003 | Отправлено: 16:16 02-01-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru