Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225

Ошибка при открытии диалогового окна выбора файла

02.07.2015, 11:57. Показов 2716. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Работаю с формой и необходимо открыть диалоговое окно для выбора файла. Из MSDN нашёл такой пример Обработка нажатия кнопки.
C++
1
2
3
4
5
private: System::Void btnOpen_Click(System::Object^  sender, System::EventArgs^  e) {
         if (openFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK){
         StreamReader ^  sr = gcnew StreamReader(openFileDialog1->FileName);
         }
}
Вопрос по значкам ^ и ->. Для чего?!
Вот правда сейчас нашёл пояснение, что ^ (шляпка) - дескриптор, позволяющий автоматически удалять экземпляр.
а -> - это замена разграничения типа точки, но только для указателей.
По поводу последнего не понял.

Также есть ошибка вида error lnk1561: entry point must be saved.
Подскажите источники по часто появляющимся вопросам о формах.
Заранее спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2015, 11:57
Ответы с готовыми решениями:

Ошибка при открытии диалогового окна
Диалоговое окно первый раз открывается нормально, а при втором открытии - возникает ошибка. В чем может быть проблема?

Проблема при открытии файла из диалогового окна
Доброго дня! Есть задача: при нажатии на кнопку должно открываться диалоговое окно, в котором можно будет выбрать файл Excel и открыть...

Ошибка при открытии окна выбора БД
Вчера установил Дизайнер 8.5.2 rus, на машине до этого стоял 8.5.1, накатилось без проблем... за одним исключением, при Ctrl+O и выборе...

13
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.07.2015, 12:11
Цитата Сообщение от ToLexx Посмотреть сообщение
Вопрос по значкам ^ и ->. Для чего?!
^ управляемый указатель.
-> обращение по указателю.

Цитата Сообщение от ToLexx Посмотреть сообщение
Также есть ошибка вида error lnk1561: entry point must be saved.
ищите ответ на MSDN или в гуле или приведите минимальный код,для воспроизведения ошибки.

Цитата Сообщение от ToLexx Посмотреть сообщение
Подскажите источники по часто появляющимся вопросам о формах.
Здесь на форуме,в разделе по C#.
1
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
02.07.2015, 12:59  [ТС]
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#pragma once
 
namespace Project1 {
 
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::Collections::Generic;
    using namespace System::IO;
 
        /// <summary>
    /// Summary for MyForm
    /// </summary>
    public ref class MyForm : public System::Windows::Forms::Form
    {
    public:
        MyForm(void)
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
 
    protected:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        ~MyForm()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  btnOpen;
    private: System::Windows::Forms::Button^  btnSave;
    private: System::Windows::Forms::Label^  lblPath;
    protected:
 
 
    private: System::Windows::Forms::TextBox^  textBox1;
    private: System::Windows::Forms::SaveFileDialog^  saveFileDialog1;
    private: System::Windows::Forms::OpenFileDialog^  openFileDialog1;
 
    protected:
 
    private:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        System::ComponentModel::Container ^components;
 
#pragma region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        void InitializeComponent(void)
        {
            this->btnOpen = (gcnew System::Windows::Forms::Button());
            this->btnSave = (gcnew System::Windows::Forms::Button());
            this->lblPath = (gcnew System::Windows::Forms::Label());
            this->textBox1 = (gcnew System::Windows::Forms::TextBox());
            this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog());
            this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog());
            this->SuspendLayout();
            // 
            // btnOpen
            // 
            this->btnOpen->Location = System::Drawing::Point(0, 0);
            this->btnOpen->Name = L"btnOpen";
            this->btnOpen->Size = System::Drawing::Size(75, 23);
            this->btnOpen->TabIndex = 0;
            this->btnOpen->Text = L"Open";
            this->btnOpen->UseVisualStyleBackColor = true;
            this->btnOpen->Click += gcnew System::EventHandler(this, &MyForm::btnOpen_Click);
            // 
            // btnSave
            // 
            this->btnSave->Location = System::Drawing::Point(0, 212);
            this->btnSave->Name = L"btnSave";
            this->btnSave->Size = System::Drawing::Size(75, 23);
            this->btnSave->TabIndex = 1;
            this->btnSave->Text = L"Save";
            this->btnSave->UseVisualStyleBackColor = true;
            // 
            // lblPath
            // 
            this->lblPath->AutoSize = true;
            this->lblPath->Location = System::Drawing::Point(12, 240);
            this->lblPath->Name = L"lblPath";
            this->lblPath->Size = System::Drawing::Size(0, 13);
            this->lblPath->TabIndex = 2;
            // 
            // textBox1
            // 
            this->textBox1->Location = System::Drawing::Point(0, 29);
            this->textBox1->Multiline = true;
            this->textBox1->Name = L"textBox1";
            this->textBox1->Size = System::Drawing::Size(272, 177);
            this->textBox1->TabIndex = 3;
            // 
            // openFileDialog1
            // 
            this->openFileDialog1->FileName = L"openFileDialog1";
            // 
            // MyForm
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(284, 262);
            this->Controls->Add(this->textBox1);
            this->Controls->Add(this->lblPath);
            this->Controls->Add(this->btnSave);
            this->Controls->Add(this->btnOpen);
            this->Name = L"MyForm";
            this->Text = L"MyForm";
            this->ResumeLayout(false);
            this->PerformLayout();
 
        }
#pragma endregion
    private: System::Void btnOpen_Click(System::Object^  sender, System::EventArgs^  e) {
                         if (openFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK){
                             StreamReader ^  sr = gcnew StreamReader(openFileDialog1->FileName);
                             MessageBox::Show(sr->ReadToEnd());
                             sr->Close();
                         }
    }
};
}
моё добавление это строки 126-133, и 11,12.
Фактически хочу чтобы были две кнопки открытия файла и сохранения файла. а выдают указанную выше ошибку, хотя не должны вроде
Заранее спс.

^ управляемый указатель, подскажите где про него почитать, ничего подобного ни в гугл ни тут, помоему.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.07.2015, 13:52
Цитата Сообщение от ToLexx Посмотреть сообщение
^ управляемый указатель, подскажите где про него почитать, ничего подобного ни в гугл ни тут, помоему.
А что там про него читать? Таким значком помечают объекты ссылочных классов,за которыми будет следить среда(т.е. никаких delete и free).

Цитата Сообщение от ToLexx Посмотреть сообщение
Фактически хочу чтобы были две кнопки открытия файла и сохранения файла. а выдают указанную выше ошибку, хотя не должны вроде
Посмотрю вечером,если никто не опередит.
1
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
02.07.2015, 14:11  [ТС]
Решение видимо в том, что нет main. Добавил в файл myform.cpp простое:
C++
1
2
3
4
5
6
7
8
9
#include "MyForm.h"
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello!";
    system("pause");
    return 0;
}
Появилась консоль, а формочки нетуть. Почему не воткну.
Вообще фактически ток 2 основных файла: myform.cpp и myform.h. Вроде в начале myform.cpp взываю к myform.h, но почему не выполняется??
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.07.2015, 14:44
Цитата Сообщение от ToLexx Посмотреть сообщение
Появилась консоль, а формочки нетуть. Почему не воткну.
Вы не создали форму.Сделайте по образцу из этой темы:
Создание графического приложения (Windows Forms) в Visual Studio

видимо у вас нет шаблона для форм.
1
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
02.07.2015, 14:49  [ТС]
итого оказалось надо в myform.cpp включить следующее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "MyForm.h"
 
using namespace System;
using namespace System::Windows::Forms;
 
[STAThreadAttribute]
void main(array<String^>^ args)
{
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);
    Project1::MyForm form;
    Application::Run(%form);
}
в свойствах проекта добавить :
1) Linker->system ____ SubSystem в выпадающем меню : Windows (/SUBSYSTEM:WINDOWS)
2) Linker->Advanced _____ EntryPoint пишем main.
Всё. благодаря этому запускается форма с отработкой поставленной задачи.
То бишь правильно включили точку запуска и вызов обработчика формы.

А про указатели: это получается отличаются от обычных, только тем что не нужно удалять?
Других свойств нет??
Простите, к какому разделу с++ это относится((
1
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.07.2015, 15:07
Цитата Сообщение от ToLexx Посмотреть сообщение
Простите, к какому разделу с++ это относится
Ни к какому
С++/CLI это расширение C++ от Microsoft,которое лишилось поддержки.

Цитата Сообщение от ToLexx Посмотреть сообщение
А про указатели: это получается отличаются от обычных, только тем что не нужно удалять?
Других свойств нет??
Грубо говоря да.Для простой работы с ними этого достаточно.
1
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
02.07.2015, 15:20  [ТС]
Цитата Сообщение от S_el Посмотреть сообщение
С++/CLI это расширение C++ от Microsoft,которое лишилось поддержки
А как нынче реализуют формы? в сторону чего смотреть, ато получается, что многие статьи о программировании устарели(Даты частенько не стоят)
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.07.2015, 15:25
ToLexx, если под Windows,то лучший выбор это .Net и C# (C++/CLI тоже для начала сгодиться). Если кросс-платформенно и C++ то Qt - как мощный фреймворк или wxWidgets если просто формочки клепать.
1
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
02.07.2015, 16:34  [ТС]
.Net - это фактически огромная библиотека, в которой прописаны разнообразные классы объекты и т.п. на все случаи жизни для Windows.
C# - язык программирования, по-хорошему аналог с++, несколько отличающийся от с++.
А что такое MFC, как я понимаю это подобие CLI, позволяющее создавать программы просто их сложность несколько возрастает. А MPF??
Короче вопрос в следующем следует ли вообще замарачиваться с C++/CTL или переходить к MFC(c++) или (MPF) c#.
Просто я посоздавал проекты(шаблончики) на вышеперечисленном и впринципе ничем друг от друга не отличаются)))
Да и принцип построения программ получается более менее одинаков.
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
02.07.2015, 16:43
Цитата Сообщение от ToLexx Посмотреть сообщение
.Net - это фактически огромная библиотека, в которой прописаны разнообразные классы объекты и т.п. на все случаи жизни для Windows.
это больше чем библиотека,но грубо говоря да.

Цитата Сообщение от ToLexx Посмотреть сообщение
C# - язык программирования, по-хорошему аналог с++, несколько отличающийся от с++.
более высокоуровневый и современный,с полной поддержкой .Net

Цитата Сообщение от ToLexx Посмотреть сообщение
А что такое MFC, как я понимаю это подобие CLI
библиотека Microsoft Foundation Classes (MFC) - устаревшая технология.

Цитата Сообщение от ToLexx Посмотреть сообщение
или (MPF) c#.
WPF? часть .Net для красивых GUI и не только.
1
Заблокирован
02.07.2015, 16:49
Цитата Сообщение от ToLexx Посмотреть сообщение
Короче вопрос в следующем следует ли вообще замарачиваться с C++/CTL или переходить к MFC(c++) или (MPF) c#.
Переходите на C#
0
3 / 3 / 2
Регистрация: 21.10.2013
Сообщений: 225
03.07.2015, 09:32  [ТС]
Ещё раз спасибо всем за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.07.2015, 09:32
Помогаю со студенческими работами здесь

Ошибка диалогового окна при выборе контекстного меню файла
Здравствуйте! Тренируюсь, пишу программку типа блокнота. При открытии (или сохранении) файла, если в диалоговом окне выбора файла...

Память при открытии второго диалогового окна
Привет. Есть родительское окно и на нем кнопка- нажимаем- открывается диалоговое окно. Закрываем его. В деструкторе диалогового окна только...

Затемнение фона при открытии диалогового окна Jquery UI
Ребят,кто-нить знает как настроить затемнение фона при открытии диалогового окна Jquery UI? там встроено это?

Существует ли функция для открытия диалогового окна выбора файла
Народ такой вопрос, есть ли функция или процедура в 1с по выбору документа с компьютера, чтоб было более понятно объясняю пример, допустим...

Вывод диалогового окна с запросом выбора файла и сохранение пути к файлу ?
Подскажите как реализуется чтобы в макросе выдать диалоговое окно с возможностью выбора файла и по нажатию ОК сохранить путь в переменную ?


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru