分类: LINUX
2008-04-14 11:50:41
在移植SVGACC到win32平台上主要是为方便调试linux平台上的程序,因为在linux平台上开发的图形程序,可以无需改动的在win32平台上编译、运行。当然,这要求你的程序符合GCC及VC6.0的规范,因此,尽量采用标准的C/C++语法。另一方面,linux程序可能会调用系统函数,这与VC6.0上产生移植错误,此可以采用分层技术,与系统相关的放在底层,然后分别为linux及VC6.0两种底层实现。
Win32平台的SVGACC移植,可以直接重新编译运行linux平台开发的C图形程序,Win32平台是采用在WinMain函数里,起动一个线程LCDMain函数,LCDMain函数调用linux平台的C图形程序:
DWORD WINAPI LCDMain(LPVOID param)
{
main();
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
MSG msg;
HACCEL hAccelTable;
// Initialize global strings
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_SVAGCCTEST, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_SVAGCCTEST);
threadHandle = CreateThread(NULL, 0, LCDMain, NULL, CREATE_SUSPENDED, NULL);
ResumeThread(threadHandle);
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
这样, 就可以不用修改linux平台图形程序代码,将程序代码加入VC6.0的工程文件中,就可以直接运行了,方便调试。
附件:(win32平台基于SVGACC图形库程序移植)
文件:
svagccTest.rar
大小:
59KB
下载:
下载