Page 45 of 50

Re: C++ -kysymykset

Posted: Sat Jul 16, 2011 7:20 pm
by MaGetzUb
Feuer wrote:Juuri sitä muistelen käyttäneeni.
Onko lippujen antojärjestyksellä väliä? =)

Re: C++ -kysymykset

Posted: Sat Jul 16, 2011 7:24 pm
by JATothrim
MaGetzUb wrote:Mitenkä SDL:ä voi luoda tyhjän RGBA pinnan, joka olisi siis ihan tyhjä (ei mitään väriä) pelkkä läpinäkyvä pinta. Sitten tähän rajapintaan pitäisi saada toisesta alphakanavan omaavasta rajapinnasta palasen, eli tuossa alhaalla olevasta kuvasta yksi frame.
Image
Saan vain mustat reunat noille räjähdyksille, vaikka niiden pitäisi olla läpinäkyviä..
Tällä hetkellä myös rotozoom jotenkin sekoittaa alfakanavan.. Tai sitten sen tekee SDL_DisplayFormat() kuten alla olevasta kuvasta näkyy:
....
Srry, en keksi ratkaisuaa varsinaiseen ongelmaan, mutta voisin antaa vinkejä: tarkista että näyttöpinta 32bit, eli siinäkin on alpha kanava. Kokeile käyttää vain jompaa kumpaa: colorkey tai alpha.
Bugiksi mainitsisin, että koodisi vuotaa kaksi kuvaa bitti bukettiin per Surface::drawf():

Code: Select all

    drws = SDL_CreateRGBSurface(SDL_HWSURFACE, framew, frameh, 32, 0, 0, 0, 0);


    SDL_BlitSurface(srfc, &dframe, drws, &into);
    drws = rotozoomSurface(drws, angle, scale, smooth);     // <--- VUOTAAA KUIN SEULA!!

    drws = SDL_DisplayFormat(drws);     // <--- VUOTAAA KUIN SEULA!!
    if(masking==true){SDL_SetColorKey(drws, SDL_SRCCOLORKEY, SDL_MapRGBA(drws->format, maskr,maskg, maskb, maska));}
Koska rotozoomSurface ja SDL_DisplayFormat molemmat luovat uuden kuvapinnan. ;)
EDIT:

| on binäärinen operaattori or, joka ei välitä pätkääkään miten päin flagit annetaan, koska se summaa tuloksen lopulta yhteen unsigned muuttujaan. :P


Re: C++ -kysymykset

Posted: Sat Jul 16, 2011 8:46 pm
by MaGetzUb
JATothrim wrote:
MaGetzUb wrote:Mitenkä SDL:ä voi luoda tyhjän RGBA pinnan, joka olisi siis ihan tyhjä (ei mitään väriä) pelkkä läpinäkyvä pinta. Sitten tähän rajapintaan pitäisi saada toisesta alphakanavan omaavasta rajapinnasta palasen, eli tuossa alhaalla olevasta kuvasta yksi frame.
Image
Saan vain mustat reunat noille räjähdyksille, vaikka niiden pitäisi olla läpinäkyviä..
Tällä hetkellä myös rotozoom jotenkin sekoittaa alfakanavan.. Tai sitten sen tekee SDL_DisplayFormat() kuten alla olevasta kuvasta näkyy:
....
Srry, en keksi ratkaisuaa varsinaiseen ongelmaan, mutta voisin antaa vinkejä: tarkista että näyttöpinta 32bit, eli siinäkin on alpha kanava. Kokeile käyttää vain jompaa kumpaa: colorkey tai alpha.
Bugiksi mainitsisin, että koodisi vuotaa kaksi kuvaa bitti bukettiin per Surface::drawf():

Code: Select all

    drws = SDL_CreateRGBSurface(SDL_HWSURFACE, framew, frameh, 32, 0, 0, 0, 0);


    SDL_BlitSurface(srfc, &dframe, drws, &into);
    drws = rotozoomSurface(drws, angle, scale, smooth);     // <--- VUOTAAA KUIN SEULA!!

    drws = SDL_DisplayFormat(drws);     // <--- VUOTAAA KUIN SEULA!!
    if(masking==true){SDL_SetColorKey(drws, SDL_SRCCOLORKEY, SDL_MapRGBA(drws->format, maskr,maskg, maskb, maska));}
Koska rotozoomSurface ja SDL_DisplayFormat molemmat luovat uuden kuvapinnan. ;)
EDIT:

| on binäärinen operaattori or, joka ei välitä pätkääkään miten päin flagit annetaan, koska se summaa tuloksen lopulta yhteen unsigned muuttujaan. :P

Eipä paljoa auttanut SDL_SRCALPHA:n/SDL_SRCCOLORKEY:n vaihtelu.. :(

Re: C++ -kysymykset

Posted: Sat Jul 16, 2011 8:50 pm
by temu92
Optimoitko käyttäen SDL_DisplayFormatAlpha-funktiota, että surface pysyy 32-bittisenä?

Jos olet sitä SFML:ää käyttämässä (jos SDL ei mitenkään ala pelittää) niin olen tehnyt sille simppelin apukirjaston animaatioita varten: http://bluefoxgames.org/animated.zip

Tässä yksinkertainen (mutta kommentoimaton) esimerkki käyttämisestä. Kommentteja löytyy enemmän itse kirjaston koodista.

Re: C++ -kysymykset

Posted: Sat Jul 16, 2011 9:26 pm
by MaGetzUb
Noniin, nyt ainakin tuo pelkkä räjähdys kuva näkyy alphan kanssa(kiitos temu92:le tuosta kysymksestä, josta hokasin että tuommoinen funktio on olemassa), mutta frameihin en ole saanut vaikutusta.. =) Noh parempi se on nytkin jo. :) Tuo SFML on kyl mielenkiintoinen, mutta pysyttelen SDL:ä ihan vain mieltymyksestä.. Katson seuraavaa projektia tuon SFML:n kanssa. :P

Re: C++ -kysymykset

Posted: Sun Jul 24, 2011 10:18 am
by naputtelija
Opettelen tässä c++ Windows-ohjelmointia ja lainasin vanhan kirjan win-98-ajoilta, jolloin säieprosessointi ja moniajaminen oli vielä lapsenkengissään. Siinähän se ongelma piileekin, että koko oppaan tutot ovan liian vanhoja nykyisten kääntäjien ajettavaksi. Joten, kertokaapa, mitä tässä koodissa pitäisi muuttaa, että sitä nykykääntäjät pystyvät ajamaan?

Code: Select all

// DEMO6_2.CPP basic full-screen DirectDraw demo

// INCLUDES ///////////////////////////////////////////////

#define WIN32_LEAN_AND_MEAN  // just say no to MFC

#include <windows.h>   // include important windows stuff
#include <windowsx.h> 
#include <mmsystem.h>
#include <iostream.h> // include important C/C++ stuff
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h> 
#include <math.h>
#include <io.h>
#include <fcntl.h>

#include <ddraw.h> // include directdraw

// DEFINES ////////////////////////////////////////////////

// defines for windows 
#define WINDOW_CLASS_NAME "WINCLASS1"

// default screen size
#define SCREEN_WIDTH    640  // size of screen
#define SCREEN_HEIGHT   480
#define SCREEN_BPP      8    // bits per pixel
#define MAX_COLORS      256  // maximum colors

// TYPES //////////////////////////////////////////////////////

// basic unsigned types
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned char  UCHAR;
typedef unsigned char  BYTE;

// MACROS /////////////////////////////////////////////////

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)

// initializes a direct draw struct
#define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }

// GLOBALS ////////////////////////////////////////////////
HWND      main_window_handle = NULL; // globally track main window
HINSTANCE hinstance_app      = NULL; // globally track hinstance

// directdraw stuff

LPDIRECTDRAW          lpdd         = NULL;   // dd object
LPDIRECTDRAW4         lpdd4        = NULL;   // dd4 object
LPDIRECTDRAWSURFACE4  lpddsprimary = NULL;   // dd primary surface
LPDIRECTDRAWSURFACE4  lpddsback    = NULL;   // dd back surface
LPDIRECTDRAWPALETTE   lpddpal      = NULL;   // a pointer to the created dd palette
LPDIRECTDRAWCLIPPER   lpddclipper  = NULL;   // dd clipper
PALETTEENTRY          palette[256];          // color palette
PALETTEENTRY          save_palette[256];     // used to save palettes
DDSURFACEDESC2        ddsd;                  // a direct draw surface description struct
DDBLTFX               ddbltfx;               // used to fill
DDSCAPS2              ddscaps;               // a direct draw surface capabilities struct
HRESULT               ddrval;                // result back from dd calls
DWORD                 start_clock_count = 0; // used for timing

// these defined the general clipping rectangle
int min_clip_x = 0,                          // clipping rectangle 
    max_clip_x = SCREEN_WIDTH-1,
    min_clip_y = 0,
    max_clip_y = SCREEN_HEIGHT-1;

// these are overwritten globally by DD_Init()
int screen_width  = SCREEN_WIDTH,            // width of screen
    screen_height = SCREEN_HEIGHT,           // height of screen
    screen_bpp    = SCREEN_BPP;              // bits per pixel


char buffer[80];                     // general printing buffer

// FUNCTIONS //////////////////////////////////////////////
LRESULT CALLBACK WindowProc(HWND hwnd, 
						    UINT msg, 
                            WPARAM wparam, 
                            LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT		ps;		// used in WM_PAINT
HDC				hdc;	// handle to a device context
char buffer[80];        // used to print strings

// what is the message 
switch(msg)
	{	
	case WM_CREATE: 
        {
		// do initialization stuff here
        // return success
		return(0);
		} break;
   
	case WM_PAINT: 
		{
		// simply validate the window 
   	    hdc = BeginPaint(hwnd,&ps);	 
        
        // end painting
        EndPaint(hwnd,&ps);

        // return success
		return(0);
   		} break;

	case WM_DESTROY: 
		{

		// kill the application, this sends a WM_QUIT message 
		PostQuitMessage(0);

        // return success
		return(0);
		} break;

	default:break;

    } // end switch

// process any messages that we didn't take care of 
return (DefWindowProc(hwnd, msg, wparam, lparam));

} // end WinProc

///////////////////////////////////////////////////////////

int Game_Main(void *parms = NULL, int num_parms = 0)
{
// this is the main loop of the game, do all your processing
// here

// for now test if user is hitting ESC and send WM_CLOSE
if (KEYDOWN(VK_ESCAPE))
   SendMessage(main_window_handle,WM_CLOSE,0,0);

// return success or failure or your own return code here
return(1);

} // end Game_Main

////////////////////////////////////////////////////////////

int Game_Init(void *parms = NULL, int num_parms = 0)
{
// this is called once after the initial window is created and
// before the main event loop is entered, do all your initialization
// here

// first create base IDirectDraw interface
if (FAILED(DirectDrawCreate(NULL, &lpdd, NULL)))
   {
   // error
   return(0);
   } // end if

// now query for IDirectDraw4
if (FAILED(lpdd->QueryInterface(IID_IDirectDraw4,
                               (LPVOID *)&lpdd4)))
   {
   // error
   return(0);
   } // end if

// set cooperation to full screen
if (FAILED(lpdd4->SetCooperativeLevel(main_window_handle, 
                                      DDSCL_FULLSCREEN | DDSCL_ALLOWMODEX | 
                                      DDSCL_EXCLUSIVE | DDSCL_ALLOWREBOOT)))
   {
   // error
   return(0);
   } // end if

// set display mode to 640x480x8
if (FAILED(lpdd4->SetDisplayMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP,0,0)))
   {
   // error
   return(0);
   } // end if


// return success or failure or your own return code here
return(1);

} // end Game_Init

/////////////////////////////////////////////////////////////

int Game_Shutdown(void *parms = NULL, int num_parms = 0)
{
// this is called after the game is exited and the main event
// loop while is exited, do all you cleanup and shutdown here

// simply blow away the IDirectDraw4 interface
if (lpdd4)
   {
   lpdd4->Release();
   lpdd4 = NULL;
   } // end if

// return success or failure or your own return code here
return(1);

} // end Game_Shutdown

// WINMAIN ////////////////////////////////////////////////
int WINAPI WinMain(	HINSTANCE hinstance,
					HINSTANCE hprevinstance,
					LPSTR lpcmdline,
					int ncmdshow)
{

WNDCLASSEX winclass; // this will hold the class we create
HWND	   hwnd;	 // generic window handle
MSG		   msg;		 // generic message
HDC        hdc;      // graphics device context

// first fill in the window class stucture
winclass.cbSize         = sizeof(WNDCLASSEX);
winclass.style			= CS_DBLCLKS | CS_OWNDC | 
                          CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc	= WindowProc;
winclass.cbClsExtra		= 0;
winclass.cbWndExtra		= 0;
winclass.hInstance		= hinstance;
winclass.hIcon			= LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor		= LoadCursor(NULL, IDC_ARROW); 
winclass.hbrBackground	= (HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName	= NULL;
winclass.lpszClassName	= WINDOW_CLASS_NAME;
winclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);

// save hinstance in global
hinstance_app = hinstance;

// register the window class
if (!RegisterClassEx(&winclass))
	return(0);

// create the window
if (!(hwnd = CreateWindowEx(NULL,                  // extended style
                            WINDOW_CLASS_NAME,     // class
						    "DirectDraw Full-Screen Demo", // title
						    WS_POPUP | WS_VISIBLE,
					 	    0,0,	  // initial x,y
						    SCREEN_WIDTH,SCREEN_HEIGHT,  // initial width, height
						    NULL,	  // handle to parent 
						    NULL,	  // handle to menu
						    hinstance,// instance of this application
						    NULL)))	// extra creation parms
return(0);

// save main window handle
main_window_handle = hwnd;

// initialize game here
Game_Init();

// enter main event loop
while(TRUE)
	{
    // test if there is a message in queue, if so get it
	if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
	   { 
	   // test if this is a quit
       if (msg.message == WM_QUIT)
           break;
	
	   // translate any accelerator keys
	   TranslateMessage(&msg);

	   // send the message to the window proc
	   DispatchMessage(&msg);
	   } // end if
    
       // main game processing goes here
       Game_Main();
       
	} // end while

// closedown game here
Game_Shutdown();

// return to Windows like this
return(msg.wParam);

} // end WinMain

///////////////////////////////////////////////////////////
Ja sitten vielä se virheilmoitus:

Code: Select all

32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated. 

Re: C++ -kysymykset

Posted: Sun Jul 24, 2011 10:39 am
by temu92
Jos ihan lukisit sen virheilmoituksen. Siinä sanotaan että käytät vanhentuneita otsikkotiedostoja jotka ei selvästikään enää pelitä. Lisäksi jos linkkeriin tarvitsee jotain pistää niin varmista, että sieltä löytyy tarvittavat jutut. Jos aiot opetella C++:aa niin älä nyt kaiva esiin jotain 13 vuotta vanhoja koodinpätkiä vaan etsi netistä mieluummin uutta sisältöä joka toimii ilman mittavia muutoksia.

Jos threadeja haluat opetella niin mainostamani SFML tukee niitäkin.

Re: C++ -kysymykset

Posted: Sun Jul 24, 2011 11:04 pm
by Feuer
Putkan C++ - opas ja Hassunhauskakin ovat ihan hyviä oppaita, kunhan jälkimmäisessä muistaa säätää nimiavaruudet kartalle. Dev-C++ - IDEn vaihtaisin itse suoraan Visual C++ ([Express])ksi tai joksikin avokoodin IDEksi, joista joku näitä tunteva osannee nimetä kivan.

