none
Из консоли в Windows form, скоро буду вешаться, люди спасайте. RRS feed

  • Вопрос

  • Написал код для автоматического создания PPPOE подключения (старая тема) , написал его как обычное консольное приложение,  решил перевести его в win form, как посыпалась куча ошибок. Подскажите как грамотно перевезти его или дайте информацию в какой степи копать. Хочу что бы программа запускалась по нажатию на кнопку

    Консольное приложение (все работает норм)

    #include <windows.h>
    
    #include <Ras.h>
     
    void main()
    {
    	RASENTRY RS;
    	memset(&RS, 0, sizeof(RASENTRY));
    	RS.dwSize = sizeof(RS);
    	RS.dwfOptions = RASEO_PreviewUserPw |
    	RASEO_ModemLights |
    	// RASEO_PreviewDomain |        
    	RASEO_ShowDialingProgress |     
    	RASEO_RemoteDefaultGateway |    
    	RASEO_SwCompression |           
    	// RASEO_RequirePAP |           
    	// RASEO_RequireSPAP |          
    	RASEO_RequireCHAP |             
    	// RASEO_RequireMsCHAP |        
    	// RASEO_RequireW95MSCHAP |    
    	RASEO_RequireMsCHAP2 |          
    	RASEO_SecureLocalFiles;         
    	RS.dwfOptions2 = RASEO2_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
    	RS.dwfNetProtocols = RASNP_Ip;             // протокол Интернета
    	RS.dwFramingProtocol = RASFP_Ppp;            // протокол Point-to-Point Protocol
    	RS.dwType = RASET_Broadband;      // тип подключения
    	RS.dwVpnStrategy = VS_Default;           // вкладка "Сеть" - По умолчанию
    	RS.dwEncryptionType = ET_Optional;          // параметры шифрования (ET_None, ET_Require, ET_RequireMax, ET_Optional)
    	RS.dwDialMode = RASEDM_DialAll;
    	RS.dwRedialCount = 99;                   // число повторов набора номера
    	RS.dwRedialPause = 120;                  // интервал между повторениями
    	lstrcpy(RS.szLocalPhoneNumber, TEXT("internet"));
    	lstrcpy(RS.szDeviceType, RASDT_PPPoE);             // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
    	lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
     
     	DWORD dwRet = RasSetEntryProperties(NULL,TEXT("Имя_Соединения"), &RS, sizeof(RS), NULL, 0);
     
    	switch (dwRet)
    	{
    	case ERROR_ACCESS_DENIED:
    		//cout << TEXT("The user does not have the correct privileges. Only an administrator can complete this task.");
    		break;
    	case ERROR_BUFFER_OVERFLOW:
    		//cout << TEXT("The address or buffer specified by lpRasEntry is invalid.");
    		break;
    	case ERROR_CANNOT_OPEN_PROFILE:
    		//cout<<TEXT("The phone book is corrupted or missing components.");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		//cout<<TEXT("The RASENTRY structure pointed to by the lpRasEntry parameter does not contain adequate information. See the description for lpRasEntry to see what information is required.");
    		break;
    	case ERROR_SUCCESS:
    		break;
    	}
    }


    • Изменено Mr.Sanders 14 марта 2012 г. 8:48
    14 марта 2012 г. 8:47

