AsmGuru62 Я чет не могу догадаться: А как с помощью TextOut вывести значение int? Пробовал + 48 - не помогает. Выводит символ с кодом 5 (если например значение int == 5)
Mark Число (int или double) надо сначала превратить в строку и затем вывести строку: Код (Text): CHAR buf [64]; double val1 = 736.982382; int val2 = 48; int length = sprintf (buf, "DOUBLE: %f; INTEGER: %d", val1, val2); TextOut (hDC, 32, 32, buf, length); Вот здесь неплохо описана функция sprintf: http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/
AsmGuru62 В инете чет не нашел. Как из текстового поля взять double? Тип int брал, а вот double не знаю, и не нашел. Подскажите?
Mark Или можно вот так: Код (Text): CHAR buf [16]; double value; GetDlgItemTextA (hDlg, id, buf, 16); value = atof (buf);
AsmGuru62 Опять, искал в инете. Значит есть обычное окно (НЕ консоль). Как его очистить? (Т.е. чтобы все графические элементы закрасились) Ну или как залить поверх белым фоном?
Mark Поверхность окна (в обычных случаях) красится цветом, который указан при регистрации класса окна: Код (Text): WNDCLASS wc; ... wc.hbrBackground = CreateSolidBrush (RGB (190, 224, 255)); ... RegisterClass (&wc); Рисовать на поверхности окна желательно только внутри обработчика WM_PAINT. Фон рисовать не надо, а только элементы данных. Например, у тебя есть текстовые строки - рисуешь их все. Затем, что-то меняется - строки удалились или добавились. Всё, что твой код должен сделать при этом - вызвать InvalidateRect: Код (Text): InvalidateRect (hWnd, NULL, TRUE /* <-- this will erase background */ ); Это наиболее простой вариант рисования. Есть более сложные вещи - например рисование в памяти и затем всё нарисованное посылаем на поверхность окна. Это сделано для увеличения скорости рисования и для снижения мерцания при рисовании (reduce flicker). Также можно запретить Windows рисовать фон и делать это в своём коде.
Mark InvalidateRect заставляет Windows посылать WM_PAINT, поэтому не следует их смешивать. 1. Не следует вызывать InvalidateRect внутри кода для WM_PAINT. 2. Не следует посылать WM_PAINT самому себе, это сделает Windows после InvalidateRect. А что конкретно не работает? Кстати, можешь прислать мне код - я объясню проблемные места. asmguru62@hotmail.com