008
04.03.2005, 13:15 Uhr
Airdamn
|
eigentlich ist es eine einfaches WinAPI Programm, mehr zum testen. Da ist eigentlich nix besonderes dran:
C++: |
#include <windows.h>
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
LPCSTR lpszAppName = "AppName"; LPCSTR lpszTitle = "WinAPI Window";
HWND hEdit; HWND hButton;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) { HWND hWnd; MSG msg; WNDCLASSEX wc;
wc.cbSize = sizeof( WNDCLASSEX ); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hbrBackground = (HBRUSH) ( COLOR_WINDOW ); wc.lpszClassName = lpszAppName; wc.lpszMenuName = lpszAppName; wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION );
if( RegisterClassEx( &wc ) == 0 ) return 0;
hWnd = CreateWindowEx( NULL, lpszAppName, lpszTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 300, NULL, NULL, hInstance, NULL );
if( !hWnd ) return 0;
ShowWindow( hWnd, nShowCmd ); UpdateWindow( hWnd );
CHOOSECOLOR cc; COLORREF cr = RGB( 255, 0,0 ); COLORREF cstmclrs[16];
for( int i = 0; i < 16; i++ ) cstmclrs[i] = RGB( 0, 0, 0 );
cc.lStructSize = sizeof( CHOOSECOLOR ); cc.hwndOwner = hWnd; cc.rgbResult = cr; cc.lpCustColors = cstmclrs; cc.Flags = CC_ANYCOLOR | CC_FULLOPEN | CC_RGBINIT;
hButton = CreateWindowEx( WS_EX_CLIENTEDGE, "BUTTON", "&OK", WS_CHILD | WS_VISIBLE, 200, 240, 80, 25, hWnd, NULL, GetModuleHandle( NULL ), NULL );
while( GetMessage( &msg, NULL, 0, 0 ) > 0 ) { TranslateMessage( &msg ); DispatchMessage( &msg ); }
return 0; }
LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { PAINTSTRUCT ps; HDC hDC; char szText[] = "Ein Teststring";
switch( uMsg ) { case WM_CREATE: hEdit = CreateWindowEx( WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 40, 40, 200, 200, hWnd, NULL, GetModuleHandle( NULL ), NULL ); return 0; case WM_PAINT: hDC = BeginPaint( hWnd, &ps ); SetTextColor( hDC, RGB( 120, 200, 177 )); SetBkMode( hDC, TRANSPARENT ); TextOut( hDC, 0, 0, szText, sizeof( szText ) - 1 ); EndPaint( hWnd, &ps ); return 0; case WM_DESTROY: PostQuitMessage( 0 ); return 0; case WM_KEYDOWN: SetWindowText( hWnd, "Eine Taste wurde gedrückt" ); return 0; case WM_KEYUP: SetWindowText( hWnd, "Die Taste wurde wieder losgelassen" ); return 0; case WM_LBUTTONDOWN: SetWindowText( hWnd, "Die linke Maustaste wurde gedrückt" ); return 0; case WM_LBUTTONUP: SetWindowText( hWnd, "Die linke Maustaste wurde losgelassen" ); return 0; case WM_RBUTTONDOWN: SetWindowText( hWnd, "Die rechte Maustaste wurde gedrückt" ); return 0; case WM_RBUTTONUP: SetWindowText( hWnd, "Die rechte Maustaste wurde losgelassen" ); return 0; case WM_MOVE: SetWindowText( hWnd, "Die Position des Fensters wurde verändert" ); return 0; case WM_SIZE: SetWindowText( hWnd, "Die Größe des Fensters wurde verändert" ); return 0; }
return DefWindowProc( hWnd, uMsg, wParam, lParam ); }
|
denke auch, dass es am compiler liegt... |