powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер и цвет текста
143 сообщений из 143, показаны все 6 страниц
размер и цвет текста
    #39143162
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получается изменить размер текста и его цвет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CDialog::OnInitDialog();
{
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
		
	CFont m_Font;
	m_Font.CreateFont(15, 0, 0, 0, FW_NORMAL, FALSE, FALSE,0,0,0,0,0,0, "Tahoma");
	GetDlgItem(IDC_STATIC1)->SetFont(&m_Font);
	return TRUE;  // return TRUE  unless you set the focus to a control

}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143181
YesSql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛизоблюдНе получается изменить размер текста и его цвет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CDialog::OnInitDialog();
{
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
		
	CFont m_Font;
	m_Font.CreateFont(15, 0, 0, 0, FW_NORMAL, FALSE, FALSE,0,0,0,0,0,0, "Tahoma");
	GetDlgItem(IDC_STATIC1)->SetFont(&m_Font);
	return TRUE;  // return TRUE  unless you set the focus to a control

}



Correct use of SetFont() in MFC
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143221
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,
шрифт должен жить все время использование его приложением. ты же его тут же и уничтожаешь. (неявно)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143689
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YesSqlЛизоблюдНе получается изменить размер текста и его цвет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CDialog::OnInitDialog();
{
	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
		
	CFont m_Font;
	m_Font.CreateFont(15, 0, 0, 0, FW_NORMAL, FALSE, FALSE,0,0,0,0,0,0, "Tahoma");
	GetDlgItem(IDC_STATIC1)->SetFont(&m_Font);
	return TRUE;  // return TRUE  unless you set the focus to a control

}



Correct use of SetFont() in MFC
Пробовал. Размер шрифта не меняет.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143690
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
шрифт должен жить все время использование его приложением. ты же его тут же и уничтожаешь. (неявно)
Код: plaintext
1.
CFont*poldFont=dc.SelectObject(&m_Font);


Тоже не помогает.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143704
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд, используй теги SRC для улучшения читаемости исходников.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143916
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЛизоблюд, используй теги SRC для улучшения читаемости исходников.
Поясни
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143918
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдmaytonЛизоблюд, используй теги SRC для улучшения читаемости исходников.
Поясни
Вот так удобно читать
[ SRC c++]
Код: plaintext
1.
2.
3.
int main(int argc,char **argv,char **env){
 return -1;
}

[ /SRC ]
А так - неудобно

int main(int argc,char **argv,char **env){
return -1;
}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39143957
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINK : fatal error LNK1104: cannot open file "nafxcw.lib"
Может поэтому с цветом не получается ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39145075
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Лизоблюд]MasterZivТоже не помогает.

Если код тот, который выше, то после выхода из скопа HFONT погибнет вместе с CFont-объектом.
CFont m_Font; - надо вынести в описание класса диалога, тогда будет ок.

Цвет задавать можно в WM_CTLCOLORSTATIC - для статиков. в wParam приходит DC, туда надо SetForeColor-ом установить нужный цвет
...
Рейтинг: 0 / 0
размер и цвет текста
    #39145509
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдLINK : fatal error LNK1104: cannot open file "nafxcw.lib"
Может поэтому с цветом не получается ?

Нет, не поэтому.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39146853
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюдLINK : fatal error LNK1104: cannot open file "nafxcw.lib"
Может поэтому с цветом не получается ?

Нет, не поэтому.
А покраска кнопки(Button) оказалась зависимой именно от этого.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39146861
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot CEMb]Лизоблюдпропущено...


Если код тот, который выше, то после выхода из скопа HFONT погибнет вместе с CFont-объектом.
CFont m_Font; - надо вынести в описание класса диалога, тогда будет ок.

Цвет задавать можно в WM_CTLCOLORSTATIC - для статиков. в wParam приходит DC, туда надо SetForeColor-ом установить нужный цвет
Все именно так и оказалось. Спасибо.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39146865
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot CEMb]Лизоблюдпропущено...


Если код тот, который выше, то после выхода из скопа HFONT погибнет вместе с CFont-объектом.
CFont m_Font; - надо вынести в описание класса диалога, тогда будет ок.

Цвет задавать можно в WM_CTLCOLORSTATIC - для статиков. в wParam приходит DC, туда надо SetForeColor-ом установить нужный цвет
Хочу текст покрасить:
dc.SetTextColor(RGB(255,125,0));
dc.TextOut(150,120,IDC_STATIC1);
У меня это в OnPaint. Тоже не на месте ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39146895
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Лизоблюд]CEMbпропущено...

Хочу текст покрасить:
dc.SetTextColor(RGB(255,125,0));
dc.TextOut(150,120,IDC_STATIC1);
У меня это в OnPaint. Тоже не на месте ?

покрасить текст ЧЕГО?
если того контрола, чей OnPaint, то на месте, иначе -нет.

По фантазиями похоже, что НЕ НА МЕСТЕ.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39146916
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WM_CTLCOLORSTATIC это сообщение прилетает родителю статика, который в данный момент отрисовывается. Родитель у себя в обработчике настраивает ему DC перед отрисовкой. Сделано это в родителях, так как это обычно диалоги, и хендлеры их в любом случае пишутся программистами. Хендлер статиков "скрыт", переопределить его немного нетривиальная задачка :)

Чуть подробнее. Статик рисуется, у него OnPaint, он берёт с себя DC, потом шлёт родителю сообщение WM_CTLCOLORSTATIC, указывая там этот DC и себя. Родитель "настраивает" DC (наш код) и расслабляется. Управление возвращается в статик, и он сам уже потом делает TextOut (DrawText, если быть точным) внутри своего кода и отпускает DC.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39147201
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbWM_CTLCOLORSTATIC это сообщение прилетает родителю статика, который в данный момент отрисовывается. Родитель у себя в обработчике настраивает ему DC перед отрисовкой. Сделано это в родителях, так как это обычно диалоги, и хендлеры их в любом случае пишутся программистами. Хендлер статиков "скрыт", переопределить его немного нетривиальная задачка :)

Чуть подробнее. Статик рисуется, у него OnPaint, он берёт с себя DC, потом шлёт родителю сообщение WM_CTLCOLORSTATIC, указывая там этот DC и себя. Родитель "настраивает" DC (наш код) и расслабляется. Управление возвращается в статик, и он сам уже потом делает TextOut (DrawText, если быть точным) внутри своего кода и отпускает DC.
Витиевато, но разберусь
...
Рейтинг: 0 / 0
размер и цвет текста
    #39147733
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CPaintDC dc(this); // device context for painting
dc.SetTextColor(RGB(255,0,0));
dc.TextOut(10, 10, "test_text");

Не идет. Ваще текста нет.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39147741
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,
приведи весь код, пожалуйста. Весь код окна.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39147857
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Если это в OnPaint, то в конце можно попробовать добавить ValidateRect(GetSafeHwnd(), NULL);
Хотя по идее (не знаю, но) CPaint в деструкторе должен это делать сам.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39147877
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
приведи весь код, пожалуйста. Весь код окна.
Вечером - сейчас на работу бегу.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39148440
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
приведи весь код, пожалуйста. Весь код окна.
void CAsdfgDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
dc.SetTextColor(RGB(255,0,0));
dc.TextOut(100,100,"1234567");
...
Рейтинг: 0 / 0
размер и цвет текста
    #39148652
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,
это не весь код.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39148926
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,
это не весь код.
У меня весь. Поэтому, видимо, и не работает.
Надо чота в заголовочный записать ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39148955
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдMasterZivЛизоблюд,
это не весь код.
У меня весь. Поэтому, видимо, и не работает.
Надо чота в заголовочный записать ?
Мне нужно для MFCAppWizard[exe] Visual C++.
Консоль и Win API не предлагать.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149292
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд if (IsIconic())


IsIconic даёт true, если окно минимизировано. Т.е. у тебя этот код отрабатывает, когда окно свёрнуто в таскбар.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149296
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд if (IsIconic())


IsIconic даёт true, если окно минимизировано. Т.е. у тебя этот код отрабатывает, когда окно свёрнуто в таскбар.
Закомментировал и в результате получил всю диалоговую панель темно-синего цвета.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149422
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

"Что-то ты, Герасим, не договариваешь..." :)

допиши ещё в начале dc.SetBkMode(TRANSPARENT); // это убирает закраску бакграунда под текстом, должно влиять только на рект текста, но фиг знает, может что увидим...

и какого размера у тебя диалоговая панель?

у меня код

Код: plaintext
1.
2.
3.
4.
5.
		hdc = GetDC(hWnd);//BeginPaint(hWnd, &ps);
		SetTextColor(hdc, RGB(255,0,0));
		TextOut(hdc, 100, 100, TEXT("1234567"), 7); 
		ValidateRect(hWnd, NULL);
		ReleaseDC(hWnd, hdc);



рисует на окне 1234567, красным цветом, окно белое
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149456
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

"Что-то ты, Герасим, не договариваешь..." :)

допиши ещё в начале dc.SetBkMode(TRANSPARENT); // это убирает закраску бакграунда под текстом, должно влиять только на рект текста, но фиг знает, может что увидим...

и какого размера у тебя диалоговая панель?

у меня код

Код: plaintext
1.
2.
3.
4.
5.
		hdc = GetDC(hWnd);//BeginPaint(hWnd, &ps);
		SetTextColor(hdc, RGB(255,0,0));
		TextOut(hdc, 100, 100, TEXT("1234567"), 7); 
		ValidateRect(hWnd, NULL);
		ReleaseDC(hWnd, hdc);



void CNivelir_4Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(125,255,55));
dc.TextOut(400, 400, "1234567");
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
dc.TextOut(150,150,"rgtergtre");
}
else
{

CDialog::OnPaint();
}
}

рисует на окне 1234567, красным цветом, окно белое
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149459
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюдрисует на окне 1234567, красным цветом, окно белое
Ничего не рисует
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149516
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void CNivelir_4Dlg::OnPaint() 
{
	CPaintDC dc(this);
	//dc.SetBkMode(TRANSPARENT);
	dc.SetTextColor(RGB(125,255,55));
	dc.TextOut(10, 10, "1234567"); 
}



?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149524
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

Я и говорю, не хочет он нам код весь показать...
Ну, пусть парицо...

Вообще, в диалоге (который вроде бы как используется) пытаться что-то самому рисовать в окне -- это как-то очень
странно...
...
Рейтинг: 0 / 0
размер и цвет текста
    #39149570
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Ну, он, видимо, просто пробует, как оно вообще работает/не работает.
А так да, у диалога свои приседания с отрисовкой, лучше так не делать.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39150129
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.codeproject.com/Articles/1035/Using-colors-in-CEdit-and-CStatic#_articleTop
Кажется нужное нарыл, но пока не разобрался.

How to Use
Include the files ColorEdit.cpp, ColorEdit.h and Color.h in your project if your just working with Edit Boxes. If you want to incorporate colored static text also you would add the files ColorStatic.cpp, ColorStatic.h.
In your dialogs header file add :
Hide Copy Code
#include "ColorEdit.h"
#include "ColorStatic.h" //only if using colored static text.

public:
CColorEdit m_ebCtl;
CColorStatic m_stText; //only if using colored static text.
There are two ways you can associate your control id's with the classes. From now on I will assume you are using both classes.
In your dialogs .cpp file add :
Hide Copy Code
void YourDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYourDlg)

//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_ST_TEXT, m_stText);
DDX_Control(pDX, IDC_EB_CTL, m_ebCtl);
}
or
Hide Copy Code
BOOL CYourDlg::OnInitDialog()
{
// TODO: Add extra initialization here
m_ebCtl.SubclassDlgItem(IDC_EB_CTL,this);
m_stText.SubclassDlgItem(IDC_ST_TEXT,this);
}
Now that this is finished it is time to use the class. There are three functions available for Edit Boxes and two for Static Text.
They are as follows:
Hide Copy Code
There are three functions available Currently:
SetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE) //This function is for CColorEdit only.
In the file Color.h is the following code:
Hide Copy Code
// Color.h
// Colorref's to use with your Programs

#define RED RGB(127, 0, 0)
#define GREEN RGB( 0,127, 0)
#define BLUE RGB( 0, 0,127)
#define LIGHTRED RGB(255, 0, 0)
#define LIGHTGREEN RGB( 0,255, 0)
#define LIGHTBLUE RGB( 0, 0,255)
#define BLACK RGB( 0, 0, 0)
#define WHITE RGB(255,255,255)
#define GRAY RGB(192,192,192)
These are just a few I picked out but add as many colors as you need.
Here is how easy it is to use:
Hide Copy Code
m_ebCtl.SetTextColor(BLUE); //Changes the Edit Box text to Blue
m_ebCtl.SetBkColor(WHITE); //By default your background color is the
//same as your system color(color of dialog)
m_ebCtl.SetReadOnly(); //This makes it so nobody can edit the text.
//If you disable the box it does not let you
//change colors.
m_stText.SetTextColor(RED); //Changes the Static Text to Red
m_stText.SetBkColor(GREEN); //You probably will not use it, but it's here.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39150222
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все равно не получается.
Ошибка на строке:
SetTextColor(RGB(127,0,0));
...
Рейтинг: 0 / 0
размер и цвет текста
    #39150248
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется нужное нарыл, но пока не разобрался.


По-моему, ты слегка запутался. То, что ты нарыл, это чьи-то самопальные классы для едитбокса и статика, которые скрывают установку цветов для отрисовки. Ошибка в SetTextColor потому что её надо звать с конкретного объекта, т.е. m_editBox.SetTextColor(127,0,0);


Если тебе надо сделать статик цветным в проекте MFC:

0. Открываешь в редакторе ресурсов свой диалог и накидываешь туда статик. Ставишь ему ID например ID_LABEL

1. Заходишь в хедер своего диалога и добавляешь туда метод:

Код: plaintext
1.
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);



2. Заходишь в cpp код и добавляешь там реализацию этой функции:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
LRESULT CMFCTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_CTLCOLORSTATIC:
		if (::GetDlgItem(m_hWnd, IDC_LABEL) == (HWND)lParam)
		{
			::SetTextColor((HDC)wParam, RGB(127, 0, 0));
			//::SetBkMode((HDC)wParam, TRANSPARENT);
			SetWindowLong(m_hWnd, DWL_MSGRESULT, TRUE);
			return 0;
		}
		break;
	}
	return CDialog::WindowProc(message, wParam, lParam);
}



Это почти базовый общий обработчик окна диалога. Почти ничем от WinAPI не отличается.

Ещё раз: установку цвета детям надо делать не в OnPaint. В OnPaint диалог рисует сам себя. Контролы рисуют сами себя в _своих_ обработчиках. Из своих обработчиков они шлют сообщение WM_CTLCOLORSTATIC родителю. Оно прилетает в WindowProc. Родитель устанавливает цвет.
Один важный момент, связанный с WM_CTLCOLORSTATIC: после установки обработчик диалога должен сразу вернуть TRUE, чтобы система не перекрыла сделанное дефолтным функционалом. Но WindowProc возвращает LRESULT, поэтому авторы придумали такой залепон(для себя):
Код: plaintext
1.
SetWindowLong(m_hWnd, DWL_MSGRESULT, TRUE);


Это установка внутрь окна возвращаемого значения именно для обработчика диалога. Система потом у себя внутрях оттуда его выдернет, всё поймёт, и наступит счастье. И, вроде бы, при вызове диалога нормально, через DialogBox или CreateDialog, указывается функция-обработчик, возвращающая BOOL, и там такое делать не надо. Вроде бы.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39150397
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb По-моему, ты слегка запутался. То, что ты нарыл, это чьи-то самопальные классы для едитбокса и статика, которые скрывают установку цветов для отрисовки. Ошибка в SetTextColor потому что её надо звать с конкретного объекта, т.е. m_editBox.SetTextColor(127,0,0);
Это я пробовал. Не помогает.
Попробую твой комплексный метод.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39150435
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,
вот это похоже на правду.
спасибо, мне было бы лень все это писать...
...
Рейтинг: 0 / 0
размер и цвет текста
    #39151822
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что можно сказать вот об этой подборке:
http://www.codeforge.com/read/106351/ColorStatic.cpp__html
...
Рейтинг: 0 / 0
размер и цвет текста
    #39151922
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

мой браузер показывает только верхнюю часть кода(другого у меня нет, так как мы сидим в строго охраняемом бункере). Скачать без регистрации не могу. В общем, только хрустальный шар
...
Рейтинг: 0 / 0
размер и цвет текста
    #39151938
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

мой браузер показывает только верхнюю часть кода(другого у меня нет, так как мы сидим в строго охраняемом бункере). Скачать без регистрации не могу. В общем, только хрустальный шар
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
#ifndef _CCOLOR_STATIC_H_
#define _CCOLOR_STATIC_H_
 
#include "ColorControl.h"
 
class CColorStatic : public CStatic, public CColorControl
{
 
 
public:
 
        CColorStatic();
virtual ~CColorStatic();
 
//{
{
AFX_VIRTUAL(CColorStatic)
//
}
}AFX_VIRTUAL
 
protected:
 
        //{
{
AFX_CColorStatic
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
//
}
}AFX_MSG
DECLARE_MESSAGE_MAP()
 
};
 
//{
{
AFX_INSERT_LOCATION
}
}
 
#endif

#include "stdafx.h"
#include "ColorStatic.h"
 
CColorStatic::CColorStatic()
{
 
 
}
 
CColorStatic::~CColorStatic()
{
 
 
}
 
BEGIN_MESSAGE_MAP(CColorStatic, CStatic)
//{
{
AFX_MSG_MAP(CColorStatic)
ON_WM_CTLCOLOR_REFLECT()
//
}
}AFX_MSG_MAP
END_MESSAGE_MAP()
 
HBRUSH CColorStatic::CtlColor(CDC* pDC, UINT nCtlColor) 
{
 
HBRUSH hbr;
        pDC->SetTextColor(m_crFg);
        pDC->SetBkColor(m_crBg);
        hbr = *m_pBrush;
return hbr;
 
}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39151999
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

а, ну тут тоже самое, что я написал, плюс MFC-шный пинг-понг сообщениями между родителем и детём(у них там своя особая отмосфера разбора оконных сообщений внутри). То, что я обработал в родителе, отпинывается в MFC ещё обратно детю, но вот в этот MFC-шный обработчик(CColorStatic::CtlColor). И там, оно "автоматом" (если предварительно задали m_crFg и m_crBg) установится и вернётся родителю, который тут же вернёт его детю, но в winAPI-обёртку. Работать будет, да :)
Единственно, что мне тут никогда не нравилось, это возвращаемый функцией HBRUSH. Его, как бы, удобно создать на момент вызова, по ситуации, отправить и забыть. Но так нельзя делать. Поэтому приходится его помнить и чистить, в случае пересоздания.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39152812
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
#if !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)
#define AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ColorStatic.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CColorStatic window

class CColorStatic : public CStatic
{
// Construction
public:
	CColorStatic();

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CColorStatic)
	//}}AFX_VIRTUAL

// Implementation
public:
	void SetTextColor(COLORREF TextColor);
	COLORREF m_TextColor;
	void SetBackColor(COLORREF BackColor);
	void SetCaption(CString strCaption);
	void Create(CString strCaption,COLORREF BackColor);
	COLORREF m_BackColor;
	CString m_strCaption;

	virtual ~CColorStatic();

	// Generated message map functions
protected:
	//{{AFX_CColorStatic
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnPaint();
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)



        m_stText.SubclassDlgItem(IDC_ST_TEXT, this);
	m_stText.SetTextColor(RED);
...
Рейтинг: 0 / 0
размер и цвет текста
    #39153353
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Compiling...
abrakadabraDlg.cpp
abrakadabraDlg.obj - 0 error(s), 0 warning(s)


Linking...
abrakadabra.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CColorStatic::~CColorStatic(void)" (??1CColorStatic@@UAE@XZ)
abrakadabraDlg.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CColorStatic::~CColorStatic(void)" (??1CColorStatic@@UAE@XZ)
abrakadabraDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall CColorStatic::CColorStatic(void)" (??0CColorStatic@@QAE@XZ)
abrakadabraDlg.obj : error LNK2001: unresolved external symbol "public: void __thiscall CColorStatic::SetTextColor(unsigned long)" (?SetTextColor@CColorStatic@@QAEXK@Z)
Release/abrakadabra.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

abrakadabra.exe - 5 error(s), 0 warning(s)


Не понимаю
...
Рейтинг: 0 / 0
размер и цвет текста
    #39153480
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдНе понимаюзабыл реализовать деструктор?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39153705
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychЛизоблюдНе понимаюзабыл реализовать деструктор?

А куда здесь деструктор пришпандырить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
#if !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)
#define AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ColorStatic.h : header file
//
/////////////////////////////////////////////////////////////////////////////
// CColorStatic window
class CColorStatic : public CStatic
{
// Construction
public:
	CColorStatic();
// Attributes
public:
// Operations
public:
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CColorStatic)
	//}}AFX_VIRTUAL
// Implementation
public:
	void SetTextColor(COLORREF TextColor);
	COLORREF m_TextColor;
	void SetBackColor(COLORREF BackColor);
	void SetCaption(CString strCaption);
	void Create(CString strCaption,COLORREF BackColor);
	COLORREF m_BackColor;
	CString m_strCaption;
	virtual ~CColorStatic();
	// Generated message map functions
protected:
	//{{AFX_CColorStatic
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnPaint();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39153868
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собрал проект с нуля. Ошибок нет. Но в готовом проекте не виден static и естественно его текст.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154014
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Ты молодец. Ты -- просто наш герой.

Только я не понимаю другое -- мы-то тут все при чём ?
У тебя есть вопросы ? Задавай их. Желательно, не в стиле блога, а
так, как принято на форумах.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154039
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЛизоблюд,

Ты молодец. Ты -- просто наш герой.

Только я не понимаю другое -- мы-то тут все при чём ?
У тебя есть вопросы ? Задавай их. Желательно, не в стиле блога, а
так, как принято на форумах.
Не понял иронию. У меня ошибок нет. Но и цель не достигнута.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154209
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

я вот тоже не пойму, зачем тебе цветной статик, если ты даже не знаешь, как им пользоваться :)

по делу: добавь его в редакторе ресурсов на диалог(чисто телепатически я надеюсь, что у тебя dialog based MFC приложение). Внимательно пропиши ему идентификатор, и чтобы он совпадал с тем, что в коде написан.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154239
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно быть как вверху, а у меня как внизу.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154249
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

а ты на диалог эти контролы добавил? Руками или программно?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154341
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

а ты на диалог эти контролы добавил? Руками или программно?
Как только я пишу:

Код: plaintext
1.
2.
3.
4.
5.
CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAbrakadabraDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	[SIZE=2]DDX_Control(pDX, IDC_ST_TEXT, m_stText);[/SIZE]
	//}}AFX_DATA_MAP


static исчезает и естественно текст тоже.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154365
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

А что у тебя в заголовочном файле про m_stText написано?
Должно быть CStatic m_stText;
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154503
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Устал за Лизоблюдом сорцы подсвечивать. Фух...
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154937
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд, А что у тебя в заголовочном файле про m_stText написано?
Должно быть CStatic m_stText;


// ColorStatic.cpp : implementation file
//

#include "stdafx.h"
#include "ColorStatic.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CColorStatic

CColorStatic::CColorStatic()
{
m_TextColor=RGB(11,1,111);
}

CColorStatic::~CColorStatic()
{
}


BEGIN_MESSAGE_MAP(CColorStatic, CStatic)
//{{AFX_MSG_MAP(CColorStatic)
ON_WM_CREATE()
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CColorStatic message handlers



int CColorStatic::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CStatic::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here

return 0;
}

void CColorStatic::OnPaint()
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
dc.SetBkColor(m_BackColor);
dc.SetBkMode(TRANSPARENT);
CFont *pFont=GetParent()->GetFont();
CFont *pOldFont;
pOldFont=dc.SelectObject(pFont);
dc.SetTextColor(m_TextColor);
dc.DrawText(m_strCaption,&rect,DT_CENTER);
dc.SelectObject(pOldFont);

// Do not call CStatic::OnPaint() for painting messages
}

void CColorStatic::Create(CString strCaption, COLORREF BackColor)
{


}

void CColorStatic::SetCaption(CString strCaption)
{
m_strCaption=strCaption;
}

void CColorStatic::SetBackColor(COLORREF BackColor)
{
m_BackColor=BackColor;
}

void CColorStatic::SetTextColor(COLORREF TextColor)
{
m_TextColor=TextColor;
}





#if !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)
#define AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ColorStatic.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CColorStatic window

class CColorStatic : public CStatic
{
// Construction
public:
CColorStatic();

// Attributes
public:

// Operations
public:

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CColorStatic)
//}}AFX_VIRTUAL

// Implementation
public:
void SetTextColor(COLORREF TextColor);
COLORREF m_TextColor;
void SetBackColor(COLORREF BackColor);
void SetCaption(CString strCaption);
void Create(CString strCaption,COLORREF BackColor);
COLORREF m_BackColor;
CString m_strCaption;

virtual ~CColorStatic();

// Generated message map functions
protected:
//{{AFX_CColorStatic
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnPaint();
//}}AFX_MSG

DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)




// abrakaDlg.h : header file
//

#if !defined(AFX_ABRAKADLG_H__75927752_7F10_4679_811C_F158F77E4716__INCLUDED_)
#define AFX_ABRAKADLG_H__75927752_7F10_4679_811C_F158F77E4716__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ColorStatic.h"

/////////////////////////////////////////////////////////////////////////////
// CAbrakaDlg dialog

class CAbrakaDlg : public CDialog
{
// Construction
public:
CAbrakaDlg(CWnd* pParent = NULL); // standard constructor
CColorStatic m_stText;
// Dialog Data
//{{AFX_DATA(CAbrakaDlg)
enum { IDD = IDD_ABRAKA_DIALOG };
// NOTE: the ClassWizard will add data members here
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAbrakaDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
//{{AFX_CAbrakaDlg
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_ABRAKADLG_H__75927752_7F10_4679_811C_F158F77E4716__INCLUDED_)



// abrakaDlg.cpp : implementation file
//

#include "stdafx.h"
#include "abraka.h"
#include "abrakaDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAbrakaDlg dialog

CAbrakaDlg::CAbrakaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CAbrakaDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAbrakaDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAbrakaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAbrakaDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
DDX_Control(pDX, IDC_ST_TEXT, m_stText);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAbrakaDlg, CDialog)
//{{AFX_MSG_MAP(CAbrakaDlg)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAbrakaDlg message handlers

BOOL CAbrakaDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here
//m_stText.SubclassDlgItem(IDC_ST_TEXT, this);
m_stText.SetTextColor(BLACK);
m_stText.SetBackColor(GREEN);

//m_stText.RedrawWindow();

//m_stText.Invalidate(FALSE);
//m_stText.SetWindowText("erfgpojrgpo");
//m_stText.UpdateWindow();

//GetDlgItem(IDC_ST_TEXT)->ShowWindow(true);

//m_stText.SetWindowText("34t34t");
return TRUE; // return TRUE unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CAbrakaDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CAbrakaDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39154943
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
// abraka.h : main header file for the ABRAKA application
//

#if !defined(AFX_ABRAKA_H__18DC61F7_F065_4E06_887B_27FB85BB2E7D__INCLUDED_)
#define AFX_ABRAKA_H__18DC61F7_F065_4E06_887B_27FB85BB2E7D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif

#include "resource.h" // main symbols
//#define RED RGB(127,0,0)
//#define GREEN RGB(0,127,0)

#define RED RGB(127, 0, 0)
#define GREEN RGB( 0,127, 0)
#define BLUE RGB( 0, 0,127)
#define LIGHTRED RGB(255, 0, 0)
#define LIGHTGREEN RGB( 0,255, 0)
#define LIGHTBLUE RGB( 0, 0,255)
#define BLACK RGB( 0, 0, 0)
#define WHITE RGB(255,255,255)
#define GRAY RGB(192,192,192)

/////////////////////////////////////////////////////////////////////////////
// CAbrakaApp:
// See abraka.cpp for the implementation of this class
//

class CAbrakaApp : public CWinApp
{
public:
CAbrakaApp();

// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAbrakaApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL

// Implementation

//{{AFX_CAbrakaApp
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};


/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_ABRAKA_H__18DC61F7_F065_4E06_887B_27FB85BB2E7D__INCLUDED_)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39155200
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убери из проекта CColorStatic и сделай просто CStatic.

Мельком глянул код CColorStatic. Автор полностью заменяет отрисовку CStatic, не учитывая стили окна. Зачем он при этом от статика отнаследовался, непонятно. Разбираться, почему его код не работает, мне не хочется. Обычный CStatic у меня работает, и с заведённой переменной на него в классе и без.

А лучше создай новый проект и добавь туда WindowProc, как я раньше рассказывал, это 3 минуты дел, и всё заработает.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39155354
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbУбери из проекта CColorStatic и сделай просто CStatic.

Мельком глянул код CColorStatic. Автор полностью заменяет отрисовку CStatic, не учитывая стили окна. Зачем он при этом от статика отнаследовался, непонятно. Разбираться, почему его код не работает, мне не хочется. Обычный CStatic у меня работает, и с заведённой переменной на него в классе и без.

А лучше создай новый проект и добавь туда WindowProc, как я раньше рассказывал, это 3 минуты дел, и всё заработает.
Эти 3 минуты привести можешь ?
Я так понял, что они у тебя есть готовые.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39155371
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MFCTestDlg.h

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
// MFCTestDlg.h : header file
//

#pragma once


// CMFCTestDlg dialog
class CMFCTestDlg : public CDialog
{
// Construction
public:
	CMFCTestDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	enum { IDD = IDD_MFCTEST_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support


// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	// Эта функция добавлена
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	// можно добавлять, можно нет
	CStatic m_Label;
};


MFCTestDlg.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
// MFCTestDlg.cpp : implementation file
//

#include "stdafx.h"
#include "MFCTest.h"
#include "MFCTestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// CMFCTestDlg dialog




CMFCTestDlg::CMFCTestDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CMFCTestDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCTestDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LABEL, m_Label);  // это сгенерил класс-визард
}

BEGIN_MESSAGE_MAP(CMFCTestDlg, CDialog)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


// CMFCTestDlg message handlers

//	Эта функция добавлена
LRESULT CMFCTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_CTLCOLORSTATIC:
		if (::GetDlgItem(m_hWnd, IDC_LABEL) == (HWND)lParam)
		{
			::SetTextColor((HDC)wParam, RGB(127, 0, 0));
			//::SetBkMode((HDC)wParam, TRANSPARENT);
			SetWindowLong(m_hWnd, DWL_MSGRESULT, TRUE);
			return 0;
		}
		break;
	}
	return CDialog::WindowProc(message, wParam, lParam);
}

BOOL CMFCTestDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	// TODO: Add extra initialization here

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMFCTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMFCTestDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMFCTestDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}


...
Рейтинг: 0 / 0
размер и цвет текста
    #39155873
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb return static_cast<HCURSOR>(m_hIcon);
}

[/src]
[/spoiler]
Спасибо. Посмотрю.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39156055
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbrDlh.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
// abrDlg.h : header file
//

#if !defined(AFX_ABRDLG_H__50FF437B_6D55_4EC7_815B_6D67FDC38427__INCLUDED_)
#define AFX_ABRDLG_H__50FF437B_6D55_4EC7_815B_6D67FDC38427__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CAbrDlg dialog

class CAbrDlg : public CDialog
{
// Construction
public:
	CAbrDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CAbrDlg)
	enum { IDD = IDD_ABR_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAbrDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_CAbrDlg
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
		CStatic m_Label;
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_ABRDLG_H__50FF437B_6D55_4EC7_815B_6D67FDC38427__INCLUDED_)



AbrDlg.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
// abrDlg.cpp : implementation file
//

#include "stdafx.h"
#include "abr.h"
#include "abrDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAbrDlg dialog

CAbrDlg::CAbrDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAbrDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAbrDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAbrDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAbrDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	DDX_Control(pDX, IDC_LABEL, m_Label);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAbrDlg, CDialog)
	//{{AFX_MSG_MAP(CAbrDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAbrDlg message handlers

LRESULT CAbrDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_CTLCOLORSTATIC:
		if (::GetDlgItem(m_hWnd, IDC_LABEL) == (HWND)lParam)
		{
			::SetTextColor((HDC)wParam, RGB(127, 0, 0));
			//::SetBkMode((HDC)wParam, TRANSPARENT);
			SetWindowLong(m_hWnd, DWL_MSGRESULT, TRUE);
			return 0;
		}
		break;
	}
	return CDialog::WindowProc(message, wParam, lParam);
}


BOOL CAbrDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CAbrDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDD_ABR_DIALOG)
	{
		CDialog dlg;
		dlg.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}


void CAbrDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CAbrDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}


...
Рейтинг: 0 / 0
размер и цвет текста
    #39156056
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд
AbrDlh.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
// abrDlg.h : header file
//

#if !defined(AFX_ABRDLG_H__50FF437B_6D55_4EC7_815B_6D67FDC38427__INCLUDED_)
#define AFX_ABRDLG_H__50FF437B_6D55_4EC7_815B_6D67FDC38427__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/////////////////////////////////////////////////////////////////////////////
// CAbrDlg dialog

class CAbrDlg : public CDialog
{
// Construction
public:
	CAbrDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CAbrDlg)
	enum { IDD = IDD_ABR_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAbrDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_CAbrDlg
	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
		CStatic m_Label;
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_ABRDLG_H__50FF437B_6D55_4EC7_815B_6D67FDC38427__INCLUDED_)



AbrDlg.cpp
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
// abrDlg.cpp : implementation file
//

#include "stdafx.h"
#include "abr.h"
#include "abrDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAbrDlg dialog

CAbrDlg::CAbrDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CAbrDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAbrDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CAbrDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAbrDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	DDX_Control(pDX, IDC_LABEL, m_Label);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAbrDlg, CDialog)
	//{{AFX_MSG_MAP(CAbrDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAbrDlg message handlers

LRESULT CAbrDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
	switch(message)
	{
	case WM_CTLCOLORSTATIC:
		if (::GetDlgItem(m_hWnd, IDC_LABEL) == (HWND)lParam)
		{
			::SetTextColor((HDC)wParam, RGB(127, 0, 0));
			//::SetBkMode((HDC)wParam, TRANSPARENT);
			SetWindowLong(m_hWnd, DWL_MSGRESULT, TRUE);
			return 0;
		}
		break;
	}
	return CDialog::WindowProc(message, wParam, lParam);
}


BOOL CAbrDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CAbrDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDD_ABR_DIALOG)
	{
		CDialog dlg;
		dlg.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}


void CAbrDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CAbrDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}



Ошибок нет. Но цвета текста тоже нет.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39156188
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встань брекпоинтом на строчку
Код: plaintext
1.
::SetTextColor((HDC)wParam, RGB(127, 0, 0));


и посмотри, выполнение туда приходит или нет.

Если нет:
- Встань брекпоинтом на строчку выше, есть ли там выполнение:
- - Если нет, у тебя нет на диалоге статика.
- - Если приходит, у тебя неправильно прописан идентификатор статика.
Если приходит:
- У тебя чёрно-белый монитор :)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39158167
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После ввода строки:
DDX_Control(pDX, IDC_TEXT, m_TextColor);
static пропадает и больше я его не видел.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39158371
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдПосле ввода строки:
DDX_Control(pDX, IDC_TEXT, m_TextColor);
static пропадает и больше я его не видел.
Если в заголовочном CStatic m_Text, то не исчезает.
Если в заголовочном CColorStatic m_Text, то исчезает.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39158377
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.codeproject.com/Articles/1035/Using-colors-in-CEdit-and-CStatic

Introduction
I created these two classes to make changing the color of your Edit Box text and your Static text easy. I didn't need all the overhead of a CRichEditCtrl , but I did need to change the color of my text as well as the background color of the box. CStatic didn't have an easy way of changing the color of your text either.

These classes are derived from CEdit and CStatic.

How to Use
Include the files ColorEdit.cpp, ColorEdit.h and Color.h in your project if your just working with Edit Boxes. If you want to incorporate colored static text also you would add the files ColorStatic.cpp, ColorStatic.h.

In your dialogs header file add :

Hide Copy Code
#include "ColorEdit.h"
#include "ColorStatic.h" //only if using colored static text.

public:
CColorEdit m_ebCtl;
CColorStatic m_stText; //only if using colored static text.
There are two ways you can associate your control id's with the classes. From now on I will assume you are using both classes.

In your dialogs .cpp file add :

Hide Copy Code
void YourDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CYourDlg)

//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_ST_TEXT, m_stText);
DDX_Control(pDX, IDC_EB_CTL, m_ebCtl);
}
or

Hide Copy Code
BOOL CYourDlg::OnInitDialog()
{
// TODO: Add extra initialization here
m_ebCtl.SubclassDlgItem(IDC_EB_CTL,this);
m_stText.SubclassDlgItem(IDC_ST_TEXT,this);
}
Now that this is finished it is time to use the class. There are three functions available for Edit Boxes and two for Static Text.

They are as follows:

Hide Copy Code
There are three functions available Currently:
SetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE) //This function is for CColorEdit only.
In the file Color.h is the following code:

Hide Copy Code
// Color.h
// Colorref's to use with your Programs

#define RED RGB(127, 0, 0)
#define GREEN RGB( 0,127, 0)
#define BLUE RGB( 0, 0,127)
#define LIGHTRED RGB(255, 0, 0)
#define LIGHTGREEN RGB( 0,255, 0)
#define LIGHTBLUE RGB( 0, 0,255)
#define BLACK RGB( 0, 0, 0)
#define WHITE RGB(255,255,255)
#define GRAY RGB(192,192,192)
These are just a few I picked out but add as many colors as you need.

Here is how easy it is to use:

Hide Copy Code
m_ebCtl.SetTextColor(BLUE); //Changes the Edit Box text to Blue
m_ebCtl.SetBkColor(WHITE); //By default your background color is the
//same as your system color(color of dialog)
m_ebCtl.SetReadOnly(); //This makes it so nobody can edit the text.
//If you disable the box it does not let you
//change colors.
m_stText.SetTextColor(RED); //Changes the Static Text to Red
m_stText.SetBkColor(GREEN); //You probably will not use it, but it's here.
I hope someone out there finds this useful


License
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here
...
Рейтинг: 0 / 0
размер и цвет текста
    #39158440
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Брекпоинты что-нибудь показали?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39158639
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbБрекпоинты что-нибудь показали?
Показали, что все работает
...
Рейтинг: 0 / 0
размер и цвет текста
    #39158647
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here
ShowWindow(SW_SHOW);
m_Text.SubclassDlgItem(IDC_TEXT, this);
m_Text.SetTextColor(RED);
GetDlgItem(IDC_TEXT)->SetWindowText("your string");
return TRUE; // return TRUE unless you set the focus to a control
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159024
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Win 32 Application работает:

#include <afxwin.h>
class CMyWin: public CFrameWnd
{
public:
CMyWin();
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP()
};
CMyWin::CMyWin()
{
Create(NULL,"Мое окошко");
}
class CMyApp: public CWinApp
{
public:
virtual BOOL InitInstance();
};
BOOL CMyApp::InitInstance()
{
MessageBox(NULL, "Д и а л о ж к а","Message",MB_OK|MB_SYSTEMMODAL|MB_ICONEXCLAMATION);
m_pMainWnd=new CMyWin();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
BEGIN_MESSAGE_MAP(CMyWin, CFrameWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMyWin::OnPaint()
{
CPaintDC dc(this);
dc.SetTextColor(RGB(225,0,125));
dc.TextOut(100,100,"К в а д р а т",13);
}
CMyApp MyApp;

В MFC AppWizard[exe]:

dc.SetTextColor(RGB(225,0,125));
dc.TextOut(100,100,"К в а д р а т",13);
не преодолел
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159144
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд В MFC AppWizard[exe]:

dc.SetTextColor(RGB(225,0,125));
dc.TextOut(100,100,"К в а д р а т",13);

не преодолел
Пробую перейти на Win32 Application, но необходимость использовать типа FlexGrid заставляет сильно сомневаться.
FlexGrid давно одолел, даже сам дописал пару функций.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159729
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Код: plaintext
1.
2.
3.
4.
5.
6.
void CMyWin::OnPaint()
{
	CPaintDC dc(this);
	dc.SetTextColor(RGB(225,0,125));
	dc.TextOut(100,100,"К в а д р а т",13);
}



у меня работает. CMyWin у меня диалог, но с CWnd тоже работать должно. Обязано :)

FlexGridэто который FlexGrid? Микрософтовский? Вроде ко всем микрософтовским компонентам можно сделать враппер через #import, я давно лет назад делал для MS Chart и использовал её в Win32API приложении. Но лучше/быстрее/удобнее наверно с использованием MFC. Не знаю, почему у тебя раскраска текста не работает...
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159748
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbНе знаю, почему у тебя раскраска текста не работает...
Потому что диалог в AppWizard[exe]. В win 32 Application у меня все тоже работает.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159831
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Так и у меня MFC dialog-based через визард сделанное.
Я уже начинаю думать, что у тебя какая-то странная версия MFC там... о_о
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159972
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

Так и у меня MFC dialog-based через визард сделанное.
Я уже начинаю думать, что у тебя какая-то странная версия MFC там... о_о

Кусок программы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
BOOL CNivelir_4Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	GetDlgItem(IDC_MSFLEXGRID1)->ShowWindow(false);
		GetDlgItem(IDC_MSFLEXGRID2)->ShowWindow(false);
			GetDlgItem(IDC_BUTTON2)->ShowWindow(false);
				//GetDlgItem(IDC_STATIC2)->ShowWindow(false);
					//GetDlgItem(IDC_STATIC3)->ShowWindow(false);
					//GetDlgItem(IDC_STATIC4)->ShowWindow(false);	
	
	m_Font.CreateFont(50, 0, 0, 0, FW_NORMAL, FALSE, FALSE,0,0,0,0,0,0, "Tahoma");
	//CFont*poldFont=dc.SelectObject(&m_Font);
	//dc.TextOut(150,120,IDC_STATIC_1);
	//m_cap.SetTextColor(RGB(125,0,0));
			
			GetDlgItem(IDC_STATIC1)->SetFont(&m_Font);
	//dc.TextOut(150,120,IDC_STATIC1);
	
	//LOGFONT lf; 
	//memset(&lf, 0, sizeof(LOGFONT));   // Clear out structure.
   //lf.lfHeight = 5;                  // Request a 20-pixel-high font
   //strcpy(lf.lfFaceName, "Arial");    //    with face name "Arial".
   //m_font.CreateFontIndirect(&lf);    // Create the font.

   // Use the font to paint a control. This code assumes
   // a control named IDC_TEXT1 in the dialog box.
   //GetDlgItem(IDC_STATIC1)->SetFont(&m_font);
	//VERIFY(m_btnOK.Attach(IDOK, this, CYAN, BLUE, DKCYAN));
			//m_btn.SetTextColor(RGB(125,0,0));
	return TRUE;  // return TRUE  unless you set the focus to a control

}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CNivelir_4Dlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting
		dc.SetBkMode(TRANSPARENT);
		dc.SetTextColor(RGB(125,255,55));
		dc.TextOut(400, 400, "1234567"); 
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
		dc.TextOut(150,150,"rgtergtre");
	}
	else
	{
		
		CDialog::OnPaint();
	}
}


...
Рейтинг: 0 / 0
размер и цвет текста
    #39159974
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдCEMbЛизоблюд,

Так и у меня MFC dialog-based через визард сделанное.
Я уже начинаю думать, что у тебя какая-то странная версия MFC там... о_о

Кусок программы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
BOOL CNivelir_4Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	GetDlgItem(IDC_MSFLEXGRID1)->ShowWindow(false);
		GetDlgItem(IDC_MSFLEXGRID2)->ShowWindow(false);
			GetDlgItem(IDC_BUTTON2)->ShowWindow(false);
				//GetDlgItem(IDC_STATIC2)->ShowWindow(false);
					//GetDlgItem(IDC_STATIC3)->ShowWindow(false);
					//GetDlgItem(IDC_STATIC4)->ShowWindow(false);	
	
	m_Font.CreateFont(50, 0, 0, 0, FW_NORMAL, FALSE, FALSE,0,0,0,0,0,0, "Tahoma");
	//CFont*poldFont=dc.SelectObject(&m_Font);
	//dc.TextOut(150,120,IDC_STATIC_1);
	//m_cap.SetTextColor(RGB(125,0,0));
			
			GetDlgItem(IDC_STATIC1)->SetFont(&m_Font);
	//dc.TextOut(150,120,IDC_STATIC1);
	
	//LOGFONT lf; 
	//memset(&lf, 0, sizeof(LOGFONT));   // Clear out structure.
   //lf.lfHeight = 5;                  // Request a 20-pixel-high font
   //strcpy(lf.lfFaceName, "Arial");    //    with face name "Arial".
   //m_font.CreateFontIndirect(&lf);    // Create the font.

   // Use the font to paint a control. This code assumes
   // a control named IDC_TEXT1 in the dialog box.
   //GetDlgItem(IDC_STATIC1)->SetFont(&m_font);
	//VERIFY(m_btnOK.Attach(IDOK, this, CYAN, BLUE, DKCYAN));
			//m_btn.SetTextColor(RGB(125,0,0));
	return TRUE;  // return TRUE  unless you set the focus to a control

}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CNivelir_4Dlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting
		dc.SetBkMode(TRANSPARENT);
		dc.SetTextColor(RGB(125,255,55));
		dc.TextOut(400, 400, "1234567"); 
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
		dc.TextOut(150,150,"rgtergtre");
	}
	else
	{
		
		CDialog::OnPaint();
	}
}



Возможно текст вывожу неправильно.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39159984
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Ты специально, да? :)

написал код - проверь бряками, что до него доходит выполнение!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
void CNivelir_4Dlg::OnPaint() 
{
	if (IsIconic())
	{
		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		//		НЕ ТУТ!!!

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
		dc.TextOut(150,150,"rgtergtre");
	}
	else
	{
		//		ТУТ ДОЛЖНО БЫТЬ!
		//
		CPaintDC dc(this); // device context for painting
		dc.SetBkMode(TRANSPARENT);
		dc.SetTextColor(RGB(125,255,55));
		dc.TextOut(400, 400, "1234567"); 
		
		//CDialog::OnPaint();
	}
}


...
Рейтинг: 0 / 0
размер и цвет текста
    #39160118
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

// ТУТ ДОЛЖНО БЫТЬ!

А размер текста. Я его менял в статике.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160128
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдCEMbЛизоблюд,

// ТУТ ДОЛЖНО БЫТЬ!

А размер текста. Я его менял в статике.
Можно ли это делать в dc ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160142
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Размер текста устанавивается фонтом, который надо SelectObject в dc и после отрисовки не забыть вынуть обратно.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160208
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

Размер текста устанавивается фонтом, который надо SelectObject в dc и после отрисовки не забыть вынуть обратно.

CPaintDC dc(this);
CFont Font;
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = 260;
lf.lfWeight = FW_BOLD;
lf.lfEscapement = i;
lf.lfOrientation = i;
::lstrcpy (lf.lfFaceName, _T ("Arial"));
Font.CreatePointFontIndirect (&lf);
CFont* pOldFont = dc.SelectObject (&Font);
dc.SetTextColor(RGB(255,125,0));
dc.TextOut(10,400,"Вводим");
CDialog::OnPaint();

Премного благодарен.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160511
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CPaintDC dc(this);
CFont Font;
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = 160;
lf.lfWeight = FW_BOLD;
lf.lfEscapement = i;
lf.lfOrientation = i;
::lstrcpy (lf.lfFaceName, _T ("Arial"));
Font.CreatePointFontIndirect (&lf);
CFont* pOldFont = dc.SelectObject (&Font);
dc.SetTextColor(RGB(255,125,0));
GetDlgItem(IDC_ST_TEXT)->SetFont(&m_Font);
//GetDlgItem(IDC_ST_TEXT)->ShowWindow(true)
dc.TextOut(10,250,"Вводим");

Осталось понять как покрасить текст статика.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160586
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А этому где место:

case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(0,0,255));
SetBkColor(hdcStatic, RGB(250,250,0));
return (INT_PTR)CreateSolidBrush(RGB(250,250,0));
}
Или в диалоговую панель это не годится ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160592
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдА этому где место:

case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(0,0,255));
SetBkColor(hdcStatic, RGB(250,250,0));
return (INT_PTR)CreateSolidBrush(RGB(250,250,0));
}
Или в диалоговую панель это не годится ?
Имел ввиду для статика.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160668
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдА этому где место:

case WM_CTLCOLORSTATIC:
{
HDC hdcStatic = (HDC) wParam;
SetTextColor(hdcStatic, RGB(0,0,255));
SetBkColor(hdcStatic, RGB(250,250,0));
return (INT_PTR)CreateSolidBrush(RGB(250,250,0));
}
Или в диалоговую панель это не годится ?

18729546 , годится, добавить в WindowProc

только помни, что CreateSolidBrush(RGB(250,250,0)) тут - это ресурсник, так как система(статик) его освобождать не будет.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39160669
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и, да, про фонты:

// .......
CFont* pOldFont = dc.SelectObject (&Font);
dc.SetTextColor(RGB(255,125,0));
GetDlgItem(IDC_ST_TEXT)->SetFont(&m_Font);
//GetDlgItem(IDC_ST_TEXT)->ShowWindow(true)
dc.TextOut(10,250,"Вводим");
dc.SelectObject (pOldFont); // - после всего вернуть обратно!
...
Рейтинг: 0 / 0
размер и цвет текста
    #39161249
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.codeproject.com/Articles/1035/Using-colors-in-CEdit-and-CStatic

Now that this is finished it is time to use the class. There are three functions available for Edit Boxes and two for Static Text.
They are as follows:
Hide Copy Code
There are three functions available Currently:
SetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE) //This function is for CColorEdit only.

С этим абзацем не разобрался. Это куда надо деть ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39161565
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдSetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE) //This function is for CColorEdit only.

С этим абзацем не разобрался. Это куда надо деть ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CColorEdit m_edit;

//...

m_edit.SetReadOnly(FALSE);
m_edit.SetTextColor(RGB(0, 0, 255);
m_edit.SetBkColor(RGB(0, 255, 0);
...
Рейтинг: 0 / 0
размер и цвет текста
    #39162441
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюдSetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE) //This function is for CColorEdit only.

С этим абзацем не разобрался. Это куда надо деть ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CColorEdit m_edit;

//...

m_edit.SetReadOnly(FALSE);
m_edit.SetTextColor(RGB(0, 0, 255);
m_edit.SetBkColor(RGB(0, 255, 0);


Меня интересует статик, а не Эдит.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39162517
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot CEMb]ЛизоблюдSetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE) //This function is for CColorEdit only.

С этим абзацем не разобрался. Это куда надо деть ?
Это где надо прописать ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39162554
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Например, в OnInitDialog

оно отличается от обычно тем, что обычное запрашивает у тебя цвет в момент рисования, а с CodeProject-а оно запоминает цвет в объекте самого контрола, и потом внутри на отрисовке(которая какая-то странная, но это другая песня) этот цвет уже знает и потому не спрашивает, потому это можно задать 1 раз в самом начале и забыть.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39163340
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetBkColor(COLORREF crColor) // Works for both classes
SetTextColor(COLORREF crColor) // Works for both classes
SetReadOnly(BOOL flag = TRUE)

Это все уже есть в ColorStatic.h:

// Implementation
public:
void SetTextColor(COLORREF TextColor);
COLORREF m_TextColor;
void SetBackColor(COLORREF BackColor);
void SetCaption(CString strCaption);
void Create(CString strCaption,COLORREF BackColor);
COLORREF m_BackColor;
CString m_strCaption;
...
Рейтинг: 0 / 0
размер и цвет текста
    #39163459
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, а в OnInitDialog надо вызвать

Код: plaintext
1.
2.
3.
m_edit.SetReadOnly(FALSE);
m_edit.SetTextColor(RGB(0, 0, 255);
m_edit.SetBkColor(RGB(0, 255, 0);



и в заголовке диалога добавить:

Код: plaintext
1.
CColorEdit m_edit;
...
Рейтинг: 0 / 0
размер и цвет текста
    #39163460
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbда, а в OnInitDialog надо вызвать

Код: plaintext
1.
2.
3.
m_edit.SetReadOnly(FALSE);
m_edit.SetTextColor(RGB(0, 0, 255);
m_edit.SetBkColor(RGB(0, 255, 0);



и в заголовке диалога добавить:

Код: plaintext
1.
CColorEdit m_edit;


Все у меня именно так и сделано. Только для static. Edit мне не нужен.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39163461
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И работает?... :)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39163529
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbИ работает?... :)
Если бы работало, то я не задавал бы вопросы.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39163764
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд,

Ну у тебя исходники этого статика есть, зайди дебагом и посмотри, почему цветом не рисуется.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39164469
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюд,

Ну у тебя исходники этого статика есть, зайди дебагом и посмотри, почему цветом не рисуется.
Дебаггер ничего не показал.
ПРивожу тексты кодов:
colorstatic.h
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#if !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)
#define AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ColorStatic.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CColorStatic window

class CColorStatic : public CStatic
{
// Construction
public:
	CColorStatic();

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CColorStatic)
	//}}AFX_VIRTUAL

// Implementation
public:
	void SetTextColor(COLORREF TextColor);
	COLORREF m_TextColor;
	void SetBackColor(COLORREF BackColor);
	void SetCaption(CString strCaption);
	void Create(CString strCaption,COLORREF BackColor);
	COLORREF m_BackColor;
	CString m_strCaption;

	virtual ~CColorStatic();

	// Generated message map functions
protected:
	//{{AFX_CColorStatic
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnPaint();
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COLORSTATIC_H__57522FA8_09AB_470B_A4AB_0D85B93794EB__INCLUDED_)



textDlg.h
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
// textDlg.h : header file
//

#if !defined(AFX_TEXTDLG_H__7279D624_D16F_4DDC_A5DC_7911EFDAE533__INCLUDED_)
#define AFX_TEXTDLG_H__7279D624_D16F_4DDC_A5DC_7911EFDAE533__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ColorStatic.h"
/////////////////////////////////////////////////////////////////////////////
// CTextDlg dialog

class CTextDlg : public CDialog
{
// Construction
public:
	CTextDlg(CWnd* pParent = NULL);	// standard constructor
	//CColorStatic m_Text;
// Dialog Data
	//{{AFX_DATA(CTextDlg)
	enum { IDD = IDD_TEXT_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTextDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;
	CColorStatic m_Text;
	// Generated message map functions
	//{{AFX_CTextDlg
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_TEXTDLG_H__7279D624_D16F_4DDC_A5DC_7911EFDAE533__INCLUDED_)



colorstatic.cpp
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
// ColorStatic.cpp : implementation file
//

#include "stdafx.h"
#include "ColorStatic.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CColorStatic

CColorStatic::CColorStatic()
{
	m_TextColor=RGB(11,1,111);
}

CColorStatic::~CColorStatic()
{
}


BEGIN_MESSAGE_MAP(CColorStatic, CStatic)
	//{{AFX_MSG_MAP(CColorStatic)
	ON_WM_CREATE()
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CColorStatic message handlers



int CColorStatic::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CStatic::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here

	return 0;
}

void CColorStatic::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	CRect rect;
	GetClientRect(&rect);
	dc.SetBkColor(m_BackColor);
	dc.SetBkMode(TRANSPARENT);
	CFont *pFont=GetParent()->GetFont();
	CFont *pOldFont;
	pOldFont=dc.SelectObject(pFont);
	dc.SetTextColor(m_TextColor);
	dc.DrawText(m_strCaption,&rect,DT_CENTER);
	dc.SelectObject(pOldFont);

	// Do not call CStatic::OnPaint() for painting messages
}

void CColorStatic::Create(CString strCaption, COLORREF BackColor)
{
	
	
}

void CColorStatic::SetCaption(CString strCaption)
{
	m_strCaption=strCaption;
}

void CColorStatic::SetBackColor(COLORREF BackColor)
{
	m_BackColor=BackColor;
}

void CColorStatic::SetTextColor(COLORREF TextColor)
{
	m_TextColor=TextColor;
}



textDlg.cpp
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
// textDlg.cpp : implementation file
//

#include "stdafx.h"
#include "text.h"
#include "textDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CTextDlg dialog

CTextDlg::CTextDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTextDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTextDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTextDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTextDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	DDX_Control(pDX, IDC_TEXT, m_Text);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CTextDlg, CDialog)
	//{{AFX_MSG_MAP(CTextDlg)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTextDlg message handlers

BOOL CTextDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	m_Text.SetTextColor(RED);
	m_Text.SetBackColor(GREEN);
	m_Text.SubclassDlgItem(IDC_TEXT, this);
	m_Text.RedrawWindow();
	m_Text.SetDlgItemText(10,"fget");
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CTextDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CPaintDC dc(this);
		dc.SetTextColor(RGB(125,0,0));
		dc.SetBkColor(RGB(125,255,125));
		
		dc.TextOut(10,10,"1 2 3 4 5");
		
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CTextDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}


...
Рейтинг: 0 / 0
размер и цвет текста
    #39165199
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дебаггер ничего не показал.

Эм... Дебаггер, если его используют, не может ничего не показать :)
Он 100% покажет одно из двух: вход в покраску был или вход в покраску не был.

сам код CColorStatic смотреть и проверять, почему он не работает - не охота, тем более, что я его считаю странным.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39166204
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибок нет. И цвета тоже нет.
После ввода DDX в Dlg.cpp static исчезает.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39167175
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для раскраски диалоговых элементов обычно используют перехват
WM_CTLCOLOR / WM_CTLCOLORSTATIC

Кто-нибудь сможет прокомментировать ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39167178
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюддля раскраски диалоговых элементов обычно используют перехват
WM_CTLCOLOR / WM_CTLCOLORSTATIC

Кто-нибудь сможет прокомментировать ?

А что тут комментировать ? Так и есть.
Только не перехват, а обработку этих сообщений, потому что перехватывать их не нужно,
они просто шлются родительскому диалогу.

Да, в MFC можно за счёт механизма Notificaion Reflection обрабатывать эти сообщения
в наследнике контрола (Static или ещё какого-то) и таким образом реализовать управление
цветами в какой-то библиотеке контролов.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39167238
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюддля раскраски диалоговых элементов обычно используют перехват
WM_CTLCOLOR / WM_CTLCOLORSTATIC

Кто-нибудь сможет прокомментировать ?я уже два раза в треде объяснял, как это работает, один из них подробно про механизм работы, даже пример накатал. Чего непонятно-то?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39167240
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbЛизоблюддля раскраски диалоговых элементов обычно используют перехват
WM_CTLCOLOR / WM_CTLCOLORSTATIC

Кто-нибудь сможет прокомментировать ?я уже два раза в треде объяснял, как это работает, один из них подробно про механизм работы, даже пример накатал. Чего непонятно-то?
Не кипятись. Разберусь.
Спасибо.
Все когда-то делаешь первый раз.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39167302
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не кипячусь, я удивляюсь :)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168005
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbя не кипячусь, я удивляюсь :)
Да лана. Ты крутой программист, а я так себе.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168008
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbя не кипячусь, я удивляюсь :)
Просто я писал в основном математику. Ну и немного дизайн.
Захотелось сделать несерое приложение. Вот и занялся цветом. Цвета выбираю блеклые, чтобы не давило на психику при пользовании.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168050
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдCEMbя не кипячусь, я удивляюсь :)
Просто я писал в основном математику. Ну и немного дизайн.
Захотелось сделать несерое приложение. Вот и занялся цветом. Цвета выбираю блеклые, чтобы не давило на психику при пользовании.
Не читал, но осуждаю (с) Топик не читал, но раз он уже на 5 страницах - это серьезно. За этот пост глаз зацепился.

Как пользователь, из множества попыток сделать "несерое" приложение видел только одну удачную: winamp (если кто помнит что это)

В свое время был тупик в развитии, занялись раскрашиванием, типа надо тут подсветить красным, тут желтым и т.д. и т.п., но цвета быстро кончились, а жопа осталась. Жопа была в том что надо было прогу кардинально переделывать, искать другие решения организации интерфейса с пользователем, а не превращать интерфейс в гирлянду новогодней елки. Прогу переделали, сейчас все достаточно монотонно в стиле виндовса, только чуть-чуть выделения цветом самых важных вещей.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168079
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T В свое время был тупик в развитии, занялись раскрашиванием, типа надо тут подсветить красным, тут желтым и т.д. и т.п., но цвета быстро кончились, а жопа осталась. Жопа была в том что надо было прогу кардинально переделывать, искать другие решения организации интерфейса с пользователем, а не превращать интерфейс в гирлянду новогодней елки. Прогу переделали, сейчас все достаточно монотонно в стиле виндовса, только чуть-чуть выделения цветом самых важных вещей.
Где ты видишь гирлянду ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168103
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдDima T В свое время был тупик в развитии, занялись раскрашиванием, типа надо тут подсветить красным, тут желтым и т.д. и т.п., но цвета быстро кончились, а жопа осталась. Жопа была в том что надо было прогу кардинально переделывать, искать другие решения организации интерфейса с пользователем, а не превращать интерфейс в гирлянду новогодней елки. Прогу переделали, сейчас все достаточно монотонно в стиле виндовса, только чуть-чуть выделения цветом самых важных вещей.
Где ты видишь гирлянду ?
только чуть-чуть выделения цветом самых важных вещей.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168108
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЛизоблюдпропущено...Где ты видишь гирлянду ?только чуть-чуть выделения цветом самых важных вещей.особенно та зелёная полоса сверху с нечитаемым рыжим текстом ))) и слово "Вводим" на полформы.
Не делай так, никогда.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168122
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдCEMbя не кипячусь, я удивляюсь :)
Просто я писал в основном математику. Ну и немного дизайн.
Захотелось сделать несерое приложение. Вот и занялся цветом. Цвета выбираю блеклые, чтобы не давило на психику при пользовании.

НАКОЙ !
Вот идиотичнее идеи вообще нельзя придумать.
Не ну может там для эргономики нужно выделить краным какое-то сообщение или что-то в этом роде -- это понятно.
Но вот просто так с бухты-барахты красить контролы ...

Приложения должны быть ВСЕ ОДИНАКОВЫЕ, чтобы глаз не вынужден был привыкать к виду каждого окна.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168124
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychЛизоблюдпропущено...
только чуть-чуть выделения цветом самых важных вещей.особенно та зелёная полоса сверху с нечитаемым рыжим текстом ))) и слово "Вводим" на полформы.
Не делай так, никогда.

Ага, и полформы пустоты...
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168126
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдГде ты видишь гирлянду ?

Ну непонятно, что ты тут уже 5 страниц пишешь.
WM_CTLCOLOR вроде уже давно сказали, далее дело техники.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168129
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и конечно вспоминается сразу же про 7 красных линий
YouTube Video
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168147
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу и конечно вспоминается сразу же про 7 красных линий
:))
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168176
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychЛизоблюдпропущено...
только чуть-чуть выделения цветом самых важных вещей.особенно та зелёная полоса сверху с нечитаемым рыжим текстом ))) и слово "Вводим" на полформы.
Не делай так, никогда.
Неужели непонятно, что это все пока ? И слово вводим крупно и не на месте. Пока делается можно как угодно изголяться.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168197
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ооо... это моя любимая тема, украшение приложений

В своё время страдал тем, что придумывал для каждого нового приложения свой интерфейс и скинировал. @#$! Уже давно выздоровел, но ещё куча программ с дебильными интерфейсами у меня осталась. И надо бы убрать всё нафиг, но лень :)
И ладно ещё когда это какой-нибудь entertainment, а то ведь есть просто рабочие вещи. Однажды юзеру объяснял, как настроить программу, "нажми на ту кнопку ... " - "о, а я и не понял, что это кнопка, я думал, это для красоты..." ... -_- Хотя это была просто кнопка с интерактивной(подсвечивающейся при наведении мышью) иконкой.

Короче, если хочется красоты - надо просто добавить манифесть в проект, и программа станет красивая, как и винда. Красивая/некрасивая - это неважно, главное - однообразная . Главное, чтобы юзеру было проще, привычнее с ней осваиваться.

Ты крутой программистэто всё сомнительно, относительно и зыбко :) Одно время назад меня называли "гуру" и ставили всем в пример, а потом те же люди с угрозами выгнали меня с работы за профнепригодность :)
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168207
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лидер раскрашительства сегодня MS. На картинке:
в Win10 в окне открыт терминал виртуалки W7, в нем MSVS 2015, поверх эксель 2010, поверх проводник виндовса 7.

Убожество полное. Главная засада: крестики MSVS 2015 стилизованы под Win10 и я частенько промахиваюсь, вместо закрытия студии закрываю терминал.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168246
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, моя дебильная блеклая панель будоражит ?
Мне кажется, что она очень мало отличается от серого убожества.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168867
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то не хватает:

//h
class CTextDlg : public CDialog
{
// Construction
public:
CTextDlg(CWnd* pParent = NULL); // standard constructor
protected:
HICON m_hIcon;
CColorStatic m_Text;
virtual BOOL OnInitDialog();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);

};
//cpp
BEGIN_MESSAGE_MAP(CTextDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()

HBRUSH CTextDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// можно добавить: if ( nCtlColor == CTLCOLOR_STATIC )
if ( pWnd->GetDlgCtrlID() == IDC_TEXT ) {
pDC->SetTextColor(0xFF);
}
return hbr;
}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168870
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЧего-то не хватает
А может что-то лишнее.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168937
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЛизоблюдЧего-то не хватает
А может что-то лишнее.
Почему-то текста(статика) вообще не видно - ни цветного, ни бесцветного.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168948
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЛизоблюдПочему-то текста(статика) вообще не видно - ни цветного, ни бесцветного.
Потому что нужно програмно задать текст, который он выводит. В окне диалога там пишет "Статический", но на самом деле это пустота.
Например так:
Код: plaintext
1.
SetDlgItemText(IDC_STATIC1, L"Текст");


Тут другая проблема, приведенный тобой код по закраске текста не закрашивает кнопку, хотя статик закрашивает.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	// можно добавить: if ( nCtlColor == CTLCOLOR_STATIC ) 
	if (pWnd->GetDlgCtrlID() == IDC_BUTTON1) {
		pDC->SetTextColor(RGB(255,0,0));
	}
	return hbr;
}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168966
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18 Тут другая проблема, приведенный тобой код по закраске текста не закрашивает кнопку, хотя статик закрашивает.

Кнопку закрасить нужен другой программный код. Для меня эта задача решена лет 10 взад.
Мне нужно закрасить цвет текста статика.
Статик почему-то вообще невидим становится после того как его определил как control.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39168977
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел ввиду текст в кнопке. Судя по этому код должен быть одинаковым.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169012
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уря-я-я!!!
Все получилось благодаря //DDX_Control(pDX, IDC_TEXT, m_Text);
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169018
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для закраски текста я так понял DDX не нужен, достаточно приведенного тобой кода:
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
//h
class CTextDlg : public CDialog
{
// Construction
public:
CTextDlg(CWnd* pParent = NULL);	// standard constructor
protected:
HICON m_hIcon;
CColorStatic m_Text;
virtual BOOL OnInitDialog();
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);

};
//cpp
BEGIN_MESSAGE_MAP(CTextDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()

HBRUSH CTextDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// можно добавить: if ( nCtlColor == CTLCOLOR_STATIC ) 
if ( pWnd->GetDlgCtrlID() == IDC_TEXT ) {
pDC->SetTextColor(0xFF);
}
return hbr;
}



CColorStatic::CColorStatic()
{
m_TextColor=RGB(11,1,111);
} Удалить

protected:
HICON m_hIcon;
CColorStatic m_Text; Удалить
// Generated message map functions
//{{AFX_CTextDlg
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

void CTextDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTextDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
DDX_Control(pDX, IDC_TEXT, m_Text);
//}}AFX_DATA_MAP
} Удалить
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169023
kab18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь давай думать как закрасить текст в кнопке, а то че то не закрашивает.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169034
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Теперь давай думать как закрасить текст в кнопке, а то че то не закрашивает.
А мне не надо думать. У меня кнопка закрашена.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169037
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Для закраски текста я так понял DDX не нужен, достаточно приведенного тобой кода
Пример я взял с http://www.codeproject.com/Articles/1035/Using-colors-in-CEdit-and-CStatic
Здесь этот DDX появился. Хотя у меня изначально вызывало удивление, что статик становился control.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169040
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Достаточно было убрать DDX и все у меня появилось.
Вот что значит нельзя пользоваться чужими примерами. В них могут быть ошибки.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169054
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
//h:
class CMyDlg : public CDialog
{
...
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
...
};
//cpp:
BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
...
ON_WM_CTLCOLOR()
...
END_MESSAGE_MAP()
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// можно добавить: if ( nCtlColor == CTLCOLOR_STATIC )
if ( pWnd->GetDlgCtrlID() == IDC_MY_STATIC ) {
pDC->SetTextColor(0xFF);
}
return hbr;
}
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169129
VestaBesta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А через opengl можно работать?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169165
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Теперь давай думать как закрасить текст в кнопке, а то че то не закрашивает.Во-первых, надо использовать WM_CTLCOLORBTN, а во-вторых, оно всё равно не работает, потому что так задумано. Для кнопок и кнопкоподобных контролов (bs_pushlike) всегда используются системные цвета, wm_ctlcolorbtn "влияет" только на ownerdraw-кнопки.

И интересно, как DDX мешал покраске статика...
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169166
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VestaBestaА через opengl можно работать? Вопрос какой-то абстрактный. Что конкретно через opengl делать хочется?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169192
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbkab18Теперь давай думать как закрасить текст в кнопке, а то че то не закрашивает.Во-первых, надо использовать WM_CTLCOLORBTN, а во-вторых, оно всё равно не работает, потому что так задумано. Для кнопок и кнопкоподобных контролов (bs_pushlike) всегда используются системные цвета, wm_ctlcolorbtn "влияет" только на ownerdraw-кнопки.

И интересно, как DDX мешал покраске статика...
DDX мешать не может, а DDX_Control (pDX, IDC_TEXT, m_Text); вполне себе мешал.
Зачем статик делается управляющим, т.е. control ?
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169193
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VestaBestaА через opengl можно работать?
Открытая графическая библиотека позволяет получать всевдо-3D.
Я с ней давно работаю. Но в рассмотренных здесь мною случаях она совсем не нужна.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169194
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbkab18Теперь давай думать как закрасить текст в кнопке, а то че то не закрашивает.Во-первых, надо использовать WM_CTLCOLORBTN, а во-вторых, оно всё равно не работает, потому что так задумано. Для кнопок и кнопкоподобных контролов (bs_pushlike) всегда используются системные цвета, wm_ctlcolorbtn "влияет" только на ownerdraw-кнопки.

И интересно, как DDX мешал покраске статика...
Для кнопок надо подключать colorbtn.h и colorbtn.cpp и используется:
VERIFY(m_btnOK.Attach(IDC_BUTTON7, this, CYAN, BLUE, DKCYAN));
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169299
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛизоблюдЗачем статик делается управляющим, т.е. control ?
Не, эта штука просто гоняет данные из класса в контрол. Т.е. DDX привязывает данные к элементам окон. Так бы тебе пришлось, в случае, если юзер что-то поменял на диалоге, самому из контрола доставать данные, потом их в класс запихивать. И наоборот, если ты чего-то в классе поменял, нужно это положить в контрол. DDX делает всё это за тебя. Немного криво и неудобно ( а я запилил свою версию DDX-а, без mfc, без UpdateData, с привязкой нескольких контролов к одному компоненту, с чтением/записью из/в реестр/инифайл ), но реально экономит время!

Скорее всего DDX у тебя как раз берёт данные из класса (там пусто) и пишет в контрол, поэтому там пустая строчка.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39169950
Фотография Лизоблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb Скорее всего DDX у тебя как раз берёт данные из класса (там пусто) и пишет в контрол, поэтому там пустая строчка.
Как только убрал DDX_Control(pDX, IDC_TEXT, m_Text);
сразу все зафурыкало.
...
Рейтинг: 0 / 0
размер и цвет текста
    #39170963
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лизоблюд, почитай, как DDX-ом правильно пользоваться.
Скорее всего, тебе надо было в начале сказать m_Text = "text", и это было бы в статике.
...
Рейтинг: 0 / 0
143 сообщений из 143, показаны все 6 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер и цвет текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]