Ответы

  • Вот полный пример, ошибок компиляции и линковки нет:

    Файл Auto.h:

    #pragma once
    #include <windows.h>
    #include <Ras.h>
    #pragma comment(lib, "Rasapi32.lib");
    
    void create_connection();

    Файл Auto.cpp:

    #pragma once
    #include "stdafx.h"
    #include "auto.h"
    
    void create_connection()
    {
    	RASENTRY RS;
    	memset(&RS, 0, sizeof(RASENTRY));
    	RS.dwSize = sizeof(RS);
    	RS.dwfOptions = RASEO_PreviewUserPw |
    	RASEO_ModemLights |
    	// RASEO_PreviewDomain |       
    	RASEO_ShowDialingProgress |   
    	RASEO_RemoteDefaultGateway |   
    	RASEO_SwCompression |           
    	// RASEO_RequirePAP |           
    	// RASEO_RequireSPAP |          
    	RASEO_RequireCHAP |            
    	// RASEO_RequireMsCHAP |        
    	// RASEO_RequireW95MSCHAP |   
    	RASEO_RequireMsCHAP2 |         
    	RASEO_SecureLocalFiles;          
    	RS.dwfOptions2 = RASEO2_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
    	RS.dwfNetProtocols = RASNP_Ip;             // протокол Интернета
    	RS.dwFramingProtocol = RASFP_Ppp;            // протокол Point-to-Point Protocol
    	RS.dwType = RASET_Broadband;      // тип подключения
    	RS.dwVpnStrategy = VS_Default;           // вкладка "Сеть" - По умолчанию
    	RS.dwEncryptionType = ET_Optional;          // параметры шифрования (ET_None, ET_Require, ET_RequireMax, ET_Optional)
    	RS.dwDialMode = RASEDM_DialAll;
    	RS.dwRedialCount = 99;                   // число повторов набора номера
    	RS.dwRedialPause = 120;                  // интервал между повторениями
    	lstrcpy(RS.szLocalPhoneNumber, TEXT("ccs_internet"));
    	lstrcpy(RS.szDeviceType, RASDT_PPPoE);             // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
    	lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
     
     	DWORD dwRet = RasSetEntryProperties(NULL,TEXT("ККС Интернет"), &RS, sizeof(RS), NULL, 0);
     
    	switch (dwRet)
    	{
    	case ERROR_ACCESS_DENIED:
    		//cout << TEXT("The user does not have the correct privileges. Only an administrator can complete this task.");
    		break;
    	case ERROR_BUFFER_OVERFLOW:
    		//cout << TEXT("The address or buffer specified by lpRasEntry is invalid.");
    		break;
    	case ERROR_CANNOT_OPEN_PROFILE:
    		//cout<<TEXT("The phone book is corrupted or missing components.");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		//cout<<TEXT("The RASENTRY structure pointed to by the lpRasEntry parameter does not contain adequate information. See the description for lpRasEntry to see what information is required.");
    		break;
    	case ERROR_SUCCESS:
    		break;
    	}
    }

    Файл Form1.h (на форме расположена кнопка):

    #pragma once
    #include "auto.h"
    
    namespace test_app {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	/// <summary>
    	/// Summary for Form1
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Button^  button1;
    	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->button1 = (gcnew System::Windows::Forms::Button());
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(241, 80);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"button1";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(427, 257);
    			this->Controls->Add(this->button1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    				 create_connection();
    			 }
    	};
    }
    
    


    Для связи [mail]

    • Помечено в качестве ответа Mr.Sanders 23 марта 2012 г. 21:23
    23 марта 2012 г. 10:26

Все ответы

  • > решил перевести его в win form, как посыпалась куча ошибок. Подскажите как грамотно перевезти его или дайте информацию в какой степи копать.
      
     
    каких ошибок? см. http://dotras.codeplex.com/
     
     
    14 марта 2012 г. 9:37
  • Вы портируете данное приложение на платформу .NET, используя C++/CLI? Или же вы хотите данных код полностью переписать на C# или VB.NET?

    Привидте пример как вы портируете код и хотя бы несколько из ошибок возникающих при этом. Тогда вам проще будет помочь с решением проблемы.


    Для связи [mail]

    14 марта 2012 г. 9:46
  • Я создал новый проект windows form и добавил к нему, еще один файл .cpp (auto.cpp) и заголовок auto.h

    auto.cpp  

    #pragma once
    #include <stdint.h>
    #include "stdafx.h"
    
    
    void create_connection 
    {
    	RASENTRY RS;
    	memset(&RS, 0, sizeof(RASENTRY));
    	RS.dwSize = sizeof(RS);
    	RS.dwfOptions = RASEO_PreviewUserPw |
    	RASEO_ModemLights |
    	// RASEO_PreviewDomain |       
    	RASEO_ShowDialingProgress |   
    	RASEO_RemoteDefaultGateway |   
    	RASEO_SwCompression |           
    	// RASEO_RequirePAP |           
    	// RASEO_RequireSPAP |          
    	RASEO_RequireCHAP |            
    	// RASEO_RequireMsCHAP |        
    	// RASEO_RequireW95MSCHAP |   
    	RASEO_RequireMsCHAP2 |         
    	RASEO_SecureLocalFiles;          
    	RS.dwfOptions2 = RASEO2_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
    	RS.dwfNetProtocols = RASNP_Ip;             // протокол Интернета
    	RS.dwFramingProtocol = RASFP_Ppp;            // протокол Point-to-Point Protocol
    	RS.dwType = RASET_Broadband;      // тип подключения
    	RS.dwVpnStrategy = VS_Default;           // вкладка "Сеть" - По умолчанию
    	RS.dwEncryptionType = ET_Optional;          // параметры шифрования (ET_None, ET_Require, ET_RequireMax, ET_Optional)
    	RS.dwDialMode = RASEDM_DialAll;
    	RS.dwRedialCount = 99;                   // число повторов набора номера
    	RS.dwRedialPause = 120;                  // интервал между повторениями
    	lstrcpy(RS.szLocalPhoneNumber, TEXT("ccs_internet"));
    	lstrcpy(RS.szDeviceType, RASDT_PPPoE);             // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
    	lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
     
     	DWORD dwRet = RasSetEntryProperties(NULL,TEXT("ККС Интернет"), &RS, sizeof(RS), NULL, 0);
     
    	switch (dwRet)
    	{
    	case ERROR_ACCESS_DENIED:
    		//cout << TEXT("The user does not have the correct privileges. Only an administrator can complete this task.");
    		break;
    	case ERROR_BUFFER_OVERFLOW:
    		//cout << TEXT("The address or buffer specified by lpRasEntry is invalid.");
    		break;
    	case ERROR_CANNOT_OPEN_PROFILE:
    		//cout<<TEXT("The phone book is corrupted or missing components.");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		//cout<<TEXT("The RASENTRY structure pointed to by the lpRasEntry parameter does not contain adequate information. See the description for lpRasEntry to see what information is required.");
    		break;
    	case ERROR_SUCCESS:
    		break;
    	}
    	}

    auto.h

    void  create_connection 

    Листинг ошибок следующий 

    Предупреждение	1	warning C4627: #include <stdint.h>: пропущен при поиске использования предкомпилированного заголовка auto5.cpp
    Предупреждение	3	warning C4627: #include <stdint.h>: пропущен при поиске использования предкомпилированного заголовка auto_c.cpp
    Предупреждение	4	warning C4603: WINVER: макрос не определен или определение изменилось после использования предкомпилированного заголовка auto_c.cpp
    Ошибка	2	error C2470: create_connection: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции	 auto.cpp
    Ошибка	6	error C2182: create_connection: недопустимое использование типа "void" form1.h
    Ошибка	5	error C2143: синтаксическая ошибка: отсутствие ";" перед "namespace"	form1.h

     

     

    • Изменено Mr.Sanders 14 марта 2012 г. 18:38
    14 марта 2012 г. 18:26
  • На всякий случай вот еще листинг 

    form1.cpp 

    #pragma once
    
    namespace auto_c {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	/// <summary>
    	/// Сводка для Form1
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: добавьте код конструктора
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Освободить все используемые ресурсы.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Button^  button1;
    	protected: 
    
    	private:
    		/// <summary>
    		/// Требуется переменная конструктора.
    		/// </summary>
    		System::ComponentModel::Container ^components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Обязательный метод для поддержки конструктора - не изменяйте
    		/// содержимое данного метода при помощи редактора кода.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->button1 = (gcnew System::Windows::Forms::Button());
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(179, 215);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"button1";
    			this->button1->UseVisualStyleBackColor = true;
    			// 
    			// Form1
    			// 
    			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->button1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    			 }
    	};
    }
    

    И главного файла проекта

     auto_c.cpp
    // auto_c.cpp: главный файл проекта.
    
    #define WINVER 0x0501
    #include <stdint.h> 
    #include "stdafx.h"
    #include <stdio.h>
    #include "auto.h"
    #include "Form1.h"
    #include <windows.h>
    #include <Ras.h>
    #include <shlobj.h>
    #include <shlwapi.h>
    
    using namespace auto_c;
    
    [STAThreadAttribute]
    int main(array<System::String ^> ^args)
    {
    	// Включение визуальных эффектов Windows XP до создания каких-либо элементов управления
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Создание главного окна и его запуск
    	Application::Run(gcnew Form1());
    	return 0;
    }
    

    14 марта 2012 г. 18:32
  •   
    void  create_connection 

    Листинг ошибок следующий 

    Предупреждение	1	warning C4627: #include <stdint.h>: пропущен при поиске использования предкомпилированного заголовка auto5.cpp
    Предупреждение	3	warning C4627: #include <stdint.h>: пропущен при поиске использования предкомпилированного заголовка auto_c.cpp
    Предупреждение	4	warning C4603: WINVER: макрос не определен или определение изменилось после использования предкомпилированного заголовка auto_c.cpp
    Ошибка	2	error C2470: create_connection: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции	 auto.cpp
    Ошибка	6	error C2182: create_connection: недопустимое использование типа "void" form1.h
    Ошибка	5	error C2143: синтаксическая ошибка: отсутствие ";" перед "namespace"	form1.h
     

    Ну и? Компилятор чётко говорит, что не так.

    Если нужно сделать функцию без параметров, то написать так:

    void create_connection()
    {
        ...
    }

    Скобочки не забываем!

    Описание всех ошибок есть в MSDN. Искать можно через Гугл.

    14 марта 2012 г. 18:54
  •   

    void  create_connection 

    Листинг ошибок следующий 

    Предупреждение	1	warning C4627: #include <stdint.h>: пропущен при поиске использования предкомпилированного заголовка auto5.cpp
    Предупреждение	3	warning C4627: #include <stdint.h>: пропущен при поиске использования предкомпилированного заголовка auto_c.cpp
    Предупреждение	4	warning C4603: WINVER: макрос не определен или определение изменилось после использования предкомпилированного заголовка auto_c.cpp
    Ошибка	2	error C2470: create_connection: выглядит как определение функции, но без списка параметров; пропускается вероятное тело функции	 auto.cpp
    Ошибка	6	error C2182: create_connection: недопустимое использование типа "void" form1.h
    Ошибка	5	error C2143: синтаксическая ошибка: отсутствие ";" перед "namespace"	form1.h
     

    Ну и? Компилятор чётко говорит, что не так.

    Если нужно сделать функцию без параметров, то написать так:

    void create_connection()
    {
        ...
    }

    Скобочки не забываем!

    Описание всех ошибок есть в MSDN. Искать можно через Гугл.

    Если ставлю скобки в файле auto.cpp

    void create_connection()

    То появляется 85 ошибок необявленный  идентификатор


    • Изменено Mr.Sanders 14 марта 2012 г. 19:30
    14 марта 2012 г. 19:29
  • Скобки быть должны у функции обязательно.

    А также должны быть заголовочные файлы:

    #include <windows.h>
    #include <Ras.h>
    

    Вы же в первоначальном проекте их подключали, и тут тоже нужно.

    Для связи [mail]

    15 марта 2012 г. 13:44
  • Блин ну я уже неделю бьюсь с этим куском кода, вроде бы осталась одна ошибка но нагуглить так нечего и не смог :(

    Меня терзает чувство что я все таки неправильно функцию подключил :(

    Ошибка	error C2143: синтаксическая ошибка: отсутствие ";" перед "namespace"	Form1.h	
    



    16 марта 2012 г. 19:39
  • Поставьте ; перед namespace :)

    Вы уже решили данную проблему?


    Для связи [mail]

    20 марта 2012 г. 11:21
  • Нет проблема не решена, если ставлю точку с запятой тогда на меня вываливается,

    Ошибка	5	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c00010e).	MSVCURTD.lib(mstartup.obj)	auto_c
    Ошибка	4	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c000109).	MSVCURTD.lib(mstartup.obj)	auto_c
    Ошибка	11	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c000024).	MSVCURTD.lib(ti_inst.obj)	auto_c
    Ошибка	7	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c000021).	MSVCURTD.lib(msilexit.obj)	auto_c
    Ошибка	10	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c000020).	\MSVCURTD.lib(ti_inst.obj)	auto_c
    Ошибка	6	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c00001d).	MSVCURTD.lib(msilexit.obj)	auto_c
    Ошибка	9	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c000017).	MSVCURTD.lib(managdeh.obj)	auto_c
    Ошибка	8	error LNK2022: сбой операции с метаданными (80131195): Несовместимые особые атрибуты. (0x0c000013).	MSVCURTD.lib(managdeh.obj)	auto_c
    Ошибка	12	error LNK1255: не удалось выполнить компоновку из-за ошибок в метаданных	
    

    Могу сказать что нервы мои уже не выдерживают этого

    21 марта 2012 г. 12:59
  • Как добью ее обязательно отпишусь :)
    21 марта 2012 г. 13:38
  • Вот полный пример, ошибок компиляции и линковки нет:

    Файл Auto.h:

    #pragma once
    #include <windows.h>
    #include <Ras.h>
    #pragma comment(lib, "Rasapi32.lib");
    
    void create_connection();

    Файл Auto.cpp:

    #pragma once
    #include "stdafx.h"
    #include "auto.h"
    
    void create_connection()
    {
    	RASENTRY RS;
    	memset(&RS, 0, sizeof(RASENTRY));
    	RS.dwSize = sizeof(RS);
    	RS.dwfOptions = RASEO_PreviewUserPw |
    	RASEO_ModemLights |
    	// RASEO_PreviewDomain |       
    	RASEO_ShowDialingProgress |   
    	RASEO_RemoteDefaultGateway |   
    	RASEO_SwCompression |           
    	// RASEO_RequirePAP |           
    	// RASEO_RequireSPAP |          
    	RASEO_RequireCHAP |            
    	// RASEO_RequireMsCHAP |        
    	// RASEO_RequireW95MSCHAP |   
    	RASEO_RequireMsCHAP2 |         
    	RASEO_SecureLocalFiles;          
    	RS.dwfOptions2 = RASEO2_DontNegotiateMultilink | RASEO2_ReconnectIfDropped;
    	RS.dwfNetProtocols = RASNP_Ip;             // протокол Интернета
    	RS.dwFramingProtocol = RASFP_Ppp;            // протокол Point-to-Point Protocol
    	RS.dwType = RASET_Broadband;      // тип подключения
    	RS.dwVpnStrategy = VS_Default;           // вкладка "Сеть" - По умолчанию
    	RS.dwEncryptionType = ET_Optional;          // параметры шифрования (ET_None, ET_Require, ET_RequireMax, ET_Optional)
    	RS.dwDialMode = RASEDM_DialAll;
    	RS.dwRedialCount = 99;                   // число повторов набора номера
    	RS.dwRedialPause = 120;                  // интервал между повторениями
    	lstrcpy(RS.szLocalPhoneNumber, TEXT("ccs_internet"));
    	lstrcpy(RS.szDeviceType, RASDT_PPPoE);             // RASDT_PPPoE - обуславливает тип подключения (PPPoE)
    	lstrcpy(RS.szDeviceName, TEXT("PPPoE"));
     
     	DWORD dwRet = RasSetEntryProperties(NULL,TEXT("ККС Интернет"), &RS, sizeof(RS), NULL, 0);
     
    	switch (dwRet)
    	{
    	case ERROR_ACCESS_DENIED:
    		//cout << TEXT("The user does not have the correct privileges. Only an administrator can complete this task.");
    		break;
    	case ERROR_BUFFER_OVERFLOW:
    		//cout << TEXT("The address or buffer specified by lpRasEntry is invalid.");
    		break;
    	case ERROR_CANNOT_OPEN_PROFILE:
    		//cout<<TEXT("The phone book is corrupted or missing components.");
    		break;
    	case ERROR_INVALID_PARAMETER:
    		//cout<<TEXT("The RASENTRY structure pointed to by the lpRasEntry parameter does not contain adequate information. See the description for lpRasEntry to see what information is required.");
    		break;
    	case ERROR_SUCCESS:
    		break;
    	}
    }

    Файл Form1.h (на форме расположена кнопка):

    #pragma once
    #include "auto.h"
    
    namespace test_app {
    
    	using namespace System;
    	using namespace System::ComponentModel;
    	using namespace System::Collections;
    	using namespace System::Windows::Forms;
    	using namespace System::Data;
    	using namespace System::Drawing;
    
    	/// <summary>
    	/// Summary for Form1
    	/// </summary>
    	public ref class Form1 : public System::Windows::Forms::Form
    	{
    	public:
    		Form1(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
    		}
    
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~Form1()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: System::Windows::Forms::Button^  button1;
    	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->button1 = (gcnew System::Windows::Forms::Button());
    			this->SuspendLayout();
    			// 
    			// button1
    			// 
    			this->button1->Location = System::Drawing::Point(241, 80);
    			this->button1->Name = L"button1";
    			this->button1->Size = System::Drawing::Size(75, 23);
    			this->button1->TabIndex = 0;
    			this->button1->Text = L"button1";
    			this->button1->UseVisualStyleBackColor = true;
    			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    			// 
    			// Form1
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->ClientSize = System::Drawing::Size(427, 257);
    			this->Controls->Add(this->button1);
    			this->Name = L"Form1";
    			this->Text = L"Form1";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    				 create_connection();
    			 }
    	};
    }
    
    


    Для связи [mail]

    • Помечено в качестве ответа Mr.Sanders 23 марта 2012 г. 21:23
    23 марта 2012 г. 10:26
  • Дмитрий огромное человеческое спасибо, все заработало. 
    23 марта 2012 г. 21:25