Форум программистов, компьютерный форум CyberForum.ru

Поясните последнюю строку - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.04.2013, 15:15     Поясните последнюю строку #1
EZFONT по Петзолдту.
C++
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
HFONT                         EasyFontCreate                 (HDC                    Context     ,
                                                              std::string            FontName    ,
                                                              double                 Height      ,
                                                              double                 Width       ,
                                                              int                    Attributes  )
{
 double     HorizontalResolution;
 double     VerticalResolution;
 HFONT      Result;
 LOGFONT    LogicalFont;
 POINT      Point;
 TEXTMETRIC TextMetrics;
 SaveDC(Context);
 SetGraphicsMode(Context, GM_ADVANCED);
 ModifyWorldTransform(Context, NULL, MWT_IDENTITY);
 SetViewportOrgEx(Context, 0, 0, NULL);
 SetWindowOrgEx  (Context, 0, 0, NULL);
 HorizontalResolution=(double)(25.4*((double)GetDeviceCaps(Context, HORZRES)));
 VerticalResolution  =(double)(25.4*((double)GetDeviceCaps(Context, VERTRES)));
 Point.x=(int)(Width *HorizontalResolution*1000/72.0);
 Point.y=(int)(Height*VerticalResolution  *1000/72.0);
 DPtoLP(Context, &Point, 1);
 LogicalFont.lfHeight        =-(int)(((double)abs(Point.y))/1000+0.5);
 LogicalFont.lfWidth         = (int)(((double)abs(Point.x))/1000+0.5);
 LogicalFont.lfEscapement    = 0;
 LogicalFont.lfOrientation   = 0;
 LogicalFont.lfWeight        =(Attributes&IDFABold        )*700;
 LogicalFont.lfItalic        =(Attributes&IDFAItalic   >>1);
 LogicalFont.lfUnderline     =(Attributes&IDFAItalic   >>2);
 LogicalFont.lfStrikeOut     =(Attributes&IDFAStrikeOut>>3);
 LogicalFont.lfCharSet       = 0;
 LogicalFont.lfOutPrecision  = 0;
 LogicalFont.lfClipPrecision = 0;
 LogicalFont.lfPitchAndFamily= 0;
 strcpy(LogicalFont.lpFaceName, FontName.c_str());
. strcpy копирует нуль-терминальную строку. А куда? Буфер вообще существует? Может его выделить? Или лучше скопировать указатель?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 15:15     Поясните последнюю строку
Посмотрите здесь:

Вывести последнюю строку из файла C++
C++ Почему последнюю строку из файла выводит дважды?
C++ Как регулярно считывать последнюю строку в файле
Поменять местами побочную диагональ и последнюю строку матрицы C++
Переставить местами первую и последнюю строку массива C++
Поясните строку пожалуйста C++
C++ Удалить последнюю строку из файла

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
w8me
496 / 11 / 1
Регистрация: 10.04.2013
Сообщений: 44
14.04.2013, 15:30     Поясните последнюю строку #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef struct tagLOGFONT {
  LONG  lfHeight;
  LONG  lfWidth;
  LONG  lfEscapement;
  LONG  lfOrientation;
  LONG  lfWeight;
  BYTE  lfItalic;
  BYTE  lfUnderline;
  BYTE  lfStrikeOut;
  BYTE  lfCharSet;
  BYTE  lfOutPrecision;
  BYTE  lfClipPrecision;
  BYTE  lfQuality;
  BYTE  lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, *PLOGFONT;
по стандарту
C++
1
#define LF_FACESIZE         32
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.04.2013, 15:31     Поясните последнюю строку #3
Цитата Сообщение от taras atavin Посмотреть сообщение
Или лучше скопировать указатель?
FontName локальная и будет разрушена после выхода из функции
Цитата Сообщение от taras atavin Посмотреть сообщение
А куда? Буфер вообще существует? Может его выделить?
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef struct tagLOGFONT {
  LONG  lfHeight;
  LONG  lfWidth;
  LONG  lfEscapement;
  LONG  lfOrientation;
  LONG  lfWeight;
  BYTE  lfItalic;
  BYTE  lfUnderline;
  BYTE  lfStrikeOut;
  BYTE  lfCharSet;
  BYTE  lfOutPrecision;
  BYTE  lfClipPrecision;
  BYTE  lfQuality;
  BYTE  lfPitchAndFamily;
  TCHAR lfFaceName[LF_FACESIZE];
} LOGFONT, *PLOGFONT;
lfFaceName
A null-terminated string that specifies the typeface name of the font. The length of this string must not exceed 32 TCHAR values, including the terminating NULL. The EnumFontFamiliesEx function can be used to enumerate the typeface names of all currently available fonts. If lfFaceName is an empty string, GDI uses the first font that matches the other specified attributes.
Yandex
Объявления
14.04.2013, 15:31     Поясните последнюю строку
Ответ Создать тему
Опции темы

Текущее время: 12:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru