SOUI使用过程知识点小结1

Q1 如何看待字符串的问题?

=》将SStringT 看做 CString就行了,这样就容易理解了

 

Q2 设置边框线

=》灵活的使用margin-x 和 margin-y的值 然后设置 colorborder 就可以设置出边框线,在透明的窗口下 比较好看

例子:给窗口设置边框线: margin-x="2" margin-y="2" colorBorder="#B8E0F8"

 

Q3 自绘在那个消息进行

=》在要使用自绘的时候 使用函数OnPaint对函数进行重写,具体的消息是MSG_WM_PAINT_EX
使用BeforePaint(pRT, paint); AfterPaint(pRT, paint); 来保留字体,在XML文件中配置自定义控件的属性 位置

 

Q4 1>!!!err: Load Layout XML Failed! file name: uires\xml\xxxx.xml   出现此类错误的原因

=》XML的解析方式不同:在一个标签页中出现了两个相同的属性的值 就会报错;例如在一个属性下 含有两个name 也会出现此类错误

 

Q5 SOUI和MFC之间的一些联系 消息方面(消息都是类似的)

=》

按钮点击事件:
MFC:
    ON_BN_CLICKED(IDC_EXIT_BTN, &MainDlg::OnBnClickedExitBtn)
    参数:ID,消息函数
    包含在 BEGIN_MESSAGE_MAP 中

SOUI:
    EVENT_NAME_COMMAND(L"btn_close", OnClose)
    参数:控件名,消息函数
    包含在EVENT_MAP_BEGIN() 中
    

消息:(关联控件的事件) 例如点击列表控件
MFC:
    ON_NOTIFY(NM_CLICK, IDC_ITEM_GRD, &ItemParam::OnItemListClick)
    参数:事件ID,控件ID,消息函数
    包含在 BEGIN_MESSAGE_MAP 中
    
SOUI:(消息订阅)
    EVENT_NAME_HANDLER(L"list_Result_Sample", EVT_CMD, OnSampleListClick);
    参数:控件名,事件ID,消息函数
    

中心事件 (同步异步事件)
MFC:
    ON_MESSAGE(WM_ITEM_MEAN_RLU, &MainDlg::OnReceivedItemRlu)
    参数:事件ID,消息函数
    
SOUI:
    MESSAGE_HANDLER_EX(WM_CYCLE_TEST_STOPED, OnReceivedCycleTestStoped)
    参数:事件ID,消息函数

 

Q6 使用hr控件时 发现长度无法调整为更长

=》设置属性:

<hr pos="150,2" size="5" height="130" mode="vertical" colorLine="#cbebfeff" />
注意:size在这个控件中表示线条的宽度 height表示线条的高

 

Q7 SOUI的自绘视频教程

=》上B站 找启程

 

Q8 在SOUI中使用GDI+的一些问题

=》问题:当触发了子控件的OnLbuttonup后
点击主窗口的关闭按钮 无反应
使用buttondown既可解决
使用buttonup会影响到绘图区域之外

 

Q9 在自绘控件的时候通常会有想要设置的一些属性在哪里进行设置

=》通过增加相应的属性 来完成这一操作
将XML文件中设置属性传递给成员变量
例如需要传递一个整型变量: (这样就表示 在XML文件中可以设置一个叫做 CircleNum的属性)
        SOUI_ATTRS_BEGIN()
            ATTR_INT(L"CircleNum", m_PointNum, TRUE)
        SOUI_ATTRS_END()

 

Q10 使用下拉框的点击事件时出现的问题

=》使用ComboBox处理下拉框事件
点击事件不能使用EVT_CMD
必须使用EVT_CB_SELCHANGE 来响应此事件 原因未知 = = 如有知悉 请不吝赐教

 

Q11 SOUI窗口拖动问题

=》在没有包含Caption控件的区域是不能被拖动的,应该可以代码修改,尚未探索,加入
<caption pos="208,8" size="288, 32" show="1" font="adding:0" />
就可以进行拖动了

 

Q12 不使用事件映射来实现事件的响应

=》不需要注册,就可以响应
pHeader->GetEventSet()->subscribeEvent(EVT_HEADER_CLICK,Subscriber(&CMainDlg::OnListHeaderClick,this));
EVT_HEADER_CLICK:消息
OnListHeaderClick:实现的函数 

 

Q13 鼠标的属性

=》cursor="属性"  属性:
auto,hand,text,help……
加入到控件XML中实现效果 将鼠标放置到控件上出现 “各种形状”

 

Q14 如何产生一个异形按钮

=》

按钮的配置:
<button name="btn_test" pos="{250,[10,@150,@50" size="50,50" margin="-3,-3,-1,-1" fontcolorcolorBkgnd="#00FF00" colorBkgnd="#ff000088" cursor="hand">X</button>
实现代码:(放在初始化实现即可)

//演示圆形的按钮如何产生
    SButton *pButton = FindChildByName2<SButton>(L"btn_test");
    if (pButton)
    {
        CRect rc = pButton->GetWindowRect();
        rc.MoveToXY(0,0);    //相当于坐标系的转换了 
        HRGN hRgn = ::CreateEllipticRgn(rc.left, rc.top, rc.right, rc.bottom);
        //HRGN hRgn = ::CreateEllipticRgnIndirect(&rc);        //和上面创建圆一个意思

        CAutoRefPtr<IRegion> pRgn;
        GETRENDERFACTORY->CreateRegion(&pRgn);
        pRgn->SetRgn(hRgn);
        pButton->SetWindowRgn(pRgn, TRUE);

        DeleteObject(hRgn);
    }

 

Q15 如何修改一个控件的属性

=》通过使用函数SetAttribute来修改控件的属性以及一些行为;常用于控件传参或者一些属性的改变
功能描述:有一个按钮,默认鼠标放上去的状态是显示一个手型,这里将其修改为一个小问号 help
代码如下:
SButton *pButton = findchildbyname2<SButton>(L"btn_test");
pButton->SetAttribute(L"cursor",L"help",FALSE);    //通过使用setAttribute来增加或者修改控件对应的属性
SetAttribute(str1,str2,bFlag)
str1:表示控件的属性
str2:设置的值
bFlag:默认为FALSE

 

上述描述如有问题,请留言告知……多看demo收获还是挺多的

因为没有文档,所以看着代码真的处处有惊喜,还有好多不懂,后续再一一补充

最后:SOUI真的能带给人很多惊喜,随着慢慢的深入,越来越有意思了

最后需要转载的 带上地址吖:

参照:https://blog.csdn.net/Wuzm_

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值