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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WinAPI текст под наклоном 
:(
    Опции темы
m9yt
Дата 4.9.2010, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Всем привет)
На сайте изучаю WinApi, там возникает куча вопросов. Вот один из них:
-Выбор шрифта текста и поворот
Код

static LOGFONT lf;
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{
        HDC hdc, hmdc;
    PAINTSTRUCT ps;
    HFONT hFont;
    lf.lfCharSet=DEFAULT_CHARSET;
    lf.lfPitchAndFamily=DEFAULT_PITCH;
    lf.lfQuality=CLEARTYPE_QUALITY;
    lf.lfHeight = 40;
    lf.lfWidth  = 20;
    lf.lfWeight = 40;
    lf.lfEscapement=GM_COMPATIBLE;
    lstrcpy( (LPWSTR)lf.lfFaceName, L"Comic Sans MS");   //Потратил кучу времени, чтобы строка прошла через компилятор. Везде пишется такой вариант 
                                                                                                 //strcpy( lf.lfFaceName, "Comic Sans MS"), но 
                                                                                                 //ошибка с преобразование типов
    hFont=CreateFontIndirect(&lf);
        hdc=BeginPaint(hwnd, &ps);
            SelectObject(hdc, hFont);
            SetTextColor(hdc, RGB(44, 41, 11));
            SetBkColor(hdc, RGB(255, 0, 0));
            SetBkMode(hdc, TRANSPARENT);
            XFORM xform;
            xform.eM11=1.0;
            xform.eM12=2.0;
            xform.eM21=15.0;
            xform.eM22=1.0;
            xform.eDx=1.0;
            xform.eDx=1.0;        
            xform.eDy=1.0;
            SetWorldTransform( hdc, &xform);
            TextOut(hdc, 500, 100, L"Привет!!!!!!1", 13);
            DeleteObject(hFont);
            EndPaint( hwnd, & ps);
            break;
        default:
            return DefWindowProc(hwnd,message,wParam,lParam);
        }
} 

PM MAIL   Вверх
Dem_max
Дата 5.9.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



и в чем проблема то ?


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
ASMatic
Дата 6.9.2010, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(m9yt @  4.9.2010,  16:50 Найти цитируемый пост)
 L"Comic Sans MS"

L"Comic Sans MS" - значит что юзаем юникод
TEXT"Comic Sans MS" - анси

strcpy() - сравнивает анси строки
wcscpy() - юникод

и также с 
MessageBoxA( TEXT"Comic Sans MS" ) - ansi
MessageBoxW( L"Comic Sans MS" ) - unicode

Когда ты пишешь MessageBox(), студия уже по настройкам смотрит какую из меседж боксов вписать в импорт..

и так повсюду)
для повышения бістродействия приложения советую юзать юникод, т.к. практически все win32 апи в конечном итоге юникодные, т.е.

testapp.exe!MessageBoxA() -> User32.dll!MultibyteToWideChar() -> user32.dll!MessageBoxW()

но памяти на строки в два раза больше надоsmile

Это сообщение отредактировал(а) ASMatic - 6.9.2010, 05:20
PM MAIL   Вверх
ИванМ
Дата 6.9.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ASMatic, вы путаете. TEXT - это универсальный макрос, который работает как с ANSI так с Unicode, в зависимости настроек компилятора (define'ов)
PM MAIL   Вверх
ASMatic
Дата 6.9.2010, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ИванМ, 
да вы правы!
привычка) - по дефолту в студии анси стоит, вот и на тебе)
TEXT вообще никогда не юзаю на асмом деле,)
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.

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


 




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


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

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