powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер и цвет текста
25 сообщений из 143, страница 2 из 6
размер и цвет текста
    #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
25 сообщений из 143, страница 2 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / размер и цвет текста
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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