Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101811
  • 博文数量: 20
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-21 11:18
文章分类

全部博文(20)

文章存档

2011年(1)

2009年(3)

2008年(16)

我的朋友

分类: LINUX

2008-04-14 11:50:41

   在移植SVGACCwin32平台上主要是为方便调试linux平台上的程序,因为在linux平台上开发的图形程序,可以无需改动的在win32平台上编译、运行。当然,这要求你的程序符合GCCVC6.0的规范,因此,尽量采用标准的C/C++语法。另一方面,linux程序可能会调用系统函数,这与VC6.0上产生移植错误,此可以采用分层技术,与系统相关的放在底层,然后分别为linuxVC6.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
下载: 下载

 

阅读(1509) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~