Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 19.05.2012
Сообщений: 18

Перерисовка CDialog

27.10.2012, 14:19. Показов 1281. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание такое. При выборе радиобатона создавать 2 обьекта статик текст и эдит. Вот мой пример кода, только у меня не показывается объект статик на экране.Вот мой пример кода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CVehicleView::OnBnClickedAdd()
{
    MyDialog *dia=new MyDialog;
    CStatic *pStatic=new CStatic;
    dia->Create(IDD_MYDIALOG,this);
    dia->ShowWindow(SW_SHOW);
    if(dia->GetCheckedRadioButton(IDC_PLANE,IDC_SHIP)==IDC_PLANE)
    {
            pStatic->Create(_T("Hight"),WS_VISIBLE,CRect(10,10,50,50),dia,1);       
    }
    else
    {
        delete pStatic;
    }   
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2012, 14:19
Ответы с готовыми решениями:

функция Get Document не работает в CDialog. как получить документ в CDIalog
пишу прогу на DOc/view в MFc. есть обычный диалог с кнопкой. при нажатии на кнопку хочу получить указатель на документ используя функцию...

трабл с CDialog
это сам код : void CChemistView::OnNMDblclk(NMHDR *pNMHDR, LRESULT *pResult) { CTabForm_AddNew* pTab; ...

MFC CDialog
Простейший случай - подключаю диалог к SDI. При компиляции не видит класс диалога, хотя по нажатию точки выдает список его элементов ... ...

9
27.10.2012, 17:16

Не по теме:

Цитата Сообщение от Garmon Посмотреть сообщение
Задание такое. При выборе радиобатона создавать 2 обьекта статик текст и эдит.
- почему нельзя поступить проще по клику радио изменять видимость уже добавленных в окно контролов 2 объекта статик текст?(гораздо проще же)

0
2 / 2 / 0
Регистрация: 19.05.2012
Сообщений: 18
05.11.2012, 13:15  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

- почему нельзя поступить проще по клику радио изменять видимость уже добавленных в окно контролов 2 объекта статик текст?(гораздо проще же)

Как изменить видимость статика?Точнее меня интересует как к нему обратится програмно
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
05.11.2012, 13:18
Цитата Сообщение от Garmon Посмотреть сообщение
Как изменить видимость статика?Точнее меня интересует как к нему обратится програмно
C++
1
2
3
CStatic m_stat; 
m_stat.ShowWindow(SW_HIDE);//прячем
m_stat.ShowWindow(SW_SHOW);//отображаем
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
05.11.2012, 14:17
Цитата Сообщение от Garmon Посмотреть сообщение
Как изменить видимость статика?Точнее меня интересует как к нему обратится програмно
Добавлю к сообщениям -=ЮрА=-, для того чтобы создать окно статика(если мы создаем объект в создании ресурсов ) необходимо поменять ID по умолчанию включается IDC_STATIC который равен -1
и от него нельзя создать свое окно
делаем так правой кнопкой мыши на объекте статик
свойства
в окне находим IDC_STATIC меняем на свой например IDC_MYSTATIC
потом правой кнопкой мыши на объекте статик
добавить переменную
в диалоге вводишь тип переменной CStatic потом имя m_stat
и все общайся как с обычным окном

Добавлено через 8 минут
Цитата Сообщение от Garmon Посмотреть сообщение
Вот мой пример кода, только у меня не показывается объект статик на экране.Вот мой пример кода.
Цитата Сообщение от Garmon Посмотреть сообщение
pStatic->Create(_T("Hight"),WS_VISIBLE,CRect(10, 10,50,50),dia,1);
во первых кто проверять будет создалось окно или нет ?
во вторых добавь в свойство WS_BORDER и тогда увидишь бордюр окна сразу видно показывает или нет
в третьих если два раза зайдешь в процедуру получишь утечку (да и не войдешь тоже)
Цитата Сообщение от Garmon Посмотреть сообщение
CStatic *pStatic
у тебя локальная при выходе из функции теряется(вот тебе и утечка)
сделай членом класса
и при в ходе проверяй создана или нет
в четвертых диалог у тебя модальный или нет?

Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
3
CStatic m_stat; 
m_stat.ShowWindow(SW_HIDE);//прячем
m_stat.ShowWindow(SW_SHOW);//отображаем
Юра а окно то создавать кто будет?
m_stat.Create(....)?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
05.11.2012, 15:20
Цитата Сообщение от ValeryS Посмотреть сообщение
Юра а окно то создавать кто будет?
m_stat.Create(....)?
ValeryS, что-то не допонял, смысла есть проект MFC с диалоговым окном, на окно накидали элементов их привязали к проекту, причём привязали не только как величины(values) но и как контролы Controls, вот к контролам и пременям соотвествующие методы, а через values обмениваемся значениями между переменными проекта и элементами окна.
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
05.11.2012, 15:27
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
ValeryS, что-то не допонял, смысла есть проект MFC с диалоговым окном,
в смысле вот это
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
CStatic m_stat;
мы создаем или привязали при создании диалога в редакторе русурсов?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
05.11.2012, 15:52
Цитата Сообщение от ValeryS Посмотреть сообщение
мы создаем или привязали при создании диалога в редакторе русурсов?
привязали конечно, человеку который умеет осуществлять привязку спокойно поймёт о чём говорилось.
КстатиGarmon, вот тебе части кода из которого сможешь собрать проект в аттаче (весь код не даю, т.к тебе полезней пособирать а не юзать готовый код будет)
Dlg.cpp
DoDataExchange и карта сообщений
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void CShowHideDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CShowHideDlg)
    DDX_Control(pDX, IDC_STATIC1, m_Stat1);
    DDX_Control(pDX, IDC_RADIO1, m_Radio1);
    DDX_Control(pDX, IDC_RADIO2, m_Radio2);
    //}}AFX_DATA_MAP
}
 
BEGIN_MESSAGE_MAP(CShowHideDlg, CDialog)
    //{{AFX_MSG_MAP(CShowHideDlg)
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
    ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
    //}}AFX_MSG_MAP
END_MESSAGE_MAP()
код обработчиков
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void CShowHideDlg::OnRadio1() 
{
    // TODO: Add your control notification handler code here
    AfxMessageBox("Radio1");
}
 
void CShowHideDlg::OnRadio2() 
{
    // TODO: Add your control notification handler code here
    AfxMessageBox("Radio2");
}
 
void CShowHideDlg::OnOK() 
{
    // TODO: Add extra validation here
    bShow = !bShow;
    m_Radio1.ShowWindow(bShow ? SW_SHOW : SW_HIDE);
    m_Radio2.ShowWindow(bShow ? SW_SHOW : SW_HIDE);
    m_Stat1.ShowWindow(bShow ? SW_SHOW : SW_HIDE);
    //CDialog::OnOK();
}
Dlg.h
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
class CShowHideDlg : public CDialog
{
// Construction
public:
    BOOL bShow;
    CShowHideDlg(CWnd* pParent = NULL); // standard constructor
 
// Dialog Data
    //{{AFX_DATA(CShowHideDlg)
    enum { IDD = IDD_SHOWHIDE_DIALOG };
    CButton m_Radio1;
    CButton m_Radio2;
    CButton m_Stat1;
    //}}AFX_DATA
 
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CShowHideDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL
 
// Implementation
protected:
    HICON m_hIcon;
 
    // Generated message map functions
    //{{AFX_MSG(CShowHideDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnPaint();
    afx_msg HCURSOR OnQueryDragIcon();
    afx_msg void OnRadio1();
    afx_msg void OnRadio2();
    virtual void OnOK();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
};
Изображения
 
Вложения
Тип файла: rar ShowHide.exe.rar (3.8 Кб, 3 просмотров)
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
05.11.2012, 15:59
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
привязали конечно, человеку который умеет осуществлять привязку спокойно поймёт о чём говорилось.
тогда прошу пардону
мне чегото втемяшилось что ты с нуля его создаешь(как и ТС)
0
05.11.2012, 18:06

Не по теме:

ValeryS, ничего страшного
А вот на счёт создания проектов MFC через "Create всего" у меня резкое отрицание.:stop: Уже тогда API проект бы ставили люди и писали, зачем MFC проект в котором контролы наглядно можно добавить в проект и привязать к окну мешать с методами API создания элементов(колосальная нерациональность ИМХО):negative:. Ладно ещё SDI/MDI, да и то эти типы проектов больше поданы Microsoft с целью вооружить программиста подготовленными средами под графику.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.11.2012, 18:06
Помогаю со студенческими работами здесь

ресайз CDialog
Привет, народ! Помогите новичку. Работаю с CDialog. Нужно чтобы окно могло растягиваться. Как программно добавить такое свойство?

CDialog::OnKillFocus
почему не работает? закрываю диалог и нифига.... void CDlg_testDlg::OnKillFocus(CWnd* pNewWnd) { CDialog::OnKillFocus(pNewWnd); ...

Рисование в CDialog (MFC)
Кто нибудь подскажите как узнать HWND диалога или любого его элемента А вообще мне нужно как-то при нажатии кнопки создавать окно в...

Как сделать переносимый CDialog
Создаем в VC++ простой проект в виде диалогового окна (главная форма). Помимо главного окна добавляем ещё один диалог (дочернее окно) с...

CDialog::PumpMessage виснет (бесконечный WM_PAINT?)
У меня есть следующая странная проблема на компьютере заказчика (куда я не имею доступа): OS: WinXP Приложение: MFC приложение Visual...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник 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
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru