ďťż

Ładny brzuch

Witam!
Niedawno zacząłem przygodę z WinAPI, lecz bardzo mi się to spodobało i postanowiłem się sprawdzić i napisać pierwszą grę. Programuję w Dev C++ 4.9.9.2. Jest to internetowe kółko i krzyżyk. Mam kilka pytań na które mam nadzieję pomożecie mi znaleźć odpowiedź:
1) Najważniejsze. Stworzyłem static'a i utworzyłem w nim 9 przycisków. Każdy z przycisków ma swój
identyfikator (990-998). Gdy napisałem procedurę do ich obsługi żaden przysisk nie reaguje jak powinien. Wcześniej, gdy przyciski należały do okna głównego wszystko działało. Teraz po tej zmianie nie reagują. Poniżej jest kod serwera.
Wiem że naciśnięcie przycisku jest przekazywane do okna rodzica którym teraz jest static. Ale nie wiem jak się do tejże informacji odwołać.
Moim zamierzeniem jest zablokowanie tego statica po oddanym ruchu i odblokowanie go gdy przeciwnik odda ruch.
2) Mam 2 programy: serwer oraz klient. Gdy uruchamiam serwer program automatycznie tworzy gniazdo. I tu pojawia się problem. Mam Norton Antivirus 2006 i wyskakuje mi okno "domyślne blokowanie konia trojańskiego". To jest przy najzwyklejszym otwarciu portu. Czy można temu zaradzić? Przyszli użytkownicy gierki mogą się tym "przestraszyć".
3)Wysyłanie maila z załącznikiem. Umiem wysyłać maila bez załącznika. Jak wcześniej napisałem programuję w devie, a większość poradników na wysyłanie maila z załącznikiem jest napisana na borlanda. Czy jest jakiś sposób na wysłanie załącznika programując pod Devem? Spotkałem wiele poradników, jednak niewiele z nich rozumiem.
#include <windows.h> #include <winsock2.h> HANDLE hFile; HWND hOkno, hPoletxt, LG,LS,LD,SG,SS,SD,PG,PS,PD,hButtons; HWND hPole[9]; WIN32_FIND_DATA wfd; int x=0,y=0,i; HDC kontekst; HBRUSH hBrush; HPEN hPen; BOOL circle=TRUE; char pole[3][3]; RECT Rc; WSADATA wsaData; WORD wersja; int blad; char bufor[500]; char rozmowa[10000]; int rozmiar; char wybor[20]; SOCKET soc_klient, soc_serwer; struct sockaddr_in sin; void kolko(HDC kontekst) { hBrush=GetSysColorBrush(COLOR_BTNFACE); SelectObject(kontekst, hBrush); HPEN hPen; hPen=CreatePen(PS_SOLID, 1, RGB(00,00,00)); SelectObject(kontekst, hPen); Ellipse(kontekst, 5, 5, 40, 40); ReleaseDC(hPole[6],kontekst); } void krzyzyk(HDC kontekst) { hPen=CreatePen(PS_SOLID, 1, RGB(00,00,00)); SelectObject(kontekst, hPen); MoveToEx(kontekst,2,5,NULL); LineTo(kontekst, x-8,y-5); MoveToEx(kontekst,x-8,5,NULL); LineTo(kontekst, 2,y-5); } LRESULT CALLBACK ProcObslugi(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HINSTANCE hProgram,HINSTANCE,LPSTR,int swPokaz) { wersja = MAKEWORD (2,0); blad = WSAStartup(wersja,&wsaData); if (blad != 0) { MessageBox(hOkno,"WSAStartup - błąd!","Blad",MB_OK); return false; } if (LOBYTE (wsaData.wVersion) != 2 || HIBYTE (wsaData.wVersion) != 0){ MessageBox(hOkno,"nie ta wersja winsock - błąd!","Blad",MB_OK); WSACleanup(); return false; } int szer=0,wys=0; WNDCLASS wc; wc.style = 0; //styl okna wc.hInstance = hProgram; //podanie nazwy uchwytu wc.lpszClassName = "Moja klasa"; //nazwa klasy wc.lpfnWndProc = ProcObslugi; // funkcja obsługująca komunikaty wc.hIcon = LoadIcon(hProgram,MAKEINTRESOURCE(500)); //ikona (null - wybór z systemowych ikon wc.hCursor = LoadCursor(NULL,IDC_ARROW); // wybór kursora wc.lpszMenuName = NULL; //nazwa menu wc.cbClsExtra = 0;//il.dodatkowej pamieci dla klasy wc.cbWndExtra = 0;//il.dodatkowej pamieci dla okna wc.hbrBackground = (HBRUSH) GetSysColorBrush(COLOR_BTNFACE);//kolor tła - wybor pedzla i koloru if (!RegisterClass(&wc)) return 0; hOkno = CreateWindowEx(WS_EX_TOPMOST,"Moja klasa","Kółko i krzyżyk - Gospodarz", WS_OVERLAPPEDWINDOW|WS_BORDER,100,100,500,400, NULL,NULL,hProgram,NULL); ShowWindow(hOkno,swPokaz); hPoletxt = CreateWindowEx(WS_EX_CLIENTEDGE,"static", NULL, WS_CHILD | WS_VISIBLE, 10, 10, 150, 150, hOkno, (HMENU)250, hProgram, NULL); hButtons = CreateWindowEx(0,"static", NULL, WS_CHILD | WS_VISIBLE, 50, 200, 75, 75, hOkno, (HMENU)251, hProgram, NULL); for(i=0;i<10;i++) { hPole[i] = CreateWindowEx(0,"static", NULL, WS_CHILD | WS_VISIBLE, x, y, x+50, y+50, hPoletxt, (HMENU)i, hProgram, NULL); x+=50; if(x>100) { x=0; y+=50; } } x=50; y=50; LG=CreateWindow("button","LG",WS_CHILD|WS_VISIBLE, szer,wys,25,25,hButtons,(HMENU)990,hProgram,NULL); SG=CreateWindow("button","SG",WS_CHILD|WS_VISIBLE, szer+25,wys,25,25,hButtons,(HMENU)991,hProgram,NULL); PG=CreateWindow("button","PG",WS_CHILD|WS_VISIBLE, szer+50,wys,25,25,hButtons,(HMENU)992,hProgram,NULL); LS=CreateWindow("button","LS",WS_CHILD|WS_VISIBLE, szer,wys+25,25,25,hButtons,(HMENU)993,hProgram,NULL); SS=CreateWindow("button","SS",WS_CHILD|WS_VISIBLE, szer+25,wys+25,25,25,hButtons,(HMENU)994,hProgram,NULL); PS=CreateWindow("button","PS",WS_CHILD|WS_VISIBLE, szer+50,wys+25,25,25,hButtons,(HMENU)995,hProgram,NULL); PD=CreateWindow("button","PD",WS_CHILD|WS_VISIBLE, szer+50,wys+50,25,25,hButtons,(HMENU)998,hProgram,NULL); SD=CreateWindow("button","SD",WS_CHILD|WS_VISIBLE, szer+25,wys+50,25,25,hButtons,(HMENU)997,hProgram,NULL); LD=CreateWindow("button","LD",WS_CHILD|WS_VISIBLE, szer,wys+50,25,25,hButtons,(HMENU)996,hProgram,NULL); soc_serwer = socket(AF_INET,SOCK_STREAM,0); memset( &sin, 0, sizeof sin ); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(12345); rozmiar = sizeof sin; WSAAsyncSelect(soc_serwer,hOkno,WM_USER,FD_ACCEPT|FD_READ|FD_WRITE); if ( bind(soc_serwer,(struct sockaddr *)&sin, sizeof sin ) == SOCKET_ERROR ) { MessageBox(hOkno,"bind - błąd","błąd",MB_OK); WSACleanup(); return FALSE; } if (listen(soc_serwer,SOMAXCONN)==SOCKET_ERROR) { MessageBox(hOkno,"listen - błąd","błąd",MB_OK); WSACleanup(); } kontekst = GetDC(hPoletxt); hPen=CreatePen(PS_SOLID, 2, RGB(00,00,00)); SelectObject(kontekst, hPen); MoveToEx(kontekst,50,0,NULL); LineTo(kontekst, 50,145); MoveToEx(kontekst,100,0,NULL); LineTo(kontekst, 100,145); MoveToEx(kontekst,0,50,NULL); LineTo(kontekst, 145,50); MoveToEx(kontekst,0,100,NULL); LineTo(kontekst, 145,100); ReleaseDC(hPoletxt,kontekst); MSG msg; while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } closesocket(soc_klient); closesocket(soc_serwer); WSACleanup(); return msg.wParam; } LRESULT CALLBACK ProcObslugi(HWND hOkno,UINT uMsg, WPARAM wPar, LPARAM lPar) { switch (uMsg) { case WM_USER: if (WSAGETSELECTERROR(lPar)) { closesocket(soc_klient); WSACleanup(); MessageBox(NULL,"błąd - zamkniecie socketa","błąd",MB_OK); return 0; } switch (WSAGETSELECTEVENT(lPar)) { case FD_READ: blad=recv(soc_klient,wybor,sizeof(wybor),0); if(blad!=SOCKET_ERROR) { if (wybor[0]=='a') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[0])); pole[0][0]='o'; } else { krzyzyk (GetDC(hPole[0])); pole[0][0]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 990), FALSE); } else if (wybor[0]=='b') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[1])); pole[1][0]='o'; } else { krzyzyk (GetDC(hPole[1])); pole[1][0]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 991), FALSE); } // else if (wybor[0]=='c') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[2])); pole[2][0]='o'; } else { krzyzyk (GetDC(hPole[2])); pole[2][0]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 992), FALSE); } // else if (wybor[0]=='d') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[3])); pole[0][1]='o'; } else { krzyzyk (GetDC(hPole[3])); pole[0][1]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 993), FALSE); } // else if (wybor[0]=='e') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[4])); pole[1][1]='o'; } else { krzyzyk (GetDC(hPole[4])); pole[1][1]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 994), FALSE); } // else if (wybor[0]=='f') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[5])); pole[2][1]='o'; } else { krzyzyk (GetDC(hPole[5])); pole[2][1]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 995), FALSE); } // else if (wybor[0]=='g') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[6])); pole[0][2]='o'; } else { krzyzyk (GetDC(hPole[6])); pole[0][2]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 996), FALSE); } // else if (wybor[0]=='h') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[7])); pole[1][2]='o'; } else { krzyzyk (GetDC(hPole[7])); pole[1][2]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 997), FALSE); } // else if (wybor[0]=='i') { circle=!circle; if(circle==TRUE) { kolko(GetDC(hPole[8])); pole[2][2]='o'; } else { krzyzyk (GetDC(hPole[8])); pole[2][2]='x'; } circle=!circle; EnableWindow(GetDlgItem(hOkno, 998), FALSE); } } break; case FD_WRITE: break; case FD_ACCEPT: soc_klient = accept(soc_serwer,(struct sockaddr *)&sin, &rozmiar); break; } break; case WM_CLOSE: if (MessageBox(hOkno,"Czy chcesz zamknąć?","",MB_YESNO) == IDYES) PostQuitMessage(0); break; case WM_KEYDOWN: if (wPar==0x41) DestroyWindow(hOkno); if (wPar==VK_ESCAPE) PostMessage(hOkno,WM_CLOSE,0,0); if (wPar==VK_UP) PostMessage(hOkno,WM_SYSCOMMAND,SC_MAXIMIZE,0); if (wPar==VK_DOWN) PostMessage(hOkno,WM_SYSCOMMAND,SC_MINIMIZE,0); if (wPar==VK_DELETE) {Sleep(500); SendMessage(hOkno,WM_SYSCOMMAND,SC_MONITORPOWER, (LPARAM) 2); } if (wPar==VK_LEFT) PostMessage(hOkno,WM_SYSCOMMAND,SC_RESTORE,0); break; case WM_COMMAND: if(HIWORD(wPar)==BN_CLICKED) { if (LOWORD(wPar)==990) { if(circle==TRUE) { kolko(GetDC(hPole[0])); pole[0][0]='o'; } else { krzyzyk (GetDC(hPole[0])); pole[0][0]='x'; } EnableWindow(GetDlgItem(hOkno, 990), FALSE); wybor[0] = 'a'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==991) { if(circle==TRUE) { kolko(GetDC(hPole[1])); pole[1][0]='o'; } else { krzyzyk(GetDC(hPole[1])); pole[1][0]='x'; } EnableWindow(GetDlgItem(hOkno, 991), FALSE); wybor[0] = 'b'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==992) { if(circle==TRUE) { kolko(GetDC(hPole[2])); pole[2][0]='o'; } else { krzyzyk(GetDC(hPole[2])); pole[2][0]='x'; } EnableWindow(GetDlgItem(hOkno, 992), FALSE); wybor[0] = 'c'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==993) { if(circle==TRUE) { kolko(GetDC(hPole[3])); pole[0][1]='o'; } else { krzyzyk(GetDC(hPole[3])); pole[0][1]='x'; } EnableWindow(GetDlgItem(hOkno, 993), FALSE); wybor[0] = 'd'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==994) { if(circle==TRUE) { kolko(GetDC(hPole[4])); pole[1][1]='o'; } else { krzyzyk(GetDC(hPole[4])); pole[1][1]='x'; } EnableWindow(GetDlgItem(hOkno, 994), FALSE); wybor[0] = 'e'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==995) { if(circle==TRUE) { kolko(GetDC(hPole[5])); pole[2][1]='o'; } else { krzyzyk(GetDC(hPole[5])); pole[2][1]='x'; } EnableWindow(GetDlgItem(hOkno, 995), FALSE); wybor[0] = 'f'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==996) { if(circle==TRUE) { kolko(GetDC(hPole[6])); pole[0][2]='o'; } else { krzyzyk(GetDC(hPole[6])); pole[0][2]='x'; } EnableWindow(GetDlgItem(hOkno, 996), FALSE); wybor[0] = 'g'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==997) { if(circle==TRUE) { kolko(GetDC(hPole[7])); pole[1][2]='o'; } else { krzyzyk(GetDC(hPole[7])); pole[1][2]='x'; } EnableWindow(GetDlgItem(hOkno, 997), FALSE); wybor[0] = 'h'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } if (LOWORD(wPar)==998) { if(circle==TRUE) { kolko(GetDC(hPole[8])); pole[2][2]='o'; } else { krzyzyk(GetDC(hPole[8])); pole[2][2]='x'; } EnableWindow(GetDlgItem(hOkno, 998), FALSE); wybor[0] = 'i'; blad=send(soc_klient,wybor,sizeof(wybor),0); if(blad==SOCKET_ERROR) MessageBox(hOkno,"Błąd wysłania","Błąd",MB_OK); } } break; case WM_ACTIVATE: { Rc.left=0; Rc.top=0; Rc.right= 160; Rc.bottom=160; RedrawWindow( hPoletxt, &Rc, NULL, RDW_UPDATENOW ); } break; case WM_SYSCOMMAND: { Rc.left=0; Rc.top=0; Rc.right= 160; Rc.bottom=160; RedrawWindow( hPoletxt, &Rc, NULL, RDW_UPDATENOW ); } break; case WM_PAINT: { HDC kontekst2; PAINTSTRUCT ps; kontekst2 = BeginPaint (hOkno,&ps); kontekst = GetDC(hPoletxt); hPen=CreatePen(PS_SOLID, 2, RGB(00,00,00)); SelectObject(kontekst, hPen); MoveToEx(kontekst,50,0,NULL); LineTo(kontekst, 50,145); MoveToEx(kontekst,100,0,NULL); LineTo(kontekst, 100,145); MoveToEx(kontekst,0,50,NULL); LineTo(kontekst, 145,50); MoveToEx(kontekst,0,100,NULL); LineTo(kontekst, 145,100); ReleaseDC(hPoletxt,kontekst); if (pole[0][0]=='x'){ krzyzyk(GetDC(hPole[0])); } if (pole[0][0]=='o'){ kolko(GetDC(hPole[0])); } if (pole[1][0]=='x'){ krzyzyk(GetDC(hPole[1])); } if (pole[1][0]=='o'){ kolko(GetDC(hPole[1])); } if (pole[2][0]=='x'){ krzyzyk(GetDC(hPole[2])); } if (pole[2][0]=='o'){ kolko(GetDC(hPole[2])); } if (pole[0][1]=='x'){ krzyzyk(GetDC(hPole[3])); } if (pole[0][1]=='o'){ kolko(GetDC(hPole[3])); } if (pole[1][1]=='x'){ krzyzyk(GetDC(hPole[4])); } if (pole[1][1]=='o'){ kolko(GetDC(hPole[4])); } if (pole[2][1]=='x'){ krzyzyk(GetDC(hPole[5])); } if (pole[2][1]=='o'){ kolko(GetDC(hPole[5])); } if (pole[0][2]=='x'){ krzyzyk(GetDC(hPole[6])); } if (pole[0][2]=='o'){ kolko(GetDC(hPole[6])); } if (pole[1][2]=='x'){ krzyzyk(GetDC(hPole[7])); } if (pole[1][2]=='o'){ kolko(GetDC(hPole[7])); } if (pole[2][2]=='x'){ krzyzyk(GetDC(hPole[8])); } if (pole[2][2]=='o'){ kolko(GetDC(hPole[8])); } EndPaint(hOkno,&ps); } break; default: return DefWindowProc(hOkno,uMsg,wPar,lPar); } return DefWindowProc(hOkno,uMsg,wPar,lPar); }

Proszę o pomoc, szczególnie pierwsze pytanie. Trzecie jest dla mnie również ważne. Bardzo mi na tym zależy. Z góry dziękuję za odpowiedzi.
Użytkownik DJ90 edytował ten post 21 styczeń 2007, 15:59


AD.1. Użyj Google do znalezienia jak najwięcej informacji na temat dziedziczenia okien w Windowsie oraz predefiniowanych kontrolek. Tak zdobyta wiedza na pewno się przyda ;). A jeśli po długich i *starannych* poszukiwaniach nie znajdziesz rozwiązania, to podpowiem Ci małą sztuczkę Techników ;). Po oddaniu ruchu blokuj wszystkie 9 przycisków w pętli ;). Efekt da ten sam. Ale to nie znaczy, że powinieneś przestać szukać tego bardziej eleganckiego rozwiązania ;).

AD.2. I znów Google pomoże, jeśli odpowiednio spytać. Mnie się wydaje, że kod Twojego programu musi wpadać pod jakiś filtr antywirusowy ;). Albo - co też brzmi prawdopodobnie - to zależy od tego jaki port otwierasz i w jaki sposób.

AD.3. Google, Google, Google ;). Try it yourself, a jak nie wyjdzie, to zapytaj jeszcze raz. Ale na pewno wyjdzie ;)

Pozdrawiam,
dobrej nocy.

Dzięki, z pierwszym pytaniem dałem sobię radę, z 3 też sobie poradzę, choć jak macie fajne jakieś tutoriale o MAPI to prosiłbym o linki, sam jakieś też znajdę, choć na razie same angielskie mam. Ale to nic. Jednak drugie pytanie wciąż nierozwiązane;/ próbowałem pytać w googlach, ale nie znajduję rozwiązania problemu. Są jakieś bezpieczne porty? Takie których otwarcie antywir nie uważa jako próbę ataku? Nie wiem czy gg lub inny tego typu program jest oparty na portach, lecz jeżeli tak to dlaczego przy ich uruchomieniu nie wyskakuje ten komunikat? Ma ktoś jakiś pomysł?
Użytkownik DJ90 edytował ten post 22 styczeń 2007, 16:51

Dzięki, z pierwszym pytaniem dałem sobię radę, z 3 też sobie poradzę, choć jak macie fajne jakieś tutoriale o MAPI to prosiłbym o linki, sam jakieś też znajdę, choć na razie same angielskie mam. Ale to nic. Jednak drugie pytanie wciąż nierozwiązane;/ próbowałem pytać w googlach, ale nie znajduję rozwiązania problemu. Są jakieś bezpieczne porty? Takie których otwarcie antywir nie uważa jako próbę ataku? Nie wiem czy gg lub inny tego typu program jest oparty na portach, lecz jeżeli tak to dlaczego przy ich uruchomieniu nie wyskakuje ten komunikat? Ma ktoś jakiś pomysł?

