duilib界面开发问题

神农藏百草 2018-06-29 09:03:52
我要做一个类似地铁上面站点信息的界面,然后下面做一个Combo控件,里面添加站点名称,在里面选择站点,然后通过一个Button按钮确定选择的站点,实现界面上相应的功能,如当前选择的站点为红色,前一个站点和后一个站点为黑色,前一个站点以前的都为灰色。
#pragma once

#include <UIlib.h>
#include <string.h>
using namespace DuiLib;

#ifdef _DEBUG
# ifdef _UNICODE
# pragma comment(lib, "DuiLib_ud.lib")
# else
# pragma comment(lib, "DuiLib_d.lib")
# endif
#else
# ifdef _UNICODE
# pragma comment(lib, "DuiLib_u.lib")
# else
# pragma comment(lib, "DuiLib.lib")
# endif
#endif
struct station{
char StationName[13];
COptionUI* pOption;
CButtonUI* pLabel;
};

class CDuiFrameWnd : public WindowImplBase
{
public:
virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); }
virtual CDuiString GetSkinFile() { return _T("Qtitle.xml"); }
virtual CDuiString GetSkinFolder() { return _T(""); }


void Init()
{
struct station cStation,cStation1,cStation2,cStation3,cStation4,cStation5,cStation6;

strcpy(cStation.StationName,"佛主岭");
strcpy(cStation1.StationName,"高新五路");
strcpy(cStation2.StationName,"高新四路");
strcpy(cStation3.StationName,"流芳园横街");
strcpy(cStation4.StationName,"工程大学");
strcpy(cStation5.StationName,"光谷大道");
strcpy(cStation6.StationName,"当代国际花园");
p_surebtn = static_cast<CButtonUI*>(m_pm.FindControl(_T("StationChoice")));
//这里获取到的指针可能是空的,可以断点看看
CComboUI* pAccountCombo = static_cast<CComboUI*>(m_pm.FindControl(_T("StationMess")));
CEditUI* pAccountEdit = static_cast<CEditUI*>(m_pm.FindControl(_T("accountedit")));
//指针判断,如果指针为空,直接操作会崩溃?所以都需要判断下,程序健壮性
if(pAccountCombo && pAccountEdit)pAccountEdit->SetText(pAccountCombo->GetText());
pAccountEdit->SetFocus();

}
void OnPrepare(){
CComboUI* pStationCombo = static_cast<CComboUI*>(m_pm.FindControl(_T("StationMess")));

}
//duilib窗口的初始化函数
virtual void InitWindow()
{
// SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0); //窗口的最大化
}
virtual void Notify(TNotifyUI& msg)
{

if(msg.sType == _T("click"))
{
if(msg.pSender->GetName() == _T("p_surebtn"))
{
COptionUI* pControl = static_cast<COptionUI*>(m_pm.FindControl(_T("StationChoice")));

}
}
else if(msg.sType == _T("itemselect"))
{
if(msg.pSender->GetName() == _T("StationMess"))
{
//代码有问题,m_pm未初始化???
CComboUI* pAccountCombo = static_cast<CComboUI*>(m_pm.FindControl(_T("StationMess")));
pAccountCombo->GetText();
}
}
}
//OnCreate这里有问题,还没有改,应该不需要用回调
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
styleValue &= ~WS_CAPTION;
::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);

m_pm.Init(m_hWnd);
m_pm.AddPreMessageFilter(this);
CDialogBuilder builder;
CDialogBuilderCallbackEx cb;
CControlUI* pRoot = builder.Create(_T("Qtitle.xml"), (UINT)0, &cb, &m_pm);
ASSERT(pRoot && "Failed to parse XML");
m_pm.AttachDialog(pRoot);
m_pm.AddNotifier(this);

Init();
return 0;
}


public:
CPaintManagerUI m_pm;
private:
CButtonUI* p_surebtn;

};

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{



CPaintManagerUI::SetInstance(hInstance);

CDuiFrameWnd duiFrame;
duiFrame.Create(NULL, _T("DUIWnd"), WS_VISIBLE | WS_POPUP, WS_EX_WINDOWEDGE);
duiFrame.CenterWindow();
duiFrame.ShowModal();

return 0;
}
求大神指点啊,新人,很懵逼,谢谢谢谢
...全文
395 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
神农藏百草 2018-07-02
  • 打赏
  • 举报
回复
引用 1 楼 zhao3132453 的回复:
不用声明m_pm吧,有个m_paintmaneger什么的能直接用
声明的m_pm就相当于m_paintmanager啊,而且你说的这个也是需要声明的啊
半雨微凉丶 2018-07-01
  • 打赏
  • 举报
回复
不用声明m_pm吧,有个m_paintmaneger什么的能直接用
内容概要:本文深入探讨了DMA高效数据传输实现方案在高性能计算芯片领域的应用与架构创新,重点分析了缓存一致性DMA、多通道DMA架构及其在数据中心SmartNIC、存算一体芯片和Chiplet互连等场景中的实践。文章结合RISC-V架构,通过Chisel硬件描述语言和C语言驱动代码,展示了多通道DMA控制器的设计与实现,涵盖仲裁机制、AXI总线适配、分散-聚集传输模式及中断处理等核心技术,并强调了性能优化与验证方法。最后展望了AI调度、光互连、近存计算与安全DMA等未来发展方向。; 适合人群:具备数字电路与计算机体系结构基础,从事芯片设计、嵌入式开发或高性能计算相关工作的研发人员,尤其是有1-5年经验的工程师与研究人员。; 使用场景及目标:①理解DMA在突破“内存墙”和降低系统能耗中的关键技术路径;②掌握多通道DMA控制器的硬件设计与驱动开发方法;③应用于SmartNIC、AI加速器、Chiplet等高性能芯片系统的数据传输架构设计;④为构建高带宽、低延迟、高能效的异构计算平台提供参考。; 阅读建议:此资源融合硬件设计与软件驱动,建议结合Chisel仿真与RISC-V平台实操,重点关注DMA与缓存一致性、异构计算单元的协同机制,并通过性能计数器与错误注入手段进行系统级验证。
内容概要:本文围绕基于共享储能服务的智能楼宇双层优化配置展开研究,通过Matlab代码实现相应的数学建模与仿真分析,提出一种结合上层规划与下层运行的协同优化框架,旨在提升智能楼宇能源系统的经济性、能效水平与电网互动能力。研究充分考虑光伏发电、负荷需求、储能充放电等多元因素,采用先进的优化算法(如智能优化算法)对共享储能资源的容量配置与运行调度进行精细化决策,有效降低用能成本,提高可再生能源消纳率,并增强系统运行的稳定性与灵活性。全文涵盖模型构建、算法设计、求解流程及结果验证,具备较高的理论深度与工程应用价值; 适合人群:具备电力系统、能源管理、优化算法等相关背景的科研人员、研究生,以及从事智能电网、综合能源系统、建筑节能等领域的工程技术人员; 使用场景及目标:①用于智能楼宇及园区级能源系统的规划与运行优化研究;②支撑共享储能机制下的资源配置、经济调度与商业模式设计;③作为Matlab仿真教学与高水平论文复现的典型案例,帮助深入理解双层优化模型、主从博弈结构及智能算法在能源系统中的应用; 阅读建议:建议结合提供的Matlab代码进行同步学习与调试,重点关注上下层模型的耦合关系与迭代求解过程,可进一步拓展至多主体协同、不确定性建模(如风光出力波动)及鲁棒优化等前沿方向开展深化研究。
内容概要:本文《【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)》系统阐述了基于核主成分分析(KPCA)的非线性故障检测方法,重点实现了T²和Q统计量的构建与可视化过程。通过Matlab编程,将高维非线性数据映射至特征空间,提取主成分并建立监控模型,利用T²和Q指数对工业过程中的异常状态进行联合监测与诊断,有效提升了复杂系统中早期故障的识别能力,具有较强的工程实用性与理论参考价值。; 适合人群:适用于具备信号处理、控制工程或工业过程监测背景,熟悉Matlab编程语言,并从事故障诊断、智能运维、自动化系统研发等相关工作的研究生、科研人员及工程技术开发者。; 使用场景及目标:①应用于化工、电力、制造等流程工业中的关键设备状态监控与早期故障预警;②作为学术研究中KPCA算法的仿真验证平台,用于对比分析不同非线性降维方法的检测性能;③深化对非线性过程监控中统计指标设计与阈值判定机制的理解与实践应用。; 阅读建议:建议读者结合所提供的Matlab代码逐模块运行与调试,深入掌握KPCA建模流程、主成分子空间划分及T²、Q统计量的计算逻辑,鼓励在标准数据集(如TE过程)上复现实验结果,并尝试扩展至其他非线性场景以提升模型泛化能力。

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