Windows mobile手机上窗体最小化后置icon在消息栏的处理
2010-08-22 12:36:00 来源:WEB开发网mobile手机上窗体最小化后置icon在消息栏的处理.
现在终于真正的开始用vc来编程了.好多问题真是把我搞晕头了.最近在编程的过程中遇到了几个小问题,在不少朋友的帮助下总算是解决了.总结了一下,做了一个test demo.涉及到的几个知识点分别如下.
1.窗体右上角的OK按钮变X.在mobile系统中,正常的情况下,ok表示关闭,X表示最小化.默认情况下,窗体都是ok.点击即关闭.如果想让ok变成X,则在窗体初始化的时候加上这句话即可.
::SHDoneButton(m_hWnd,SHDB_HIDE);// 右上角按钮变成叉
ModifyStyle(m_hWnd,WS_CAPTION,WS_MINIMIZEBOX,SWP_NOSIZE); 从查到的资料上讲也需要第二句,但我没用也可以的.
2.截获窗体最小化消息.当ok变成X后,这时点击X就是把窗体最小化了.有时候我们想截获到这个最小化消息,进行某些处理.比如想实现点X关闭系统.那么就得截获这个消息,然后执行onok().或者最小化后,实现系统消息图标.(后面会讲到).这时就需要重载WindowProc函数了.
LRESULT CDemoDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class
if(message == WM_SIZE)
{
if(wParam == SIZE_MINIMIZED)// we can get minsize message here
{
//OnOK();// if you want to exit by X button.
//hide window and show icon at information bar.
AddSHNotification();
this->ShowWindow(SW_HIDE);
CWnd * desthwnd = GetDesktopWindow();
::SetForegroundWindow(desthwnd->m_hWnd);
return 1;
}
}
return CDialog::WindowProc(message, wParam, lParam);
}
3.最小化到桌面的通知栏. 想实现最小化后,在通知栏出现一个图标,然后点击图标,重新激活程序.这个和mobile qq的功能差不多. 这就用到了AddSHNotification和SHNotificationRemove 等API. 无聊客的blog上关于这个讲的非常详细.可以去参考.我也是参考了他讲的内容.非常感谢无聊客.
4.横屏切换.大多数情况下,都是在onsize函数里重置控件的位置大小.其实可以做两个窗体界面,然后在横屏切换的时候,加载不通的窗体界面.
更多精彩
赞助商链接