加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSSRSS-巴斯仪表网
您当前的位置:首页 > 电子发烧 > 单片机学习

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

时间:2013-09-08  来源:123485.com  作者:9stone

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


分享到:
来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
栏目导航->单片机学习
  • 电子应用基础
  • 电源技术
  • 无线传输技术
  • 信号处理
  • PCB设计
  • EDA技术
  • 单片机学习
  • 电子工具设备
  • 技术文章
  • 精彩拆解欣赏
  • 推荐资讯
    使用普通运放的仪表放大器
    使用普通运放的仪表放
    3V与5V混合系统中逻辑器接口问题
    3V与5V混合系统中逻辑
    数字PID控制及其改进算法的应用
    数字PID控制及其改进
    恶劣环境下的高性价比AD信号处理数据采集系统
    恶劣环境下的高性价比
    栏目更新
    栏目热门