#include <windows.h>
#include <iostream>
#include <sys/types.h>
#include <sys/stat.h>

using namespace std;

unsigned long iPercent = 0;
//char gpcFilename[261];

class MyClass {
public:
	int XXX() { return 5; }
};

MyClass *pTest;
MyClass *pExtra;

DWORD WINAPI ThreadFunc(void *pParam) {
	//MyClass *pcFilename = (MyClass*)pParam;
	cout << pTest->XXX() << endl;
	pExtra = new MyClass;

	Sleep(5000);
	//struct stat buf;
	//unsigned long ulCount = 0;
	//unsigned char pubBuf[512];
	//stat(pcFilename, &buf);

	//FILE *pfIn = fopen(pcFilename, "rb");
	//cout << "Thread B says: Size=" << buf.st_size << endl;
	//while(ulCount != buf.st_size) {
	//	ulCount += fread(pubBuf, sizeof(unsigned char), 512, pfIn);
	//	iPercent = ((ulCount*10) / buf.st_size) * 100;
	//}
	//fclose(pfIn);

	delete pExtra;
    return 0; // Exit from thread
}

void main(int argc, char **argv) {
	unsigned long lThreadId;
	HANDLE hThread;
	pTest = new MyClass;
	hThread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, &lThreadId);

	if(hThread == NULL) {
		cout << "Could not create thread\n";
		return;
	}

	// Thread created successfully, wait for completion
	//while(iPercent < 1000) {
	//	system("cls");
	//	cout << ((float)iPercent / 10.0f) << "%" << endl;
	//	Sleep(0); // Give up rest of this thread's timeslice
	//}

	Sleep(1000);
	cout << pExtra->XXX() << endl;
	Sleep(4000); // Give B a chance to finish

	CloseHandle(hThread);
	delete pTest;
}
