Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Диалоги

512
16 октября 2006 года
bnm
124 / / 17.10.2004
Подскажите как я могу изменить кэпшн у IDC_STATIC который расположен на модальном дилоге при нажатии на IDC_BUTTON1, так чето не получается:
CDialog D(IDD_DIALOG1);
D.GetDlgItem(IDC_STATIC)->SetWindowTextW(_T("gfdgfd"));
398
17 октября 2006 года
Alexandoros
630 / / 21.10.2005
В обработке менять нужно -
OnIDC_BUTTON1()
{
GetDlgItem(IDC_STATIC)->SetWindowText(_T("gfdgfd"));
}
512
17 октября 2006 года
bnm
124 / / 17.10.2004
[QUOTE=Alexandoros]В обработке менять нужно -
OnIDC_BUTTON1()
{
GetDlgItem(IDC_STATIC)->SetWindowText(_T("gfdgfd"));
}[/QUOTE]
void CDg::OnBnClickedButton1()
{
GetDlgItem(IDC_STATIC)->SetWindowTextW(_T("gfdgfd"));
}

//------ Вот так что-ли? ----------------------------->

void CDg::OnIDC_BUTTON1()
{
GetDlgItem(IDC_STATIC)->SetWindowTextW(_T("gfdgfd"));
}

1) Если так то не работает, ничего не изменилось.
2) А в чем сама идея?
3.0K
17 октября 2006 года
Мerlin
267 / / 25.07.2006
Пока Control ID будет равен IDC_STATIC, то Control не будет находиться, если на диалоговом окне несколько элементов управления с этим ID.
(точнее, найдется первый из этих contol-ов) По умолчанию Wizard каждому Static Text присваивает это значение.

Измени его например на IDC_STATIC2 и

GetDlgItem(IDC_STATIC2)->SetWindowText(_T("gfdgfd"));
512
17 октября 2006 года
bnm
124 / / 17.10.2004
Я знаю про это, там один статик и открывая диалог через Create() все работает а через DoModal() ..., че только не перепробовал нихрена не получается.
3.0K
17 октября 2006 года
Мerlin
267 / / 25.07.2006
Если открываешь как DoModal, то само собой, что не получается.
Пока диалоговое окно не закрылось, управление остается у него.
Код D.GetDlgItem(IDC_STATIC)->SetWindowTextW(_T("gfdgfd"));
выполняется только после закрытия диалогового окна.

Можно определить какую-то public переменную в диалоговом окне. Напр.

CString str;

в основном модуле:

CDg D;
D.str = _T("gfdgfd");
D.DoModal();

И определить обработчик OnInitDialog() для диалогового окна и записать
в него
GetDlgItem(IDC_STATIC)->SetWindowText(str);
398
18 октября 2006 года
Alexandoros
630 / / 21.10.2005
1)Код класа - в студию.
2)какого ты юзаеш SetWindowTextW?? SetWindowText!!
3)Мerlin - обработчик нажатия на кнопку будет вызыватся как раз когда окно активно (даже через DoModal)
3.0K
18 октября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=Alexandoros]3)Мerlin - обработчик нажатия на кнопку будет вызыватся как раз когда окно активно (даже через DoModal)[/QUOTE]Если я правильно понял, то кнопка находится не на том окне, на которой находится static text. См. 1 пост.
512
18 октября 2006 года
bnm
124 / / 17.10.2004
[QUOTE=Alexandoros]3)Мerlin - обработчик нажатия на кнопку будет вызыватся как раз когда окно активно (даже через DoModal)[/QUOTE]

Поэтому я и не понимаю в чем проблема (кнопка и статик оба находятся на модальном окне). Поидее обращение к элементам должно быть одинаковы как через Create() так и через DoModal(). См. 5 пост
3.0K
18 октября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=bnm]Поэтому я и не понимаю в чем проблема (кнопка и статик оба находятся на модальном окне). Поидее обращение к элементам должно быть одинаковы как через Create() так и через DoModal(). См. 5 пост[/QUOTE]Переименуй IDC_STATIC на что-то другое.
512
18 октября 2006 года
bnm
124 / / 17.10.2004
[QUOTE=Мerlin]Переименуй IDC_STATIC на что-то другое.[/QUOTE]

Пробовал
3.0K
18 октября 2006 года
Мerlin
267 / / 25.07.2006
[QUOTE=bnm]Пробовал[/QUOTE]И получилось? :)

Можешь выложить проект?
512
18 октября 2006 года
bnm
124 / / 17.10.2004
[QUOTE=Мerlin]И получилось? :)[/QUOTE]

Нет, мучаюсь. :(

[QUOTE=Мerlin]Можешь выложить проект?[/QUOTE]
http://sources.codenet.ru/file/1124/DoModal.rar
350
18 октября 2006 года
cheburator
589 / / 01.06.2006
[QUOTE=bnm]http://sources.codenet.ru/file/1124/DoModal.rar[/QUOTE]
Чёт не понял, в каком месте тебе нужно вставить вызов SetWindowText? Укажи файл, номер строки; или лучше - класс, метод. Или объясни суть понятнее.
3.0K
18 октября 2006 года
Мerlin
267 / / 25.07.2006
Измени
 
Код:
void CMy30Dlg::OnBnClickedOk()
{
  [COLOR=red]CDg[/color] D;
  D.DoModal();

И в файле Dg.cpp из первой ф-ии лучше убрать
m_hIcon = AfxGetApp()->LoadIcon(IDD_DIALOG1);

Ты удалил определение m_hIcon из h файла. Да и
иконки IDD_DIALOG1 нет.

И почему-то твой проект компилируется только
на Ctrl+Alt+F7.
512
18 октября 2006 года
bnm
124 / / 17.10.2004
[QUOTE=Мerlin]
И в файле Dg.cpp из первой ф-ии лучше убрать
m_hIcon = AfxGetApp()->LoadIcon(IDD_DIALOG1);
[/QUOTE]
Это я экпериментировал, забыл удалить
[QUOTE=Мerlin]
Ты удалил определение m_hIcon из h файла. Да и
иконки IDD_DIALOG1 нет.
[/QUOTE]
Может его как-то создавать надо?
[QUOTE=Мerlin]
И почему-то твой проект компилируется только
на Ctrl+Alt+F7.
[/QUOTE]
У меня стоит VS2005, наверно из-за этого.

А у тебя чето получилось?
3.0K
18 октября 2006 года
Мerlin
267 / / 25.07.2006
У меня работает.

Окно было неправильно определено.

CDialog D(IDD_DIALOG1);

нужно заменить на

CDg D;
512
18 октября 2006 года
bnm
124 / / 17.10.2004
Все зашибись, работает!!! А в чем разница, ведь CDialog D(IDD_DIALOG1) - конструктор, который создает объект для работы с диалогом?
3.0K
18 октября 2006 года
Мerlin
267 / / 25.07.2006
CDialog D(IDD_DIALOG1) создает окно класса СDialog.
Из-за IDD_DIALOG1 он только внешне смотрится как CDg окно.
Вобщем берется только шаблон.
512
19 октября 2006 года
bnm
124 / / 17.10.2004
А как изменить кэпшн статика на главном окне из модального (нажав на Button1)?
3.0K
19 октября 2006 года
Мerlin
267 / / 25.07.2006
CWnd * wnd = this->GetParent();
wnd->SetWindowTextW(_T("ghgjh"));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог