Írjunk programot Linuxon Windowsra. A teendőket Debian GNU/Linuxon mutatom be. Természetesen nem ez a legüdvözítőbb módja Linuxon programot írni Windowsra. Ha valaki ilyet szeretne akkor a wxWidgets programozói könyvtárakat ajánlom.
Szükségünk van egy olyan fordítóra, amely Windowsra fordít programot:
apt-get install mingw32-runtime
Szükségünk van a wine nevű programra a programok kipróbálására:
apt-get install wine
A program elkészítéséhez a Geany fejlesztőeszközt ajánlom:
apt-get install geany
#include <windows.h> #define IDC_MAIN_BUTTON 101 char *AppTitle=(char*) "Ablak"; LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); int WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int nCmdShow) { WNDCLASS wc; HWND hwnd; MSG msg; wc.style=CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc=WindowProc; wc.cbClsExtra=0; wc.cbWndExtra=0; wc.hInstance=hInst; wc.hIcon=LoadIcon(NULL,IDI_WINLOGO); wc.hCursor=LoadCursor(NULL,IDC_ARROW); wc.hbrBackground=(HBRUSH)COLOR_WINDOWFRAME; wc.lpszMenuName=NULL; wc.lpszClassName=AppTitle; if (!RegisterClass(&wc)) return 0; hwnd = CreateWindow(AppTitle,AppTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,400,300, NULL,NULL,hInst,NULL); if (!hwnd) return 0; ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while (GetMessage(&msg,NULL,0,0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } } LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { case WM_CREATE: { HWND hWndButton=CreateWindowEx(NULL, "BUTTON", "OK", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON, 100, 100, 100, 24, hwnd, (HMENU)IDC_MAIN_BUTTON, GetModuleHandle(NULL), NULL); break; } case WM_DESTROY: PostQuitMessage(0); break; case WM_COMMAND: { switch(LOWORD(wparam)) { case IDC_MAIN_BUTTON: { MessageBox(NULL, "Árvíztűrő tükörfúrógép", "Információ", MB_ICONINFORMATION); break; } } break; } default: return DefWindowProc(hwnd, msg, wparam, lparam); } return 0; }
A programokat ugyanúgy készítjük mint Windowson, csak a fordítás lesz más. A fordítás a következő paranccsal történik:
i586-mingw32msvc-g++ -finput-charset=utf-8 -fexec-charset=iso-8859-2 -mwindows main.cpp -o main
A kimenetnek „main”-t adtunk meg a szokásos main.exe helyett. Ez csak azért van mert a Scite futtatáskor .exe kiterjesztés nélkül keresi. Ha áttesszük Windowsra, természetesen át kell nevezni.
A rugalmas munkavégzéshez készítünk egy Makefilet:
CC=i586-mingw32msvc-g++ CFLAGS=-finput-charset=utf-8 -fexec-charset=iso-8859-2 -mwindows main: main.cpp $(CC) $(CFLAGS) main.cpp -o main
A scite nevű programban ezek után a fordítás:
F7
Futtatás:
F5