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

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

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

ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
judelaw
О-оооо! MPC-HC. Ты его для начала просто собери, без собственных модификаций. Получишь массу удовольствия. А как такое счастиё настанет - так и поробуй там что-то менять.
PS: А, так ты уже... Ну тогда снимаю шляпу перед очередным разгребателем авгиевых конюшен.

Всего записей: 2040 | Зарегистр. 02-09-2005 | Отправлено: 01:03 08-08-2011 | Исправлено: ItsJustMe, 01:04 08-08-2011
judelaw

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ItsJustMe
А чего его собирать? Плевое дело, раз 200 уже собирал и собираю.

Всего записей: 2830 | Зарегистр. 22-09-2009 | Отправлено: 01:06 08-08-2011
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
offtopic starts
Молодец! А мне вот разгребать надоело....
offtopic ends

Всего записей: 2040 | Зарегистр. 02-09-2005 | Отправлено: 01:07 08-08-2011
judelaw

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так-с, а как мне теперь строку из это контрола выдрать??? Не сохраняет значение при выходе из поля
то есть в:
CPPageAccelTbl::OnEndlabeleditList
------------
case COL_KEY: {
    CString str = pItem->pszText;
    m_list.SetItemText(pItem->iItem, pItem->iSubItem, str);
    *pResult = TRUE;
}
не фурычит. Я так понимаю нужно типа строковую GetHotKeyName заполучить, а как к этому элементу обратиться?? Если бы не в составе CPlayerListCtrl то легко, а так...

Всего записей: 2830 | Зарегистр. 22-09-2009 | Отправлено: 01:08 08-08-2011 | Исправлено: judelaw, 02:36 08-08-2011
judelaw

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С этим тоже разобрался. Осталось событие на Escape как то придумать, чтоб оставалось значение в поле до редактирования (а то в пусто сбрасывает при Esc)
-----------------------
Ерунда это все, надо попробовать CWinHotKeyCtrl прилепить.
Всем спасибо!

Всего записей: 2830 | Зарегистр. 22-09-2009 | Отправлено: 11:18 08-08-2011 | Исправлено: judelaw, 12:19 08-08-2011
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
judelaw
Разработку и модификацию МРС наверное в другой теме. Так как трабла не в том, как сделать конкретную вещь (это то понятно), а куда это прилепить в исходниках.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 14:23 08-08-2011
V0lt



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

Цитата:
О-оооо! MPC-HC. Ты его для начала просто собери, без собственных модификаций. Получишь массу удовольствия.

Уже довольно долгое время сабж собирается по официальной инструкции с первого раза. Раньше да, была жопа.

 
judelaw

Цитата:
С этим тоже разобрался.

Выложи куда-нибудь модифицированные PlayerListCtrl.h/PlayerListCtrl.cpp, чтобы потом не искать.

Всего записей: 10793 | Зарегистр. 05-02-2003 | Отправлено: 14:55 08-08-2011
V0lt



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

Код:
CSliderCtrl slider;
 
slider.SetRange(-100, 100);
slider.SetPos(0);

Проблема в том, что ползунок находиться слева (на позиции -100), а не по середине (на 0).
 
Если выполнить SetTicFreq, т.е.

Код:
CSliderCtrl slider;
 
slider.SetRange(-100, 100);
slider.SetTicFreq(10);
slider.SetPos(0);

то ползунок стает на свое центральное место. Но мне не нужны тики.
 
Почему так и как быть?

Всего записей: 10793 | Зарегистр. 05-02-2003 | Отправлено: 00:11 10-08-2011
ShIvADeSt



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

Цитата:
slider.SetRange(-100, 100);
slider.SetPos(0);  

Потому что в данном случае есть всего две позиции -100 и 100. Поэтому SetPos(0) указывает на левую позицию. Попробуй сделать

Цитата:
slider.SetRange(-100, 100);
slider.SetTicFreq(100);
slider.SetPos(0);  

По идее будет всего один тик в нуле и там же будет курсор.


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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:30 10-08-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt
Такой способ не совсем годиться. Диапазоны у меня разные.
 
Причина бага в том, что по умолчанию позиция равна 0 и диапазон 0...100, и после SetRange(-100, 100) слайдер должен был перерисоваться, но этого не произошло. Затем при вызове SetPos(0) метод слайдера видит, что позиция не менялась и как бы естественно ничего не перерисовывает.
А вот метод SetTicFreq, принудительно вызывает перерисовку и поэтому после него все хорошо. Но он мне не нужен, я использую SetTic, который перерисовывает только себя и ползунок не двигает.
 
