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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Цитата:
а как можно сделать глобальные кеи? например как в винампе ?
Глобальные нельзя, наксолько знаю. Надо ставить хук (ловушку) на клавиатуру.

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

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 21:35 27-05-2007
plazzmex



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

Цитата:
Хук ставить. Смотри функцию SetWindowsHookEx с WH_KEYBOARD (или WH_KEYBOARD_LL).

 
что то я не совсем понял..  
куда я должен вписывать этот код впрограмме?
 
там странно объясняется..

Код:
lpfn
[in] Pointer to the hook procedure. If the dwThreadId parameter is zero or specifies the identifier of a thread created by a different process, the lpfn parameter must point to a hook procedure in a DLL. Otherwise, lpfn can point to a hook procedure in the code associated with the current process.
hMod
 

что это ?
 
p.s : а что насчет второго вопроса?

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 22:38 27-05-2007 | Исправлено: plazzmex, 22:40 27-05-2007
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Цитата:
что то я не совсем понял
Возможно, тебе рановато пока?) Смотри книгу Рихтера, лучше предыдущие издания (у нас их выпущено 3).
 
Насчёт предыдущего -- это сложно делается, с твоими знаниями вряд ли сделаешь быстро, совет всё тот же -- основательно проштудировать Рихтера.

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

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 22:56 27-05-2007
plazzmex



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

Цитата:
Возможно, тебе рановато пока?

возможно..

Цитата:
Смотри книгу Рихтера

а как именно называется книга?

Цитата:
Насчёт предыдущего -- это сложно делается, с твоими знаниями вряд ли сделаешь быстро, совет всё тот же -- основательно проштудировать Рихтера.

это насчет fullscreen'a ? а разве нет какой то функции которая проверяет fullscreen ? и я ставлю для нее таймер убирания TOPMOST либо сворачивания в трей..
 
p.s : тогда помогите еще с маленьким вопросом, пожалуйста.
как я делаю underline или bold вкакой то строчке в тексте окна DialogBox ?
и как я меняю в DialogBox фонт только какому то одному ID текста? потому что если я делаю к приеру FONT 8, "MS Sans Serif" то это меняет фонт всему тексту...
p.s2:  как я меняю фонт текста в главном окне программы?
p.s3: я отобразил icon в Dialogbox но как я могу его растянуть ? при помощи задачи параметров Width и Height ничего не меняется!?
 
спасибо заранее..

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 23:22 27-05-2007
Abs62



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

Цитата:
а как именно называется книга?

Jeffrey Richter "Programming Application for Microsoft Windows". Есть здесь.

Цитата:
как я делаю underline или bold вкакой то строчке в тексте окна DialogBox ?  
и как я меняю в DialogBox фонт только какому то одному ID текста?

Ну откуда же мы знаем, как ты это делаешь.
Если интересует, как это сделать - создать соответствующий фонт и послать искомому окну сообщение WM_SETFONT с его хэндлом в WPARAM.

Цитата:
p.s2:  как я меняю фонт текста в главном окне программы?

Создаёшь соответствующий фонт и выбираешь его в контекст дисплея перед выводом текста.

Цитата:
p.s3: я отобразил icon в Dialogbox но как я могу его растянуть ?

