Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите освоить WinAPI 
:(
    Опции темы
sidiakin
Дата 7.10.2010, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 16.10.2005

Репутация: нет
Всего: нет



Читаю книгу Petzold. Вот фрагмент текста, который мне непонятен:

Цитата

SYSMETS1 также сохраняет среднюю ширину символов верхнего регистра в статической переменной cxCaps. Для
фиксированного шрифта cxCaps была бы равна cxChar. Для пропорционального шрифта cxCaps равна 150% от
cxChar. Младший бит поля tmPitchAndFamily структуры TEXTMETRIC равен 1 для пропорционального шрифта и
0 для фиксированного. SYSMETS1 использует значение этого бита для расчета cxCaps из cxChar следующим
образом:
cxCaps =(tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;


Объясните пож., как здесь находится 150% от ширины символа???

Еще мне непонятно про действительные/недействительные регионы. Автор пишет, что можно перерисовывать, как все окно, так и часть. И что часть окна перерисовывать лучше, чем все окно. А как мне выбирать метод перерисовывания окна, я так и не понял.

И вот еще так автор находит положение Scroll Bar: 

Цитата

iVscrollPos = max(0, min(iVscrollPos, NUMLINES));


Как это читать??? Заранее спасибо!
PM MAIL   Вверх
ASMatic
Дата 8.10.2010, 05:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 14.3.2009

Репутация: 1
Всего: 1



Цитата(sidiakin @  7.10.2010,  18:37 Найти цитируемый пост)
И что часть окна перерисовывать лучше, чем все окно

InvalidateRect

по шрифтам ничего не понял)
PM MAIL   Вверх
Earnest
Дата 8.10.2010, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(ASMatic @  8.10.2010,  06:20 Найти цитируемый пост)
по шрифтам ничего не понял) 

А чего там понимать? 3/2 это и есть 150%. А также см:
Цитата

Младший бит поля tmPitchAndFamily структуры TEXTMETRIC равен 1 для пропорционального шрифта и
0 для фиксированного



--------------------
...
PM   Вверх
sidiakin
Дата 8.10.2010, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 16.10.2005

Репутация: нет
Всего: нет



Ну объясните пожалуйста "на яблоках"
PM MAIL   Вверх
borisbn
Дата 9.10.2010, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 6
Всего: 135



Знаю, что  smile 

Цитата(sidiakin @  8.10.2010,  21:46 Найти цитируемый пост)
Ну объясните пожалуйста "на яблоках"

в Apple нет WinAPI smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
GremlinProg
Дата 10.10.2010, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(sidiakin @  8.10.2010,  23:46 Найти цитируемый пост)
Ну объясните пожалуйста "на яблоках"

ну раздели 3 яблока пополам ( 3/2 )
что получится?
полтора яблока

а что такое 150%?
те же полтора яблока, только помноженные на 100%

любой другой фрукт будет делиться так же smile 


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Logree
Дата 10.10.2010, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2



я так понимаю у автора проблемы с матчастью... т.е с C++

Код

cxCaps =(tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;


Код

Младший бит поля tmPitchAndFamily структуры TEXTMETRIC равен 1 для пропорционального шрифта и
0 для фиксированного.

Код

tm.tmPitchAndFamily & 1 

этот фрагмент кода вернёт 1 если младший бит установлен и 0 если он не установлен, далее смотрим оператор:  (условие) ? если истино:если ложно,  т.е если бит установлен то выражение  (tm.tmPitchAndFamily & 1 ? 3 : 2) будет равно 3 и мы получим: 3/2 * cxChar, если не установлен то выражение (tm.tmPitchAndFamily & 1 ? 3 : 2) буде равно 2 и мы получим: 2/2 * cxChar ;


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
sidiakin
Дата 10.10.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 16.10.2005

Репутация: нет
Всего: нет



Спасибо Logree за подробное разъяснение. Именно это я и хотел спросить. Хотя, если честно, я так и не понял откуда 3 ?  и почему так все сложно. Я думал, что 150% от cxChar, то это просто cxChar * 1.5. И пож. поясните по поводу действ./ недейств. прямоугольников при рисовании. Если у меня в окне будет прямоугольник, котор. мне нужно будет перерисовывать, как мне объяснить Windows, что мне нужно перерисовывать только его, а не все окно? Спасибо
PM MAIL   Вверх
Logree
Дата 11.10.2010, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 331
Регистрация: 22.11.2006
Где: Самара

Репутация: нет
Всего: 2





--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
sidiakin
Дата 11.10.2010, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 90
Регистрация: 16.10.2005

Репутация: нет
Всего: нет



А-а-а... Еще раз спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1050 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.