|
| | <!--插入廣告JS代碼--> | 準(zhǔn)備 (a) 建立如下目錄: minigui |--build_x86 /建立PC上運(yùn)行的MiniGUI |--build_arm /建立ARM上運(yùn)行的MiniGUI |--tarball /所有的包資源存放點(diǎn)(b) download MiniGUI: 從www.minigui.com下載libminigui-1.3.3.tar.gz 和minigui-res-1.3.3.tar.gz并且放 tarball目錄 (起始目錄:minigui) #cd build_x86 #tar zxvf ../tarball/libminigui-1.3.3.tar.gz #tar zxvf ../tarball/minigui-res-1.3.3.tar.gz #cd ../build_arm #tar zxvf ../tarball/libminigui-1.3.3.tar.gz #cd ..(c) download and install qvfb: 從www.minigui.com下載qvfb-1.0.tar.gz,放入tarball目錄 #cd build_x86 #tar zxvf ../tarball/qvfb-1.0.tar.gz #cd qvfb-1.0 #./configure #make #make install #cd ..(d) 建立范例程序: test.c --------------------------------------------------------------------------test.c begin #include <minigui/common.h> #include <minigui/minigui.h> #include <minigui/gdi.h> #include <minigui/window.h> #include <minigui/control.h> #define MWINDOW_LX 10 #define MWINDOW_TY 50 #define MWINDOW_RX 230 #define MWINDOW_BY 180 static char * hello_str = "HelloMiniGUI!"; HWND hMainWnd; static int WinProc (HWND hWnd, int message, WPARAM wParam, LPARAM lParam){HDC hdc;RECT rc; switch (message){case MSG_PAINT : hdc = BeginPaint(hWnd); GetClientRect(hWnd, &rc); DrawText(hdc, hello_str, -1, &rc, DT_LEFT); EndPaint(hWnd, hdc); break;case MSG_CLOSE : DestroyMainWindow(hWnd); PostQuitMessage(hWnd); break;default : return(DefaultMainWinProc(hWnd, message, wParam, lParam));}return(0);} int InitMainWindow(void){MAINWINCREATE window_info; window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;window_info.dwExStyle = WS_EX_NONE;window_info.spCaption = "MiniGUI";window_info.hMenu = 0;window_info.hCursor = GetSystemCursor(0);window_info.hIcon = 0;window_info.MainWindowProc = WinProc;window_info.lx = MWINDOW_LX;window_info.ty = MWINDOW_TY;window_info.rx = MWINDOW_RX;window_info.by = MWINDOW_BY;window_info.iBkColor = COLOR_lightwhite;window_info.dwAddData = 0;window_info.hHosting = HWND_DESKTOP;hMainWnd = CreateMainWindow(&window_info);if (hMainWnd == HWND_INVALID)return(0);elsereturn(1);} int MiniGUIMain (int argc, const char ** argv){MSG Msg; #ifdef _LITE_VERSIONSetDesktopRect(0, 0, 800, 600);#endif InitMainWindow();ShowWindow(hMainWnd, SW_SHOWNORMAL); while (GetMessage(&Msg, hMainWnd)){TranslateMessage(&Msg);DispatchMessage(&Msg);}MainWindowThreadCleanup(hMainWnd);return(0);} #ifndef _LITE_VERSION#include <minigui/dti.c>#endif--------------------------------------------------------------------------test.c end 1. Build MiniGUI for PC:(a) build lib#Cd build_x86#Cd libminigui-1.3.3#./configure#make#make install#cd ..(b) install resource #cd minigui-res-1.3.3 #make install #cd .. (資源被安裝到/usr/local/lib/minigui/中)(c) build and run test #gcc –o test test.c –lpthread –lminigui –ljpeg –lpng –lz –lttf 把/usr/local/etc/MiniGUI.cfg中[system]組的gal_engine和ial_engine的值都改成qvfb #qvfb –width 640 –height 480 –depth 16 & #./test #cd .. 2. Build MiniGUI for ARM:(a) build lib#cd build_arm#cd libminigui-1.3.3#make menuconfig在默認(rèn)的設(shè)置下將“GAL engine options”中的“NEWGAL”改成“OLDGAL”;將“Font options”中的最后三項(xiàng)保留,其余全部不選;將“Image options”中對(duì)JPG和PNG的support去掉;將“Development environment options”中“Compiler”設(shè)置成“arm-linux-gcc”,“Path prefix”設(shè)置成“/usr/local/arm/2.95.3/arm-linux”(假設(shè)交叉編譯環(huán)境安裝在/usr/local/arm)。其余選項(xiàng)全部取默認(rèn)值。保存修改并退出menuconfig#make#make install#cd ..(b) build test.c#arm-linux-gcc –o test test.c –lpthread –lminigui這樣就會(huì)產(chǎn)生一個(gè)名為test的文件。(c) 設(shè)置root file system假設(shè)已經(jīng)有一個(gè)可以用的root file system把先前安裝在/usr/local/arm/2.95.3/arm-linux/lib下的庫文件復(fù)制到目標(biāo)文件系統(tǒng)的/lib目錄下。如果分不清楚那個(gè)目錄下哪些是需要復(fù)制的庫文件,可以重復(fù)一次2.(a)的過程,并且把其中“Path prefix”的值改成你事先建立的一個(gè)空的目錄的路徑。比如,我建立了一個(gè)新的目錄/root/need,并且把“Path prefix”的值改成了“/root/need”, 那么在執(zhí)行完2.(a)后,/root/need/lib目錄下的所有文件就是我們所需要復(fù)制的MiniGUI庫文件。(這個(gè)辦法很冗余-_-)把/usr/local/etc/MiniGUI.cfg文件復(fù)制到目標(biāo)文件系統(tǒng)的/usr/local/etc/目錄下,并且修改該文件,將[system]組中的gal_engine的值改成“fbcon” ial_engine的值改成“console” mdev的值改成“/dev/mouse” mtype的值改成“PS2”,將[fbcon]組中的defaultmode改成“640x480-16bpp”(根據(jù)實(shí)際情況而定)。把/usr/local/lib/minigui/res整個(gè)目錄復(fù)制到目標(biāo)文件系統(tǒng)的/usr/local/lib/minigui中。最后把剛才編譯好的test文件復(fù)制到目標(biāo)文件系統(tǒng)的/bin下面。(d) 設(shè)置鼠標(biāo)我的LCD沒有帶觸摸屏,所以要設(shè)置鼠標(biāo),我的鼠標(biāo)是USB口的。修改文件系統(tǒng)的/etc/init.d/rcS,添加一行:“l(fā)n /dev/input/mice /dev/mouse”(e) run給板子上電,通過minicom執(zhí)行:#test &就能在LCD上看到運(yùn)行結(jié)果了。
|