Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Вниз

фон в memo   Найти похожие ветки 

 
real_dimedrol   (2004-01-23 22:05) [0]

Хотелось бы в общих чертах понять, как в memo сделать фоновую картинку. Естессно, чтобы memo при этом не был readonly.


 
real_dimedrol   (2004-01-24 00:26) [1]

Или конфа умерла или я слишком сложно спросил?
Ладно, упрощу:
При осуществлении сабжа нужно полностью отрисовывать memo руками (то бишь отключить насовсем родной wm_paint-обработчик) или же все не так мрачно?


 
Ломброзо   (2004-01-24 00:32) [2]

теоретически обрабатывать WM_ERASEBKGND, получив хэндл Device Context (HDC) из wParam; создать Brush из нужного битмапа и закрасить прямоугольник окна этой кистью. Деталей не сообщу, так что см. MSDN.


 
Ломброзо   (2004-01-24 00:33) [3]

The application can determine when the background needs painting by processing the WM_ERASEBKGND message or by testing the fErase member of the PAINTSTRUCT structure filled by the BeginPaint function.


 
real_dimedrol   (2004-01-24 13:38) [4]

Проблема не в том, чтобы нарисовать на канве чего-нибудь. Проблема в том, чтобы это чего-нибудь не затиралось при печати по нему "непрозрачным" текстом, а в мемо он непрозрачный. Было бы хорошо сделать текст прозрачным, как это делается обычно для текста, вводимого в канву (SetBkMode).


 
Ломброзо   (2004-01-24 14:04) [5]

Delphi под рукой нет, поэтому... на VC++, разберёшься?
1) Создание и загрузку битмапа вынеси в конструктор формы
2) Остальное вроде всё на WinAPI переводимо.

HBRUSH CTraspEditDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (pWnd->GetDlgCtrlID() == IDC_EDIT1)
{
CBrush brush;
pDC->SetBkMode(TRANSPARENT);
brush.CreatePatternBrush(&bmp);
pDC->SelectObject(&brush);
RECT rect;
CWnd *pEdit = GetDlgItem(IDC_EDIT1);
pEdit->GetWindowRect(&rect);
pDC->FillRect(&rect, &brush);
return brush;
}
return hbr;
}


 
Ломброзо   (2004-01-24 14:08) [6]

DeleteObject, разумеется, вызвать не забыть.


 
real_dimedrol   (2004-01-24 14:30) [7]

Сенкс. Ща попробуем


 
real_dimedrol   (2004-01-25 11:38) [8]

Есть проблема: родительское окно (в моем случае Form1) вообще не получает сообщения WM_CTLCOLOREDIT. Т.е. я поставил на процедуру-обработчик брейкпоинт и он никогда не срабатывает....


 
real_dimedrol   (2004-01-25 12:25) [9]

По ходу дела еще один вопрос: если это и заработает, как я смогу обрабатывать WM_CTLCOLOR (в предыдущем сообщении ошибся в написании) на уровне Memo-потомка, если в описании MSDN сказано, что оно посылается родительскому окну????

ЗЫ Запостил еще один топик, но на всякий случай и сюда. Как можно получить DC для TMemo? GetDC(Memo1.handle) не работает. ЕГо по доке выдает wparam у wm_ctlcolor. А еще как?


 
real_dimedrol   (2004-01-25 12:32) [10]

Поправка: GETDC для Memo может и работает, только
SetBkMode(getdc(memo1.handle),TRANSPARENT) отрабатывает, а потом сразу
GETBKMODE(getdc(memo1.handle)) и она возвращает не TRANSPARENT...


 
real_dimedrol   (2004-01-25 13:29) [11]

Так. С WM_CTLCOLOR разобрался. Оно для win16... Старая, однако, d MSDN статья была... В Win32 его заменило WM_CTLCOLOREDIT. Ловится. Остальные вопросы пока открыты.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.031 c
1-16254
DmS
2004-01-26 08:45
2004.02.06
Как стартовать/Завершить процесс на другой машине ?


1-16387
Varg
2004-01-23 17:13
2004.02.06
вызов номера версии


1-16343
denis24
2004-01-24 13:16
2004.02.06
ф-ция pos


3-16195
Октавиан
2004-01-13 14:32
2004.02.06
ADOQuery && full database scan


14-16721
Nick-From
2004-01-14 18:52
2004.02.06
Что это за процесс такой ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский