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

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

07.02.2016, 16:58. Показов 705. Ответов 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 класс окна.
Но текст не выводится. Он выводится только при изменении размера окна на доли секунды, а потом окно снова перерисовывается и становится пустым.
Подскажите, как это исправить. Спасибо.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
MFC. Работа со стандартным приложением VS (Код сгенерирован)  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2016, 16:58
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 1 минуту
Надеюсь понял, что надо писать коды в ветке else функции OnPaint
0
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
07.02.2016, 22:20  [ТС] 5
Цитата Сообщение от 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 6
Панель диалоговая в проекте есть ?
Если есть, то по ней правой кнопкой мыши...

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

Добавлено через 52 секунды
Цитата Сообщение от savromat Посмотреть сообщение
Создаем в Win32 Application или Win API
Ничего из этого
0
0 / 0 / 1
Регистрация: 07.02.2016
Сообщений: 13
07.02.2016, 22:25 8
AppWizard[exe] ?
Или что-то другое ?
0
39 / 46 / 3
Регистрация: 04.06.2013
Сообщений: 1,532
07.02.2016, 22:28  [ТС] 9
Цитата Сообщение от savromat Посмотреть сообщение
AppWizard[exe] ?
Это что такое?)
Я работаю в VS 2015. Нажал создать проект и:
0
Миниатюры
MFC. Работа со стандартным приложением VS (Код сгенерирован)  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2016, 22:28

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.