uC/GUI3.90a的仿真窗口默认是320x240,如果要使用其它开小的窗口,除了要在LCDConf.h中将LCD_XSIZE和LCD_YSIZE设为指定大小外,还需要修改/System/Simulation/SIM_X.c。 通常的uC/GUI的仿真窗口是Device型的,就是像一个开发板的样子,而3.90a提供了Simulation的源代码,可以很容易的修改为像uC-GUI-View那样的窗口。对了,就是修改SIM_X.c! 以下是Sim_X.c的内容: //! 初始化仿真器 //! @note 仿真LCD的尺寸为320x240 void SIM_X_Init() { if (((LCD_GetDevCap(LCD_DEVCAP_XSIZE) *LCD_GetXMag()) == 320) && ((LCD_GetDevCap(LCD_DEVCAP_YSIZE) *LCD_GetYMag()) == 240) && (LCD_GetNumLayers() == 1)) { //SIM_SetLCDPos(71, 38);// 定义位图中LCD的原点位置 SIM_SetLCDPos(-71, 38);// 定义位图中LCD的原点位置--注意:就是这儿!!! SIM_SetTransColor(0xff0000);// 定义透明色(transparent color) /*SIM_SetLCDColorBlack(0, 0x808080);// 定义黑色(black color) SIM_SetLCDColorWhite(0, 0xc0c0c0);// 定义白色(white color)*/ } } 只需要将SetLCDPos的第一个参数改为负数,就可以表示使用uC-GUI-View那样的窗口。当然你需要将if中的320,240改为你需要的窗口大小,比如640,480。然后编译,运行,OK! 当然,这个时候窗口的Title显示的还是320*240,不过既然是Title,不修改也没什么关系--如果坚持要修改的话,自个儿看代码吧。 其实使用Device窗口还是通常视窗的关键是WinMain.c文件中的_WinMain_NoClean函数。下面是相关的代码: // 使用器件模拟(device simulation)或标准窗口(standard window) if (_ahBmpDevice[0] && (_xPosLCD >= 0)) { BITMAP bmpDevice; Getobject(_ahBmpDevice[0], sizeof(bmpDevice), &bmpDevice);// 得到位图信息 // 使用器件模拟,创建器件窗口(使用WS_EX_TOPMOST可在顶层显示) _hWndMain = CreateWindowEx(0, acClassNameDevice, "Target device", WS_CLIPCHILDREN | WS_POPUP | WS_VISIBLE, 10, 20, bmpDevice.bmWidth, bmpDevice.bmHeight, 0, NULL, _hInst, NULL); } else { // 使用标准窗口,创建主窗口 _hWndMain = CreateWindow(acClassNameMain, BRANDING_GetAppNameLong(), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_VISIBLE, CW_USEDEFAULT, 0, _GetXSizePhys() + 250, _GetYSizePhys() + 150, NULL, NULL, hInstance, NULL); if (!_hWndMain) { return FALSE; } _CreateWndLCD();// 创建仿真LCD窗口及其"调色板示例"窗口 _LOG_Create(_hInst, _hWndMain);// 创建Log窗口 } 显然,只需要将xPosLCD 设为<0,就会使用_CreateWndLCD创建LCD窗口,否则如果存在Device位图,就使用Dvice形式的窗口。其它的问题,看System下的Simulation源代码吧!
|