icon - это изображение фиксированного размера.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 23:43 27-05-2007
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Цитата:
а как именно называется книга
Abs62 уже ответил. Если читаешь на аглицком, у меня есть его более ранняя книга Windows 95: A Developer's Guide" (Richter and Locke), там замечательно про все хуки написано, для начинающих в самый раз. Ну и MSDN.
Цитата:
это насчет fullscreen'a ? а разве нет какой то функции которая проверяет fullscreen ? и я ставлю для нее таймер убирания TOPMOST либо сворачивания в трей..
В Windows 9x это сделать было бы намного проще, а универсальное решение дорого обойдётся.
Цитата:
p.s : тогда помогите еще с маленьким вопросом, пожалуйста.  
как я делаю underline или bold вкакой то строчке в тексте окна DialogBox ?  
и как я меняю в DialogBox фонт только какому то одному ID текста? потому что если я делаю к приеру FONT 8, "MS Sans Serif" то это меняет фонт всему тексту...  
p.s2:  как я меняю фонт текста в главном окне программы?  
p.s3: я отобразил icon в Dialogbox но как я могу его растянуть ? при помощи задачи параметров Width и Height ничего не меняется!?
Ответы на такого рода вопросы найдёшь в книге Петзолда "Программирование для Windows 9x", куча изданий было.
 


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

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 23:54 27-05-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
По поводу PSов.
Берешь любую книгу по MFC(н-р, Круглински) и читаешь.
Можно готовые примеры взять в MSDN по MFC (SetFont)
 
PS. Вышеприведенная ссылка на книгу Рихтера приведёт на мой сайт. Т.ч. найдешь опечатки пиши в ПМ или на мейл, я исправлю.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 23:55 27-05-2007
plazzmex



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

Цитата:
создать соответствующий фонт

в каком смысле создать?

Цитата:
icon - это изображение фиксированного размера.

но у меня файл .ico в котором куча разных разрешений...  почему показывается только одно?
TeXpert

Цитата:
Ответы на такого рода вопросы найдёшь в книге Петзолда "Программирование для Windows 9x", куча изданий было.

ок, спасибо...
Garrett

Цитата:
По поводу PSов.  
Берешь любую книгу по MFC(н-р, Круглински) и читаешь.  
Можно готовые примеры взять в MSDN по MFC (SetFont)

Ок..

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 00:06 28-05-2007
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett В данном случае ему MFC вреден определённо. Дай ему Петзолда. Кстати, у тебя нету случайно последнего "чистого" издания Круглинского (вроде это 5-е издание)? А то у америкосов дурная привычка присасываться к автору (земля ему пухом), причём ценность книги упала. Меня просто интересует краткий курс C++ в конце 5-го издания, желательно в текстовом виде.

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

Всего записей: 3604 | Зарегистр. 08-02-2003 | Отправлено: 00:08 28-05-2007
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TeXpert
Петцольда залить нетрудно, будет ли товарищ читать?
Я думаю, что MFC облегчит ему работу.
Про Круглински. 5-ое издание было издано уже после смерти Круглински.
Тебе нужно 4-ое. У меня есть и книга и был диск от неё, но сейчас я его не нашел.
Постараюсь на днях поискать.

Всего записей: 2736 | Зарегистр. 16-10-2003 | Отправлено: 01:03 28-05-2007
Abs62



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

Цитата:
в каком смысле создать?

В смысле CreateFont (или CreateFontIndirect).

Цитата:
но у меня файл .ico в котором куча разных разрешений...  почему показывается только одно?

По определению.
Для загрузки иконки DialogBox использует функцию LoadIcon, а она грузит иконку только одного размера.

Цитата:
LoadIcon can only load an icon whose size conforms to the SM_CXICON and SM_CYICON system metric values.
(C) MSDN
Если очень хочется поразвлекаться с иконкой в диалоге, выставь ей стиль SS_OWNERDRAW и отрисовывай её самостоятельно в обработчике WM_DRAWITEM.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 01:13 28-05-2007
TeXpert



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett
Цитата:
Про Круглински. 5-ое издание было издано уже после смерти Круглински
Да, ошибся, впрочем и не был уверен. А диск можешь и не искать там, насколько помню, самой книги нет. Мне бы лишь дополнение. Люблю краткие вещи.
 
А Петцолда ему полезно читать, больше, а MFC вряд ли прибавит понимания.

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

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



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот регистрация глобального хоткея
 RegisterHotKey(frmCaster.Handle,GlobalAddAtom('Active'),MOD_CONTROL,VK_F10);
