#include <windows.h>
#include <fstream>
#include <string>
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
HWND g_hPrzycisk;
HWND hText;
HWND hText2;
HINSTANCE hInstance;
HDC kon;
PAINTSTRUCT ps;
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
void zapisz();
void otworz();
int WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
hInstance = hInst;
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 = NazwaKlasy;
wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
if( !RegisterClassEx( & wc ) )
{
MessageBox( NULL, "Blad inicjalizacji programu!", "Blad!",
MB_ICONEXCLAMATION | MB_OK );
return 1;
}
HMENU hMenu = LoadMenu( hInst, MAKEINTRESOURCE( 200 ) );
HWND hwnd;
hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Notatnik v0.1", WS_OVERLAPPEDWINDOW ^( WS_MAXIMIZEBOX | WS_SIZEBOX ),
CW_USEDEFAULT, CW_USEDEFAULT, 700, 500, NULL, hMenu, hInstance, NULL );
hText = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE | WS_BORDER |
WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN, 0, 100, 690, 350, hwnd, NULL, hInstance, NULL );
hText2 = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", NULL, WS_CHILD | WS_VISIBLE |
WS_BORDER | ES_MULTILINE | ES_AUTOVSCROLL, 0, 50, 400, 25, hwnd, NULL, hInstance, NULL );
SetWindowText( hText2, "Nowy dokument tekstowy.txt" );
HWND hStatic = CreateWindowEx( 0, "STATIC", NULL, WS_CHILD | WS_VISIBLE |
SS_LEFT, 0, 0, 250, 50, hwnd, NULL, hInstance, NULL );
SetWindowText( hStatic, "Wpisz tu ścieżkę pliku, który chcesz otworzyć lub utworzyć po czym wybierz Plik > 'Otworz lub Zapisz'" );
if( hwnd == NULL )
{
MessageBox( NULL, "Blad inicjalizacji programu!", "Blad!", MB_ICONEXCLAMATION );
return 1;
}
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
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_COMMAND:
if( wParam == 100 )
{
zapisz();
}
if( wParam == 101 )
{
otworz();
}
break;
case WM_PAINT:
HBITMAP hBmp;
hBmp = LoadBitmap( hInstance,( LPCSTR ) "IDB_BITMAPA" );
HDC hdcScreen, hdc;
hdcScreen = GetDC( GetDesktopWindow() );
hdc = CreateCompatibleDC( hdcScreen );
ReleaseDC( GetDesktopWindow(), hdcScreen );
SelectObject( hdc, hBmp );
BITMAPINFOHEADER bmi;
memset( & bmi, 0, sizeof( bmi ) );
bmi.biSize = sizeof( BITMAPINFOHEADER );
GetDIBits( hdc, hBmp, 0, 1, NULL,( BITMAPINFO * ) & bmi, DIB_RGB_COLORS );
PAINTSTRUCT ps;
BeginPaint( hwnd, & ps );
BitBlt( ps.hdc, 0, 0, bmi.biWidth, bmi.biHeight, hdc, 0, 0, SRCCOPY );
TextOut( ps.hdc, 0, 80, "Pole edycji tekstu:", 19 );
EndPaint( hwnd, & ps );
DeleteDC( hdc );
break;
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}
void zapisz()
{
DWORD dlugosc2 = GetWindowTextLength( hText2 );
LPSTR Bufor2 =( LPSTR ) GlobalAlloc( GPTR, dlugosc2 + 1 );
GetWindowText( hText2, Bufor2, dlugosc2 + 1 );
DWORD dlugosc = GetWindowTextLength( hText );
LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
GetWindowText( hText, Bufor, dlugosc + 1 );
std::ofstream plik( Bufor2 );
plik.close();
plik.open( Bufor2 );
if( plik.good() == true )
{
plik << Bufor;
MessageBox( NULL, "Plik tekstowy zapisano!", "INFO", MB_ICONINFORMATION | MB_OK );
} else MessageBox( NULL, "Nie można zapisać pliku!", "Błąd!", MB_ICONINFORMATION | MB_OK );
plik.close();
GlobalFree( Bufor );
}
void otworz()
{
DWORD dlugosc2 = GetWindowTextLength( hText2 );
LPSTR Bufor2 =( LPSTR ) GlobalAlloc( GPTR, dlugosc2 + 1 );
GetWindowText( hText2, Bufor2, dlugosc2 + 1 );
std::fstream plik2;
plik2.open( Bufor2, std::ios::in | std::ios::out );
if( plik2.good() == true )
{
std::fstream plik2( Bufor2, std::ios::in );
std::string dane;
while( !plik2.eof() )
{
getline( plik2, dane );
SetWindowText( hText, dane.c_str() );
}
GlobalFree( Bufor2 );
plik2.close();
} else MessageBox( NULL, "Nie można otworzyć pliku!", "Błąd", MB_ICONINFORMATION | MB_OK );
}