Tak - ja mam. A nie lepiej jak byś sobie zainstalował wxDevCpp zamiast Dev-Cpp, ponieważ wxDevCpp ma gotowe środowisko do tworzenia formatek, przycisków, ikonek i innych bajerów :) - sam w nim napisałem swój dyplom: program graficzny "Jerry3d" :) Polecam wersję wxDevCpp 6.9, bo tam wszystko jest, a np. już w kolejnej wersji wxDevCpp tzn. 6.10 musisz instalować CAŁY pakiet Visual C++, żeby np. móc wykorzystywać biblioteki DLL.. :/

Podaję Ci linka skąd możesz ściągnąć wxDevCpp ver. 6.9 - naprawdę polecam:
http://www.gimnazjum...cppdownload.htm

Na tej stronce jest też krótkie wprowadzenie co i jak robić w wxDevCpp.
Od razu dam Ci taką radę: jak dołączasz pliki dyrektywą #include to pamiętaj, żeby robić to ZAWSZE po komentarzach oznaczonych 4-ma slash'ami czyli np.//// Headers end - inaczej kompilator może nie chcieć skompilować Ci projektu.

Jak by coś nie grało to pisz na to forum.

Pozdro!



ok, spróbuję. Chciałem się nauczyć API, bo czytałem że dobrze wiedzieć jak to wszystko się buduje. Tylko czy to mi pomoże w rozwiązaniu mojego problemu? Dziwne, że dzieje się to tylko przy serwerze (gdy klient się łączy z serwerem nic antywir nie pokazuje). Jeżeli ktoś coś wie to napiszcie.


ok, spróbuję. Chciałem się nauczyć API, bo czytałem że dobrze wiedzieć jak to wszystko się buduje. Tylko czy to mi pomoże w rozwiązaniu mojego problemu? Dziwne, że dzieje się to tylko przy serwerze (gdy klient się łączy z serwerem nic antywir nie pokazuje). Jeżeli ktoś coś wie to napiszcie.

Zainstaluj sobie wxDevCpp - jak stworzysz projekt, to automatycznie stworzą się potrzebne pliki z funkcjami WinAPI i zobaczysz jak to działa. Dobrze jest to wypróbowywać pod Windowsem 98 chociaż stary, ale jest w pełni kompatybilny i można się nauczyć wszystkiego.

Jest też forum do wxDevCpp: http://wxforum.shado...m/viewforum.php

Co do tego problemu z trojanem:
to raczej nie jest błąd w programie, tylko przypadek, że kod wynikowy pasuje do jakiejś sygnatury wirusa (trojana). Akurat mój program antywirusowy się tego nie czepia. Proponuję potraktować wynikowy exe programem strip.exe, który jest w katalogu bin środowiska DevCpp. Zaszkodzić nie zaszkodzi, a pomóc może. Jak to nie zadziała, to można spróbować skompilować w innym kompilatorze (ja próbowałem borlandem, ale wywala błędy... to raczej inna bajka i nie dlatego, że z tym kodem jest coś nie tak, tylko raczej z kompilatorem).

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •