在使用SOUI做项目遇到的一些问题

使用SOUI开源库做出来的界面效果确实比常规的MFC的效果好看,但是对新手而言它的友好性不高(缺少说明文档);但是不妨碍使用

问题一:button按钮点击没有反应(这种问题常出现于新创建的窗口)

问题原因以及解决方案:使用控件的时候(在创建的模态对话框的时候)资源文件XML里面的结构是 <SOUI><root>  xxx  </root></SOUI>xxx里面嵌套一个WIndow 然后将所有控件放置在上面才能生效 具体可以参考主窗口界面  (通过实验 和 观察其他的XMl配置文件可知)


问题二:控件的显示隐藏和不可用状态的切换

首先使用FindChildByName2获取控件的指针 然后可以用如下函数进行操作

不可用:EnableWindow //FALSE:不可用   TRUE:可用

隐藏起来:SetVisible //FALSE:不可见   TRUE:可见


问题三:使用消息订阅的时候 找对应控件对应的事件参数(events.h里面对应的参数)

控件的单击问题 可以使用EVT_CMD来进行监听(这个问题的产生来源于 我想监控CheckBox的状态)

控件的单击事件 可以通过使用关键字 EVT_CMD来进行处理

滑块对应的事件宏:EVT_SCROLL

点击事件(任何控件):EVT_CMD

编辑控件(不仅仅适用于Edit,所有的编辑控件):EVT_RE_NOTIFY

其他的我也没用过,等用到了 再补充


问题四:修改SOUI的demo动态图的显示问题

解决方案:需要先按照皮肤加载进去才行 必须的有skin属性 否则无法获取到该控件的句柄(这种设定 我也不太明白 = =)


问题五:使用TabCtrl控件的问题

需要注意的是几个参数的设置问题,属性设置:tabAlign="position" (position:left/top/right/bottom)

curSel设置当前选中项目 show="1" 这个属性很关键


问题六:使用Ontimer来显示时间 SetTiemr和KillTimer的使用(实时的显示时间)

在构造函数中使用SetTimer 设置定时器
然后重写OnTimer函数 进行时间的处理

最后在析构函数中使用KillTimer来“杀死”定时器

这个需要注意的是添加 MSG_WM_TIMER(OnTimer) //使用定时器

然后重写OnTimer函数


问题七:关于加载模态对话框的一些问题(SOUI)

解决方案:在SOUI中加载对话框一定是带句柄的,那么包含的模式和窗口的结构差不多
资源文件XML中一定是用SOUI来进行最外层的包裹 <SOUI></SOUI>
这样才能显示,另外新建的对应的窗口类一定是继承SHostDialog这样才可以使用DoModal函数进行模态

对话框的建立


问题八:关于新创建的窗口的关闭问题

解决方案:一般来使用OnClose无法将其关闭(界面销毁了,但是不能进行其他操作了,卡住了),一般新建的模态对话框都是继承自ShostDialog这个类,可以使用基类中的OnCancel函数进行关闭


后面再看遇到什么问题,再添加~ 多看demo

猜你喜欢

转载自blog.csdn.net/Wuzm_/article/details/80599904