Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/86: Рейтинг темы: голосов - 86, средняя оценка - 4.70
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101

Работа с MFC: Как создать дочерние окна?

27.07.2011, 22:11. Показов 17936. Ответов 95
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некоторые вопросы по этой библиотеке..... 1 Как создать дочерние окна ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.07.2011, 22:11
Ответы с готовыми решениями:

Создать страницу, с помощью которой пользователь сможет произвольно создавать и закрывать дочерние окна
Ребят, доброй ночи. Очень прошу помощи. Нужно создать скрипт, а я в этом деле тугодум, т.к. ничего не обьясняли. Спонтанно, это надо...

Работа в MFC. Обновление окна.
У меня в функции OnDraw() отрисовывается куб. По нажатию мыши нужно чтобы этот куб стирался и рисовался новый куб с другими сторонами. С...

Как создавать дочерние окна?
Вот у меня окно например форм1, нажимаю на буттон и в форм1 появляется форм2 (появление должно быть незаметным). могу привести пример,...

95
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
30.07.2011, 11:11
Студворк — интернет-сервис помощи студентам
Хорошо, я сразу не всмотрелся что i у тебя скорее всего глобальная переменная, выложи проект, нужно смотреть
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
30.07.2011, 16:41  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Хорошо, я сразу не всмотрелся что i у тебя скорее всего глобальная переменная, выложи проект, нужно смотреть
проект шас даже не компилится, чет натворил я походу(
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
30.07.2011, 17:03  [ТС]
вот проект
Вложения
Тип файла: rar MFC.rar (74.2 Кб, 14 просмотров)
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
30.07.2011, 23:24
Вот твой проект не знаю конечно что он должен делать, но я исправил.
В коде было две ошибки
1 - я инкрементировать нужно вот так i++;
2 - я
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void CMFCDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    s[i] = m_edit1;
    i++;
    UpdateData(false);
}
 
void CMFCDlg::OnButton2() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    m_edit2 = s[i - 1];
    UpdateData(false);
}
Когда ты осуществил i++ в OnButton1() то строка s[i] ещё не инициализирована инициализирована s[i-1], поэтому выводить нужно строку с индексом на 1-цу меньше;
PS:Проект выполнен в 6-й студии, для запуска открывай файл MFC.dsw, твоя студия преобразует єто проект к стандарту 2005 студии в которой ты работаешь...
Вложения
Тип файла: rar MFC.rar (9.4 Кб, 14 просмотров)
1
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
30.07.2011, 23:28  [ТС]
там где с-1 внизу счетчик не нужен??
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
31.07.2011, 08:34
Опиши конкретно,что должна делать программа,по тому что было в проекте разобраться сложно...
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
31.07.2011, 09:31  [ТС]
сколько в ЕДИТ1 было введено слов столько и вывести в ЕДИТ2, типа массив строк по очереди
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
31.07.2011, 09:41
Вот код для вывода всех строк во 2-м эдите
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CString s[500];
int i = 0;
int k = 0;
 
void CMFCDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    s[i] = m_edit1;
    i++;
    UpdateData(false);
}
 
void CMFCDlg::OnButton2() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    if(i <= k)
        k = 0;
    m_edit2 = s[k];
    k++;
    UpdateData(false);
}
1
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
31.07.2011, 11:49  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вот код для вывода всех строк во 2-м эдите
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
CString s[500];
int i = 0;
int k = 0;
 
void CMFCDlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    s[i] = m_edit1;
    i++;
    UpdateData(false);
}
 
void CMFCDlg::OnButton2() 
{
    // TODO: Add your control notification handler code here
    UpdateData(true);
    if(i <= k)
        k = 0;
    m_edit2 = s[k];
    k++;
    UpdateData(false);
}
ЗАРАБОТАЛА
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
06.08.2011, 01:20  [ТС]
C++
1
2
3
4
void СmyDlg::OnbnClickButton1()
{
MessageBox("Привет","Окно",MB_OK);
}
выдает ошибку "невозможно преобразовать 1 параметр из const char [6] в LPCTSTR", че за дела??
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
06.08.2011, 08:49
у тебя в проекте скорее всего включено ЮниКоде.
пиши так
C++
1
_T("lalala")
макрос _T определит какая у тебя кодировка и создаст нужную строку
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
06.08.2011, 09:50  [ТС]
a без этого макроса есть другой вариант?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
06.08.2011, 10:08
есть
убрать в свойствах проекта "использовать юникоде"
но с макросом универсальное решение
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
06.08.2011, 10:21  [ТС]
в чем будет разница и как будет лучше?
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
09.08.2011, 13:53  [ТС]
как создать еще одну форму??
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
09.08.2011, 16:07
Цитата Сообщение от ДинисламХХХ Посмотреть сообщение
1
2
3
4
void СmyDlg::OnbnClickButton1()
{
MessageBox("Привет","Окно",MB_OK);
}
выдает ошибку "невозможно преобразовать 1 параметр из const char [6] в LPCTSTR", че за дела??
Попробуй
C++
1
MessageBox((LPCTSTR)"Привет","Окно",MB_OK);
Добавлено через 1 минуту
Цитата Сообщение от ДинисламХХХ Посмотреть сообщение
как создать еще одну форму??
Ты читал мой пост???
Работа с MFC: Как создать дочерние окна?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
09.08.2011, 18:50
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
MessageBox((LPCTSTR)"Привет","Окно",MB_O K);
по моему это приведение а не конвертация
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
12.08.2011, 23:51  [ТС]
у меня не работает . . .
0
6 / 6 / 1
Регистрация: 29.11.2010
Сообщений: 101
22.03.2013, 20:13  [ТС]
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
101
102
103
104
// MyTestS.cpp: файл реализации
//
 
#include "stdafx.h"
#include "MyTest.h"
#include "MyTestS.h"
 
 
// диалоговое окно CMyTestS
 
IMPLEMENT_DYNAMIC(CMyTestS, CDialog)
 
CMyTestS::CMyTestS(CWnd* pParent /*=NULL*/)
: CDialog(CMyTestS::IDD, pParent)
, m_edit1(_T(""))
, m_Edit2(_T(""))
, m_Edit3(_T(""))
, m_Edit4(_T(""))
{
 
    EnableAutomation();
 
}
 
CMyTestS::~CMyTestS()
{
}
 
void CMyTestS::OnFinalRelease()
{
    // Когда будет освобождена последняя ссылка на объект автоматизации,
    // вызывается OnFinalRelease. Базовый класс автоматически
    // удалит объект. Перед вызовом базового класса добавьте
    // дополнительную очистку, необходимую вашему объекту.
 
    CDialog::OnFinalRelease();
}
 
void CMyTestS::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT1, m_edit1);
    DDX_Text(pDX, IDC_EDIT2, m_Edit2);
    DDX_Text(pDX, IDC_EDIT3, m_Edit3);
    DDX_Text(pDX, IDC_EDIT4, m_Edit4);
    DDX_Control(pDX, IDC_BUTTON1, m_But1);
    DDX_Control(pDX, IDC_BUTTON2, m_But2);
    DDX_Control(pDX, IDC_BUTTON3, m_But3);
}
 
 
BEGIN_MESSAGE_MAP(CMyTestS, CDialog)
    ON_BN_CLICKED(IDC_BUTTON2, &CMyTestS::OnBnClickedButton2)
    ON_WM_ACTIVATE()
    ON_WM_CLOSE()
END_MESSAGE_MAP()
 
BEGIN_DISPATCH_MAP(CMyTestS, CDialog)
END_DISPATCH_MAP()
 
// Примечание: мы добавили поддержку для IID_IMyTestS, чтобы обеспечить безопасную с точки зрения типов привязку
//  из VBA. Этот IID должен соответствовать GUID, связанному с 
//  disp-интерфейсом в файле .IDL.
 
// {C290DBF4-36F0-4328-A23A-5076168161F9}
static const IID IID_IMyTestS =
{ 0xC290DBF4, 0x36F0, 0x4328, { 0xA2, 0x3A, 0x50, 0x76, 0x16, 0x81, 0x61, 0xF9 } };
 
BEGIN_INTERFACE_MAP(CMyTestS, CDialog)
    INTERFACE_PART(CMyTestS, IID_IMyTestS, Dispatch)
END_INTERFACE_MAP()
 
 
// обработчики сообщений CMyTestS
 
CString s;
void CMyTestS::OnBnClickedButton2()
{  
    CStdioFile cf;
    cf.Open("cfile.txt", CFile::modeReadWrite| CFile::modeNoTruncate, NULL);
    UpdateData(TRUE);
    s = m_edit1;
   cf.WriteString(s);
     UpdateData(FALSE);
  cf.Close();
 
}
 
void CMyTestS::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
    CDialog::OnActivate(nState, pWndOther, bMinimized);
    if (!cf.Open("cfile.txt", CFile::modeRead, NULL))
        cf.Open("cfile.txt", CFile::modeCreate | CFile::modeWrite | CFile::typeText, NULL);
 
 
    // TODO: добавьте свой код обработчика сообщений
}
 
void CMyTestS::OnClose()
{
    // TODO: добавьте свой код обработчика сообщений или вызов стандартного
 cf.Close();
    CDialog::OnClose();
}
там выводит ошибку при записи в файл.. помогите пожалуйста, и укажите на ошибку...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.03.2013, 20:36
Цитата Сообщение от ДинисламХХХ Посмотреть сообщение
if (!cf.Open("cfile.txt", CFile::modeRead, NULL))
cf же не объявлен в пределах
Цитата Сообщение от ДинисламХХХ Посмотреть сообщение
void CMyTestS::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
Тоже самое ниже
Цитата Сообщение от ДинисламХХХ Посмотреть сообщение
void CMyTestS::OnClose()
{
* * // TODO: добавьте свой код обработчика сообщений или вызов стандартного
*cf.Close();
- тоже самое. Код линковаться вообще не должен
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2013, 20:36

Как правильно создавать дочерние окна?
Всем доброе время суток. Может кто подсказать как правильно создавать дочерние окна. Например есть окно Form1 и при нажатии на кнопку нужно...

Как создавать дочерние окна (окно в окне)
Здравствуйте! Подскажите пожалуйста, как можно в WPF создавать дочерние окна? т.е. Есть одно окно mainWindow, и по кнопке можно вызвать...

Как получить все дочерние окна процесса?
Получаю все процессы, нахожу нужный, но мне еще нужны вложенные окна типа Ebit и им подобным, полный список, как их можно получить? Через...

Как получить все дочерние окна процесса?
Получаю все процессы, нахожу нужный, но мне еще нужны вложенные окна типа Ebit и им подобным, полный список, как их можно получить? Через...

Как передать значение из родительского окна в дочерние?
var newWin = window.open('about:blank', 'example', 'width=600,height=400'); // создать div в документе нового окна var div =...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru