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

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

02.07.2015, 11:57. Показов 2669. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru