[[oktatas:programozás:cpp|< CPP]]
====== Cpp Windows asztali környezet linuxon ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2011
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
Í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.
===== Telepítések =====
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
===== Nyomógomb eseménykezeléssel =====
#include
#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;
}
===== Program fordítás =====
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
===== Link =====
* http://silmor.de/qtstuff.cross.php (Qt-vel)
* http://forums.codeblocks.org/index.php?topic=3343.0
* http://mrbook.org/tutorials/make/