Здрасьте.
Вот смотрю в книгу(в смысле MSDN) и вижу фигу.
Задача тривиальная — создать свой pen, к-рый бы рисовал точками(а не черточками как, например, стиль PS_DOT).
Пишу следующее:
Не работает, bSucc = 0 , т.е. не создается даже
В общем, я разные сочетания стиля и полей этой LOGBRUSH пробовал, но результат один.
Разьясните, pls, что не так.
Может я в этой LOGBRUSH'е треклятой чего-то недопонимаю?
Здравствуйте Pogodinn, Вы писали:
P>Пишу следующее: P> P> DWORD pdwStyle[2] = {1, 0}; P> LOGBRUSH lBr; P> lBr.lbColor = m_clrPen; P> lBr.lbStyle = BS_SOLID; P> BOOL bSucc = m_pPen->CreatePen( PS_COSMETIC|PS_USERSTYLE, 1, &lBr, 2, pdwStyle ); P> P>Не работает, bSucc = 0 , т.е. не создается даже P>В общем, я разные сочетания стиля и полей этой LOGBRUSH пробовал, но результат один. P>Разьясните, pls, что не так.
Во-первых, PS_USERSTYLE поддерживается только для NT/2000/XP, так что если у тебя 9x, то работать просто не будет. Если это NT, то надо вызвать GetLastError() и посмотреть в чем дело (ставлю на 87).
Во-вторых, в MSDN написано по поводу заполнения массива:
The first value specifies the length of the first dash in a user-defined style, the second value specifies the length of the first space, and so on.
Откуда следует, что для рисования точками, стиль должен быть { 1, 1 }.
-- Alex Fedotov
Re[2]: Посоветуйте, как создать CPen нужного стиля.
Здравствуйте Alex Fedotov, Вы писали:
AF>Во-первых, PS_USERSTYLE поддерживается только для NT/2000/XP, так что если у тебя 9x, то работать просто не будет. Если это NT, то надо вызвать GetLastError() и посмотреть в чем дело (ставлю на 87).
Ну, плин, я то как раз под must die'м сижу.
Кто ж знал.
AF>Во-вторых, в MSDN написано по поводу заполнения массива: AF>The first value specifies the length of the first dash in a user-defined style, the second value specifies the length of the first space, and so on. AF>Откуда следует, что для рисования точками, стиль должен быть { 1, 1 }.
Пардон, обшибся. На самом деле, конечно {1, 1}.
Но как быть то мне, горемычному, под win98?
Тяжела и неказиста жизнь простого...
программиста
Re[3]: Посоветуйте, как создать CPen нужного стиля.
Здравствуйте Pogodinn, Вы писали:
AF>>Во-первых, PS_USERSTYLE поддерживается только для NT/2000/XP, так что если у тебя 9x, то работать просто не будет. Если это NT, то надо вызвать GetLastError() и посмотреть в чем дело (ставлю на 87).
P>Ну, плин, я то как раз под must die'м сижу. P>Кто ж знал.
Это написано в последних строчках документации на ExtCreatePen. Я, конечно, понимаю, что ты вызывал CPen::CreatePen, а не ExtCreatePen напрямую, но это еще раз подчеркивает, что использование MFC или ATL/WTL не отменяет необходимости изучать Win32 API.
P>Но как быть то мне, горемычному, под win98?
Можно LineDDA воспользоваться, хотя она и медленнее в разы, ну и Bresenham's line algorithm тоже еще никто не отменял.