#include <windows.h>
#include <tchar.h>
#include <windowsx.h>
LPCWSTR NazwaKlasy = _T( "Klasa Okienka" );
MSG Komunikat;
HWND hwnd;
HWND g_hPrzycisk;
HWND g_hPrzycisk_innyStyl;
HWND g_hpoleTextowe;
HWND hCombo;
bool Przyc = false;
#define ID_PRZYCISK_1 500
#define ID_PRZYCISK_2 501
#define ID_COMBOBOX 502
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
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 = NazwaKlasy;
wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
if( !RegisterClassEx( & wc ) )
{
MessageBox( NULL,
_T( "Wysoka Komisja odmawia rejestracji tego okna!" ),
_T( "Niestety!" ),
MB_ICONEXCLAMATION | MB_OK );
return 0;
}
hwnd = CreateWindowEx( WS_EX_CLIENTEDGE,
NazwaKlasy,
_T( "Oto okiento" ),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
500, 500, NULL, NULL, hInstance,
NULL );
ShowWindow( hwnd, nCmdShow );
UpdateWindow( hwnd );
g_hPrzycisk = CreateWindowEx( 0, _T( "Button" ), _T( "Nasz przycisk" ), WS_CHILD | WS_VISIBLE,
100, 100, 150, 30, hwnd,( HMENU ) ID_PRZYCISK_1, hInstance, NULL );
g_hPrzycisk_innyStyl = CreateWindowEx( 0, _T( "BUTTON" ), _T( "Onet" ), WS_CHILD | WS_VISIBLE | BS_CHECKBOX,
25, 150, 150, 30, hwnd,( HMENU ) ID_PRZYCISK_2, hInstance, NULL );
HFONT hNormalFont =( HFONT ) GetStockObject( DEFAULT_GUI_FONT );
SendMessage( g_hPrzycisk, WM_SETFONT,( WPARAM ) hNormalFont, 0 );
g_hpoleTextowe = CreateWindowEx( WS_EX_CLIENTEDGE, _T( "EDIT" ), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER
| ES_MULTILINE
| ES_AUTOVSCROLL
| WS_VSCROLL,
50, 50, 150, 50,
hwnd, NULL, hInstance, NULL );
SetWindowText( g_hpoleTextowe, _T( "Prosze o wpis..." ) );
DWORD dlugosc = GetWindowTextLength( g_hpoleTextowe );
LPSTR Bufor =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
GetWindowText( g_hpoleTextowe,( LPWSTR ) Bufor, dlugosc + 1 );
GlobalFree( Bufor );
HWND hListBox = CreateWindowEx( WS_EX_CLIENTEDGE, _T( "LISTBOX" ), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
5, 200, 150, 100, hwnd, NULL, hInstance, NULL );
SendMessage( hListBox, LB_ADDSTRING, 0,( LPARAM ) "Element 1" );
SendMessage( hListBox, LB_ADDSTRING, 0,( LPARAM ) "Element 2" );
hCombo = CreateWindowEx( WS_EX_CLIENTEDGE, _T( "COMBOBOX" ), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER
| CBS_DROPDOWN,
5, 310, 150, 200, hwnd,( HMENU ) ID_COMBOBOX, hInstance, NULL );
SendMessage( hCombo, CB_ADDSTRING, 0,( LPARAM ) "Element 1" );
SendMessage( hCombo, CB_ADDSTRING, 0,( LPARAM ) "Element 2" );
if( hwnd == NULL )
{
MessageBox( NULL,
_T( "Okno odmowilo przyjscia na swiat" ),
_T( "Ale kicha!" ), MB_ICONEXCLAMATION
);
return 1;
}
while( GetMessage( & Komunikat, NULL, 0, 0 ) ) {
TranslateMessage( & Komunikat );
DispatchMessage( & Komunikat );
}
LPSTR Bufor_2;
DWORD dwRozmiar, dwPrzeczyt;
HANDLE hPlik;
hPlik = CreateFile( _T( "test.txt" ), GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL );
if( hPlik == INVALID_HANDLE_VALUE ) {
MessageBox( NULL, _T( "Nie można otworzyć pliku." ), _T( "A to pech!" ), MB_ICONEXCLAMATION );
PostQuitMessage( 0 );
}
dwRozmiar = GetFileSize( hPlik, NULL );
if( dwRozmiar == 0xFFFFFFFF ) {
MessageBox( NULL, _T( "Nieprawidłowy rozmiar pliku!" ), _T( "Niedobrze..." ), MB_ICONEXCLAMATION );
PostQuitMessage( 0 );
}
Bufor_2 =( LPSTR ) GlobalAlloc( GPTR, dwRozmiar + 1 );
if( Bufor_2 == NULL ) {
MessageBox( NULL, _T( "Za mało pamięci!" ), _T( "Ale wiocha..." ), MB_ICONEXCLAMATION );
PostQuitMessage( 0 );
}
if( !ReadFile( hPlik, Bufor_2, dwRozmiar, & dwPrzeczyt, NULL ) ) {
MessageBox( NULL, _T( "Błąd czytania z pliku" ), _T( "Dupa blada!" ), MB_ICONEXCLAMATION );
PostQuitMessage( 0 );
}
Bufor_2[ dwRozmiar ] = 0;
SetWindowText( hwnd,( LPCWSTR ) Bufor_2 );
GlobalFree( Bufor_2 );
CloseHandle( hPlik );
return Komunikat.wParam;
}
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
int numer = ComboBox_GetCurSel( hCombo );
int dlugosc = ComboBox_GetTextLength( hCombo );
LPSTR NapiszComboBoxa =( LPSTR ) GlobalAlloc( GPTR, dlugosc + 1 );
ComboBox_GetText( hCombo,( LPWSTR ) NapiszComboBoxa, dlugosc + 1 );
switch( msg )
{
case WM_COMMAND:
switch( wParam )
{
case ID_PRZYCISK_1:
MessageBox( hwnd,( LPCWSTR ) NapiszComboBoxa,
_T( "Ha!" ), MB_ICONINFORMATION );
break;
case ID_PRZYCISK_2:
BOOL bChecked =( IsDlgButtonChecked( hwnd, ID_PRZYCISK_2 ) == BST_CHECKED );
if( bChecked ) CheckDlgButton( hwnd, ID_PRZYCISK_2, BST_UNCHECKED );
CheckDlgButton( hwnd, ID_PRZYCISK_2, BST_CHECKED );
break;
}
break;
case WM_CLOSE:
DestroyWindow( hwnd );
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
case WM_KEYDOWN:
{
switch(( int ) wParam )
{
case VK_RETURN:
MessageBox( hwnd, _T( "Wcisnieto Enter!" ), _T( "HA!" ), MB_ICONINFORMATION );
break;
case VK_ESCAPE:
DestroyWindow( hwnd );
break;
}
}
case WM_LBUTTONDOWN:
{
if( wParam & MK_CONTROL )
MessageBox( hwnd, _T( "Wcisniety jest Ctrl !" ), NULL, MB_ICONINFORMATION );
if( wParam & MK_SHIFT )
MessageBox( hwnd, _T( "Wcisniety jest Shift!" ), NULL, MB_ICONINFORMATION );
}
break;
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}