AssSoft Temat założony przez niniejszego użytkownika |
[WinApi] Niekonwencjonalny sposób zapisu obrazu » 2014-01-09 14:11:47 Stworzyłem prosty brudnopis. Chciałem umożliwić zapisywanie do bitmapy, uznałem jednak że mogę spróbować czegoś innego - zapisywaniu do pliku tekstowego. case ID_bp1: { fstream bitzap; bitzap.open( "C:/programs/SimpleNote/save5.txt", ios::out ); hdc = GetDC( hwnd ); i = 0; Xpix = 1052; Ypix = 70; int Xpl = 0; while( i < 400000 ) { pix = GetPixel( hdc, Xpix, Ypix ); if( pix == blackpix ) { bitzap << "0" << endl; } if( pix == whitepix ) { bitzap << "1" << endl; } if( pix == redpix ) { bitzap << "2" << endl; } if( pix == greenpix ) { bitzap << "3" << endl; } if( pix == bluepix ) { bitzap << "4" << endl; } if( Xpix == 1552 ) { Ypix++; Xpix = 1052; } i++; Xpix++; } } break; Co dziwne wszystko poprawnie się zapisuje. Problem pojawia się gdy próbuję odtworzyć zapisany obraz. case ID_bp2: { fstream bitwczyt; bitwczyt.open( "C:/programs/SimpleNote/save5.txt", ios::in ); hdc = GetDC( hwnd ); i = 0; Xpix = 1052; Ypix = 70; int pixcol = 0; while( i < 400000 ) { bitwczyt >> pixcol; if( pixcol == 0 ) { SetPixel( hdc, Xpix, Ypix, blackpix ); } if( pixcol == 1 ) { SetPixel( hdc, Xpix, Ypix, whitepix ); } if( pixcol == 2 ) { SetPixel( hdc, Xpix, Ypix, redpix ); } if( pixcol == 3 ) { SetPixel( hdc, Xpix, Ypix, greenpix ); } if( pixcol == 4 ) { SetPixel( hdc, Xpix, Ypix, bluepix ); } if( Xpix == 1552 ) { Ypix++; Xpix = 1052; } Xpix++; i++; } } break; Odtworzony obraz jest... krzywy. Dalej umieszczam resztę programu. Z początku miał to być zwykły notatnik na 300 linii kodu głównie dla tego jest tak nieuporządkowany. #include <iostream> #include <windows.h> #include <fstream> #include <ctime> #include <cstdlib> #define ID_p1 1 #define ID_p2 2 #define ID_p3 3 #define ID_p4 4 #define ID_p5 5 #define ID_p6 6 #define ID_p7 7 #define ID_p8 8 #define ID_cp1 101 #define ID_cp2 102 #define ID_cp3 103 #define ID_cp4 104 #define ID_cp5 105 #define ID_cp6 106 #define ID_kp1 201 #define ID_kp2 202 #define ID_kp3 203 #define ID_kp4 204 #define ID_rp1 301 #define ID_rp2 302 #define ID_rp3 303 #define ID_rp4 304 #define ID_bp1 401 #define ID_bp2 402
struct RegElipse { int Xpoz; int Ypoz; int Roz; int setFIG; HPEN pen; HBRUSH brush; }; struct RegRectangle { int Xpoz; int Ypoz; int Roz; int setFIG; HPEN pen; HBRUSH brush; }; struct RegPaint { int Xpoz; int Ypoz; int Roz; HPEN pen; HBRUSH brush; }; DWORD setE = 0; DWORD ilE = 0; DWORD setR = 0; DWORD ilR = 0; DWORD setP = 0; DWORD ilP = 0;
RegElipse RE[ 10000 ]; RegRectangle RR[ 10000 ]; RegPaint RP[ 100000 ];
using namespace std; COLORREF redpix = RGB( 255, 0, 0 ); COLORREF bluepix = RGB( 0, 0, 255 ); COLORREF greenpix = RGB( 0, 255, 0 ); COLORREF blackpix = RGB( 0, 0, 0 ); COLORREF whitepix = RGB( 255, 255, 255 ); COLORREF pix; int i; int Xpix; int Ypix; BITMAP bmInfo; WIN32_FIND_DATA File_Data; HWND hText; MSG Komunikat; DWORD dlugosc; LPSTR Bufor; LPSTR Bufor2; LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ); HWND hp1; HWND hp2; HWND hp3; HWND hp4; HWND hp5; HWND hp6; HWND hp7; HWND hp8; HWND hcp1; HWND hcp2; HWND hcp3; HWND hcp4; HWND hcp5; HWND hcp6; HWND hkp1; HWND hkp2; HWND hkp3; HWND hkp4; HWND hrp1; HWND hrp2; HWND hrp3; HWND hrp4; HWND hbp1; HWND hbp2; HWND hram; HWND hText2; HBITMAP hmbObraz; HDC hdcNowy; HDC hdc; int odp; string zaw; bool f1 = 0; int setFIG = 0; int setCOL = 0; int setROZ = 0; bool Rys = false; bool Przyc = false; int roz = 20; fstream zap; DWORD dwRozmiar, dwPrzeczyt; HANDLE hPlik; HPEN standardP = CreatePen( PS_SOLID, 1, RGB( 0, 0, 0 ) ); HBRUSH standardB = CreateSolidBrush( RGB( 0, 0, 0 ) ); HPEN redP = CreatePen( PS_SOLID, 1, RGB( 255, 0, 0 ) ); HBRUSH redB = CreateSolidBrush( RGB( 255, 0, 0 ) ); HPEN greenP = CreatePen( PS_SOLID, 1, RGB( 0, 255, 0 ) ); HBRUSH greenB = CreateSolidBrush( RGB( 0, 255, 0 ) ); HPEN blueP = CreatePen( PS_SOLID, 1, RGB( 0, 0, 255 ) ); HBRUSH blueB = CreateSolidBrush( RGB( 0, 0, 255 ) ); HBRUSH whiteB = CreateSolidBrush( RGB( 255, 255, 255 ) ); HPEN oldP; HBRUSH oldB; int waitsec( float time ) { clock_t czasS; clock_t stoper = time * CLOCKS_PER_SEC; czasS = clock(); while( clock() - czasS < stoper ) ; return 0; }
int waitmsec( float time ) { time = time / 1000; clock_t czasS; clock_t stoper = time * CLOCKS_PER_SEC; czasS = clock(); while( clock() - czasS < stoper ) ; return 0; }
int waitmin( float time ) { time = time * 60; clock_t czasS; clock_t stoper = time * CLOCKS_PER_SEC; czasS = clock(); while( clock() - czasS < stoper ) ; return 0; } void start() { if( FindFirstFile( TEXT( "C:/programs" ), & File_Data ) == INVALID_HANDLE_VALUE ) { CreateDirectoryA( "C:/programs", NULL ); } if( FindFirstFile( TEXT( "C:/programs/SimpleNote" ), & File_Data ) == INVALID_HANDLE_VALUE ) { CreateDirectoryA( "C:/programs/SimpleNote", NULL ); } if( FindFirstFile( TEXT( "C:/programs/SimpleNote/save1.txt" ), & File_Data ) == INVALID_HANDLE_VALUE ) { zap.open( "C:/programs/SimpleNote/save1.txt", ios::out ); zap << ""; zap.close(); } if( FindFirstFile( TEXT( "C:/programs/SimpleNote/save2.txt" ), & File_Data ) == INVALID_HANDLE_VALUE ) { zap.open( "C:/programs/SimpleNote/save2.txt", ios::out ); zap << ""; zap.close(); } if( FindFirstFile( TEXT( "C:/programs/SimpleNote/save3.txt" ), & File_Data ) == INVALID_HANDLE_VALUE ) { zap.open( "C:/programs/SimpleNote/save3.txt", ios::out ); zap << ""; zap.close(); } if( FindFirstFile( TEXT( "C:/programs/SimpleNote/save4.txt" ), & File_Data ) == INVALID_HANDLE_VALUE ) { zap.open( "C:/programs/SimpleNote/save4.txt", ios::out ); zap << ""; zap.close(); } if( FindFirstFile( TEXT( "C:/programs/SimpleNote/save5.txt" ), & File_Data ) == INVALID_HANDLE_VALUE ) { zap.open( "C:/programs/SimpleNote/save5.txt", ios::out ); zap << ""; zap.close(); } }
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASSEX wc; wc.cbSize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); wc.lpszMenuName = NULL; wc.lpszClassName = TEXT( "Klasa Okienka" ); wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...", MB_ICONEXCLAMATION | MB_OK ); return 1; } HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, TEXT( "Klasa Okienka" ), "SimpleNote", WS_OVERLAPPEDWINDOW | WS_MAXIMIZE | WS_VSCROLL | WS_HSCROLL, CW_USEDEFAULT, CW_USEDEFAULT, 240, 120, NULL, NULL, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION ); return 1; } ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 1, 70, 1050, 800, hwnd, NULL, hInstance, NULL ); hText2 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 810, 36, 200, 30, hwnd, NULL, hInstance, NULL ); SetWindowText( hText2, "podaj ścieżke do pliku" ); hram = CreateWindowEx( 0, "BUTTON", "brudnopis", WS_CHILD | BS_GROUPBOX | WS_VISIBLE, 1052, 70, 500, 800, hwnd, NULL, hInstance, NULL ); hp1 = CreateWindowEx( 0, "BUTTON", "Zapisz w slot1", WS_CHILD | WS_VISIBLE, 5, 5, 150, 30, hwnd,( HMENU ) ID_p1, hInstance, NULL ); hp2 = CreateWindowEx( 0, "BUTTON", "Zapisz w slot2", WS_CHILD | WS_VISIBLE, 156, 5, 150, 30, hwnd,( HMENU ) ID_p2, hInstance, NULL ); hp3 = CreateWindowEx( 0, "BUTTON", "Zapisz w slot3", WS_CHILD | WS_VISIBLE, 307, 5, 150, 30, hwnd,( HMENU ) ID_p3, hInstance, NULL ); hp4 = CreateWindowEx( 0, "BUTTON", "Zapisz w slot4", WS_CHILD | WS_VISIBLE, 458, 5, 150, 30, hwnd,( HMENU ) ID_p4, hInstance, NULL ); hp5 = CreateWindowEx( 0, "BUTTON", "Wczytaj slot1", WS_CHILD | WS_VISIBLE, 5, 36, 150, 30, hwnd,( HMENU ) ID_p5, hInstance, NULL ); hp6 = CreateWindowEx( 0, "BUTTON", "Wczytaj slot2", WS_CHILD | WS_VISIBLE, 156, 36, 150, 30, hwnd,( HMENU ) ID_p6, hInstance, NULL ); hp7 = CreateWindowEx( 0, "BUTTON", "Wczytaj slot3", WS_CHILD | WS_VISIBLE, 307, 36, 150, 30, hwnd,( HMENU ) ID_p7, hInstance, NULL ); hp8 = CreateWindowEx( 0, "BUTTON", "Wczytaj slot4", WS_CHILD | WS_VISIBLE, 458, 36, 150, 30, hwnd,( HMENU ) ID_p8, hInstance, NULL ); hcp1 = CreateWindowEx( 0, "BUTTON", "zapisz w...", WS_CHILD | WS_VISIBLE, 609, 5, 200, 30, hwnd,( HMENU ) ID_cp1, hInstance, NULL ); hcp2 = CreateWindowEx( 0, "BUTTON", "wczytaj z...", WS_CHILD | WS_VISIBLE, 609, 36, 200, 30, hwnd,( HMENU ) ID_cp2, hInstance, NULL ); hcp3 = CreateWindowEx( 0, "BUTTON", "Usuń plik", WS_CHILD | WS_VISIBLE, 810, 5, 200, 30, hwnd,( HMENU ) ID_cp3, hInstance, NULL ); hcp4 = CreateWindowEx( 0, "BUTTON", "Rysuj elipse", WS_CHILD | WS_VISIBLE, 1011, 5, 150, 30, hwnd,( HMENU ) ID_cp4, hInstance, NULL ); hcp5 = CreateWindowEx( 0, "BUTTON", "Rysuj prostokąt", WS_CHILD | WS_VISIBLE, 1162, 5, 150, 30, hwnd,( HMENU ) ID_cp5, hInstance, NULL ); hcp6 = CreateWindowEx( 0, "BUTTON", "Rysik", WS_CHILD | WS_VISIBLE, 1313, 5, 75, 30, hwnd,( HMENU ) ID_cp6, hInstance, NULL ); hkp1 = CreateWindowEx( 0, "BUTTON", "czer.", WS_CHILD | WS_VISIBLE, 1011, 36, 75, 30, hwnd,( HMENU ) ID_kp1, hInstance, NULL ); hkp2 = CreateWindowEx( 0, "BUTTON", "ziel.", WS_CHILD | WS_VISIBLE, 1086, 36, 75, 30, hwnd,( HMENU ) ID_kp2, hInstance, NULL ); hkp3 = CreateWindowEx( 0, "BUTTON", "nieb.", WS_CHILD | WS_VISIBLE, 1161, 36, 75, 30, hwnd,( HMENU ) ID_kp3, hInstance, NULL ); hkp4 = CreateWindowEx( 0, "BUTTON", "czar.", WS_CHILD | WS_VISIBLE, 1236, 36, 75, 30, hwnd,( HMENU ) ID_kp4, hInstance, NULL ); hrp1 = CreateWindowEx( 0, "BUTTON", "mał.", WS_CHILD | WS_VISIBLE, 1312, 36, 75, 30, hwnd,( HMENU ) ID_rp1, hInstance, NULL ); hrp2 = CreateWindowEx( 0, "BUTTON", "śred.", WS_CHILD | WS_VISIBLE, 1387, 36, 75, 30, hwnd,( HMENU ) ID_rp2, hInstance, NULL ); hrp3 = CreateWindowEx( 0, "BUTTON", "duży.", WS_CHILD | WS_VISIBLE, 1463, 36, 75, 30, hwnd,( HMENU ) ID_rp3, hInstance, NULL ); hrp4 = CreateWindowEx( 0, "BUTTON", "bar. duży", WS_CHILD | WS_VISIBLE, 1538, 36, 75, 30, hwnd,( HMENU ) ID_rp4, hInstance, NULL ); hbp1 = CreateWindowEx( 0, "BUTTON", "Zap. bitmapę", WS_CHILD | WS_VISIBLE, 1388, 5, 100, 30, hwnd,( HMENU ) ID_bp1, hInstance, NULL ); hbp2 = CreateWindowEx( 0, "BUTTON", "wczyt. bitmapę", WS_CHILD | WS_VISIBLE, 1489, 5, 100, 30, hwnd,( HMENU ) ID_bp2, hInstance, NULL ); hdc = GetDC( hwnd ); hmbObraz =( HBITMAP ) LoadImage( NULL, "C:/programs/SimpleNote/DATA/Snote_mainimage.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); hdcNowy = CreateCompatibleDC( hdc ); SelectObject( hdcNowy, hmbObraz ); GetObject( hmbObraz, sizeof( bmInfo ), & bmInfo ); hdc = GetDC( hwnd ); BitBlt( hdc, 1, 870, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCCOPY ); ReleaseDC( hwnd, hdc ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; case WM_PAINT: paint:; PAINTSTRUCT ps; hdc = BeginPaint( hwnd, & ps ); hmbObraz =( HBITMAP ) LoadImage( NULL, "C:/programs/SimpleNote/DATA/Snote_mainimage.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE ); hdcNowy = CreateCompatibleDC( hdc ); SelectObject( hdcNowy, hmbObraz ); GetObject( hmbObraz, sizeof( bmInfo ), & bmInfo ); BitBlt( hdc, 1, 871, bmInfo.bmWidth, bmInfo.bmHeight, hdcNowy, 0, 0, SRCCOPY ); ilE = 0; while( ilE <= setE ) { oldP =( HPEN ) SelectObject( hdc, RE[ ilE ].pen ); if( RE[ ilE ].setFIG == 1 ) { oldB =( HBRUSH ) SelectObject( hdc, RE[ ilE ].brush ); } else { oldB =( HBRUSH ) SelectObject( hdc, whiteB ); } Ellipse( hdc, RE[ ilE ].Xpoz - 3, RE[ ilE ].Ypoz - 3, RE[ ilE ].Xpoz + RE[ ilE ].Roz, RE[ ilE ].Ypoz + RE[ ilE ].Roz ); ilE++; } ilR = 0; while( ilR <= setR ) { oldP =( HPEN ) SelectObject( hdc, RR[ ilR ].pen ); if( RR[ ilR ].setFIG == 1 ) { oldB =( HBRUSH ) SelectObject( hdc, RR[ ilR ].brush ); } else { oldB =( HBRUSH ) SelectObject( hdc, whiteB ); } Rectangle( hdc, RR[ ilR ].Xpoz - 3, RR[ ilR ].Ypoz - 3, RR[ ilR ].Xpoz +( RR[ ilR ].Roz * 2 ), RR[ ilR ].Ypoz + RR[ ilR ].Roz ); ilR++; } ilP = 0; while( ilP <= setP ) { oldP =( HPEN ) SelectObject( hdc, RP[ ilP ].pen ); oldB =( HBRUSH ) SelectObject( hdc, RP[ ilP ].brush ); Ellipse( hdc, RP[ ilP ].Xpoz - 3, RP[ ilP ].Ypoz - 3, RP[ ilP ].Xpoz +( RP[ ilP ].Roz / 2 ), RP[ ilP ].Ypoz +( RP[ ilP ].Roz / 2 ) ); ilP++; } ReleaseDC( hwnd, hdc ); EndPaint( hwnd, & ps ); break; case WM_LBUTTONDOWN: { hdc = GetDC( hwnd ); if( setCOL == 0 ) { oldP =( HPEN ) SelectObject( hdc, standardP ); oldB =( HBRUSH ) SelectObject( hdc, whiteB ); RE[ setE ].pen = standardP; RE[ setE ].brush = whiteB; RR[ setR ].pen = standardP; RR[ setR ].brush = whiteB; } if( setCOL == 1 ) { oldP =( HPEN ) SelectObject( hdc, redP ); oldB =( HBRUSH ) SelectObject( hdc, whiteB ); RE[ setE ].pen = redP; RE[ setE ].brush = whiteB; RR[ setR ].pen = redP; RR[ setR ].brush = whiteB; } if( setCOL == 2 ) { oldP =( HPEN ) SelectObject( hdc, greenP ); oldB =( HBRUSH ) SelectObject( hdc, whiteB ); RE[ setE ].pen = greenP; RE[ setE ].brush = whiteB; RR[ setR ].pen = greenP; RR[ setR ].brush = whiteB; } if( setCOL == 3 ) { oldP =( HPEN ) SelectObject( hdc, blueP ); oldB =( HBRUSH ) SelectObject( hdc, whiteB ); RE[ setE ].pen = blueP; RE[ setE ].brush = whiteB; RR[ setR ].pen = blueP; RR[ setR ].brush = whiteB; } if( setCOL == 4 ) { oldP =( HPEN ) SelectObject( hdc, standardP ); oldB =( HBRUSH ) SelectObject( hdc, whiteB ); RE[ setE ].pen = standardP; RE[ setE ].brush = whiteB; RR[ setR ].pen = standardP; RR[ setR ].brush = whiteB; } if( setROZ == 0 ) { roz = 20; } if( setROZ == 1 ) { roz = 30; } if( setROZ == 2 ) { roz = 40; } if( setROZ == 3 ) { roz = 60; } if( setFIG == 1 ) { if( LOWORD( lParam ) < 1050 || LOWORD( lParam ) > 1552 ) { goto endpaint; } if( HIWORD( lParam ) < 70 || HIWORD( lParam ) > 870 ) { goto endpaint; } Ellipse( hdc, LOWORD( lParam ) - 3, HIWORD( lParam ) - 3, LOWORD( lParam ) + roz, HIWORD( lParam ) + roz ); RE[ setE ].Xpoz = LOWORD( lParam ); RE[ setE ].Ypoz = HIWORD( lParam ); RE[ setE ].Roz = roz; RE[ setE ].setFIG = 0; setE++; } if( setFIG == 2 ) { if( LOWORD( lParam ) < 1050 || LOWORD( lParam ) > 1537 ) { goto endpaint; } if( HIWORD( lParam ) < 70 || HIWORD( lParam ) > 855 ) { goto endpaint; } Rectangle( hdc, LOWORD( lParam ) - 3, HIWORD( lParam ) - 3, LOWORD( lParam ) +( roz * 2 ), HIWORD( lParam ) + roz ); RR[ setR ].Xpoz = LOWORD( lParam ); RR[ setR ].Ypoz = HIWORD( lParam ); RR[ setR ].Roz = roz; RR[ setR ].setFIG = 0; setR++; } if( Rys == true ) { Przyc = true; SendMessage( hwnd, WM_MOUSEMOVE, wParam, lParam ); } endpaint:; ReleaseDC( hwnd, hdc ); goto paint; } break; case WM_LBUTTONUP: Przyc = false; break; case WM_RBUTTONDOWN: { hdc = GetDC( hwnd ); if( setCOL == 0 ) { oldP =( HPEN ) SelectObject( hdc, standardP ); oldB =( HBRUSH ) SelectObject( hdc, standardB ); RE[ setE ].pen =( HPEN ) SelectObject( hdc, standardP ); RE[ setE ].brush =( HBRUSH ) SelectObject( hdc, standardB ); RR[ setR ].pen =( HPEN ) SelectObject( hdc, standardP ); RR[ setR ].brush =( HBRUSH ) SelectObject( hdc, standardB ); } if( setCOL == 1 ) { oldP =( HPEN ) SelectObject( hdc, redP ); oldB =( HBRUSH ) SelectObject( hdc, redB ); RE[ setE ].pen =( HPEN ) SelectObject( hdc, redP ); RE[ setE ].brush =( HBRUSH ) SelectObject( hdc, redB ); RR[ setR ].pen =( HPEN ) SelectObject( hdc, redP ); RR[ setR ].brush =( HBRUSH ) SelectObject( hdc, redB ); } if( setCOL == 2 ) { oldP =( HPEN ) SelectObject( hdc, greenP ); oldB =( HBRUSH ) SelectObject( hdc, greenB ); RE[ setE ].pen =( HPEN ) SelectObject( hdc, greenP ); RE[ setE ].brush =( HBRUSH ) SelectObject( hdc, greenB ); RR[ setR ].pen =( HPEN ) SelectObject( hdc, greenP ); RR[ setR ].brush =( HBRUSH ) SelectObject( hdc, greenB ); } if( setCOL == 3 ) { oldP =( HPEN ) SelectObject( hdc, blueP ); oldB =( HBRUSH ) SelectObject( hdc, blueB ); RE[ setE ].pen =( HPEN ) SelectObject( hdc, blueP ); RE[ setE ].brush =( HBRUSH ) SelectObject( hdc, blueB ); RR[ setR ].pen =( HPEN ) SelectObject( hdc, blueP ); RR[ setR ].brush =( HBRUSH ) SelectObject( hdc, blueB ); } if( setCOL == 4 ) { oldP =( HPEN ) SelectObject( hdc, standardP ); oldB =( HBRUSH ) SelectObject( hdc, standardB ); RE[ setE ].pen =( HPEN ) SelectObject( hdc, standardP ); RE[ setE ].brush =( HBRUSH ) SelectObject( hdc, standardB ); RR[ setR ].pen =( HPEN ) SelectObject( hdc, standardP ); RR[ setR ].brush =( HBRUSH ) SelectObject( hdc, standardB ); } if( setROZ == 0 ) { roz = 20; } if( setROZ == 1 ) { roz = 30; } if( setROZ == 2 ) { roz = 40; } if( setROZ == 3 ) { roz = 60; } if( setFIG == 1 ) { if( LOWORD( lParam ) < 1030 || LOWORD( lParam ) > 1530 ) { goto endpaint2; } if( HIWORD( lParam ) < 50 || HIWORD( lParam ) > 840 ) { goto endpaint2; } Ellipse( hdc, LOWORD( lParam ) - 3, HIWORD( lParam ) - 3, LOWORD( lParam ) + roz, HIWORD( lParam ) + roz ); RE[ setE ].Xpoz = LOWORD( lParam ); RE[ setE ].Ypoz = HIWORD( lParam ); RE[ setE ].Roz = roz; RE[ setE ].setFIG = 1; setE++; } if( setFIG == 2 ) { if( LOWORD( lParam ) < 1050 || LOWORD( lParam ) > 1537 ) { goto endpaint2; } if( HIWORD( lParam ) < 70 || HIWORD( lParam ) > 855 ) { goto endpaint2; } Rectangle( hdc, LOWORD( lParam ) - 3, HIWORD( lParam ) - 3, LOWORD( lParam ) +( roz * 2 ), HIWORD( lParam ) + roz ); RR[ setR ].Xpoz = LOWORD( lParam ); RR[ setR ].Ypoz = HIWORD( lParam ); RR[ setR ].Roz = roz; RR[ setR ].setFIG = 1; setR++; } ReleaseDC( hwnd, hdc ); goto paint; endpaint2:; } break; case WM_MOUSEMOVE: if( Przyc ) { hdc = GetDC( hwnd ); if( setCOL == 0 ) { oldP =( HPEN ) SelectObject( hdc, standardP ); oldB =( HBRUSH ) SelectObject( hdc, standardB ); RP[ setP ].pen =( HPEN ) SelectObject( hdc, standardP ); RP[ setP ].brush =( HBRUSH ) SelectObject( hdc, standardB ); } if( setCOL == 1 ) { oldP =( HPEN ) SelectObject( hdc, redP ); oldB =( HBRUSH ) SelectObject( hdc, redB ); RP[ setP ].pen =( HPEN ) SelectObject( hdc, redP ); RP[ setP ].brush =( HBRUSH ) SelectObject( hdc, redB ); } if( setCOL == 2 ) { oldP =( HPEN ) SelectObject( hdc, greenP ); oldB =( HBRUSH ) SelectObject( hdc, greenB ); RP[ setP ].pen =( HPEN ) SelectObject( hdc, greenP ); RP[ setP ].brush =( HBRUSH ) SelectObject( hdc, greenB ); } if( setCOL == 3 ) { oldP =( HPEN ) SelectObject( hdc, blueP ); oldB =( HBRUSH ) SelectObject( hdc, blueB ); RP[ setP ].pen =( HPEN ) SelectObject( hdc, blueP ); RP[ setP ].brush =( HBRUSH ) SelectObject( hdc, blueB ); } if( setCOL == 4 ) { oldP =( HPEN ) SelectObject( hdc, standardP ); oldB =( HBRUSH ) SelectObject( hdc, standardB ); RP[ setP ].pen =( HPEN ) SelectObject( hdc, standardP ); RP[ setP ].brush =( HBRUSH ) SelectObject( hdc, standardB ); } if( setROZ == 0 ) { roz = 20; } if( setROZ == 1 ) { roz = 30; } if( setROZ == 2 ) { roz = 40; } if( setROZ == 3 ) { roz = 60; } if( LOWORD( lParam ) < 1050 || LOWORD( lParam ) > 1537 ) { goto endpaint3; } if( HIWORD( lParam ) < 70 || HIWORD( lParam ) > 855 ) { goto endpaint3; } Ellipse( hdc, LOWORD( lParam ) - 3, HIWORD( lParam ) - 3, LOWORD( lParam ) +( roz / 2 ), HIWORD( lParam ) +( roz / 2 ) ); RP[ setP ].Xpoz = LOWORD( lParam ); RP[ setP ].Ypoz = HIWORD( lParam ); RP[ setP ].Roz = roz; setP++; endpaint3:; ReleaseDC( hwnd, hdc ); } break; case WM_COMMAND: dlugosc = GetWindowTextLength( hText ); Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText, Bufor, dlugosc + 1 ); switch( wParam ) { case ID_p1: start(); zap.open( "C:/programs/SimpleNote/save1.txt", ios::in ); zap >> zaw; if( zaw.length() > 1 ) { odp = MessageBox( NULL, TEXT( "W slocie 1 znajduje się już tekst. Czy chcesz nadpisać?" ), TEXT( "Nadpisywanie" ), MB_TASKMODAL | MB_YESNO | MB_ICONQUESTION ); if( odp == IDNO ) { break; } } zap.close(); zap.open( "C:/programs/SimpleNote/save1.txt", ios::out ); zap << Bufor; zap.close(); MessageBox( NULL, TEXT( "Zakończono zapisywanie" ), TEXT( "Informacja" ), MB_OK | MB_ICONINFORMATION ); break; case ID_p2: start(); zap.open( "C:/programs/SimpleNote/save2.txt", ios::in ); zap >> zaw; if( zaw.length() > 1 ) { odp = MessageBox( NULL, TEXT( "W slocie 2 znajduje się już tekst. Czy chcesz nadpisać?" ), TEXT( "Nadpisywanie" ), MB_TASKMODAL | MB_YESNO | MB_ICONQUESTION ); if( odp == IDNO ) { break; } } zap.close(); zap.open( "C:/programs/SimpleNote/save2.txt", ios::out ); zap << Bufor; zap.close(); MessageBox( NULL, TEXT( "Zakończono zapisywanie" ), TEXT( "Informacja" ), MB_OK | MB_ICONINFORMATION ); break; case ID_p3: start(); zap.open( "C:/programs/SimpleNote/save3.txt", ios::in ); zap >> zaw; if( zaw.length() > 1 ) { odp = MessageBox( NULL, TEXT( "W slocie 3 znajduje się już tekst. Czy chcesz nadpisać?" ), TEXT( "Nadpisywanie" ), MB_TASKMODAL | MB_YESNO | MB_ICONQUESTION ); if( odp == IDNO ) { break; } } zap.close(); zap.open( "C:/programs/SimpleNote/save3.txt", ios::out ); zap << Bufor; zap.close(); MessageBox( NULL, TEXT( "Zakończono zapisywanie" ), TEXT( "Informacja" ), MB_OK | MB_ICONINFORMATION ); break; case ID_p4: start(); zap.open( "C:/programs/SimpleNote/save4.txt", ios::in ); zap >> zaw; if( zaw.length() > 1 ) { odp = MessageBox( NULL, TEXT( "W slocie 4 znajduje się już tekst. Czy chcesz nadpisać?" ), TEXT( "Nadpisywanie" ), MB_TASKMODAL | MB_YESNO | MB_ICONQUESTION ); if( odp == IDNO ) { break; } } zap.close(); zap.open( "C:/programs/SimpleNote/save4.txt", ios::out ); zap << Bufor; zap.close(); MessageBox( NULL, TEXT( "Zakończono zapisywanie" ), TEXT( "Informacja" ), MB_OK | MB_ICONINFORMATION ); break; case ID_p5: hPlik = CreateFile( "C:/programs/SimpleNote/save1.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); if( hPlik == INVALID_HANDLE_VALUE ) { MessageBox( NULL, "Nie można otworzyć pliku.", "A to pech!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } dwRozmiar = GetFileSize( hPlik, NULL ); if( dwRozmiar == 0xFFFFFFFF ) { MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Niedobrze...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 ); if( Bufor == NULL ) { MessageBox( NULL, "Za mało pamięci!", "Ale wiocha...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } if( !ReadFile( hPlik, Bufor, dwRozmiar, & dwPrzeczyt, NULL ) ) { MessageBox( NULL, "Błąd czytania z pliku", "Dupa blada!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor[ dwRozmiar ] = 0; SetWindowText( hText, Bufor ); GlobalFree( Bufor ); CloseHandle( hPlik ); break; case ID_p6: hPlik = CreateFile( "C:/programs/SimpleNote/save2.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); if( hPlik == INVALID_HANDLE_VALUE ) { MessageBox( NULL, "Nie można otworzyć pliku.", "A to pech!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } dwRozmiar = GetFileSize( hPlik, NULL ); if( dwRozmiar == 0xFFFFFFFF ) { MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Niedobrze...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 ); if( Bufor == NULL ) { MessageBox( NULL, "Za mało pamięci!", "Ale wiocha...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } if( !ReadFile( hPlik, Bufor, dwRozmiar, & dwPrzeczyt, NULL ) ) { MessageBox( NULL, "Błąd czytania z pliku", "Dupa blada!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor[ dwRozmiar ] = 0; SetWindowText( hText, Bufor ); GlobalFree( Bufor ); CloseHandle( hPlik ); break; case ID_p7: hPlik = CreateFile( "C:/programs/SimpleNote/save3.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); if( hPlik == INVALID_HANDLE_VALUE ) { MessageBox( NULL, "Nie można otworzyć pliku.", "A to pech!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } dwRozmiar = GetFileSize( hPlik, NULL ); if( dwRozmiar == 0xFFFFFFFF ) { MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Niedobrze...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 ); if( Bufor == NULL ) { MessageBox( NULL, "Za mało pamięci!", "Ale wiocha...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } if( !ReadFile( hPlik, Bufor, dwRozmiar, & dwPrzeczyt, NULL ) ) { MessageBox( NULL, "Błąd czytania z pliku", "Dupa blada!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor[ dwRozmiar ] = 0; SetWindowText( hText, Bufor ); GlobalFree( Bufor ); CloseHandle( hPlik ); case ID_p8: hPlik = CreateFile( "C:/programs/SimpleNote/save4.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); if( hPlik == INVALID_HANDLE_VALUE ) { MessageBox( NULL, "Nie można otworzyć pliku.", "A to pech!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } dwRozmiar = GetFileSize( hPlik, NULL ); if( dwRozmiar == 0xFFFFFFFF ) { MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Niedobrze...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 ); if( Bufor == NULL ) { MessageBox( NULL, "Za mało pamięci!", "Ale wiocha...", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } if( !ReadFile( hPlik, Bufor, dwRozmiar, & dwPrzeczyt, NULL ) ) { MessageBox( NULL, "Błąd czytania z pliku", "Dupa blada!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor[ dwRozmiar ] = 0; SetWindowText( hText, Bufor ); GlobalFree( Bufor ); CloseHandle( hPlik ); case ID_cp1: dlugosc = GetWindowTextLength( hText ); Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText, Bufor, dlugosc + 1 ); dlugosc = GetWindowTextLength( hText2 ); Bufor2 =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText2, Bufor2, dlugosc + 1 ); zap.open( Bufor2, ios::out ); if( Bufor2 == "" || Bufor2 == "podaj ścieżkę do pliku" ) { MessageBox( NULL, TEXT( "brak ścieżki do pliku" ), TEXT( "Błąd!" ), MB_TASKMODAL | MB_OK | MB_ICONWARNING ); break; } zap << Bufor; zap.close(); MessageBox( NULL, TEXT( "Zakończono zapisywanie" ), TEXT( "Informacja" ), MB_OK | MB_ICONINFORMATION ); break; case ID_cp2: dlugosc = GetWindowTextLength( hText2 ); Bufor2 =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText2, Bufor2, dlugosc + 1 ); hPlik = CreateFile( Bufor2, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL ); if( hPlik == INVALID_HANDLE_VALUE ) { MessageBox( NULL, "Nie można otworzyć pliku.", "Błąd!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } dwRozmiar = GetFileSize( hPlik, NULL ); if( dwRozmiar == 0xFFFFFFFF ) { MessageBox( NULL, "Nieprawidłowy rozmiar pliku!", "Błąd!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 ); if( Bufor == NULL ) { MessageBox( NULL, "Za mało pamięci!", "Błąd!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } if( !ReadFile( hPlik, Bufor, dwRozmiar, & dwPrzeczyt, NULL ) ) { MessageBox( NULL, "Błąd czytania z pliku", "Błąd!", MB_ICONEXCLAMATION ); PostQuitMessage( 0 ); } Bufor[ dwRozmiar ] = 0; SetWindowText( hText, Bufor ); GlobalFree( Bufor ); CloseHandle( hPlik ); break; case ID_cp3: dlugosc = GetWindowTextLength( hText2 ); Bufor2 =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 ); GetWindowText( hText2, Bufor2, dlugosc + 1 ); DeleteFileA( Bufor2 ); MessageBox( NULL, "Zakończono usuwanie", "Informacja", MB_ICONINFORMATION ); break; case ID_cp4: if( setFIG != 1 ) { setFIG = 1; Rys = false; Przyc = false; } else { setFIG = 0; } break; case ID_cp5: if( setFIG != 2 ) { setFIG = 2; Rys = false; Przyc = false; } else { setFIG = 0; } break; case ID_cp6: if( Rys == false ) { Rys = true; setFIG = 0; setCOL = 0; } else { Rys = false; Przyc = false; } case ID_kp1: if( setCOL != 1 ) { setCOL = 1; } else { setCOL = 0; } break; case ID_kp2: if( setCOL != 2 ) { setCOL = 2; } else { setCOL = 0; } break; case ID_kp3: if( setCOL != 3 ) { setCOL = 3; } else { setCOL = 0; } break; case ID_kp4: if( setCOL != 4 ) { setCOL = 4; } else { setCOL = 0; } break; case ID_rp1: setROZ = 0; break; case ID_rp2: if( setROZ != 1 ) { setROZ = 1; } else { setROZ = 0; } break; case ID_rp3: if( setROZ != 2 ) { setROZ = 2; } else { setROZ = 0; } break; case ID_rp4: if( setROZ != 3 ) { setROZ = 3; } else { setROZ = 0; } break; case ID_bp1: { fstream bitzap; bitzap.open( "C:/programs/SimpleNote/save5.txt", ios::out ); hdc = GetDC( hwnd ); i = 0; Xpix = 1052; Ypix = 70; int Xpl = 0; while( i < 400000 ) { pix = GetPixel( hdc, Xpix, Ypix ); if( pix == blackpix ) { bitzap << "0" << endl; } if( pix == whitepix ) { bitzap << "1" << endl; } if( pix == redpix ) { bitzap << "2" << endl; } if( pix == greenpix ) { bitzap << "3" << endl; } if( pix == bluepix ) { bitzap << "4" << endl; } if( Xpix == 1552 ) { Ypix++; Xpix = 1052; } i++; Xpix++; } } break; case ID_bp2: { fstream bitwczyt; bitwczyt.open( "C:/programs/SimpleNote/save5.txt", ios::in ); hdc = GetDC( hwnd ); i = 0; Xpix = 1052; Ypix = 70; int pixcol = 0; while( i < 400000 ) { bitwczyt >> pixcol; if( pixcol == 0 ) { SetPixel( hdc, Xpix, Ypix, blackpix ); } if( pixcol == 1 ) { SetPixel( hdc, Xpix, Ypix, whitepix ); } if( pixcol == 2 ) { SetPixel( hdc, Xpix, Ypix, redpix ); } if( pixcol == 3 ) { SetPixel( hdc, Xpix, Ypix, greenpix ); } if( pixcol == 4 ) { SetPixel( hdc, Xpix, Ypix, bluepix ); } if( Xpix == 1552 ) { Ypix++; Xpix = 1052; } Xpix++; i++; } } break; } default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; } dodatkowo konieczny jest następujący image umieszczony w C:/programs/SimpleNote/DATA/ http://tiny.pl/qfs3n Czy ktoś mógłby mi powiedzieć dla czego otrzymany obraz jest krzywy? |