Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» C++ WinAPI

Автор: react
Дата сообщения: 21.08.2003 13:10
Flex256

Цитата:
может подойдет просто DialogBox...

По-мойму пробовал, но ничего не получилось... может какие параметры надо
задавать ???

Что никто не сталкивался с подобной проблемой ???
Автор: TeXpert
Дата сообщения: 21.08.2003 23:06
react

Цитата:
Есть у меня диалог, который в программе запускается функцией DialogBoxParam()
и есть в этом диалоге поле типа Edit. Так вот, надо чтоб это поле принимало unicode,
поэтому я изменяю тип поля на RichEdit, после чего диалог перестает запускаться
вообще...

Есть такая петрушка)
В MSDN поищи насчёт этого самого RichEdit, в зависимости от версии dll что делать, там есть. Вручную нужно подправить rc-файл, а также загрузить соответствующую dll вызовом LoadLibrary. Похоже, твоя ситуация...
Flex256

Цитата:
может подойдет просто DialogBox...

Насколько я полагаю, не зависит от этого. Внутренне DialogBox всё равно вызывает DialogBoxParam (если не ошибаюсь, первая -- всего-навсего макрос).
Автор: react
Дата сообщения: 22.08.2003 12:57
TeXpert
Thanks - буду пробовать...
Автор: The_Antihero
Дата сообщения: 22.08.2003 14:35
у меня вопрос по-серьёзнее:
как в винХР сделать операцию типа того что происходит при нажатии Win+L?
Автор: TeXpert
Дата сообщения: 23.08.2003 00:06
The_Antihero

Цитата:
как в винХР сделать операцию типа того что происходит при нажатии Win+L?

То есть, на каком уровне тебя интересует?
Если на уровне команд процессора, поставь дизассемблер какой (например, SoftICE) и смотри буквально каждую команду, но это тебе быстро надоест.
А если на уровне сообщений WinAPI -- загрузи Spy++ (входит в состав Visual Studio) и наслаждайся...
И ещё есть куча утилит разных, но мне в принципе этих хватает.
Автор: ShIvADeSt
Дата сообщения: 25.08.2003 02:54
The_Antihero
если в смысле заблокировать станцию, то есть такая функция LockWorkStation. Блокирует станцию. А если как заблокировать станцию своими средствами, то придется хучить клавиатуру и по своему переопределять события. Но все равно три волшебные кнопки не залочишь.
Автор: OldGopher
Дата сообщения: 25.08.2003 17:42
ShIvADeSt
Это как раз не проблема... Пишется фильтрующий драйвер, который ловит последовательность Ctrl+Alt+Del и scan-коды меняются на 0, когда надо...
Автор: ShIvADeSt
Дата сообщения: 25.08.2003 23:31
OldGopher ты меня извини, но написать драйвер - это занятие системного программиста. Для этого знание asma надо, да и не позволит НТ простому пользователю установить какой нибудь левый драйвер (это уже из темы защита Windows NT, хочешь поспорить -пиши на мыло)
Автор: react
Дата сообщения: 26.08.2003 12:57
TeXpert
Слушай, все что ты описал подходит для программирования в среде Visual C++, а что
делать если я под Borland'ом сижу - какая функция там инициализирует RichEdit ???
Может подскажешь...
Автор: ShIvADeSt
Дата сообщения: 27.08.2003 00:01
react в смысле под Borland, извини что влазию в ваш разговор, все функции из VC ++ это чистый АПИ а он работает, даже если ты в Visual FoxPro работает, если у тебя Дельфи, то только синтаксис поменяй и все. Странно если ты этого не знаешь. Если ты не знаешь как работать с ричедитом пиши на мыло, дам сорцы Bred2 он там весь на нем построен, разберешься поди уж как нибудь.
Автор: TeXpert
Дата сообщения: 27.08.2003 00:04
react

Цитата:
делать если я под Borland'ом сижу - какая функция там инициализирует RichEdit ???
Может подскажешь...

Ну, на Borland'ских не пробовал -- а почему бы тебе не попробовать тот же LoadLibrary? А вообще, выброси Borland.
Автор: react
Дата сообщения: 27.08.2003 07:13
TeXpert

Цитата:
Ну, на Borland'ских не пробовал -- а почему бы тебе не попробовать тот же LoadLibrary

А какую библиотеку подгружать надо - а то я что-то не нашел...


Цитата:
А вообще, выброси Borland


Я б с радостью, да на работе требуют только его ...
Автор: TeXpert
Дата сообщения: 27.08.2003 22:34
react

Цитата:
А какую библиотеку подгружать надо - а то я что-то не нашел...

Хм... Не читал, значит, MSDN (или документацию Platform SDK)? Найди там в Controls RichEdit (я могу слегка перепутать), там всё есть, в какой dll сидит какая версия RichEdit. Если не найдёшь, завтра посмотрю.
Автор: The_Antihero
Дата сообщения: 02.09.2003 14:04
ShIvADeSt
именно LockWorkstation

и ещё одно - как сделать обратную операцию. или вариант - организовать вход на консоль. ну, типа когда вводишь пароль, создаётся десктоп (кажись),загружается оболочка и т.п. А может ли то же самое выполнить какой-нибуть сервис, запущеный в системе? и как?
Автор: TeXpert
Дата сообщения: 02.09.2003 22:21
The_Antihero

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

