WindowsCE 应用程序开发常用功能的api(基于EVC)

导读:
   1 得到当前进程的 HINSTANCE
  HMODULE hModule = ::GetModuleHandle(NULL);
  HINSTANCE hInst = hModule;
   2 、得到当前进程的绝对路径
  GetModuleFileName()函数,该函数的第一个参数如果为NULL,则返回最后一个发出WM_CREAT 消息的文件的绝对路径。
   3 、手工创建状态栏上应用程序的图标
  CreateStatusIcon函数就是调用CreateIconIndirect用来手工创建16x16图标
   4 、用点对点消息队列进行进程间通信
  CreateMsgQueue();
  OpenMsgQueue();
  GetMsgQueueInfo();
  ReadMsgQueue();
  WriteMsgQueue();
  CloseMsgQueue();
  RequestDeviceNotifications();
   5.隐藏taskbar的几种方法:
  5.1全屏时隐藏,退出全屏时显示,在这种情况下可以先Findwindow(“HHTASKBAR”),然后用movewindow移出全屏范围之外,需要时再移入
  5.2一直隐藏(就是从系统起来之后就不希望看到taskbar),可以通过Findwindow,和showwindow来实现,也可以通过修改taskbar.cpp(public/shell/oak/hpc/explorer/taskbar/)中的CTaskBar::Register函数,让其直接返回true
  5.3动态显示和隐藏,可以修改platform.reg文件 HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/AutoHide("default"=dword:1)和HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/OnTop("default"=dword:0)以及 HKEY_LOCAL_MACHINE/Software/Microsoft/Shell/SlideTaskBar("default"=dword:0)
   6.对软件盘操作的函数:
  SipGetInfo(&si)
  SipSetInfo(&si)
  SipShowIM(SIPF_ON)
   7.增加或删除“开始”启动程序
  在stmenu.cpp(public/shell/oak/hpc/explorer/taskbar)中对stmenuData这个结构体数组增加或删除成员
   8.流驱动注册表中的index:
  大家都知道驱动设备的前缀prefix要用3个大写字母表示,而index则是驱动设备的索引。当在应用程序中用createfile打开设备的时候,该函数的第一个参数就是prefix和index的组合
   9.EVC中打开网页程序
  SHELLEXECUTEINFO ShExecInfo = {0};
  ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
  ShExecInfo.hwnd = NULL;
  ShExecInfo.lpVerb = NULL;
  ShExecInfo.lpFile = TEXT("http://www.163.com");
  ShExecInfo.lpParameters =NULL;
  ShExecInfo.lpDirectory = NULL;
  ShExecInfo.nShow = SW_SHOWNORMAL;
  ShellExecuteEx(&ShExecInfo);
   10. 取得设备信息
  取得设备OEM信息:
  TCHAR wszMachineName[128];
  SystemParametersInfo(SPI_GETOEMINFO, sizeof(wszMachineName),&wszMachineName, 0);
  取得平台信息:
  TCHAR wszVersion[256];
  SystemParametersInfo(SPI_GETPLATFORMTYPE, sizeof(wszVersion),&wszVersion, 0);
   11.wince屏幕的旋转
  从Windows CE 4.0开始, DEVMODE结构多了一个属性 dmDisplayOrientation,你可以通过这个属性来取得或设置屏幕旋转模式,它对应的值如下。
  DMDO_0 不旋转
  DMDO_90 旋转90度
  DMDO_180 旋转180度
  DMDO_270 旋转270度
  切换屏幕旋转模式通过调用 ChangeDisplaySettingsEx来实现,如:
  DEVMODE devmode = {0};
  devmode.dmSize = sizeof(DEVMODE);
  devmode.dmDisplayOrientation = DMDO_90; //水平模式
  devmode.dmFields = DM_DISPLAYORIENTATION;
  ChangeDisplaySettingsEx(NULL, &devmode, NULL, 0, NULL);
  取得当前模式的代码如下:
  DEVMODE devmode = {0};
  devmode.dmSize = sizeof(DEVMODE);
  devmode.dmFields = DM_DISPLAYORIENTATION;
  ChangeDisplaySettingsEx(NULL, &devmode, 0, CDS_TEST, NULL);
  通过 devmode.dmDisplayOrientation 的值可以判断当前模式。
  值得注意的是,这样切换模式并不是永久的,当设备重新起动后,就会还原为初始状态。
  如果你需要在保留切换的屏幕模式,可以通过设置注册表中HKEY_LOCAL_MACHINE/System/GDI/Rotation 下的两个键值实现
  Angle - DWORD (0, 90, 180, 270)
  LandscapeMode - DWORD (0,1)
   12.拷屏并保存为bmp图片
  void SaveDCToBMP(HDC hDC,int nStartX,int nStartY,
  int nWidth,int nHeight,LPCTSTR szFileName)
  {
  //定义图形色深
  int iPixel = 32;//位图信息头
  LPBITMAPINFO lpbmih = new BITMAPINFO;
  lpbmih->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
  lpbmih->bmiHeader.biWidth = nWidth;
  lpbmih->bmiHeader.biHeight = nHeight;
  lpbmih->bmiHeader.biPlanes = 1;
  lpbmih->bmiHeader.biBitCount = iPixel;
  lpbmih->bmiHeader.biCompression = BI_RGB;
  lpbmih->bmiHeader.biSizeImage = 0;
  lpbmih->bmiHeader.biXPelsPerMeter = 0;
  lpbmih->bmiHeader.biYPelsPerMeter = 0;
  lpbmih->bmiHeader.biClrUsed = 0;
  lpbmih->bmiHeader.biClrImportant = 0; //创建位图数据
  HDC hdcMem;
  HBITMAP hBitMap = NULL;
  CBitmap *pBitMap = NULL;
  CDC *pMemDC = NULL;
  BYTE *pBits; hdcMem = CreateCompatibleDC(hDC);
  hBitMap = CreateDIBSection(hdcMem,lpbmih,DIB_PAL_COLORS,(void **)&pBits,NULL,0);
  pBitMap = new CBitmap;
  pBitMap->Attach(hBitMap);
  pMemDC = new CDC;
  pMemDC->Attach(hdcMem);
  pMemDC->SelectObject(pBitMap);
  
  pMemDC->BitBlt(0,0,nWidth,nHeight,CDC::FromHandle(hDC),nStartX,nStartY,SRCCOPY); BITMAPFILEHEADER bmfh;//位图文件头
  ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER));
  *((char *)&bmfh.bfType) = 'B';
  *(((char *)&bmfh.bfType) + 1) = 'M';
  bmfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);
  bmfh.bfSize = bmfh.bfOffBits + (nWidth * nHeight) * iPixel / 8; int iBMPBytes = nWidth * nHeight * iPixel / 8;
  CFile file;
  if(file.Open(szFileName,CFile::modeWrite | CFile::modeCreate))
  {
  file.Write(&bmfh,sizeof(BITMAPFILEHEADER));
  file.Write(&(lpbmih->bmiHeader),sizeof(BITMAPINFOHEADER));
  file.Write(pBits,iBMPBytes);
  file.Close();
  }
  
  DeleteObject(hBitMap);
  DeleteObject(hDC);
  pMemDC->DeleteDC();
  delete pMemDC; pMemDC = NULL;
  delete pBitMap; pBitMap = NULL;
  delete lpbmih; lpbmih = NULL;
  } 13.识别当前系统语言
  一般系统语言的表示是
  0409 // Enaglish US
  0404 // 繁体中文
  0804 // 简体中文
  可以用GetSystemDefaultLangID()) 或GetUserDefaultLangID()来获取
  switch(GetSystemDefaultLangID()/*GetUserDefaultLangID()*/) {
  case 0x0804:
  break;
  case 0x0404:
  break;
  case 0x0409:
  break;
  }

本文转自
http://blog.yesky.com/495/vincentzhou/1646495.shtml
Windows CE API手册》是Blitz Force团队继 Xarm和ROS开发系统之后之后又一重要作品。本手册收录并翻译了 MSDN Library for Visual Studio 2008 中超过2000 个API函数和宏的资料信息。分为:系统函数、COM函数、驱动函数、网络通信4个大类,有以下特点: 01. 资料权威。本手册中收录的绝大多数函数和宏都取自微软MSDN,权威性比较有保证。部分从DLL中找到的API在MSDN中尚未介绍。我们收录这部分MSDN未介绍的API主要是认为这些API似乎比较重要,希望有熟悉这部分API使用的高手能够多多指教。 02. 分类详细。本手册根据API函数的功能进行了详细分类。通过分类 方便读者查找和扫描学习API,提高学习效率。 03. 提供编程示例和开发经验。本手册取自Xarm开发系统,我们已经用Xarm系统试验了1000个左右的函数,在试验中获得的经验教训都保存在本手册中。用户使用本手册除了可以查询函数的使用方法,还可以参考我们提供的心得体会加深对API的理解。查看Xarm编写的函数示例可以到我们的联系站点下载Xarm 1.0。 04. 不断更新。本手册1.0版在2008年4月底完成后,发给Blitz Force队员做内部测试并收到很多反馈意见,本次发布的是2.0版。我们还会继续努力发布新的版本,根据新系统增加新函数,不断完善旧函数说明,提供更多示例。希望使用本手册的朋友如果发现手册中有错误或者有好的改进意见给我们发邮件或者留言。《作者简介》中有详细的联系方式。
Windows CE API手册》v2.0 说明 Blitz Force-加百力的个人标志:带大卫星的黑鹰 《Windows CE API手册》是Blitz Force团队继 Xarm和ROS开发系统之后之后又一重要作品。本手册收录并翻译了 MSDN Library for Visual Studio 2008 中超过2000 个API函数和宏的资料信息。分为:系统函数、COM函数、驱动函数、网络通信4个大类,有以下特点: 01. 资料权威。本手册中收录的绝大多数函数和宏都取自微软MSDN,权威性比较有保证。部分从DLL中找到的API在MSDN中尚未介绍。我们收录这部分MSDN未介绍的API主要是认为这些API似乎比较重要,希望有熟悉这部分API使用的高手能够多多指教。 02. 分类详细。本手册根据API函数的功能进行了详细分类。通过分类 方便读者查找和扫描学习API,提高学习效率。 03. 提供编程示例和开发经验。本手册取自Xarm开发系统,我们已经用Xarm系统试验了1000个左右的函数,在试验中获得的经验教训都保存在本手册中。用户使用本手册除了可以查询函数的使用方法,还可以参考我们提供的心得体会加深对API的理解。查看Xarm编写的函数示例可以到我们的联系站点下载Xarm 1.0。 04. 不断更新。本手册1.0版在2008年4月底完成后,发给Blitz Force队员做内部测试并收到很多反馈意见,本次发布的是2.0版。我们还会继续努力发布新的版本,根据新系统增加新函数,不断完善旧函数说明,提供更多示例。希望使用本手册的朋友如果发现手册中有错误或者有好的改进意见给我们发邮件或者留言。《作者简介》中有详细的联系方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值