这两个小软件我全部是用duilib做的,因为在wince平台下面,并且从别人那里拷过来,所以很多东西都不是那么好用,需要自己去找bug.
一、物件溯源软件:该软件是用在警察的物件管理方面,也有跟数据库进行交互。
1、在项目中遇到的问题
在跟数据库交互方面,一直是我的短板,所以在跟数据库交互那个页面我专门用了C#进行开发,从而导致了在第一次进入那个页面的时候特别卡。
在子窗口显示的时候,使用duilib,无法像在PC机那样子的domodal,当弹出子窗口的时候,点击父窗口还是有响应,所以这里我做了一个标记当子窗口弹出来的时候,所有的父窗口的消息全部过滤掉。
在子窗口显示的时候,有时会用到子窗口调用子窗口的情况,又因为子窗口的0点坐标是基于父窗口的左上角。而移动的时候总是基于整个屏幕的坐标,所以总是出现一移动子窗口就整个窗口不见了。这里的解决方案是在handlemessage中进行对子窗口操作。
在wm_lbuttondown时,getcursorpos取得当前坐标,然后根据当前的位置在屏幕中的位置为基点。然后记得::SetCapture
在wm_mousemove时,取当前的鼠标坐标,然后计算跟该消息的前一点消息的比较,计算出位移;再根据父窗口的原坐标和该窗口的原坐标来进行MoveWindow。
comboui跟pc机的初始化不一样,在CComboWnd::Init下面的::SendMessage(hWndParent, WM_ACTIVATE, TRUE, 0L),这句话在wince下会导致下拉框显示不出来,所以需要注释掉。
在comboui不能直接在上面编辑数据,这是就需要使用editui配合comboui一起使用。这里可以参考例子中的游戏大厅的那个。里面就用到了在输入用户名的时候,使用该方法。
二、水表
水表还是比较简单的一个,主要的问题在于跟客户的协议的理解大小端模式的问题。然后在进行显示画波形那里,在使用moveto, lineto的时候,速度比较慢,因为wince的机器比较卡,所以直接使用了SetViewPortOrgEx, 再配合Polyline进行绘制波形。简单速度又快。