Chinaunix首页 | 论坛 | 博客
  • 博客访问: 668858
  • 博文数量: 134
  • 博客积分: 3158
  • 博客等级: 中校
  • 技术积分: 1617
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-30 22:36
文章分类

全部博文(134)

文章存档

2012年(2)

2011年(28)

2010年(68)

2009年(35)

2008年(1)

我的朋友

分类: 嵌入式

2010-05-27 15:22:19

原文地址:http://www.cnblogs.com/qqiangsir/archive/2009/02/15/1391115.html
我这里再重新引用过来,是就其中一些内容作说明的.我实践的时候用的是ppc 6的版本.

现在终于真正的开始用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); 从查到的资料上讲也需要第二句,但我没用也可以的.

注:我这里进行实践的时候,发现有第二句的话,就没有x了,只用第一句,能够出现x,而且是隐藏了,自带的任务管理器看不到,我自己下载的任务管理器CeleTask 可以在进程查看里面看到.

追注:我今天又解决了一个头痛的问题,就是我隐藏的程序,用this->ShowWindow(SW_HIDE);.窗口是隐藏了,但是,却在任务管理器里面看不到.我一直找不到办法.不过,今天用了这个代替了原来的,就可以了. this->ShowWindow(SW_MINIMIZE);

 

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函数里重置控件的位置大小.其实可以做两个窗体界面,然后在横屏切换的时候,加载不通的窗体界面.我们在新建项目的时候也会看到,向导会自动生成了一个以_WIDE结尾的窗体.这个就是横屏的窗体,我们可以在这个界面上布置我们横屏时的窗体控件.具体使用的时候,在onsize事件里判断.要注意的是,必须在初始化的时候加上这么一句:

fxEnableDRA(TRUE);//in order to change wide form. 

#if defined(_DEVICE_RESOLUTION_AWARE) && !defined(WIN32_PLATFORM_WFSP)
void CDemoDlg::OnSize(UINT /*nType*/, int /*cx*/, int /*cy*/)
{
 if (AfxIsDRAEnabled())
 {
  DRA::RelayoutDialog(
   AfxGetResourceHandle(),
   this->m_hWnd,
   DRA::GetDisplayMode() != DRA::Portrait ?
   MAKEINTRESOURCE(IDD_DEMO_DIALOG_WIDE) :
   MAKEINTRESOURCE(IDD_DEMO_DIALOG));
 }
}
#endif

嗯,先写这么多,累了.把源码附上,OK.

 

/Files/qqiangsir/ComboBoxDemo.rar

注:上面的是原件.其中有些错误,我经过在6.1的版本上的测试开发修正后又发了上来.
原版:
文件: ComboBoxDemo 原件..rar
大小: 59KB
下载: 下载
修改后的版本.
文件: ComboBoxDemo 2010-5-27.rar
大小: 2614KB
下载: 下载
 
 
 
也找到了,无聊客的文章:"如何使用PPC Notification (By 无聊客)"
阅读(966) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~