Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

18.06.2009, 02:31
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
ну вообще суть с++ не в гуи =) для начала стоит научиться использовать ооп. создавать классы, распределять по ним методы, фтыкнуть полиморфизм и наследование. идеально для этого подходит консольное приложение. реши, чего именно ты хочешь добиться. писать на с++ или просто окошки на с++ делать? если первое - то почитай дейтела "как программировать на с++". если второе - то не советую для этого изучать с++ =) очень быстро поймешь, что с++ несколько отличается от того же делфи. тут нада все таки продумывать архитектуру программ, да и управление памятью по началу без опыта будет давать кучу проблем.
по гуям есть смысл почитать "Win32 API. Разработка приложений для Windows" Щупак Ю.
|
|
|

18.06.2009, 09:33
|
|
Флудер
Регистрация: 27.12.2005
Сообщений: 2,372
Провел на форуме: 5339610
Репутация:
4360
|
|
Сообщение от m0Hze
Вот,люди,пока не забыл,задам наиглупейший но очень меня волнующий вопрос.
Как в C++ прорисовываеться интерфейс у программы под win32? Прописываеться кодом каждая кнопка и окошко Просто я недалеко зашел,но успел увидить,что привычной для меня в Dekphi панели кнопочек,окошечек,боксов - нет  С++ Игшдвук edbltk - tcnm?f d С++ (Visual) - нет =*(
Диалог бокс!
|
|
|

18.06.2009, 11:14
|
|
Постоянный
Регистрация: 12.12.2006
Сообщений: 906
Провел на форуме: 4205500
Репутация:
930
|
|
А я бы не советовал читать Щупака, гораздо лучше - Рихтера
|
|
|

18.06.2009, 15:20
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
рихтер на другом фокусирует внимание.
|
|
|

15.11.2009, 03:53
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от s_p_a_m
Код:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#pragma comment(lib, "ws2_32.lib")
char* OpenURL(char *url) {
WSADATA lpWSAData;
SOCKET s;
// Проверим на правильность введенный адрес.
// Он должен начинаться с "http://"
if (memcmp(url,"HTTP://",7)!=0 && memcmp(url,"http://",7)!=0) return(NULL);
url+=7;
// Инициализация библиотеки Ws2_32.dll.
if (WSAStartup(MAKEWORD(1,1),&lpWSAData)!=0) return(NULL);
// Получим имя хоста, номер порта и путь ----------------------------
char *http_host=strdup(url); // Имя хоста (HTTP_HOST)
int port_num=80; // Номер порта по умолчанию (HTTP_PORT)
char *http_path=NULL; // Путь (REQUEST_URI)
char *pch=strchr(http_host,':');
if (!pch) {
pch=strchr(http_host,'/');
if (pch) {
*pch=0;
http_path=strdup(pch+1);
}
else http_path=strdup("");
}
else {
*pch=0;pch++;
char *pch1 = strchr(pch,'/');
if (pch1) {
*pch1=0;
http_path=strdup(pch1+1);
}
else http_path=strdup("");
port_num = atoi(pch);
if (port_num==0) port_num = 80;
}
// Поучаем IP адрес по имени хоста
struct hostent* hp;
if (!(hp=gethostbyname(http_host))) {
free(http_host);
free(http_path);
return(NULL);
}
// Открываем сокет
s=socket(AF_INET, SOCK_STREAM, 0);
if (s==INVALID_SOCKET) {
free(http_host);
free(http_path);
return(NULL);
}
// Заполняем структуру sockaddr_in
struct sockaddr_in ssin;
memset ((char *)&ssin, 0, sizeof(ssin));
ssin.sin_family = AF_INET;
ssin.sin_addr.S_un.S_un_b.s_b1 = hp->h_addr[0];
ssin.sin_addr.S_un.S_un_b.s_b2 = hp->h_addr[1];
ssin.sin_addr.S_un.S_un_b.s_b3 = hp->h_addr[2];
ssin.sin_addr.S_un.S_un_b.s_b4 = hp->h_addr[3];
ssin.sin_port = htons(port_num);
// Выводим IP адрес хоста, с которым будем соединятся
printf("Conecting to %d.%d.%d.%d...",(unsigned char)hp->h_addr[0],
(unsigned char)hp->h_addr[1],
(unsigned char)hp->h_addr[2],
(unsigned char)hp->h_addr[3]);
// Соединяемся с хостом
if (connect(s, (sockaddr *)&ssin, sizeof(ssin))==-1) {
free(http_host);
free(http_path);
printf("Error\n");
return(NULL);
}
printf("Ok\n");
// Формируем HTTP запрос
char *query=(char*)malloc(2048);
strcpy(query,"GET /");
strcat(query,http_path);
strcat(query," HTTP/1.0\nHost: ");
strcat(query,http_host);
strcat(query,"\nUser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
strcat(query,"\nAccept: */*\n\n");
// Выводим HTTP запрос
printf("%s",query);
// Отправляем запрос серверу
int cnt=send(s,query,strlen(query),0);
// Освобождаем память
free(http_host);
free(http_path);
free(query);
// Проверяем, не произошло ли ошибки при отправке запроса на сервер
if (cnt==SOCKET_ERROR) return(NULL);
cnt=1;
// Получаем ответ с сервера ---------------------------------
int size=1024*1024; // 1Mb
char *result=(char*)malloc(size);
strcpy(result,"");
char *result_ptr=result;
while (cnt!=0 && size>0) {
cnt=recv (s, result_ptr, sizeof(size),0);
if (cnt>0) {
result_ptr+=cnt;
size-=cnt;
}
}
*result_ptr=0;
// Деинициализация библиотеки Ws2_32.dll
WSACleanup();
return(result);
}
void main(void) {
char *result=OpenURL("http://www.antichat.ru/");
if (result) {
printf("%s",result);
free(result);
}
else {
printf("Error # WSABASEERR+%d\n",WSAGetLastError()-WSABASEERR);
}
getchar();
getchar();
}
Апики,а как в указанном выше примере,устроить многопоточность? Тоесть,например есть массив с адресами,и он по ним пробегает с потоками.
|
|
|

15.11.2009, 14:08
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
может сначала стоит поискать в гугле ? а не спрашивать как вывести текст, как сделать то и то, все это хорошо гуглится уже миллион статей написано по данному сабжу.
|
|
|

15.11.2009, 14:13
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|