Взрослая социальная сеть
Текстовая версия форума
Знакомства для секса Регистрация


C++ sexnarod journal ;)

Текстовая версия форума: Архив компьютерного форума



Полная версия топика:
C++ sexnarod journal ;) -> Архив компьютерного форума


Страницы: 1[2]

tetro
Гриша, спасибо за комплемент!

Если честно, то по хорошему у меня по программированию только докторская степень (без предыдущих wink.gif). Я - алгоритмист (причем более в непрерывных вещах чем в дискретных), т.е. да имплементирую много и активно, но обычно моя цель это эффективность с наименьшими потерями а не всяческие ОО красоты wink.gif
Т.е. за перво-принципами это ко мне, а с какой стороны открывают стандарт - это вопрос отдельный...

А разговариваю сам с собой я столько лет сколько себя помню wink.gif
GregZ
Сегодня наконец нашел в электронном виде (DjVu) книжку "Дизайн и эволюция C++" Бьярна Страуструпа на русском языке Её бумажная реинкарнация в моей библиотеке изрядно истрепалась и представляет собой просто жалкое зрелище :)

PS кому интересно, лежит у меня на FTP здесь
niktuba
Народ, я тут попытался найти в Visual C++ 6.0 функцию, которая позволяет выводить на экран текст в вертикальном направлении - надо к оси Y подпись присобачить. Среди извратов с API TextOut, TabbedTextOut, DrawText, DrawTextEx, к удивлению своему, не обнаружил ни одного, позволяющего менять направление текста. Есть ли простые, не использующие Microsoft Foundation Classes, коды, показывающие, как проще всего напечатать
вертикальный текст?
GregZ
QUOTE (niktuba @ 12.07.2006 - время: 23:12)
Народ, я тут попытался найти в Visual C++ 6.0 функцию, которая позволяет выводить на экран текст в вертикальном направлении - надо к оси Y подпись присобачить. Среди извратов с API TextOut, TabbedTextOut, DrawText, DrawTextEx, к удивлению своему, не обнаружил ни одного, позволяющего менять направление текста. Есть ли простые, не использующие Microsoft Foundation Classes, коды, показывающие, как проще всего напечатать
вертикальный текст?

Не там ищешь. Вывести вертикальный текст способна любая из приведенных тобой функций.
Они выводят текст определенным шрифтом. Все что тебе надо - создать его вертикальным.
Обрати внимание на четвертый параметр (orientation) функции CreateFont. Он позволяет задавать угол отклонения базовой линии выводимых символом от оси абсцисс.

Это сообщение отредактировал GregZ - 13-07-2006 - 10:09
niktuba
QUOTE (GregZ @ 13.07.2006 - время: 10:07)
Не там ищешь. Вывести вертикальный текст способна любая из приведенных тобой функций.
Они выводят текст определенным шрифтом. Все что тебе надо - создать его вертикальным.
Обрати внимание на четвертый параметр (orientation) функции CreateFont. Он позволяет задавать угол отклонения базовой линии выводимых символом от оси абсцисс.

Ну как же не там? Тута - на sexnarode licklips.gif Если без шуток, то огромное спасибо. Я бы, может, и сам нашел, но потратив много времени, которого у меня сейчас нет совсем. В Португалии конец июля - как конец декабря в пристнопамятном СССР: надо доделать все, в августе португалы сваливают в отпуск и никого не найти. Как закончу возиться с бумагами и железками - пренепременно попробую CreateFont... 0096.gif
niktuba
QUOTE (GregZ @ 13.07.2006 - время: 10:07)
Не там ищешь. Вывести вертикальный текст способна любая из приведенных тобой функций.
Они выводят текст определенным шрифтом. Все что тебе надо - создать его вертикальным.
Обрати внимание на четвертый параметр (orientation) функции CreateFont. Он позволяет задавать угол отклонения базовой линии выводимых символом от оси абсцисс.

Замечательно! Все получилось. Правда, всякие там TextOut(...) вертикальный текст выравнивают с загибонами, но если покумекать, то все встает на место:
C++ sexnarod journal ;)

Я только вот чего не понял - чистит ли GDI'шный Device Context за собой созданные графические объекты или нет? В MFC используются классы с конструкторами/деструкторами, и там все понятнее. А в GDI - handles, и все более туманно.

Иными словами, в программе

BOOL CEChart::fbDrawChart(RECT* aPrcChart, HDC ahDC)
{
HBRUSH h_ChartBrush = CreateSolidBrush(RGB(250, 250, 100));
HBRUSH h_DefBrush = (HBRUSH__ *)SelectObject(ahDC, h_ChartBrush);
FillRect(ahDC, aPrcChart, h_ChartBrush);
// Is it sufficient
SelectObject(ahDC, h_DefBrush);
// or we need DeleteObject(SelectObject(ahDC, h_DefBrush));
// to clear the space allocated by h_ChartBrush ?
return TRUE;
} // BOOL CEChart::fbDrawChart(RECT* aPrcChart, HDC ahDC)






JeyLo
Чистить за собой обязательно, т.е. всегда надо звать DeleteObject.
niktuba
QUOTE (JeyLo @ 27.07.2006 - время: 14:01)
Чистить за собой обязательно, т.е. всегда надо звать DeleteObject.

Спасибо, так мне сердце и подсказывало rolleyes.gif
JeyLo
Кто скажет, что делает эта функция без всяких там условных переходов? :)))

inline int h3(int m,int y) {
return 28+!!(m-2)*2+!(y%4)*!(m-2)+m/8*(1-m%2)+(1-m/8)*(m%2);
}
GregZ
QUOTE (JeyLo @ 02.08.2006 - время: 15:02)
Кто скажет, что делает эта функция без всяких там условных переходов? :)))

inline int h3(int m,int y) {
return 28+!!(m-2)*2+!(y%4)*!(m-2)+m/8*(1-m%2)+(1-m/8)*(m%2);
}

Скажем тоже само что и
CODE
inline int h3(int m)
{
 return 30+m*(1-m%2)+(1-m)*(m%2);
}


А без +30 (для положительных m) просто превращает все нечетные m в -(m-1). Вот такой же код с использованием тернарного оператора:
CODE
return m % 2 ? -(m - 1) : m;


Для чего это нужно, не знаю.
JeyLo
Не туда думаешь.. :))
JeyLo
cout << h3 ( 2, 2006 ) будет 28, cout << h3 ( 2, 2000 ) будет 29, а cout << 30+2*(1-2%2)+(1-2)*(2%2) будет 32...

В смысле код - получение дней в месяце в году чистой математикой. Воооот... :)))
niktuba
Создавая программы на С++ мне часто приходится писать документацию, включающую три языка, рисунки и исходный код. Поэтому никуда не деться, приходится для этого дела использовать MS Word. Для автоматического выделения синтаксиса (syntax highlighting) я приспособил ADX_Toys_2_WD
http://www.canadiancontent.net/tech/downlo..._Toys_2_WD.html. Но эта утилита довольно глупая, подсвечивает только базовые ключевые слова, а даже #include уже кишка тонка. Есть ли в природе макросы/add-in к Ворду, которые позволяют подсвечивать все ключевые слова и выделять
// зеленым комментарии?
JeyLo
http://www.codeproject.com/com/wordhighlight.asp
niktuba
QUOTE (JeyLo @ 04.08.2006 - время: 17:01)
http://www.codeproject.com/com/wordhighlight.asp

Замечательно, спасибо!
C++ sexnarod journal ;)
niktuba
(S)-Народ!
Есть ли в Visual С++ 6.0 функция типа LineTo, которая позволяла бы рисовать линию только в пределах известного прямоугольника - например заданной области построения линейного графика?
Заранее спасибо за любые комментарии.

C++ sexnarod journal ;)

Это сообщение отредактировал niktuba - 07-09-2006 - 15:36
JeyLo
Follow the CreateRectRgn & SelectClipRgn wink.gif. Прямых функций нет.
tetro
Наконец-то, на работе, начали переход на 2005 студию.
И тут такой вопрос.
Есть функция, скажем:
CODE
void lala(const double * &p) {....}

Передается ей референс на массив (например чтобы можно было его удалить)

Есть 2 массива:

CODE

double *pD;
const double *pCD;


Раньше (в 2003) оба варианта
CODE

lala(pD);
lala(pCD);


Были законны, а теперь только второй. 2005 требует наличия функции:
CODE
void lala(double * &p) {....}


Об'ясните, чем это стандарту не нравится? (или это МС глюки?)
guest_from_the_past
QUOTE (tetro @ 10.09.2006 - время: 14:12)
Наконец-то, на работе, начали переход на 2005 студию.
И тут такой вопрос.

2005 студия абсолютна корректна. Если по-простому: стандарт запрещает сохранять (или передавать в функцию) ссылки на неконстантные временные объекты.
Т.е. (простой пример)
CODE

int& p = int(); // ошибка
const& p = int(); // правильно


2003 студия на этом примере отработает правильно, у нее глюк только со ссылками на указатель, но смысл уловить можно.

Откуда берется временный объект? Все просто. Поскольку функция lala у тебя одна, и только для const double*, компилятор перебирая возможные варианты преобразований создает временный объект const double* на основе double* и подставляет его в функцию. Повторю, подставляет _временный_объект_. А дальше облом - ссылку то ты получаешь неконстантную.
Добавив const перед ссылкой, можно решить проблему преобразований:
CODE
void lala(const double * const&p) {....}

Но боюсь это не то, что тебе надо. Ибо исчезнет возможность изменения значения указателя. Собственно для этого ты его и передавал по ссылке.

Воспользуйся введением дополнительной функции:
CODE
void lala(const double*& p) { p = 0; /*  к примеру */ }
void lala(double*& p) { const double* tmp_p = p; lala(tmp_p); p = const_cast<double*>(tmp_p); }

Либо особенность оптимизации, которая потом выкидывает временный объект, что позволяет поступить так: (не очень хорошо)
CODE
void lala(const double* const& p) { const double*& p1 = const_cast<const double*&>(p);  p1 = 0; }

const_cast здесь совершенно корректен.

PS. я бы порекомендовал избавиться от функций изменяющих указатель, принимаемый в качестве аргумента

PPS. на вопросы телезрителей исключительно из уважения к tetro отвечал GregZ, спасибо за внимание

Это сообщение отредактировал guest_from_the_past - 12-09-2006 - 01:02
tetro
Отвечу здесь...
О существовании там временного объекта я не подумал.
А случай (в реальности, не кристалиизированый) - это деаллокаторы (облочки для delete, чтобы корректно удалять 1, 2, 3 и т.д. массивы).

Других осмысленных использований этого метода, без организации минного поля в коде я и сам не вижу.
-=PushPull=-
GregZ, чего с указателями решили, и почему? аналогичный выбор надо сделать...

на счет каста. изврат имхо. я не могу вспомнить ни одного случая, когда мне приходилось бы кастить от родителя к потомку на этапе компиляции. только наоборот.

Это сообщение отредактировал -=PushPull=- - 09-12-2006 - 13:56

Страницы: 1[2]

Архив компьютерного форума -> C++ sexnarod journal ;)





Проститутки Киева | индивидуалки Москвы | Эротический массаж в Москве | Проститутки-индивидуалки Москва