Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2012, 23:31   #1
hvz-
Форумчанин
 
Регистрация: 14.11.2010
Сообщений: 138
По умолчанию Rich Edit, skins

Всем доброго времени суток, товарищи!
Задумал сделать логгинг - в ричэдит будут вставляться всякие разные текста при каких то действиях, но вот в чём загвоздка - не знаю как посылать текст в rich edit контрол, как поставить форматирование(шрифт, размер, цвет) как организовать переход на следующую строку, и как включить горизонтальную прокрутку.
Вроде тут есть тема с гуи и вин апи, но там всё на диалоговых окнах, а у меня ни одного такого нету.
Вот что у меня пока что на "замене" стоит:
Код:
*phEdit = CreateWindow(TEXT("edit"),
                TEXT("Edit"), 
		ES_MULTILINE | WS_CHILD |WS_VISIBLE | WS_BORDER,
		 5, 
		70, 
		180, // width
		150, // heigth
		*phWnd, 
		(HMENU)MWND_EDIT_CONTROL_LOG,
		*phInstance, 
		NULL);
И ещё вопрос, как можно сделать на чистом винапи такой скин?
hvz- вне форума Ответить с цитированием
Старый 29.11.2012, 09:56   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от hvz- Посмотреть сообщение
И ещё вопрос, как можно сделать на чистом винапи такой скин?
Самому рисовать *все* елементы окна - заголовок, кнопку закрывания и т.д. Читайте про WM_NCPAINT, WM_NCCALCSIZE, WM_NCHITTEST.

То же самое для елементов окна - кнопок и т.д. Регистрируете свои классы окон с тем же именем что и стандартные и делаете свою отрисовку.

Лучше поищите готовый framework.
waleri вне форума Ответить с цитированием
Старый 29.11.2012, 10:31   #3
hvz-
Форумчанин
 
Регистрация: 14.11.2010
Сообщений: 138
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Самому рисовать *все* елементы окна - заголовок, кнопку закрывания и т.д. Читайте про WM_NCPAINT, WM_NCCALCSIZE, WM_NCHITTEST.

То же самое для елементов окна - кнопок и т.д. Регистрируете свои классы окон с тем же именем что и стандартные и делаете свою отрисовку.

Лучше поищите готовый framework.
Спасибо за ответ, будем искать

Возник вопрос немного не по теме - добавил иконку в ресурсы проекта, в описании класса окна добавил иконку:
Код:
...
wndcMainWindow.hIcon          = (HICON)LoadImage(NULL, TEXT("icon32.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
    wndcMainWindow.hIconSm        = (HICON)LoadImage(NULL, TEXT("icon32.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
...
И появилась проблема - иконки показываются только когда сам экзешник находится в одной папке с иконками. Как такое может быть если я добавлял иконку в проект в папку Resource files? Может нужно как то инклудить в код иконку? А то половину гугла перерыл в поисках способа вставки иконки, вроде и работает но облом
hvz- вне форума Ответить с цитированием
Старый 29.11.2012, 10:53   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Иконки надо прописать в .rc файл и загружать оттуда.
Почитайте на досуге: http://en.wikipedia.org/wiki/Resource_(Windows)
waleri вне форума Ответить с цитированием
Старый 29.11.2012, 18:52   #5
hvz-
Форумчанин
 
Регистрация: 14.11.2010
Сообщений: 138
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Иконки надо прописать в .rc файл и загружать оттуда.
Почитайте на досуге: http://en.wikipedia.org/wiki/Resource_(Windows)
Ну как добавить этот файл я догадываюсь.
А как саму иконку прописать в этот файл ресурса? #include ""icon.ico" ?
Спрашиваю т.к. нету доступа к компьютеру с проектом.
hvz- вне форума Ответить с цитированием
Старый 29.11.2012, 20:34   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

В принципе есть редакторы ресурсов. Если используете Visual Studio Professional то он есть в ней. Если используете Express версию или другой компилятор, тогда ищите сторонние приложения. Есть бесплатныe утилиты, которые сделают .rc файл, который надо подключить к проекту.
Можете делать все вручную, формат rc файла описан. Если не будете делать диалоги проблем с этим нет, но если будете рисовать диалоги, тогда лучше визуальный редактор.
waleri вне форума Ответить с цитированием
Старый 30.11.2012, 21:19   #7
hvz-
Форумчанин
 
Регистрация: 14.11.2010
Сообщений: 138
По умолчанию

Странно, вот что получается - подключаю файл ресурсов, через редактор ресурсов в нём пишу:
Код:
#include <windows.h>
IDI_MYICON ICON "icon32.ico"
Так же добавляю иконку в папку Resource Files. Файл resource.h подключаю там где прописываю иконку в классе окна.
Если запускать через студию(debug, release) - Иконки везде отображаются, если запустить экзешник на рабочем столе - иконка отображается только в таскбаре. Не понимаю в чём причина. Помогите разобраться.
Сама иконка 32х32.

Последний раз редактировалось hvz-; 30.11.2012 в 21:25.
hvz- вне форума Ответить с цитированием
Старый 30.11.2012, 22:14   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Так покажите как грузите иконки.
waleri вне форума Ответить с цитированием
Старый 30.11.2012, 22:20   #9
hvz-
Форумчанин
 
Регистрация: 14.11.2010
Сообщений: 138
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Так покажите как грузите иконки.
Сначала грузил так(без добавления иконки в .rc файл):
Код:
(HICON)LoadImage(NULL, TEXT("icon32.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
(HICON)LoadImage(NULL, TEXT("icon32.ico"), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
После добавления ресурсов так:
Код:
wndcMainWindow.hIcon = LoadIcon(*phInstance, IDI_APPLICATION);
wndcMainWindow.hIconSm = LoadIcon(*phInstance, IDI_APPLICATION);
ибо разницы от первого варианта толку нету, всё равно по стандарту загружается иконка в ресурсах, а функция LoadImage не помогает.

С загрузкой иконки разобрался так:
Код:
wndcMainWindow.hIcon = LoadIcon(*phInstance, MAKEINTRESOURCE(IDI_ICON1));
wndcMainWindow.hIconSm = LoadIcon(*phInstance, MAKEINTRESOURCE(IDI_ICON1));
Естественно, иконку нужно добавить в ресурсы, а заголовочный файл ресурсов подключить.

И ещё вопрос - до добавления иконки в ресурсы программы - программа весила 10кб, а после иконки - 20кб, хотя иконка весит 4.5кб. В чём подвох?
И никто не поможет с RishEdit?

Последний раз редактировалось hvz-; 30.11.2012 в 22:40.
hvz- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставлять текст в (rich)edit с задержкой времени mpdasa Помощь студентам 2 27.06.2012 10:44
Автоскролл в Rich The SCS Общие вопросы Delphi 0 18.04.2012 18:31
Rich edit Nebro Общие вопросы Delphi 3 01.04.2011 10:48
проблемка с RICH баннером... DRUG_ADDICT JavaScript, Ajax 1 10.11.2008 09:38