Re: C++ -kysymykset

Posted: Sun Jul 24, 2011 11:30 pm
by temu92
Itse olen enemmän käytellyt Code::Blocksia aiemmin, mutta siirryin sittemmin NetBeansiin, koska sitä käytän myös nettisivujen koodaamiseen. On jälkimmäinen kyllä huomattavasti kehittyneempi, mutta kääntäjän asentaminen vaatii vähän enemmän vaivaa kuin C::B:n kanssa. Dev-Cpp on vaan jo niin ikiwanha, hylätty ja buginen, ettei sitä kannata käyttää.

Re: C++ -kysymykset

Posted: Wed Jul 27, 2011 11:22 pm
by naputtelija
Olen opettelemssa DirectX:n ihmeellistä maailmaa. Miksi kääntäjä heittää outoa virhettä jä jäädyttää koneen kun laitan SCREEN_WIDTH:in ja SCREEN_HEIGHT:in muuksi kuin 800:600 (esim. 1600:1200 tai 1920:1200)? Koneeni näyttö on 16:9 HD-näyttö, joten kyllä noita muotoja sen pitäisi tukea.

Code: Select all

// include the basic windows header files and the Direct3D header file
#include <stdAfx.h>
#include <windows.h>
#include <windowsx.h>
#include <d3d9.h>

// definitions
#define SCREEN_WIDTH  800
#define SCREEN_HEIGHT 600

// include the Direct3D Library file
#pragma comment (lib, "d3d9.lib")

// global declarations
LPDIRECT3D9 d3d;    // the pointer to our Direct3D interface
LPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device class

// function prototypes
void initD3D(HWND hWnd);    // sets up and initializes Direct3D
void render_frame(void);    // renders a single frame
void cleanD3D(void);    // closes Direct3D and releases memory

// the WindowProc function prototype
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);


// the entry point for any Windows program
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    HWND hWnd;
    WNDCLASSEX wc;

    ZeroMemory(&wc, sizeof(WNDCLASSEX));

    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  //wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
    wc.lpszClassName = L"WindowClass";

    RegisterClassEx(&wc);

    hWnd = CreateWindowEx(NULL,
                          L"WindowClass",
                          L"Our First Direct3D Program",
                          WS_EX_TOPMOST | WS_POPUP,
                          0, 0,
                          SCREEN_WIDTH, SCREEN_HEIGHT,
                          NULL,
                          NULL,
                          hInstance,
                          NULL);

    ShowWindow(hWnd, nCmdShow);

    // set up and initialize Direct3D
    initD3D(hWnd);

    // enter the main loop:

    MSG msg;

    while(TRUE)
    {
        while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }

        if(msg.message == WM_QUIT)
            break;

        render_frame();
    }

    // clean up DirectX and COM
    cleanD3D();

    return msg.wParam;
}


// this is the main message handler for the program
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_DESTROY:
            {
                PostQuitMessage(0);
                return 0;
            } break;
    }

    return DefWindowProc (hWnd, message, wParam, lParam);
}


// this function initializes and prepares Direct3D for use
void initD3D(HWND hWnd)
{
    d3d = Direct3DCreate9(D3D_SDK_VERSION);    // create the Direct3D interface

    D3DPRESENT_PARAMETERS d3dpp;    // luo rakennne erilaisia laitetietoja varten

    ZeroMemory(&d3dpp, sizeof(d3dpp));           // tyhjennä rakenne käyttöä varten
    d3dpp.Windowed = FALSE;                      // ohjelma koko ruudulle
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // tuhoa vanhat ruudut
    d3dpp.hDeviceWindow = hWnd;                  // aseta d3d:n käyttämä ikkuna
        d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;    // áseta takapuskurin formaatti 32-bittiseksi
	d3dpp.BackBufferWidth = SCREEN_WIDTH;         // aseta takapuskurin leveys
	d3dpp.BackBufferHeight = SCREEN_HEIGHT;       // aseta takapuskurin korkeus


    // create a device class using this information and the info from the d3dpp stuct
    d3d->CreateDevice(D3DADAPTER_DEFAULT,
                      D3DDEVTYPE_HAL,
                      hWnd,
                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                      &d3dpp,
                      &d3ddev);
}


// this is the function used to render a single frame
void render_frame(void)
{
    // clear the window to a deep blue
    d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 40, 100), 1.0f, 0);

    d3ddev->BeginScene();    // begins the 3D scene

    // do 3D rendering on the back buffer here

    d3ddev->EndScene();    // ends the 3D scene

    d3ddev->Present(NULL, NULL, NULL, NULL);   // displays the created frame on the screen
}


// this is the function that cleans up Direct3D and COM
void cleanD3D(void)
{
    d3ddev->Release();    // close and release the 3D device
    d3d->Release();    // close and release Direct3D
}

Re: C++ -kysymykset

Posted: Thu Jul 28, 2011 3:20 pm
by esa94
naputtelija wrote:Olen opettelemssa DirectX:n ihmeellistä maailmaa. Miksi kääntäjä heittää outoa virhettä jä jäädyttää koneen kun laitan SCREEN_WIDTH:in ja SCREEN_HEIGHT:in muuksi kuin 800:600 (esim. 1600:1200 tai 1920:1200)? Koneeni näyttö on 16:9 HD-näyttö, joten kyllä noita muotoja sen pitäisi tukea.
ei se siitä ole kiinni jos kääntäjä herjaa

virheet plox

Re: C++ -kysymykset

Posted: Sat Sep 03, 2011 7:33 pm
by Marsuilija
Näin nopeana kysymyksenä, onko C++:ssa oletuksena mitään käyttöjärjestelmäriippumatonta vastinetta tai vastaavaa toimintoa CB:n Timer()-funktiolle? Ja tarvitseeko vastaavaan toiminnallisuuteen jotakin lisäkirjastoa?

Kiitos.

Re: C++ -kysymykset

Posted: Sat Sep 03, 2011 8:34 pm
by Feuer
SDL:ssä on SDL_GetTicks(), ja SFMLkin kai omaa vastaavan funktion.

Re: C++ -kysymykset

Posted: Sat Sep 03, 2011 9:03 pm
by temu92
SFML:ssä aikaa käsitellään erillisen Clock-luokan kautta. Peli on myös todella helppo saada fps-riippumattomaksi pääluokan (tms) funktiolla GetFrameTime().

Lisää löydät täältä: http://www.sfml-dev.org/tutorials/1.6/window-time.php

Re: C++ -kysymykset

Posted: Sat Sep 03, 2011 9:41 pm
by Marsuilija
Juuh, kiitoksia. Noilla eväillä pääsenkin eteenpäin.

Re: C++ -kysymykset

Posted: Sun Sep 04, 2011 2:43 pm
by Dimple
Standardikirjastossa on myös funktioita, joilla voi käsitellä aikaa. Googlaa "ctime".

Re: C++ -kysymykset

Posted: Sat Oct 08, 2011 11:04 pm
by Feuer
Yksinkertainen, toimiva zippikirjasto (15 funktiokutsua ja 3 luuppia zipin purkamiseksi tiettyyn kansioon ei ole yksinkertainen), jolla saa... Noh, purettua zipin sisällöt tiettyyn kansioon. Onko sellaista?

Re: C++ -kysymykset

Posted: Sun Oct 09, 2011 11:53 am
by KilledWhale
http://www.winimage.com/zLibDll/minizip.html ainakin pitäisi olla helppo. En ole kokeillut itse, joten mene ja tiedä.

Re: C++ -kysymykset

Posted: Sun Oct 09, 2011 1:02 pm
by Latexi95

Re: C++ -kysymykset

Posted: Sun Oct 09, 2011 5:08 pm
by Feuer
Kiitän :P