您的位置:首页 > 产品设计 > UI/UE

SoUI笔记

2015-12-30 00:00 225 查看
摘要: 使用SoUI开发界面程序时,经常碰到一些问题,找了许久才找到原因,因此将这些记录下来,当作备忘。

自定义弹出框:
1)弹出框的背景需要在入口函数安装钩子(用完需要卸载钩子CMenuWndHook::UnInstallHook):



2)弹出框若提示语内容太多,换行后需要自适应高度,需要注意设置frameSize属性,该属性是必须:



自定义的非模式窗口,如果宽度或者高度小于200,需要设置minSize属性,因为SHostWnd默认最小是200x200。包括切换系统主题或者修改屏幕分辨率的时候,界面都会随之改变大小,设置minSize属性就可以强制窗口大小不变。

当使用SHostDialog或者继承类显示自定义的弹出窗口时,该窗口的布局文件根节点<SOUI>不能设置wndType="appMain"属性,否则该窗口退出时,消息会传递到父窗口,导致父窗口(主窗口)也跟着退出。

当<text>使用multiLines="1"时,为了让其父窗口能够自适应文本的高度,<text>必须设置maxWidth属性





启用Win7的毛玻璃效果,需要先设置窗口的<SOUI>节点属性translucent="0",然后注释OnCreate里面的DwmExtendFrameIntoClientArea,并调用DwmEnableBlurBehindWindow:

int CMainDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
#ifdef DWMBLUR	//win7毛玻璃开关
//MARGINS mar = {-1};
//DwmExtendFrameIntoClientArea(m_hWnd, &mar);

DWM_BLURBEHIND bb = {0};
bb.dwFlags = DWM_BB_ENABLE;
bb.fEnable = true;
bb.hRgnBlur = NULL;
DwmEnableBlurBehindWindow(m_hWnd, &bb);
#endif
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SoUI