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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1) OnClose:
GlobalAddAtom
...
GlobalDeleteAtom
 
2) если FindWindow то GlobalFindAtom
 

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 22:23 11-10-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kok80
Спасибо, посмотрю.
 
Задача. Есть CEdit. Нужно введенный символ запятой менять на точку. Есть функция OnChar(UINT nChar, UINT nRepCnt, UINT nFlags), но правка nChar и nFlags ни на что не влияет.
Как правильно такое сделать?

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 17:39 12-10-2011
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а где winapi ? А нельзя ли просто потом при получении строки из edit менять зпт на тчк ?  
EN_CHANGE : заменить все зпт на тчк

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 21:56 12-10-2011
V0lt



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

Цитата:
А нельзя ли просто потом при получении строки из edit менять зпт на тчк ?

такое решение есть, но не айс
 

Цитата:
EN_CHANGE : заменить все зпт на тчк

как и где его использовать?

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 07:13 13-10-2011
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt Делай свой класс, наследуемый от CEdit, перехватывай в нем событие отпускания клавиши, и в случае получения кода запятой меняй его на точку.


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 12:05 13-10-2011
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а если copy-paste ? Фиг он тогда словит отпускание

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 13:16 13-10-2011
V0lt



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

Цитата:
Делай свой класс, наследуемый от CEdit, перехватывай в нем событие отпускания клавиши, и в случае получения кода запятой меняй его на точку.

Делал. Толку ноль. У тебя есть рабочий вариант?
 
kok80

Цитата:
а если copy-paste ?

Это тоже важно. Но для начала хочется научится подменять нажатие кнопок.

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 17:46 13-10-2011 | Исправлено: V0lt, 17:57 13-10-2011
wasilissk

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

Цитата:
WM_CHAR message contains the character code of the key that was pressed.
wParam
The character code of the key.  
lParam
The repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state  
hттp://msdn.microsoft.com/en-us/library/windows/desktop/ms646276(v=vs.85).aspx

Подойдет?
 
2.
Можно как kok80 сказал EN_CHANGE перехватывать, только оно прилетает паренту уже апостериори, т.е. придется GetWindowText меняем, что необходимо и SetWindowText новое значение.
 
 

Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 19:20 13-10-2011
V0lt



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

Цитата:
Подойдет?

есть такой код

Код:
BEGIN_MESSAGE_MAP(CFloatEdit, CEdit)
    ON_WM_CHAR()
END_MESSAGE_MAP()
void CFloatEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    if (nChar == ',') {
        nChar = '.';
        nFlags += 1;
    }
    CEdit::OnChar(nChar, nRepCnt, nFlags);
}

тоже самое, только MFC. Не работает.
 
Похоже придется менять запятую на точку при выходе из эдита.
 
Подскажите как узнать текущий символ для "разделителя целой и дробной части"?

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 19:24 14-10-2011
Abs62



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

Цитата:
      nFlags += 1;  

А зачем?

Цитата:
Подскажите как узнать текущий символ для "разделителя целой и дробной части"?

GetLocaleInfo(...,LOCALE_SDECIMAL,...)

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:39 14-10-2011
V0lt



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

Цитата:
А зачем?

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

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 20:59 14-10-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет!
Как узнать время запуска процесса?

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 13:59 23-10-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Погляди функцию GetProcessTimes.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 14:13 23-10-2011
Sota

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Микрософт советует так:

Код:
 
   afx_msg void CMyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
   {
      if (nChar == '.' || nChar == ',')
         nChar = '.';
      DefWindowProc(WM_CHAR, nChar, MAKELONG(nRepCnt, nFlags));
   }
 

Всего записей: 273 | Зарегистр. 19-12-2005 | Отправлено: 15:16 24-10-2011 | Исправлено: Sota, 15:16 24-10-2011
V0lt



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

Цитата:
Погляди функцию GetProcessTimes.

Т.е. сначала EnumProcesses, ищу в массиве нужный процесс (EnumProcessModules+GetModuleBaseName), затем OpenProcess и только потом GetProcessTimes. Правильно, ничего лишнего?
 
Еще вопрос. Возможно ли такое, что FindWindow ничего не находит, потому что процесс еще не успел создать окно?
 
Sota
Работает! Спасибо!

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 19:52 24-10-2011
Abs62



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

Цитата:
Правильно, ничего лишнего?

Дык, программисту виднее, как нужный процесс искать.

Цитата:
Возможно ли такое, что FindWindow ничего не находит, потому что процесс еще не успел создать окно?

Нет окна - нет и результата, вестимо.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:25 24-10-2011
kentuki13

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

Всего записей: 9 | Зарегистр. 23-10-2011 | Отправлено: 21:25 24-10-2011
V0lt



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

Цитата:
Дык, программисту виднее, как нужный процесс искать.

Я надеялся, что есть более простой способ А то четыре функции и цикл, имхо перебор.

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 22:09 24-10-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Ну, если есть хэндл принадлежащего процессу окна, можно и чуток попроще - через GetWindowThreadProcessId.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 22:59 24-10-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
Спасибо.
 
В общем есть задача. Открываем в проводнике папку с 10 файлами, выделяем их, ПКМ, открыть. Винда запускает 10 процессов, а надо только 1 процесс, в котором будет открыто 10 файлов. Решение точно существует, только где бы его посмотреть.
 
Добавлено:
Еще. Есть функции CreateMutex и OpenMutex. Не могу понять смысл параметров bInitialOwner и bInheritHandle. Помогите разобраться.

Всего записей: 10501 | Зарегистр. 05-02-2003 | Отправлено: 06:56 25-10-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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