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


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