Вот что-то по этой теме в книге Соломона и Руссиновича было, посмотри эту книгу обязательно, много полезного найдёшь...
Автор: The_Antihero
Дата сообщения: 03.09.2003 12:31
TeXpert
а её не бывает случайно в цифровом варианте? хоть и английском
Автор: react
Дата сообщения: 03.09.2003 12:31
TeXpert
RichEdit подключил - возникла следующая проблема: как оттуда юникод прочитать ?
Читаю функцией GetDlgItemTextW в переменную типа WCHAR - так оно на обычные
латинские символы юникод пишет а на символы типа дельта, омега и тому подобные
пишет код от 0 до 255 (типа простой char) - как быть ???
Автор: TeXpert
Дата сообщения: 03.09.2003 23:07
The_Antihero

Цитата:
а её не бывает случайно в цифровом варианте? хоть и английском

Бывает, на аглицком. Только он весит около 19 Mb, не знаю, как поделиться даже.
react

Цитата:
RichEdit подключил - возникла следующая проблема: как оттуда юникод прочитать ?
Читаю функцией GetDlgItemTextW в переменную типа WCHAR - так оно на обычные
латинские символы юникод пишет а на символы типа дельта, омега и тому подобные
пишет код от 0 до 255 (типа простой char) - как быть ???

Насколько помню, немного по-другому делается. Вообще-то есть хороший ресурс по элементам управления Windows -- вот раздел, посвящённый RichEdit
http://www.codeguru.com/richedit/index.shtml
Весьма полезный ресурс.
Автор: EAS
Дата сообщения: 04.09.2003 01:11
The_Antihero

Цитата:
а её не бывает случайно в цифровом варианте? хоть и английском

Вообще, конечно в Варезнике отдельный топик есть, но, так уж и быть. Вот здесь смотри: h$$p://anatolix.naumen.ru/win32books.htm
Автор: ShIvADeSt
Дата сообщения: 16.09.2003 05:38
Как при помощи АПИ определить, что под курсором находится BUTTON. Причем мне не желательно отслеживать WM_MOUSEMOVE. Это надо для того чтобы самому ручками отрисовать кнопку типа SpeedButton, те при наводе на нее мыши она всплывает.
Автор: TeXpert
Дата сообщения: 17.09.2003 00:09
ShIvADeSt

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

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

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

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

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

Точно. Я подумаю, наверное, всё же можно что-нибудь придумать. Должно быть тут что-то.
Автор: ShIvADeSt
Дата сообщения: 17.09.2003 05:40
TeXpert

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

Хорошо.Я тоже буду думать. А то я пошел другим путем (как все нормальные герои ). Я создал контрол типа SpeedButton (не TSpeedButton). в ссмысле от фонаря назвал его. Потом зарегистрировал для него класс (его я тоже назвал SpeedButton) и заставил этот контрол обрабатывать сообщения предназначенные только для него (через DefWindowProc). Он себе их обрабатывает, на события отрисовки рисует как надо а при наводе мыши рисует всплытую кнопку. Вроде все хорошо, НО это не стандартный Button, а контрол порожденный моим извращенным воображением. А я видел проги на АПИ, в которых точно были баттоны с определением наезда на них мыши. (Именно тогда у меня зародилось желание сделать если не так то круче).
Автор: TeXpert
Дата сообщения: 18.09.2003 22:43
ShIvADeSt
Я вот глянул немного на книжку Рихтера "Руководство разработчика для Windows 95" (на аглицком), да и документацию... GetClassInfo, кажется, должен дать требуемую информацию, в документации про это есть, да и Рихтер напоминает о тонкостях, в смысле зависимости от контекста процесса. Хотя говорится, что стандартные элементы управления -- общесистемные, в смысле регистрации имён классов. Вот проверить времени нет.
GetClassName не проверял, надо ещё раз, не спеша посмотреть.
Автор: ShIvADeSt
Дата сообщения: 20.09.2003 00:59

Цитата:
Я вот глянул немного на книжку Рихтера "Руководство разработчика для 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 должен работать, но что то не получается. Я еще попробую на неделе о результатах сообщу.
Автор: react
Дата сообщения: 18.10.2003 00:45
Народ !!!

Подскажите плиз следующее:
1. Как вставить строку текста(например из файла) в определенной позиции RichEdit
2. Как очистить область RichEdit
3. Как установить курсор в нужную позицию (line, position) в RichEdit

Я уже обыскал все доки, которые вы тут предлагали по RichEdit'у, но ничего не нашел...

Заранее big thanks !!!
Автор: TeXpert
Дата сообщения: 18.10.2003 01:03
react
Всё же документацию почитай внимательно -- хотя бы через список сообщений этого элемента...
Автор: react
Дата сообщения: 18.10.2003 01:23
TeXpert

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

Да я уже пробовал через список сообщений, но на те сообщения, которые мне
подходят, к сожалению никто не отвечал
Автор: KubanovOV
Дата сообщения: 06.11.2003 14:30
Подскажите, пожалуйста, функции API для программной генерации событий от мыши и клавиатуры, а также для перехвата событий от мыши и клавиатуры (определение нажатия кнопок мыши не зависимо от того, находится ли курсор в клиентской области приложения).

Страницы: 12345678910111213141516171819202122232425262728293031323334353637

Предыдущая тема: посоветуйте книги по SQL


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.