Član
- Učlanjen(a)
- 29.04.2010
- Poruka
- 9
Evo nekoliko tutorijala gdje možete pogledati dosta korisnih stavri o win32 programiranju.
Ovo su tutorijali vezani za C++.
Ovo su neki od osnovnih stvari koje se primjenjuju u win32 programiranju. (tipovi, tipovi handle...)
Win32 Tipovi podataka
1. Osnovni tipovi (Simple types)
Handle
Handle je referenca na neki podatak, slično kao pokazivač.
Ali za razliku od pokazivača, handle se ne može dereferencirati.
Većini objekata se pristupa preko handle-a (prozoru, ikoni, meniju, …)
2. Tipovi handle
Imenovanje promenljivih -
Konvencije Tip podatka Značenje
To bi bilo nešto ukratko o osnovnim tipovima koji se koriste u win32.Strukturu kreiranja jednog ovakvog programa mozete pronaci na linkovima koje sam postavio.
Ali evo kako izgleda jedan prozor i šta je sve potrebno.
Prvo morate definisati resurse.To možete staviti u jedan header file, nazvaćemo ga Resource.
Zatim morate obraditi definisane ikonice u resurse tako što će te ih otkucati u rc. fajlu.
I na kraju sve to stavimo u jedan program.
Ovo je radjeno u Visual C++.Vi možete koristiti, ako želite, neki drugi program.Mada ja smatra da win32 programiranje najbolje raditi u nekom od Visual programa.
Teško je shvatiti win32 programiranje bez dobrog iskustva objektno orjentisanog programiranja i temljne osnove.
Ovde ima još puno stvari koje se trebaju objasniti.To ćemo nastaviti sutra
Ovo su tutorijali vezani za C++.
Kod:
[url=http://www.functionx.com/win32/index.htm]Win32 Programming - FunctionX[/url]
Kod:
[url=http://www.winprog.org/tutorial/]theForger's Win32 API Tutorial[/url]
Kod:
[url=http://www.winprog.org/tutorial/]theForger's Win32 API Tutorial[/url]
Kod:
[url=http://www.cplusplus.com/src/]C++ Sourcecode[/url]
Kod:
[url=http://www.zetcode.com/tutorials/winapi/]The Winapi (C Win32 API, No MFC) tutorial[/url]
Ovo su neki od osnovnih stvari koje se primjenjuju u win32 programiranju. (tipovi, tipovi handle...)
Win32 Tipovi podataka
1. Osnovni tipovi (Simple types)
Kod:
HINSTANCE Handle na instancu.
LPSTR pokazivač na string ANSI karaktera (ANSI characters)
WNDPROC pokazivač na proceduru prozora.
HANDLE Handle na objekt
HICON Handle na ikonu
HCURSOR Handle na kursor
HBRUSH Handle na brush
ATOM Atom (referenca na string karktera u tablici atoma)
Handle
Handle je referenca na neki podatak, slično kao pokazivač.
Ali za razliku od pokazivača, handle se ne može dereferencirati.
Većini objekata se pristupa preko handle-a (prozoru, ikoni, meniju, …)
2. Tipovi handle
Kod:
HACCEL
HBITMAP
HBRUSH
HCURSOR (handle na kursor)
HDC
HDRVR
HENHMETAFILE
HFONT
HGDIOBJ
HGLOBAL
HHOOK
HICON (handle na ikonu)
HINSTANCE (handle na instancu programa)
HKEY
HMENU (handle na meni)
HMETAFILE
HMODULE
HPALETTE
HPEN
HRGN
HRSRC
HSTR
HTASK
HWND (handle na prozor)
Imenovanje promenljivih -
Konvencije Tip podatka Značenje
Kod:
b BYTE 8 bitni unsigned integer
ch CHAR karakter (8 bitna signed vrednost)
d DOUBLE double promenljiva
dw DWORD 32 bitni unsigned integer
f BOOL Bool promenljiva (nula je false; različito od nule je true)
f WORD bit zastave (flags) spakovani u 16 bitni integer
gh GLOBALHANDLE handle na globalnu memoriju od funkcije GlobalAlloc
h HANDLE 32 bitni unsigned integer, handle na objekt
hwnd HWND handle na prozor
l LONG 32 bitni signed integer
lp FAR* 32 bitni far (long) pokazivac
n SHORT 16 bitni signed integer
np FAR* 32 bitni pokazivac
p* (pointer) 32 bitni pokaziva
pt POINT 32 bitne x,y koordinate spakovane u strukturu
rgb RGB RGB vrednosti boja spakovane u DWORD
sz CHAR ARRAY Null terminirani niz karaktera ("aaaaa\0")
w WORD 16-bitni unsigend integer(osim wPARAM -32-bitni parametar poruke)
To bi bilo nešto ukratko o osnovnim tipovima koji se koriste u win32.Strukturu kreiranja jednog ovakvog programa mozete pronaci na linkovima koje sam postavio.
Ali evo kako izgleda jedan prozor i šta je sve potrebno.
Prvo morate definisati resurse.To možete staviti u jedan header file, nazvaćemo ga Resource.
Kod:
#define IDI_RATOGAME 1000 //definisemo malu ikonicu
#define IDI_RATOGAME_SM 1001 //definisemo veliku ikonicu
Zatim morate obraditi definisane ikonice u resurse tako što će te ih otkucati u rc. fajlu.
Kod:
#include "Resource.hpp" //ukljucujemo definisane ikonice
IDI_RATOGAME ICON "RatoGame.ico"
IDI_RATOGAME ICON "RatoGame_sm.ico"
I na kraju sve to stavimo u jedan program.
Kod:
#include <windows>
#include "Resource.hpp"
LRESULT CALLBACK WndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT("Serbian forum :D");
WNDCLASSEX wndclass;
HWND hWindow;
MSG msg;
// Create the window class for the main window
wndclass.cbSize = sizeof(wndclass);
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = hInstance;
wndclass.hIcon = LoadIcon(hInstance,
MAKEINTRESOURCE(IDI_RATOGAME));
wndclass.hIconSm = LoadIcon(hInstance,
MAKEINTRESOURCE(IDI_RATOGAME_SM));
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = szAppName;
// Register the window class
if (!RegisterClassEx(&wndclass))
return 0;
// Create the window
hWindow = CreateWindow(szAppName, szAppName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
// Show and update the window
ShowWindow(hWindow, iCmdShow);
UpdateWindow(hWindow);
// Enter the main message loop
while (GetMessage(&msg, NULL, 0, 0))
{
// Process the message
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
RECT rect;
switch (msg)
{
case WM_PAINT:
// Draw some text centered in the client area of the main window
hDC = BeginPaint(hWindow, &ps);
GetClientRect(hWindow, &rect);
DrawText(hDC, TEXT("Uspjesno ste napravili svoj prvi win32 program!"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hWindow, &ps);
return 0;
case WM_DESTROY:
// Exit the application
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWindow, msg, wParam, lParam);
}
Teško je shvatiti win32 programiranje bez dobrog iskustva objektno orjentisanog programiranja i temljne osnove.
Ovde ima još puno stvari koje se trebaju objasniti.To ćemo nastaviti sutra