если первый параметр не нулевой, то хоткей посылается окну с соотв хэндлом.

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

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:55 28-05-2007
plazzmex



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

Цитата:
В смысле CreateFont (или CreateFontIndirect).

ок... спасибо..

Цитата:
По определению.  
Для загрузки иконки DialogBox использует функцию LoadIcon, а она грузит иконку только одного размера.

всмысле он берет иконку которая загрузилась для самой программы?
а можно загрузить две иконки?
Garrett

Цитата:
Петцольда залить нетрудно, будет ли товарищ читать?

можно попробовать..
ShIvADeSt

Цитата:
Вот регистрация глобального хоткея  
 RegisterHotKey(frmCaster.Handle,GlobalAddAtom('Active'),MOD_CONTROL,VK_F10);  
если первый параметр не нулевой, то хоткей посылается окну с соотв хэндлом.

а куда я должен вставлять эту функцию ? на нажатие кнопки?

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 19:03 28-05-2007
Abs62



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

Цитата:
всмысле он берет иконку которая загрузилась для самой программы?

В смысле он грузит иконку, которая ему указана. Её размеры должны соответствовать системным параметрам SM_CXICON и SM_CYICON. Если в указанном ресурсе несколько иконок с разными размерами - выбирает соответствующую.  
Иконка для программы указывается в поле hIcon класса главного окна программы при его регистрации. Что ты туда прописал - то и будет.

Цитата:
а можно загрузить две иконки?

Хоть десять - используй функцию LoadImage. Но работать с ними придётся самостоятельно.

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 20:29 28-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62
ок..
 
насчет фонта.. я сделал вот так:

Код:
 
        case WM_SETFONT:
            static LOGFONT lf;
                lf.lfCharSet = DEFAULT_CHARSET;
                lf.lfPitchAndFamily = DEFAULT_PITCH;
                lf.lfFaceName, "Microsoft Sans Serif";
                lf.lfHeight = 16;
                lf.lfWeight = 700;
                lf.lfUnderline = TRUE;
                HFONT hMFont = CreateFontIndirect(&lf);
        if ((HWND)wParam == GetDlgItem(hwnd,IDC_NAMEBOLD))
        {
            SelectObject((HDC)wParam,hMFont);
        }
        break;
 

программа компилируется но изменений никаких не видно...

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 20:47 28-05-2007
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Так ведь не реагировать на WM_SETFONT надо, а самому его посылать.

Код:
 
...
HFONT hMFont = CreateFontIndirect(&lf);
  SendDlgItemMessage(hwnd,IDC_NAMEBOLD,WM_SETFONT,(WPARAM)hMFont,(LPARAM)TRUE);
 

Сделай это при инициализации диалога (в обработчике WM_INITDIALOG), и всё заработает.
 
Не поленись, прочитай Петцольда - он с азов разъясняет, как работают Win-приложения и что чем управляет. Тогда не будут возникать вопросы типа "а куда я должен вставлять эту функцию".

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:06 28-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
все работает.. спасибо.. только вот почему то пишет Warning:

Цитата:
 
172 ...\Main.c [Warning] left-hand operand of comma expression has no effect  
172 ...\Main.c [Warning] statement with no effect  
 

вот строчка 172 (относится к созданию фонта):

Код:
 
lf.lfFaceName, "Microsoft Sans Serif";
 

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 21:48 28-05-2007
xdude



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
plazzmex
Вероятно, там не запятая нужна, а =:
lf.lfFaceName = "Microsoft Sans Serif";

Всего записей: 481 | Зарегистр. 04-11-2004 | Отправлено: 21:54 28-05-2007
plazzmex



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да нет..
когда ставлю = пишет "Error: incompatible types in assignment."

Всего записей: 1123 | Зарегистр. 29-09-2005 | Отправлено: 21:57 28-05-2007
Открыть новую тему     Написать ответ в эту тему

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