如何修改uC/GUI的仿真窗口大小

本文介绍如何调整 uC/GUI 3.90a 的仿真窗口大小,并提供实现步骤。通过修改 LCDConf.h 和 SIM_X.c 文件,可以改变默认的 320x240 大小。文中还涉及如何通过设置参数创建不同的窗口样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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源代码吧!

来自:http://www.dzjs.net/html/qianrushixitong/2007/0523/2139.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值