na razie mam tyle i działa:
jednak zamiast trego:
actual_bitmap11=new cdata1111klasa[1];/////////////////////////
actual_bitmap11[0].cdata1111klasa::cdata1111klasa(5,5);////////////////
bmp11.loadBMP11(&headline11, &actual_bitmap11[0], "sample3.bmp");
chcę tak:
actual_bitmap11=new cdata1111klasa;/////////////////////////
actual_bitmap11->cdata1111klasa::cdata1111klasa(5,5);////////////////
bmp11.loadBMP11(&headline11, &actual_bitmap11, "sample3.bmp");
// 12d.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <cstdio>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <iostream>
#include <windows.h>
#include <Shellapi.h>
#include <fstream>d
#include <time.h>
#include <sys/timeb.h> // pomiar czasu
#include <tchar.h>
//using namespace std;
#define BITMAP_width11 0
#define BITMAP_height11 0
#define SLEEP 25
//#define LIMIT 64
//#define LIMIT 16
int szerokosc;
int wysokosc;
#pragma pack(push, 1) // zeby nie dodawal sobie niepotrzebnych bitow (rozmiar nie podzielny przez 4) //
class Klasa {
private:
double *tablica;
int size;
int size2;
public:
Klasa(int SIZEX,int SIZEY,double v1):size(SIZEX),size2(SIZEY)
{ //int SIZEY=SIZEX;
//double **tablica = new double*[size];
double **tablica = new double*[SIZEX*sizeof(int*)];
for (int x = 0; x < SIZEX; x++) {
//tablica[x] = new double[size2];
tablica[x] = new double[SIZEY*sizeof(int)];
}
for (int i=0; i < SIZEX; i++)
{
for (int j=0; j < SIZEY; j++)
{
tablica[i][j] = v1;
std::cout <<" "<<SIZEX<<" "<<SIZEY<<" tablica["<<i<<"]["<<j<<"] "<<tablica[i][j]<< "\n";
system("pause");
}
}
}
};
///////////////////
class cPixel11klasa
{
public:
char red11;
char green11;
char blue11;
};
class cdata1111klasa
{
public:
cPixel11klasa **pixel;
int x, y;
cdata1111klasa(){};
cdata1111klasa(int x, int y);
~cdata1111klasa();
};
cdata1111klasa::cdata1111klasa(int x, int y)
{
this->x = x;
this->y = y;
pixel = new cPixel11klasa*[y];
for ( int i = 0; i < y; ++i )
{
pixel[i] = new cPixel11klasa[x];
}
}
//int getx() {return x;}
//int gety() {return y;}
cdata1111klasa::~cdata1111klasa()
{
this->y = y;
for(int i = 0; i < y; i++)
delete[] pixel[i];
delete[] pixel;
};
class cheadline11BMP11klasa
{
public:
char znaki11[2];
long int rozmiar_plikui11;
short int liczba_int111;
short int liczba_int211;
long int poczatek_danych11;
long dlugosc;
long x1;
long y1;
short warstwy11;
short bity11;
long kompresja11;
long rozmiar_rysunku11;
long rozdz_poz11;
long rozdz_pion11;
long kolory11;
long reszta11;
};
class cBMP11klasa
{
public:
void loadBMP11(cheadline11BMP11klasa*, cdata1111klasa*, std::string);
} bmp11;
#pragma pack(pop)
//////////////////////
cdata1111klasa* data11;//////////////
cdata1111klasa* actual_bitmap11;/////////////
///////////////////////
//int width11;
//int height11;
int *table11;
POINT po1;
int width11;
int height11;
FILE *control_file11;
///////////////////////
void cBMP11klasa::loadBMP11(cheadline11BMP11klasa* headline11, cdata1111klasa* data11, std::string path)
{
FILE *bmpfile;
if ( (bmpfile = fopen (path.c_str(), "rb")) == NULL )
{
std::cout << "nieprawidłowa sciezka" << std::endl;
return;
}
std::cout << "1odnaleziono plik" << std::endl;
//system("pause");
fread (headline11, sizeof(cheadline11BMP11klasa), 1, bmpfile);
std::cout << "2odnaleziono plik" << std::endl;
//system("pause");
// ladowanie danych //
fseek (bmpfile, headline11->poczatek_danych11, 0);
std::cout << "3odnaleziono plik" << std::endl;
//system("pause");
for ( int i = 0; i < 5; ++i )
{
std::cout << "i=" <<i<< std::endl;
//system("pause");
for ( int j = 0; j < 5; ++j )
{
std::cout << "j przed =" <<j<< std::endl;
//system("pause");
data11->pixel[j][i].blue11 = fgetc(bmpfile);
data11->pixel[j][i].green11 = fgetc(bmpfile);
data11->pixel[j][i].red11 = fgetc(bmpfile);
std::cout << "j po =" <<j<< std::endl;
//system("pause");
std::cout <<"pixel["<<j<<"]["<<i<<"] "<<data11->pixel[j][i].blue11<<" "<<data11->pixel[j][i].green11<<" "<<data11->pixel[j][i].red11<< std::endl;
}
std::cout <<std::endl;
//if ( headline11->x1 % 2 != 0 )
// fgetc(bmpfile); // pobieranie wartosci 0 niepotrzebnej (w plikach bmp po kazdym wierszu jest dodawana wartosc char zerowa)
}
fclose (bmpfile);
}
void load_templates11(cheadline11BMP11klasa* headline11)
{
bmp11.loadBMP11(headline11, &data11[0], "c://1/szablony/0.bmp");
bmp11.loadBMP11(headline11, &data11[1], "c://1/szablony/1.bmp");
bmp11.loadBMP11(headline11, &data11[2], "c://1/szablony/102.bmp");
bmp11.loadBMP11(headline11, &data11[3], "c://1/szablony/103.bmp");
bmp11.loadBMP11(headline11, &data11[4], "c://1/szablony/104.bmp");
bmp11.loadBMP11(headline11, &data11[5], "c://1/szablony/105.bmp");
bmp11.loadBMP11(headline11, &data11[6], "c://1/szablony/106.bmp");
bmp11.loadBMP11(headline11, &data11[7], "c://1/szablony/107.bmp");
bmp11.loadBMP11(headline11, &data11[8], "c://1/szablony/108.bmp");
bmp11.loadBMP11(headline11, &data11[9], "c://1/szablony/109.bmp");
bmp11.loadBMP11(headline11, &data11[10], "c://1/szablony/110.bmp");
bmp11.loadBMP11(headline11, &data11[11], "c://1/szablony/111.bmp");
bmp11.loadBMP11(headline11, &data11[12], "c://1/szablony/112.bmp");
bmp11.loadBMP11(headline11, &data11[13], "c://1/szablony/113.bmp");
bmp11.loadBMP11(headline11, &data11[14], "c://1/szablony/114.bmp");
bmp11.loadBMP11(headline11, &data11[15], "c://1/szablony/202.bmp");
bmp11.loadBMP11(headline11, &data11[16], "c://1/szablony/203.bmp");
bmp11.loadBMP11(headline11, &data11[17], "c://1/szablony/204.bmp");
bmp11.loadBMP11(headline11, &data11[18], "c://1/szablony/205.bmp");
bmp11.loadBMP11(headline11, &data11[19], "c://1/szablony/206.bmp");
bmp11.loadBMP11(headline11, &data11[20], "c://1/szablony/207.bmp");
bmp11.loadBMP11(headline11, &data11[21], "c://1/szablony/208.bmp");
bmp11.loadBMP11(headline11, &data11[22], "c://1/szablony/209.bmp");
bmp11.loadBMP11(headline11, &data11[23], "c://1/szablony/210.bmp");
bmp11.loadBMP11(headline11, &data11[24], "c://1/szablony/211.bmp");
bmp11.loadBMP11(headline11, &data11[25], "c://1/szablony/212.bmp");
bmp11.loadBMP11(headline11, &data11[26], "c://1/szablony/213.bmp");
bmp11.loadBMP11(headline11, &data11[27], "c://1/szablony/214.bmp");
bmp11.loadBMP11(headline11, &data11[28], "c://1/szablony/302.bmp");
bmp11.loadBMP11(headline11, &data11[29], "c://1/szablony/303.bmp");
bmp11.loadBMP11(headline11, &data11[30], "c://1/szablony/304.bmp");
bmp11.loadBMP11(headline11, &data11[31], "c://1/szablony/305.bmp");
bmp11.loadBMP11(headline11, &data11[32], "c://1/szablony/306.bmp");
bmp11.loadBMP11(headline11, &data11[33], "c://1/szablony/307.bmp");
bmp11.loadBMP11(headline11, &data11[34], "c://1/szablony/308.bmp");
bmp11.loadBMP11(headline11, &data11[35], "c://1/szablony/309.bmp");
bmp11.loadBMP11(headline11, &data11[36], "c://1/szablony/310.bmp");
bmp11.loadBMP11(headline11, &data11[37], "c://1/szablony/311.bmp");
bmp11.loadBMP11(headline11, &data11[38], "c://1/szablony/312.bmp");
bmp11.loadBMP11(headline11, &data11[39], "c://1/szablony/313.bmp");
bmp11.loadBMP11(headline11, &data11[40], "c://1/szablony/314.bmp");
bmp11.loadBMP11(headline11, &data11[41], "c://1/szablony/402.bmp");
bmp11.loadBMP11(headline11, &data11[42], "c://1/szablony/403.bmp");
bmp11.loadBMP11(headline11, &data11[43], "c://1/szablony/404.bmp");
bmp11.loadBMP11(headline11, &data11[44], "c://1/szablony/405.bmp");
bmp11.loadBMP11(headline11, &data11[45], "c://1/szablony/406.bmp");
bmp11.loadBMP11(headline11, &data11[46], "c://1/szablony/407.bmp");
bmp11.loadBMP11(headline11, &data11[47], "c://1/szablony/408.bmp");
bmp11.loadBMP11(headline11, &data11[48], "c://1/szablony/409.bmp");
bmp11.loadBMP11(headline11, &data11[49], "c://1/szablony/410.bmp");
bmp11.loadBMP11(headline11, &data11[50], "c://1/szablony/411.bmp");
bmp11.loadBMP11(headline11, &data11[51], "c://1/szablony/412.bmp");
bmp11.loadBMP11(headline11, &data11[52], "c://1/szablony/413.bmp");
bmp11.loadBMP11(headline11, &data11[53], "c://1/szablony/414.bmp");
bmp11.loadBMP11(headline11, &data11[54], "c://1/szablony/3.bmp");
bmp11.loadBMP11(headline11, &data11[55], "c://1/szablony/4.bmp");
}
void create_new_bitmap111(BITMAPINFO* bi1, HWND window)//
{
HANDLE hf1;
HDC sdc1 = GetWindowDC(window);
BYTE *bits1;
HBITMAP hbm1 = CreateDIBSection(sdc1,bi1,DIB_RGB_COLORS,(void**)&bits1,NULL,0);
HDC hdc1 = CreateCompatibleDC(sdc1);
HGDIOBJ hold = SelectObject(hdc1,hbm1);
//StretchBlt(hdc1,0,0,bw,bh,sdc1,0,0,w1,h1,SRCCOPY);
//StretchBlt(hdc1,0,0,bw,bh,sdc1,BITMAP_width11,BITMAP_height11,w1,h1,SRCCOPY);
BitBlt(hdc1,-422,-275,1600,1600,sdc1,BITMAP_width11,BITMAP_height11,SRCCOPY);
SelectObject(hdc1,hold);
DeleteDC(hdc1);
ReleaseDC(0,sdc1);
hf1=CreateFile(_T("sample3.bmp"),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
BITMAPFILEHEADER bfh1;
ZeroMemory(&bfh1,sizeof(bfh1));
bfh1.bfType=0x4d42;
bfh1.bfOffBits=sizeof(BITMAPFILEHEADER)+bi1->bmiHeader.biSize;
bfh1.bfSize=bfh1.bfOffBits+bi1->bmiHeader.biSizeImage;
bfh1.bfReserved1=0;
bfh1.bfReserved2=0;
DWORD writ;
WriteFile(hf1,& bfh1, sizeof(bfh1), &writ, NULL);
WriteFile(hf1, &bi1->bmiHeader, sizeof(bi1->bmiHeader), &writ, NULL);
WriteFile(hf1, bits1, bi1->bmiHeader.biSizeImage, &writ, NULL);
CloseHandle(hf1);
DeleteObject(hbm1);
}
////////////////////////////////////////////////////////////////
int find_bitmap11()
{
bool _break = false;
int counter = 0;
int actual_number = -1;
for ( int i = 0; i < 3; ++i )
{
for ( int j = 0; j < wysokosc; ++j )
{
for ( int k = 0; k < szerokosc; ++k )
{
if ( actual_bitmap11->pixel[k][j].blue11 != data11[i].pixel[k][j].blue11 || actual_bitmap11->pixel[k][j].green11 != data11[i].pixel[k][j].green11 || actual_bitmap11->pixel[k][j].red11 != data11[i].pixel[k][j].red11 )
{
//std::cout << "Bitmapy sa nierowne" << std::endl;
_break = true;
counter = 0;
break;
}
else
{
++counter;
}
if ( counter == szerokosc*wysokosc )
{
std::cout << "Bitmapy sa sobie rowne" << std::endl;
actual_number = i;
std::cout << actual_number << " " << std::endl;
_break = true;
counter = 0;
break;
}
}
if ( _break == true )
{
_break = false;
break;
}
}
if ( actual_number != -1 )
break;
}
return actual_number;
}
//////////////////////////////////////////////////////////////
int _tmain(int argc, _TCHAR* argv[])
{
srand((int) time(0));
szerokosc=5;
wysokosc=5;
data11=new cdata1111klasa[56];//////////////////////
for(int i=0;i<56;i++)
{
data11[i].cdata1111klasa::cdata1111klasa(5,5);//////////////
}
//actual_bitmap11=new cdata1111klasa;/////////////////////////
//actual_bitmap11->cdata1111klasa::cdata1111klasa(5,5);////////////////
actual_bitmap11=new cdata1111klasa[1];/////////////////////////
actual_bitmap11[0].cdata1111klasa::cdata1111klasa(5,5);////////////////
system("pause");
SetCursorPos(width11+200, height11+200);
mouse_event(MOUSEEVENTF_LEFTDOWN,0 ,0,0,0);
Sleep(100);
cheadline11BMP11klasa headline11;
int x1 = szerokosc;//wys
int y1 = wysokosc;//szer
int _y1 = 0;
headline11.znaki11[0] = 'B';
headline11.znaki11[1] = 'M';
headline11.rozmiar_plikui11 = sizeof(cPixel11klasa)*x1*y1 + sizeof(cheadline11BMP11klasa)+_y1;
headline11.liczba_int111 = 0;
headline11.liczba_int211 = 0;
headline11.poczatek_danych11 = 54;
headline11.dlugosc = 40;
headline11.x1 = x1;
headline11.y1 = y1;
headline11.warstwy11 = 1;
headline11.bity11 = 24;
headline11.kompresja11 = 0;
headline11.rozmiar_rysunku11 = sizeof(cPixel11klasa)*x1*y1 + _y1;
headline11.rozdz_poz11 = 0;
headline11.rozdz_pion11 = 0;
headline11.kolory11 = 0;
headline11.reszta11 = 0;
load_templates11(&headline11);
system("pause");
/////////////////////////////////////
int w11 = szerokosc, h11 = wysokosc;
int bw1 = szerokosc, bh1 = wysokosc;
int bw41=(bw1+3)&0xFFFFFFFC;
//HANDLE hf;
BITMAPINFO bi1;
bi1.bmiHeader.biBitCount=24;
bi1.bmiHeader.biClrImportant=0;
bi1.bmiHeader.biClrUsed=0;
bi1.bmiHeader.biCompression=BI_RGB;
bi1.bmiHeader.biHeight=bh1;
bi1.bmiHeader.biPlanes=1;
bi1.bmiHeader.biSize=40;
bi1.bmiHeader.biSizeImage=bw41*bh1*3;
//bi1.bmiHeader.biSizeImage=bw*bh*3;
bi1.bmiHeader.biWidth=bw1;
bi1.bmiHeader.biXPelsPerMeter=3780;
bi1.bmiHeader.biYPelsPerMeter=3780;
bi1.bmiColors[0].rgbBlue=0;
bi1.bmiColors[0].rgbGreen=0;
bi1.bmiColors[0].rgbRed=0;
bi1.bmiColors[0].rgbReserved=0;
Sleep(1000);
po1.x = BITMAP_width11;
po1.y = BITMAP_height11;
POINT p1;
HWND he1,hf1;
GetCursorPos(&p1);
//he = WindowFromPoint(p1);
he1=GetDesktopWindow();
hf1 = WindowFromPoint(po1);
//ClientToScreen(he,&po1);
width11 = po1.x;
height11 = po1.y;
create_new_bitmap111(&bi1,he1);
bmp11.loadBMP11(&headline11, &actual_bitmap11[0], "sample3.bmp");
int actual_number1 = find_bitmap11();
if ( actual_number1 == -1 )
{
std::cout << "nieprawidlowy uchwyt okna, ustaw kursor na wlasciwe okno" << std::endl;
system("pause");
return 0;
}
system("pause");
/////////////////////////////////////
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
data11[0].pixel[j][i].red11=rand()%33+100;
data11[0].pixel[j][i].green11=rand()%33+100;
data11[0].pixel[j][i].blue11=rand()%33+100;
std::cout <<"b[0]->pixel["<<j<<"]["<<i<<"].red11"<<" "<<data11[0].pixel[i][j].red11<<" b[0]->pixel["<<j<<"]["<<i<<"].green11 "<<data11[0].pixel[i][j].green11<<" b.pixel["<<j<<"]["<<i<<"].blue11 "<<data11[0].pixel[i][j].blue11<< "\n";
}
}
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
data11[1].pixel[j][i].red11=rand()%33+100;
data11[1].pixel[j][i].green11=rand()%33+100;
data11[1].pixel[j][i].blue11=rand()%33+100;
std::cout <<"b[1]->pixel["<<j<<"]["<<i<<"].red11"<<" "<<data11[1].pixel[i][j].red11<<" b[1]->pixel["<<j<<"]["<<i<<"].green11 "<<data11[1].pixel[i][j].green11<<" b.pixel["<<j<<"]["<<i<<"].blue11 "<<data11[1].pixel[i][j].blue11<< "\n";
}
}
/*
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
actual_bitmap11->pixel[j][i].red11=rand()%33+100;
actual_bitmap11->pixel[j][i].green11=rand()%33+100;
actual_bitmap11->pixel[j][i].blue11=rand()%33+100;
std::cout <<"b[1]->pixel["<<j<<"]["<<i<<"].red11"<<" "<<actual_bitmap11->pixel[i][j].red11<<" b[1]->pixel["<<j<<"]["<<i<<"].green11 "<<actual_bitmap11->pixel[i][j].green11<<" b.pixel["<<j<<"]["<<i<<"].blue11 "<<actual_bitmap11->pixel[i][j].blue11<< "\n";
}
}
*/
Klasa a(2,3,7.9);
system("pause");
return 0;
}