SOUI的一个动态创建控件的小例子

涉及知识点:

  1. 获取可用的屏幕个数以及分辨率
  2. SOUI中的线性布局的使用
  3. SOUI中的动态插入xml的方法(也就是动态的创建控件)
  4. 对动态创建出来的控件,进行一个点击事件的注册

目的:获取屏幕个数,生成对应的按钮,点击对应的按钮,设置窗体到对应的屏幕上;

和上一个例子的基础代码一致 这边直接上代码

void CMainDlg::OnGetScreenInfo()
{
	EnumDisplayMonitors(NULL, NULL, &MonitorEnumProc, reinterpret_cast(&m_vctStSPCfg));

	//显示获取到的屏幕信息
	//SMessageBox(this->m_hWnd, L"Info", L"Title", MB_OK);

	//根据获取到的屏幕个数 动态创建两个按钮
	int num = m_vctStSPCfg.size();

	//Step1 先获取窗口的name
	SWindow* pwnd = FindChildByName(L"wnd_insert");
	pwnd->SetAttribute(L"layout", L"hbox");	//将布局方式设置为线性布局 那么后面的按钮 就不用考虑位置 直接设置大小即可
	pugi::xml_document xml;
	SStringT KPageXml = L"

上面需要注意两个点

  1. EnumDisplayMonitors函数的回调函数的返回值一定是TRUE 否则只能检测一个屏幕,并不会遍历
  2. 在放按钮的控件的窗口中使用线性布局,就不用考虑控件的位置了,直接设置控件的大小即可

 

你可能感兴趣的:(SOUI自学笔记,C++,SOUI)