Вот способ решения проблемы

Код:
slider.SetRange(-100, 100);
slider.SetPos(1);
slider.SetPos(0);

Как-то глупо выглядит. Может у слайдера есть метод, который перерисовывает ползунок и больше ничего не делает?
 
Чето я туплю. Вот правильный способ

Код:
slider.SetRange(-100, 100, true);
slider.SetPos(0);

Всего записей: 10793 | Зарегистр. 05-02-2003 | Отправлено: 08:56 10-08-2011 | Исправлено: V0lt, 09:05 10-08-2011
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос не про C++, но про WINAPI:
 
копирую из броузера на удаленном компе текст в буфер обмена, пытаюсь его програмно прочитать на своем компе: вместо русских букв вопросики: GetClipboardData(CF_TEXT) или CF_OEMTEXT или CF_UNICODETEXT результат один. Открываю notepad/excel, в них текст вставляется нормально русскими буквами. При копировании с этого же сайта на локальном компе все ок. То ли notepad с другие проги его конвертируют, то ли я какой-то формат Clipboarda упустил ?

Всего записей: 39 | Зарегистр. 04-10-2004 | Отправлено: 15:06 03-10-2011
kok80

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
разобрался сам, текст был в Unicode и его надо было сконвертировать. Сбился тем, что для определения формата буфера обмена вызывал GetPriorityClipboardFormat, который выдавал любой первый текстовый формат, указанный в параметре. Кто ж мог подумать, что если текст в ,буфере в CF_UNICODETEXT, GetPriorityClipboardFormat могу выдать CF_TEXT.

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

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




Учись читать, тут тема про WinAPI. Свой вопрос в прибитые топики

Всего записей: 4 | Зарегистр. 22-08-2009 | Отправлено: 12:40 06-10-2011 | Исправлено: ShIvADeSt, 07:49 07-10-2011
V0lt



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

Код:
HWND hWnd = ::FindWindow(MPC_WND_CLASS_NAME, NULL);
if (hWnd) {
    DWORD Result = 0;
    LRESULT Return = 0;
    Return = ::SendMessageTimeout(hWnd, WM_NULL, 0, 0, SMTO_ABORTIFHUNG, 5000, &Result );
}

Допустим, в тот момент когда я посылаю WM_NULL в проверяемом окне выполняется OnClose() или OnDestroy(). Будем считать, что окно закрывается за 1 секунду.
Вопрос. Окно обработает моё сообщение?

Всего записей: 10793 | Зарегистр. 05-02-2003 | Отправлено: 10:07 09-10-2011 | Исправлено: V0lt, 10:08 09-10-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
По идее, может. Цикл обработки сообщений останавливается при  извлечении из очереди сообщения WM_QUIT. Сообщения, попавшие в очередь до того должны быть обработаны. Если сообщение встало в очередь до вызова PostQuitMessage, оно должно быть обработано.

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

Всего записей: 6092 | Зарегистр. 22-10-2005 | Отправлено: 13:45 09-10-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
А реально как нибудь определить, что окно начало процесс закрытия (запустился OnClose())?
 
Мне пока приходят в голову два костыля... варианта:
1. В OnClose() менять заголовок окна, потом другой процесс его анализирует.
2. Посылать два WM_NULL с некоторым интервалом, потом гадаем над результатом.
Может есть более правильные способы?

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



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

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

Всего записей: 6092 | Зарегистр. 22-10-2005 | Отправлено: 17:16 09-10-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
Че-то у меня сомнения по поводу WaitForSingleObject. Как я узнаю HANDLE эвента?
 
Изначально задача такая. Запущен первый экземпляр программы, он работает. Запускаем второй. Он ищет первый экземпляр. Если находит первого и тот не закрывается в текущий момент, тогда передает ему комстроку. Иначе выжидает немного и запускается сам.

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



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

Цитата:
Как я узнаю HANDLE эвента?

Через OpenEvent, вестимо. Конечно, эвент должен быть именованным, с уникальным именем.

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

Всего записей: 6092 | Зарегистр. 22-10-2005 | Отправлено: 18:49 09-10-2011
V0lt



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

Всего записей: 10793 | Зарегистр. 05-02-2003 | Отправлено: 21:41 09-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