Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание собственного графического элемента управления (MFC). Часть 1.  (Прочитано 83673 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Online Online
Сообщений: 13


« : 29-10-2009 14:45 » 

Обсуждение статьи: «Создание собственного графического элемента управления (MFC). Часть 1.»
« Последнее редактирование: 27-12-2009 11:03 от RXL » Записан

paratrooper
Новенький

by
Offline Offline

« Ответ #1 : 29-04-2019 06:53 » 

Создал статический элемент управления и пытаюсь изменить его цвет,но ничего не выходит. файл CMyControl.cpp

Код: (C++)
    #include "stdafx.h"
#include "CMyControl.h"

// место для  других include


#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// место для кода реализации
BEGIN_MESSAGE_MAP(CMyControl, CStatic)
    ON_WM_PAINT()
END_MESSAGE_MAP()


void CMyControl::OnPaint()
{
    CPaintDC dc(this); // device context for painting
                       // TODO: добавьте свой код обработчика сообщений
                       // Не вызывать CStatic::OnPaint() для сообщений рисования
                       // прямоугольник клиентской области
    CRect r_CL;
    GetClientRect(&r_CL);

    // определение высоты и ширины клиентской области
    int Hig = r_CL.Height();
    int Wid = r_CL.Width();
    dc.FillSolidRect(-1000, -10, Wid + 2000, Hig + 20, RGB(0, 255, 0));//зелёный
    dc.FillSolidRect(-20, -20, Wid + 40, Hig + 40, RGB(0, 0, 0));//чёрный
    dc.FillSolidRect(0, 0, Wid, Hig, RGB(255, 0, 0));//красный
}

файл CMyControl.h
Код: (C++)
#pragma once

class CMyControl :public CStatic
{
    DECLARE_DYNAMIC(CMyControl)
public:
    DECLARE_MESSAGE_MAP()
    afx_msg

    void OnPaint();
};
« Последнее редактирование: 29-04-2019 07:11 от Алексей++ » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Online Online
Сообщений: 13


« Ответ #2 : 29-04-2019 07:09 » 

paratrooper, ты не просто меняешь цвет контрола, ты его закрашиваешь поверх его контента (правда какие-то странные координаты для зелёного и чёрного цветов у тебя). У тебя сейчас должен получиться красный прямоугольник на месте контрола.

если хочется просто фон сменить, читай описание функции
CWnd::OnCtlColor

https://docs.microsoft.com/ru-ru/cpp/mfc/reference/cwnd-class?view=vs-2019#onctlcolor

PS если есть такая возможность, то с графикой лучше переходить на Qt. На MFC - гемор тот ещё )) Я уже и поотвык и подзабыл MFC
« Последнее редактирование: 29-04-2019 07:12 от Алексей++ » Записан

paratrooper
Новенький

by
Offline Offline

« Ответ #3 : 29-04-2019 10:03 » 

Мне нужно создать элемент управления с нуля,а я не понимаю как к нему подступится и с какого нуля начинать, а также подключить dll этого элемента в visual studio.

Добавлено через 30 секунд:
и все сделать на С++
« Последнее редактирование: 29-04-2019 10:04 от paratrooper » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Online Online
Сообщений: 13


« Ответ #4 : 29-04-2019 10:14 » 

paratrooper, что за элемент, начни с описания его свойств, например. Что он будет делать, как будет выглядеть ?

и для чего dll, какие цели ?
Записан

paratrooper
Новенький

by
Offline Offline

« Ответ #5 : 29-04-2019 10:36 » 

любой элемент управления но полноценный, будь то тулбар, будь то combox, кнопка, но сделан с нуля и подключаемый в студию.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Online Online
Сообщений: 13


« Ответ #6 : 29-04-2019 10:44 » new

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

а насчёт "подключаемый в студию" - это я не в курсе. Гуглить придётся
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines