Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246

Создание оконного приложения

30.09.2015, 17:21. Показов 1605. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот такой вопрос: у меня есть код консольного приложения. И мне нужно как то сделать оконное приложение. Какие есть варианты?
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#include "stdafx.h"
#include <stdio.h>
  #include <winsock2.h>  // Wincosk2.h должен быть 
          // подключен раньше windows.h!
  #include <windows.h>
#pragma comment (lib, "Ws2_32.lib")
  
 
  #define MY_PORT    666
           // Порт, который слушает сервер
 
  // макрос для печати количества активных
  // пользователей 
  #define PRINTNUSERS if(nclients) printf("%d user on-line\n",nclients); else printf("No User on line\n");
 
  // прототип функции, обслуживающий
  // подключившихся пользователей
  DWORD WINAPI SexToClient(LPVOID client_socket);
 
  // глобальная переменная – количество
  // активных пользователей 
  int nclients = 0;
 
  int main(int argc, char* argv[])
  {
    char buff[1024];    // Буфер для различных нужд
 
    printf("TCP SERVER DEMO\n");
 
    // Шаг 1 - Инициализация Библиотеки Сокетов
    // Т.к. возвращенная функцией информация
    // не используется ей передается указатель на
    // рабочий буфер, преобразуемый
    // к указателю  на структуру WSADATA.
    // Такой прием позволяет сэкономить одну
    // переменную, однако, буфер должен быть не менее
    // полкилобайта размером (структура WSADATA
    // занимает 400 байт)
    if (WSAStartup(0x0202,(WSADATA *) &buff[0])) 
    {
      // Ошибка!
          printf("Error WSAStartup %d\n",
             WSAGetLastError());
      return -1;
    }
 
    // Шаг 2 - создание сокета
    SOCKET mysocket;
    // AF_INET     - сокет Интернета
    // SOCK_STREAM  - потоковый сокет (с
    //      установкой соединения)
    // 0      - по умолчанию выбирается TCP протокол
    if ((mysocket=socket(AF_INET,SOCK_STREAM,0))<0)
    {
      // Ошибка!
      printf("Error socket %d\n",WSAGetLastError());
      WSACleanup();
        // Деиницилизация библиотеки Winsock
      return -1;
    }
 
    // Шаг 3 связывание сокета с локальным адресом
    sockaddr_in local_addr;
    local_addr.sin_family=AF_INET;
    local_addr.sin_port=htons(MY_PORT);
             // не забываем о сетевом порядке!!!
    local_addr.sin_addr.s_addr=0;
             // сервер принимает подключения
             // на все IP-адреса
 
    // вызываем bind для связывания
    if (bind(mysocket,(sockaddr *) &local_addr,
                sizeof(local_addr)))
    {
      // Ошибка
      printf("Error bind %d\n",WSAGetLastError());
      closesocket(mysocket);  // закрываем сокет!
      WSACleanup();
      return -1;
    }
 
    // Шаг 4 ожидание подключений
    // размер очереди – 0x100
    if (listen(mysocket, 0x100))
    {
      // Ошибка
      printf("Error listen %d\n",WSAGetLastError());
      closesocket(mysocket);
      WSACleanup();
      return -1;
    }
 
    printf("Wait for a connection...\n");
 
    // Шаг 5 извлекаем сообщение из очереди
    SOCKET client_socket;    // сокет для клиента
    sockaddr_in client_addr;    // адрес клиента
              // (заполняется системой)
 
    // функции accept необходимо передать размер
    // структуры
    int client_addr_size=sizeof(client_addr);
 
    // цикл извлечения запросов на подключение из
    // очереди
    while((client_socket=accept(mysocket, (sockaddr *)
            &client_addr, &client_addr_size)))
    {
      nclients++;      // увеличиваем счетчик
              // подключившихся клиентов
 
      // пытаемся получить имя хоста
      HOSTENT *hst;
      hst=gethostbyaddr((char *)
          &client_addr.sin_addr.s_addr,4, AF_INET);
 
      // вывод сведений о клиенте
      printf("+%s [%s] new connect!\n",
      (hst)?hst->h_name:"",
      inet_ntoa(client_addr.sin_addr));
      PRINTNUSERS
 
      // Вызов нового потока для обслужвания клиента
      // Да, для этого рекомендуется использовать
      // _beginthreadex но, поскольку никаких вызов
      // функций стандартной Си библиотеки поток не
      // делает, можно обойтись и CreateThread
      DWORD thID;
      CreateThread(NULL,NULL,SexToClient,
              &client_socket,NULL,&thID);
    }
    return 0;
  }
 
  // Эта функция создается в отдельном потоке и
  // обсуживает очередного подключившегося клиента
  // независимо от остальных
  DWORD WINAPI SexToClient(LPVOID client_socket)
  {
    SOCKET my_sock;
    my_sock=((SOCKET *) client_socket)[0];
    char buff[20*1024];
    #define sHELLO "Hello, Sailor\r\n"
 
    // отправляем клиенту приветствие 
    send(my_sock,sHELLO,sizeof(sHELLO),0);
 
    // цикл эхо-сервера: прием строки от клиента и
    // возвращение ее клиенту
    int bytes_recv;
    while( (bytes_recv=recv(my_sock,&buff[0],sizeof(buff),0)) && (bytes_recv !=SOCKET_ERROR))
      send(my_sock,&buff[0],bytes_recv,0);
 
    // если мы здесь, то произошел выход из цикла по
    // причине возращения функцией recv ошибки –
    // соединение клиентом разорвано
    nclients--; // уменьшаем счетчик активных клиентов
    printf("-disconnect\n"); PRINTNUSERS
 
    // закрываем сокет
    closesocket(my_sock);
    return 0;
  }
Добавлено через 1 час 46 минут
помогите!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2015, 17:21
Ответы с готовыми решениями:

Вызов консоли с оконного приложения в VS 2010 C++
Как вызвать консольную программу с оконного приложения в VS 2010 C++

Всё что необходимо знать для создания оконного приложения
Подскажите пожалуйста литературу с полным изложением знаний для создания оконного приложения в visual studio на языке С++. Я много создавал...

Создание многооконного приложения
помоите плиз! как создать приложение с 2,3 и болие окнами в Windows Forms? к примеру я создал form1 в нее добавил елемент Batton1 кнопку,...

10
Модератор
Эксперт С++
 Аватар для zss
13776 / 10969 / 6491
Регистрация: 18.12.2011
Сообщений: 29,251
30.09.2015, 17:33
Замените
Цитата Сообщение от Armando111 Посмотреть сообщение
int main(int argc, char* argv[])
на
C++
1
int WINAPI WinMain(HINSTANCE, HINSTANCE,LPSTR,int)
Вывод формируйте через вывод в строку.
Потом эту строку отображайте с помощью
C++
1
MessageBox(0,сформированная_для_вывода_строка,"Заголовок сообщения", MB_OK);
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
30.09.2015, 17:42  [ТС]
zss, Хорошо, спасибо, а как мне сделать кнопку, label и др элементы?
0
Модератор
Эксперт С++
 Аватар для zss
13776 / 10969 / 6491
Регистрация: 18.12.2011
Сообщений: 29,251
30.09.2015, 17:47
В таком случае, я Вас переадресовываю в раздел Windows Form.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
30.09.2015, 17:50
Цитата Сообщение от Armando111 Посмотреть сообщение
как мне сделать кнопку, label и др элементы?
В конструкторе форм перетягивайте нужный вам элемент на форму.
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
30.09.2015, 17:52  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
В конструкторе форм перетягивайте нужный вам элемент на форму
Вы не то написали, прочитайте сообщения выше
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
30.09.2015, 17:56
Armando111, может вы не поняли просто?
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
30.09.2015, 19:43  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
может вы не поняли просто?
У меня проект: пустое приложение, не Windows Forms
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
30.09.2015, 19:56
Armando111, добавьте новую форму через "Обозреватель решений" и сможете пользоваться конструктором.
0
 Аватар для Armando111
2 / 1 / 2
Регистрация: 07.02.2014
Сообщений: 246
30.09.2015, 21:55  [ТС]
Цитата Сообщение от tezaurismosis Посмотреть сообщение
добавьте новую форму через "Обозреватель решений" и сможете пользоваться конструктором.
это получится CLR проект
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
30.09.2015, 22:02
Цитата Сообщение от Armando111 Посмотреть сообщение
это получится CLR проект
А как вы собираетесь Windows Forms в не CLR проекте использовать? Так не получится.
Если совсем без CLR, то только MFC и WinAPI вам остаются (или сторонние библиотеки/фреймворки).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2015, 22:02
Помогаю со студенческими работами здесь

Создание приложения с дочерними окнами
Создаю windows form application. Подскажите как сделать так, чтобы нажатием кнопки далее в окне появлялась другая информация. Язык с ++. ...

Создание формы из консольного приложения
имеется код консольного приложения, нужно переделать его в форму, все попытки передать оказались неудачными, пожалуйста помогите. ...

Создание приложения с интерактивной картой
Здравствуйте, уважаемые программисты, прошу Вас немного проконсультировать меня. Хочу написать программу, в которой будет интерактивная...

Создание графического приложения (Windows Forms) в Visual Studio
Для последней версии Visual Studio 2013 (всех редакций): Создать проект-&gt;Visual C++-&gt;CLR-&gt;Пустой проект CLR-&gt; После создания проекта...

Создание оконного приложения
Подскажите, как сделать вот такое окно, с объектами на нём? Я в C++ полный void. Пока что только окно понял(не до конца)...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru