Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532

MFC. Работа со стандартным приложением VS (Код сгенерирован)

07.02.2016, 16:58. Показов 1045. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хай.
Мной, с помощью конструктора было создано MFC приложение (пустое окно).
Раньше, когда сам создавал приложение, я рисовал и писал текст вот так:
C++
1
2
3
4
5
6
7
8
void CMainFrame::OnPaint()
{
    CPaintDC pDC(this);
    pDC.TextOutW(300, 300, L"Hello");
    CPen aPen1(PS_DASH, 3, RGB(120, 255, 127));
    //oldPen = pDC.SelectObject(&aPen1);//сохраняем старое перо
    pDC.Ellipse(50, 50, 100, 150);
}
Где CMainFrame класс окна.
Но текст не выводится. Он выводится только при изменении размера окна на доли секунды, а потом окно снова перерисовывается и становится пустым.
Подскажите, как это исправить. Спасибо.
Миниатюры
MFC. Работа со стандартным приложением VS (Код сгенерирован)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2016, 16:58
Ответы с готовыми решениями:

Работа со стандартным меню
При создании winApi приложения создается стандартное окно с меню, мне надо добавленные пункты меню (некоторые) сделать неактивными и...

Работа со стандартным вводом данных в консоль
Можно ли используя c# одной строкой заполнить сразу несколько переменных?Например,в паскале запись Read(a,b) позволяет определить сразу 2...

Ключ сгенерирован в Eclipse, проект в Android Studio
Всем привет! 3 года назад написал программу в Eclipse. Хочу обновить программу в PlayGoogle. В данный момент работаю в Android...

8
0 / 0 / 1
Регистрация: 07.02.2016
Сообщений: 13
07.02.2016, 21:52
C++
1
2
3
4
5
6
7
8
9
10
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();
    }
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
07.02.2016, 21:54  [ТС]
savromat, может вы знаете, как изменить имя окна? Не могу найти функцию create, в которой оно прописывается. Есть только onCreate().
0
0 / 0 / 1
Регистрация: 07.02.2016
Сообщений: 13
07.02.2016, 22:12
Правой кнопкой на окне диалога и выбираем Property. Там есть окошко с именем. Его можно изменить

Добавлено через 1 минуту
Надеюсь понял, что надо писать коды в ветке else функции OnPaint
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
07.02.2016, 22:20  [ТС]
Цитата Сообщение от savromat Посмотреть сообщение
Надеюсь понял, что надо писать коды в ветке else функции OnPaint
Я удалил из OnCreate само обращение к функции OnCreate. Точно уже не помню, что там было, но она внутри себя обращалась к себе. После этого текст и эллипс нормально нарисовались. Не знаю, может я сделал что-то не правильное, но оно работает. Вот теперь OnCreate:
C++
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
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 
    BOOL bNameValid;
 
    if (!m_wndMenuBar.Create(this))
    {
        TRACE0("Не удалось создать строку меню\n");
        return -1;      // не удалось создать
    }
 
    m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);
 
    // предотвращение фокусировки строки меню на активации 
    CMFCPopupMenu::SetForceMenuFocus(FALSE);
 
    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME))
    {
        TRACE0("Не удалось создать панель инструментов\n");
        return -1;      // не удалось создать
    }
 
    CString strToolBarName;
    bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD);
    ASSERT(bNameValid);
    m_wndToolBar.SetWindowText(strToolBarName);
 
    CString strCustomize;
    bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE);
    ASSERT(bNameValid);
    m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize);
 
    // Разрешить операции с пользовательскими панелями инструментов:
    InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId);
 
    if (!m_wndStatusBar.Create(this))
    {
        TRACE0("Не удалось создать строку состояния\n");
        return -1;      // не удалось создать
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
 
    // TODO: удалите эти пять строк, если панель инструментов и строка меню не должны быть закрепляемыми
    m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockPane(&m_wndMenuBar);
    DockPane(&m_wndToolBar);
 
 
    // включить режим работы закрепляемых окон стилей Visual Studio 2005
    CDockingManager::SetDockingMode(DT_SMART);
    // включить режим работы автоматического скрытия закрепляемых окон стилей Visual Studio 2005
    EnableAutoHidePanes(CBRS_ALIGN_ANY);
    // установите наглядный диспетчер и стиль на основе постоянного значения
    OnApplicationLook(theApp.m_nAppLook);
 
    // Включить функцию замены меню панелей инструментов и закрепляемых окон 
    EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR);
 
    // включить быструю (Alt+перетаскивание) настройку панелей инструментов
    CMFCToolBar::EnableQuickCustomization();
 
    if (CMFCToolBar::GetUserImages() == NULL)
    {
        // загрузить изображения пользовательских панелей инструментов
        if (m_UserImages.Load(_T(".\\UserImages.bmp")))
        {
            CMFCToolBar::SetUserImages(&m_UserImages);
        }
    }
 
    // включить персонализацию меню (последние использованные команды)
    // TODO: определите свои основные команды так, чтобы каждое раскрывающееся меню содержало по крайней мере одну основную команду.
    CList<UINT, UINT> lstBasicCommands;
 
    lstBasicCommands.AddTail(ID_FILE_NEW);
    lstBasicCommands.AddTail(ID_FILE_OPEN);
    lstBasicCommands.AddTail(ID_FILE_SAVE);
    lstBasicCommands.AddTail(ID_FILE_PRINT);
    lstBasicCommands.AddTail(ID_APP_EXIT);
    lstBasicCommands.AddTail(ID_EDIT_CUT);
    lstBasicCommands.AddTail(ID_EDIT_PASTE);
    lstBasicCommands.AddTail(ID_EDIT_UNDO);
    lstBasicCommands.AddTail(ID_APP_ABOUT);
    lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR);
    lstBasicCommands.AddTail(ID_VIEW_TOOLBAR);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA);
    lstBasicCommands.AddTail(ID_VIEW_APPLOOK_WINDOWS_7);
 
    CMFCToolBar::SetBasicCommands(lstBasicCommands);
 
    return 0;
}
Цитата Сообщение от savromat Посмотреть сообщение
Правой кнопкой на окне диалога и выбираем Property. Там есть окошко с именем. Его можно изменить
где найти это окно?

Добавлено через 1 минуту
Цитата Сообщение от savromat Посмотреть сообщение
CDialog::OnPaint();
Что за CDialog?
0
0 / 0 / 1
Регистрация: 07.02.2016
Сообщений: 13
07.02.2016, 22:23
Панель диалоговая в проекте есть ?
Если есть, то по ней правой кнопкой мыши...

Добавлено через 1 минуту
Создаем в Win32 Application или Win API ?
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
07.02.2016, 22:24  [ТС]
savromat, MFC

Добавлено через 52 секунды
Цитата Сообщение от savromat Посмотреть сообщение
Создаем в Win32 Application или Win API
Ничего из этого
0
0 / 0 / 1
Регистрация: 07.02.2016
Сообщений: 13
07.02.2016, 22:25
AppWizard[exe] ?
Или что-то другое ?
0
 Аватар для SanychBY
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
07.02.2016, 22:28  [ТС]
Цитата Сообщение от savromat Посмотреть сообщение
AppWizard[exe] ?
Это что такое?)
Я работаю в VS 2015. Нажал создать проект и:
Миниатюры
MFC. Работа со стандартным приложением VS (Код сгенерирован)  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.02.2016, 22:28
Помогаю со студенческими работами здесь

Управление приложением блокнот через код C#
Всем привет! Подскажите как мне сделать так, чтоб моя программа открыла в стандартном блокноте винды файл, и сохранила его с другой...

Работа со сторонним приложением
Здравствуйте! Прошу вашей помоши потому что сам не так силён в Delphi. Опишу саму проблему и думаю вы сами поймёте. 1. Есть программа WP...

Работа с многооконным приложением
1)Создать информационную программу из пяти окон с последовательным переходом из одного окна в другое вперед и назад.Данная программа должна...

Работа с консольным приложением
Пожалуйста, подскажите кто может. Программа сделана для консольного приложения, Builder C++ 6, считывает данные с платы PCI и выводит на...

Работа с приложением на другом ПК
Проблема вот такая, после переноса файлов проекта на другой компьютер, база данных перестаёт работать. База данных разработана как Файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru