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真的能带给人很多惊喜,随着慢慢的深入,越来越有意思了
最后需要转载的 带上地址吖: