Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916

Доступ к объекту диалога

15.11.2011, 14:25. Показов 2593. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
никак не разберуся, вот есть у нас автоматически сформированное диалоговое окно, как возможно прописать в методе обработки события клика какого либо баттона,чтобы создать этот объект и показать его,ведь у него уже прописаны метоlы инициализации, по аналогии с си шарпом могу токо си шарп код привести, кторый делает тоже самое делает .
C#
1
2
Form fob=new Form();
fob.Show();
Добавлено через 11 минут
C++
1
cadob->DoModal();
вот так вот кароче работает ок-ся)
хм у меня тут проблемка
хотел экспортировать функцию создания диалога но видимо эт оне так просто
C++
1
2
3
4
5
6
extern "C" __declspec(dllexport) 
void ShowCppForm()
{   
    CtestCDlg* cadob=new CtestCDlg();
    cadob->DoModal();
}
как правильно оформить подскажите

Добавлено через 5 минут
я так понимаю надо оформить класс этого диалога как экспортный?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2011, 14:25
Ответы с готовыми решениями:

Как получить доступ к функциям главного диалога из немодального?
//Всем доброго времени суток Подскажите пожалуйста, как получить доступ к функциям основного диалога из немодального? /* Создаю...

Доступ к объекту
Доброго времени суток. Начал изучать юнити, но никак не могу понять, как получить доступ к объекту из скрипта. Есть скрипт...

Доступ к объекту класса
Всем привет! В h файле объявлено три класса: HeavyCar, Fuller, Emptier. Это код кнопки ПУСК: int i; //HeavyCar **masCar; masCar=new...

22
15.11.2011, 14:36

Не по теме:

Цитата Сообщение от asd321 Посмотреть сообщение
никак не разберуся, вот есть у нас автоматически сформированное диалоговое окно, как возможно прописать в методе обработки события клика какого либо баттона,чтобы создать этот объект и показать его,ведь у него уже прописаны метоlы инициализации, по аналогии с си шарпом могу токо си шарп код привести, кторый делает тоже самое делает .
- используйте не API а привязку контролов в ClassWizard из MFC с последующим написанием обработчиков нажатия на Button, CSpinCtrl и т.д....

1
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 14:53  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

- используйте не API а привязку контролов в ClassWizard из MFC с последующим написанием обработчиков нажатия на Button, CSpinCtrl и т.д....

не понимать..) мне бы про способы вызова диалогового окна,и ойформления экспортных функций из библиотеки лучше..
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.11.2011, 15:14
Цитата Сообщение от asd321 Посмотреть сообщение
не понимать..) мне бы про способы вызова диалогового окна,и ойформления экспортных функций из библиотеки лучше..
- хорошо сейчас закончу с одним топиком по точности дабла и накидаю вам MFC проект со вторым окошком - кстати заказывайте модальным его делать или немодальным?Пока отпределяетесь я завершу тот топик о котором говорю...
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
15.11.2011, 15:44
То есть ты считаешь нормальным экспорт сишных функций в .NET программе?
И вообще, ты уж определись, C# у тебя или C++ или...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.11.2011, 16:00
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

asd321, Вы наверное подумали что я забыл о вас, выкладываю проектик
Появляется диалоговое окно, нажимаем "Нажми меня" выскакивает 2-е окно, в зависимости от того как вы поступили - Нажали ли Выбрать файл или нет, появиться окно CFileDialog выбора файла, вобщем пощупаете проект
2FrmDlg.cpp
C++
1
2
3
4
5
6
7
8
9
10
void CMy2FrmDlg::OnOK() 
{
    // TODO: Add extra validation here
    if(pfrm.DoModal() == IDOK)
        m_stat1 = pfrm.fPath;
    else
        m_stat1 = "Файл не выбран";
    UpdateData(false);
    //CDialog::OnOK();
}
frm.cpp
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
void frm::OnOK() 
{
    // TODO: Add extra validation here
    CFileDialog fDlg(true);
    fDlg.m_ofn.lpstrTitle   = "Выберите файл";//Тайтл CFile-диалога
    fDlg.m_ofn.lpstrFilter  = "(*.txt) - files\0*.txt\0(*.dat) - files\0*.dat\0(*.*)All files\0*.*\0";
    fDlg.m_ofn.nFilterIndex = 2;//Фильтр по умолчанию
    if(fDlg.DoModal() == IDOK)
        fPath = fDlg.m_ofn.lpstrFile;
    CDialog::OnOK();
}
 
void frm::OnShowWindow(BOOL bShow, UINT nStatus) 
{
    CDialog::OnShowWindow(bShow, nStatus);
    
    // TODO: Add your message handler code here
    
}
 
void frm::OnCancel() 
{
    // TODO: Add extra cleanup here
    
    CDialog::OnCancel();
}
Выкладываю проект, скрины и откомпилиный экзешник
Миниатюры
Доступ к объекту диалога   Доступ к объекту диалога   Доступ к объекту диалога  

Вложения
Тип файла: rar 2Frm.exe.rar (3.9 Кб, 13 просмотров)
Тип файла: rar 2Frm_proj.rar (23.0 Кб, 14 просмотров)
1
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 16:17  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
То есть ты считаешь нормальным экспорт сишных функций в .NET программе?
И вообще, ты уж определись, C# у тебя или C++ или...
Вообще я работаю в си шарпе, но мне понадобилось экспортировать функцию скомпиленной из мфц без cli библиотеки в которой в принципе диалоговое окно и пару функций.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.11.2011, 16:26
Немного о вызове окон - вызов окон может осуществляться в модальном (вызываемое окно держит фокус на себе, доступа к окну родителя нет, хотя оно может быть активным и видно), а также немодальном режиме(можно "клацать" как в окне родителе так и дочернем окошке)

Вызов модальных окон осуществляется методом DoModoal
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
if(pfrm.DoModal() == IDOK)
Вызов немодальных окон осуществляется методом ShowWindow(это вариант как по мне интересней)
Теперь о ваших кодах
Как я понял в Шарпе ваше окошко Form вызывалось именно в немодальном режиме(т.е была возможность одновременной работы как в родительском так и в дочерних окнах)
Цитата Сообщение от asd321 Посмотреть сообщение
Form fob=new Form();
fob.Show();
Вы правильно начали для немодального режима(ну не совсем правильно но в том направлении)
Цитата Сообщение от asd321 Посмотреть сообщение
CtestCDlg* cadob=new CtestCDlg();
Однако чтобы вы получили полноценное немодальное окошко (верней вообще получили),
вам нужны методы Create затем Show вы можете дублировать созданный однажды Create экземпляр чуруз new однако 1-н раз Create всё же прийдётся осуществить. Кстати я не вижу резона плодить клонов, немодальное окошко после его отработки можно скрыть опять же тем же ShowWindow(SW_HIDE) а затем по надобности снова засветить ShowWindow(SW_SHOW). Как мне кажется суть я изложил, дальше уже дело за вами

Добавлено через 1 минуту

Не по теме:

asd321, я пока обучаюсь шарпу, так что помочь могу только с С++, как вариант загоните всё в DLL и импортируйте в своём шарповском проекте;)



Добавлено через 4 минуты
Цитата Сообщение от asd321 Посмотреть сообщение
Вообще я работаю в си шарпе, но мне понадобилось экспортировать функцию скомпиленной из мфц
- Покажите что именно вы хотите экспортировать, во всём этом много подводных камней, о которые легко споткнуться без точного знания что именно через эти камни перенести хотим...
0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 16:31  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
asd321, Вы наверное подумали что я забыл о вас, выкладываю проектик
Появляется диалоговое окно, нажимаем "Нажми меня" выскакивает 2-е окно, в зависимости от того как вы поступили - Нажали ли Выбрать файл или нет, появиться окно CFileDialog выбора файла, вобщем пощупаете проект
это впринципе понятно,мне интересно как нужно экспортные функции оформлять которые используют неэкспортные функции и неэкспортные классы. надо ли все функции используемые экспортными сделать экспортными или есть какие штукенции для простого решения этой проблемы, сложной на мой неопытный взгляд?
говоря экспортные функции я имею ввиду оформление функций перед компиляцией дллки, которую я потом юзаю.

Добавлено через 3 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- Покажите что именно вы хотите экспортировать, во всём этом много подводных камней, о которые легко споткнуться без точного знания что именно через эти камни перенести хотим...
C++
1
2
3
4
5
6
extern "C" __declspec(dllexport) 
void ShowCppForm()
{   
    CtestCDlg* cadob=new CtestCDlg();
    cadob->DoModal();
}
вот эту функцию,вылетает ошибка при вызове из оболочки C# .
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.11.2011, 16:37
Цитата Сообщение от asd321 Посмотреть сообщение
мне интересно как нужно экспортные функции оформлять которые используют неэкспортные функции и неэкспортные классы.
- честно не смогу помочь не видя что хотим экспортировать, ну если это такая комерческая тайна, ну удалите что именно там важно оставте костяк. Как пример экспорта/импорта привожу совсем простецкий вариант
структура в dll

Не по теме:

PS:Мне надо видеть что хотим запихнуть в DLL вы же не можете знать какой коробок брать если вам скажут нужно запаковать телевизор?:)



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от asd321 Посмотреть сообщение
вот эту функцию,вылетает ошибка при вызове из оболочки C# .
- рассматривали вариант неверного экспорта именно в вашей DLL ?



Добавлено через 23 секунды

Не по теме:

Цитата Сообщение от asd321 Посмотреть сообщение
вот эту функцию,вылетает ошибка при вызове из оболочки C# .
- рассматривали вариант неверного экспорта именно в вашей DLL ?

0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 16:44  [ТС]
в том то и дело что у меня неверный экспорт из дллки,кстати щас переделал как вы сказали теперь вылетает не такой стргогий эксепшн но все же вылетает ошибка об повреждении памяти
C++
1
2
3
4
CtestCDlg* cadob;//=new CtestCDlg();
    cadob->Create((LPCTSTR)"ololo",0);
    cadob->ShowWindow(SW_SHOW);
    //cadob->DoModal();
из кода
C#
1
2
3
  [DllImport("testC.dll", CharSet = CharSet.None)]
        static extern void ShowCppForm();
ShowCppForm();
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
15.11.2011, 16:45
С# вообще позволяет вызывать сишные функции?
0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 16:50  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
С# вообще позволяет вызывать сишные функции?
да . там есть даже специальная таблица соответствия типов к примеру string соответствует const char*.

Добавлено через 2 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вы правильно начали для немодального режима(ну не совсем правильно но в том направлении)

Однако чтобы вы получили полноценное немодальное окошко (верней вообще получили),
вам нужны методы Create затем Show вы можете дублировать созданный однажды Create экземпляр чуруз new однако 1-н раз Create всё же прийдётся осуществить. Кстати я не вижу резона плодить клонов, немодальное окошко после его отработки можно скрыть опять же тем же ShowWindow(SW_HIDE) а затем по надобности снова засветить ShowWindow(SW_SHOW). Как мне кажется суть я изложил, дальше уже дело за вами
.
можете пример показать ? что то ругается негодяй))
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.11.2011, 16:54
Не могу представить каким образом можно экспортировать окно с контролами, если экспортируем функции то их нужно к HWND привязывать, в новом проекте создавать аналогичное окно и к ним припаивать функции обработчики - это можно

Цитата Сообщение от asd321 Посмотреть сообщение
cadob->Create((LPCTSTR)"ololo",0);
- нет я не об этом писал cadob у меня было CDialog и вместо олооло туда нужно ID окна кидать, не поняли мы друг друга(

Предлагаю вот что я сейчас пишу обвёрнутый в DLL мой проект, попробую разработать функции в которые будете передавать HWND окна уже из вашей Шарп-програмы, посмотрим что выйдет?
0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 16:56  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Предлагаю вот что я сейчас пишу обвёрнутый в DLL мой проект, попробую разработать функции в которые будете передавать HWND окна уже из вашей Шарп-програмы, посмотрим что выйдет?
ждемс..) тык тык)
0
15.11.2011, 16:59

Не по теме:

Цитата Сообщение от asd321 Посмотреть сообщение
ждемс..) тык тык)
- asd321, имейте ввиду мне понадобиться время, так что черз 5 минут не ждите, я отпишусь когда начнёт что то получаться;)

0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
15.11.2011, 17:11  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

- asd321, имейте ввиду мне понадобиться время, так что черз 5 минут не ждите, я отпишусь когда начнёт что то получаться;)

Не по теме:

оки доки)

0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.11.2011, 17:54
asd321, я пока ковыряюсь, чтобы вам "тоже интересно было" взгляните пока сюда
Шаг 303 - Свои классы в DLL для MFC
0
2 / 2 / 0
Регистрация: 24.03.2011
Сообщений: 83
15.11.2011, 20:24
эм, а если у меня имеется модальная форма и мне надо с нее считать значение находящееся в компонете TEdut, но я не могу это сделать, ибо он пишет, что Edit1 unexpected variable. В 1 модуле прописал #include "Unit2.cpp"
0
Мохаммед Али
 Аватар для asd321
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
16.11.2011, 10:56  [ТС]
Цитата Сообщение от Saub Посмотреть сообщение
эм, а если у меня имеется модальная форма и мне надо с нее считать значение находящееся в компонете TEdut, но я не могу это сделать, ибо он пишет, что Edit1 unexpected variable. В 1 модуле прописал #include "Unit2.cpp"
ничо не понятно, видимо вы что тонеправильно подключили или ссылки на класс не юзали при использовании контролов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2011, 10:56
Помогаю со студенческими работами здесь

Доступ к объекту из потока
Имеется поток, который является полем объекта Chida и запускается при Create (в констукторе TChida): TMyThread = class(TThread) ...

Доступ к объекту класса
Есть 3 класса MainWindow(Основной) и 2 второстепенных Controll и Mlist. // MainWindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H ...

Доступ к дочернему объекту
Подскажите плиз, такая ситуация: Есть префабы с разным количеством дочерних объектов. В старте я к некоторым из этих префабов через...

Json доступ к объекту
Здравствуйте. Просветите пожалуйста. Есть ajax запрос на сервер, и функция-обработчик успешного выполнения function (resp){ ...

Доступ к объекту класса
Всем привет, друзья! Начал изучать java. И решил по видеоуроку написать игру "Змейка", автор писал игру в notepad++ и грубо говоря,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru