炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6143|回复: 11

在示例中尝试使用cchart或者mschart测试的问题

[复制链接]

该用户从未签到

发表于 2015-6-5 11:13:06 | 显示全部楼层 |阅读模式
本帖最后由 datenote 于 2015-6-5 11:14 编辑

http://bbs.xcgui.com/forum.php?m ... =385&extra=page%3D1 仿360的例子中 想测试下其他控件。试了CChart和MsChart都有这个问题。就是在 “电脑体检” 第一页上添加了chart。点击后面的页面时,鼠标移动到第一页chart的位置,chart也会出现。重新点会第一页时,除非把鼠标移到其位置, chart并不刷新。

QQ截图20150605110927.jpg
QQ截图20150605110948.jpg
QQ截图20150605110942.jpg




代码如下:
  1. void CXPage1::Create()
  2. {
  3. ....
  4.         HWND hWnd_Pic=XEle_GetHWnd(m_hEle);

  5.         HWINDOW hWnd=XWnd_CreateWindowEx(NULL,NULL,NULL,WS_CHILD|WS_VISIBLE,10,220,550,350,hWnd_Pic,XC_SY_ROUND); //创建窗口

  6.         hWndChart=XWnd_GetHWnd(hWnd);

  7.     chartWnd.Attach(hWndChart, kTypeXY);  

  8.         chartWnd.GetChart()->AddPoint2D(-3.0, 9.0);  
  9.         chartWnd.GetChart()->AddPoint2D(-2.0, 4.0);  
  10.         chartWnd.GetChart()->AddPoint2D(-1.0, 1.0);  
  11.         chartWnd.GetChart()->AddPoint2D(0.0, 0.0);  
  12.         chartWnd.GetChart()->AddPoint2D(1.0, 1.0);  
  13.         chartWnd.GetChart()->AddPoint2D(2.0, 4.0);  
  14.         chartWnd.GetChart()->AddPoint2D(3.0, 9.0);  


  15.        
  16.         chartWnd.GetChart()->SetTitle(L"Hello World !");  

  17.   XWnd_ShowWindow(hWnd,SW_SHOW); //显示窗口

  18. ...
  19. }
复制代码




  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2015-6-5 15:09:52 | 显示全部楼层
    你的CChart是有窗口句柄的吧,那么你需要自己控制他的显示与隐藏,因为炫彩界面库是DirectUI,不是传统UI

    该用户从未签到

     楼主| 发表于 2015-6-5 15:52:10 | 显示全部楼层
    admin 发表于 2015-6-5 15:09
    你的CChart是有窗口句柄的吧,那么你需要自己控制他的显示与隐藏,因为炫彩界面库是DirectUI,不是传统UI ...

    您这么快就回复了 十分感谢!
    我按照您说的改了下, 点page1的时候把 chart show, 然后page2 的时候 hide。 但是点page1的时候,chart仍然需要鼠标移动过去才能刷新显示出来。点page2以后其他页面确实不会再突然冒出chart了。但是如果不点page2 就点其他页面 刚刚的问题仍然存在。所以必须每个页面都要设置hide,才能保证。

    现在就剩在page1 中的时候chart的显示和刷新问题了。

    这是编译出来的可执行程序:http://pan.baidu.com/s/1eQeunPC   。 您要是不嫌麻烦可以看下这个问题具体现象。

    这是整个工程的文件: http://pan.baidu.com/s/1bnCWrwV

    我们十分真诚的十分感谢您的帮助,已经准备购买正式版来使用了。
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2015-6-5 16:34:23 | 显示全部楼层
    忙着新版,没时间下载看,  
    UI库不会自动刷新,要手动刷新,因为你的page1 有一个窗口,所以按钮不能控制窗口的显示与隐藏. 如果没有刷新,强制刷新下就可以了!

    该用户从未签到

     楼主| 发表于 2015-6-5 22:02:33 | 显示全部楼层
    admin 发表于 2015-6-5 16:34
    忙着新版,没时间下载看,  
    UI库不会自动刷新,要手动刷新,因为你的page1 有一个窗口,所以按钮不能控制窗口的 ...

    您说的是 UI的刷新函数么? 是 XEle_ReDrawEle() 或者 XWnd_ReDrawWndRect()么?
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2015-6-7 00:11:54 | 显示全部楼层
    那要看你是什么哦,如果是炫彩的用炫彩的接口刷新,如果是非炫彩HWND,那么用系统API刷新

    该用户从未签到

     楼主| 发表于 2015-6-8 17:12:13 | 显示全部楼层
    本帖最后由 datenote 于 2015-6-8 17:12 编辑
    admin 发表于 2015-6-7 00:11
    那要看你是什么哦,如果是炫彩的用炫彩的接口刷新,如果是非炫彩HWND,那么用系统API刷新 ...

    因为Chart 是建立了个窗口来放的:
    1.   HWND hWnd_Pic=XEle_GetHWnd(m_hEle);

    2.          HWINDOW         hWnd=XWnd_CreateWindowEx(NULL,NULL,NULL,WS_CHILD|WS_VISIBLE,10,220,550,350,hWnd_Pic,XC_SY_ROUND); //创建窗口

    3.         hWinChart=hWnd;
    4.          hWndChart=XWnd_GetHWnd(hWnd);

    5.         chartWnd.Attach(hWndChart, kTypeXY);  
    复制代码
    在刷新的时候我试了炫彩和mfc的:

    1. BOOL CALLBACK MyFunClassRadioMsg1(eventOrMsg_ *pEvent,xcgui_fun_type funType)

    2. {

    3.         CMFC360DemoDlg* pThis = (CMFC360DemoDlg*)pEvent->pClass_fun;



    4.         CWnd *pWnd = CWnd::FromHandle(pThis->m_page1.hWndChart);

    5.         pWnd->ShowWindow(SW_SHOW);


    6.         XWnd_RedrawWnd(pThis->m_page1.hWinChart,true);

    7.         pThis->Invalidate(true);

    8.         return FALSE;

    9. }
    复制代码
    发现问题依然存在。

    例如用炫彩刷新, 现在点击后会出现:
    QQ截图20150608165721.jpg

    鼠标移动到该区域后才会正常显示:
    QQ截图20150605110948.jpg

    我尝试了再代码中点击后使鼠标自动移到该区域 并没有用。但是人为鼠标在该区域移动后 就能显示出来了。
  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2015-6-8 17:31:03 | 显示全部楼层
    你要刷新你的CChart 窗口,让他重绘

    该用户从未签到

     楼主| 发表于 2015-6-8 18:23:28 | 显示全部楼层
    admin 发表于 2015-6-8 17:31
    你要刷新你的CChart 窗口,让他重绘

    我通过:

           
    1. XWnd_RedrawWnd(pThis->m_page1.hWinChart,true);
    复制代码

    或者
           
    1. XWnd_RedrawWndRect(pThis->m_page1.hWinChart,&R_Chart,true);
    复制代码


    刷新 CChart的窗口。
    并且加入了CChart自身的重绘。
    1. pThis->m_page1.chartWnd.ReDraw();
    复制代码



    XWnd_RedrawWnd 并没有效果。
    XWnd_RedrawWndRect 有时候能够刷新出部分窗口,有时候依然不能。


    QQ截图20150608182206.jpg


  • TA的每日心情
    开心
    2022-1-9 18:18
  • 发表于 2015-6-8 20:33:10 | 显示全部楼层
    XWnd_RedrawWnd 是刷新炫彩窗口,你那窗口不是炫彩的. 要用系统API刷新窗口
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

    GMT+8, 2024-9-20 00:45 , Processed in 0.076135 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表