#include <windows.h>
#include <cstring>
#include "notatnik.h"
using namespace std;
HBRUSH g_hBrush = CreateSolidBrush( 0x444444 );
LPSTR NazwaKlasy = "Klasa Okienka";
MSG Komunikat;
HWND hwnd;
HWND hText;
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
HINSTANCE lol;
int width;
int height;
LPSTR Version = "0.5.1";
HMENU hMenu;
HFONT g_hfnNowy = NULL;
void WczytajPlik( char * x, HWND text )
{
LPSTR Bufor;
DWORD dwRozmiar, dwPrzeczyt;
HANDLE hPlik;
hPlik = CreateFile(( LPCSTR ) x, 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( text, Bufor );
GlobalFree( Bufor );
CloseHandle( hPlik );
}
void ZapiszPlik( char * x, HWND text )
{
LPSTR Bufor;
DWORD dwRozmiar, dwZapisane;
HANDLE hPlik;
hPlik = CreateFile(( LPCSTR ) x, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
if( hPlik == INVALID_HANDLE_VALUE )
{
MessageBox( NULL, "Nie można otworzyć pliku.", "A to pech!", MB_ICONEXCLAMATION );
PostQuitMessage( 0 );
}
dwRozmiar = GetWindowTextLength( text );
if( dwRozmiar == 0 )
{
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 );
}
GetWindowText( text, Bufor, dwRozmiar );
Bufor[ dwRozmiar ] = 0;
if( !WriteFile( hPlik, Bufor, dwRozmiar, & dwZapisane, NULL ) )
{
MessageBox( NULL, "Błąd zapisu do pliku", "Dupa blada!", MB_ICONEXCLAMATION );
PostQuitMessage( 0 );
}
GlobalFree( Bufor );
CloseHandle( hPlik );
}
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( GetModuleHandle( NULL ), MAKEINTRESOURCE( 1111 ) );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
wc.lpszMenuName = NULL;
wc.lpszClassName = NazwaKlasy;
wc.hIconSm = LoadIcon( GetModuleHandle( NULL ), MAKEINTRESOURCE( 2503 ) );
if( !RegisterClassEx( & wc ) )
{
MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...",
MB_ICONEXCLAMATION | MB_OK );
return 1;
}
hMenu = LoadMenu( hInstance, MAKEINTRESOURCE( 200 ) );
char tryy[ 64 ];
strcpy( tryy, "Notatnik " );
strcat( tryy, Version );
hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, tryy, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 750, 500, NULL, hMenu, hInstance, NULL );
if( hwnd == NULL )
{
MessageBox( NULL, "Okno odmówiło przyjścia na świat!", "Ale kicha...", MB_ICONEXCLAMATION );
return 1;
}
hText = CreateWindowEx( 0, "EDIT", NULL, WS_CHILD | WS_VISIBLE |
WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL, 0, 0, 740, 500, hwnd, NULL, hInstance, NULL );
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
lol = hInstance;
RECT rect;
if( GetWindowRect( hwnd, & rect ) )
{
width = rect.right - rect.left;
height = rect.bottom - rect.top;
}
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_CTLCOLOREDIT:
{
HWND hCtl =( HWND ) lParam;
HDC hDC =( HDC ) wParam;
if( hCtl == hText )
{
SetBkMode( hDC, TRANSPARENT );
SetTextColor( hDC, 0xffffff );
return( LRESULT ) g_hBrush;
}
}
break;
case WM_COMMAND:
{
if( LOWORD( wParam ) == 103 )
PostQuitMessage( 0 );
else if( LOWORD( wParam ) == 108 )
{
MessageBox( NULL, "Autorem jest Ignacy Kucharski",
"O AUTORZE", NULL );
}
else if( LOWORD( wParam ) == 109 )
{
char str[ 64 ];
strcpy( str, "Program powstał w 2/2016. Wersja: " );
strcat( str, Version );
MessageBox( NULL, str,
"O Programie", NULL );
}
else if( LOWORD( wParam ) == 110 )
{
MessageBox( NULL, "Serio nie umiesz z notatnika korzystać? :-)3",
"O Korzystaniu z programu", NULL );
}
else if( LOWORD( wParam ) == 101 )
{
OPENFILENAME ofn;
char sNazwaPliku[ MAX_PATH ] = "";
ZeroMemory( & ofn, sizeof( ofn ) );
ofn.lStructSize = sizeof( ofn );
ofn.lpstrFilter = "Pliki tekstowe (*.txt)\0*.txt\0Wszystkie pliki\0*.*\0";
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = sNazwaPliku;
ofn.lpstrDefExt = "txt";
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
if( GetOpenFileName( & ofn ) )
{
WczytajPlik( sNazwaPliku, hText );
}
}
else if( LOWORD( wParam ) == 100 )
{
SetWindowText( hText, "" );
}
else if( LOWORD( wParam ) == 102 )
{
OPENFILENAME ofn;
char sNazwaPliku[ MAX_PATH ] = "";
ZeroMemory( & ofn, sizeof( ofn ) );
ofn.lStructSize = sizeof( ofn );
ofn.lpstrFilter = "Pliki tekstowe (*.txt)\0*.txt\0Wszystkie pliki\0*.*\0";
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = sNazwaPliku;
ofn.lpstrDefExt = "txt";
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
if( GetSaveFileName( & ofn ) )
{
ZapiszPlik( sNazwaPliku, hText );
}
}
else if( LOWORD( wParam ) == 104 );
else if( LOWORD( wParam ) == 105 );
else if( LOWORD( wParam ) == 106 );
else if( LOWORD( wParam ) == 107 )
{
CHOOSEFONT cfnt;
LOGFONT lf;
ZeroMemory( & cfnt, sizeof( CHOOSEFONT ) );
cfnt.lStructSize = sizeof( CHOOSEFONT );
cfnt.hwndOwner = hwnd;
cfnt.Flags = CF_EFFECTS | CF_FORCEFONTEXIST | CF_SCREENFONTS;
cfnt.lpLogFont = & lf;
if( !ChooseFont( & cfnt ) )
{
DWORD dwErr = CommDlgExtendedError();
if( dwErr ) MessageBox( hwnd, "Straszliwy błąd dialogu!", NULL, MB_ICONEXCLAMATION );
}
else
{
if( g_hfnNowy != NULL )
DeleteObject( g_hfnNowy );
g_hfnNowy = CreateFontIndirect( cfnt.lpLogFont );
if( g_hfnNowy != NULL )
SendMessage( hText, WM_SETFONT,( WPARAM ) g_hfnNowy, MAKELPARAM( TRUE, 0 ) );
}
}
}
break;
case WM_CLOSE:
DestroyWindow( hwnd );
break;
case WM_DESTROY:
{
if( g_hfnNowy != NULL ) DeleteObject( g_hfnNowy );
PostQuitMessage( 0 );
}
break;
case WM_SIZE:
{
MoveWindow( hText, 0, 0, LOWORD( lParam ), HIWORD( lParam ), TRUE );
break;
}
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}
[ code src = "C++" ]