WinCE应用程序开发常见问题解答(三)(转载)

原创 2007年09月24日 15:45:00
--------------------------------------------------------------------------------
1·  我使用CFileDialog创建了一个浏览按钮,默认目录始终是显示"All Folders"和在"/My Device/My documents"下。怎样改变初始目录到"/My Device"。使用fileDlg.m_ofn.lpstrInitialDir = TEXT("
file://My/
Device");,但是没有改变默认显示的目录。
lpstrInitialDir指向一个指定初始文件目录的字符串。如果为NULL,将使用系统的根目录。尽量尝试一下lpstrInitialDir为NULL。
--------------------------------------------------------------------------------
2·  在Pocket PC任务栏上可能有X和OK按钮吗?
不可能,至少没有象WisBar的第三方工具。
--------------------------------------------------------------------------------
3·  如何禁止用户改变日期和时间?有可能实现吗?
你可能用自己的程序替代/windows/clock.exe,但是,它们可以通过另外的程序处理这个。同样,在同步时ActiveSync改变设备的时间与PC匹配。
--------------------------------------------------------------------------------
4·  我有一个xscal cpu的ipaq 3970设备,但是在eMbedded Visual C++ 3.0上没有目标类型。我应该在EVC3.0上使用什么类型。这个问题也发生在安装程序Cabwiz.exe上。
你可以使用ARM类型。XScal基于ARM体系。
--------------------------------------------------------------------------------
5·  如何使程序在后台运行?
最小化程序将使程序进入后台,因此只要在程序启动时最小化,那么它将运行在后台。
--------------------------------------------------------------------------------
6·  我准备去掉SIP按钮。我在OnInitDialog事件中使用SHFullScreen。然而SIP按钮仍然可见,忘记做什么了吗?
代码如下:
// SHFullScreen fails if dialog box is not foreground.
SetForegroundWindow();
// Go to the full screen mode
SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON | SHFS_HIDESTARTICON);
不能在OnInitDialog中使用SHFullScreen,因为对话框还没有可见。你应该传递一个自定义消息,在那个消息调用这个函数。
也许下面这段代码会有用:
void PFCSipButtonShow( BOOL bShow )
{
HWND hWnd = ::FindWindow( _T( "MS_SIPBUTTON" ), NULL );
if (hWnd == NULL)
return;
if (bShow)
::ShowWindow( hWnd, SW_SHOW );
else
::ShowWindow( hWnd, SW_HIDE );
} // PFCSipButtonShow
--------------------------------------------------------------------------------
7·  如何在Pocket PC2002模拟器上安装Pocket PC程序?
PPC2002模拟器没有模拟ARM处理器,因此你必须有x86 CPU的二进制文件和相应的安装程序。只需使用文件浏览器复制cab文件到模拟器,然后执行它。商业程序的安装包通常不包含x86的二进制程序。如果你没有x86处理器的程序发布版本,你不能做这个安装。如果程序是你自己的,你可以创建一个x86的版本,之后创建一个安装CAB。
--------------------------------------------------------------------------------
8·  如何在eVC程序中读取普通的图标文件?
在PC程序中使用ExtractIconEx(),但是在Pocket 设备好象不工作。缺少了什么?PC图标文件在Pocket PC环境是非法的?或者需要转换格式?
不幸的是,在Pocket PC上没有API去读取图标。因此,你不得不手工解析图标文件。
--------------------------------------------------------------------------------
9·  如何绘制一个透明的圆呢?
我想使用eVC++和GDI在Pocket PC 2002上绘制一个圆。我使用它绘制了直线,它处理的很好:
hbrOld =(HBRUSH) SelectObject(hDC, CreatePatternBrush(RGB(0,255,0)));
hpnOld =(HPEN) SelectObject(hDC, CreatePen(PS_SOLID, 2, RGB(255,0,0)));
Ellipse( hDC, 10, 10, 20, 20);
DeleteObject( SelectObject (hDC, hbrOld) );
DeleteObject( SelectObject (hDC, hpnOld) );
但是如何绘制一个透明的圆呢?有PS_NULL这样画笔类型吗?
可以使用GetStockObject()得到一个NULL_BRUSH或HOLLOW_BRUSH(这两个是相同的)。然后用SelectObject选择它,就象你已经做的那样。
--------------------------------------------------------------------------------
10·  假定我知道程序的名称,关闭运行着的eVC的程序使用什么API?
如果你知道程序的名称,并且假定与主窗口的名称相同,那么你可以使用FindWindow得到那个窗口的句柄,然后传送WM_CLOSE消息到那个窗口。
HWND hwnd = FindWindow(NULL, _T("APPLICATION NAME"));
if ( hwnd)
PostMessage(hwnd, WM_DESTROY, 0, 0);
--------------------------------------------------------------------------------
11·  如何从PC设置PDA的时间?
最简单的办法是写一个自定义的RAPI函数,通过CeRapi调用设备的SetSystemTime.
--------------------------------------------------------------------------------
12·  怎样使用WriteBinary,我不明白第二个参数(LPBYTE):
BOOL CVORegistry::WriteBinary(LPCTSTR pcszKey, LPBYTE pData, DWORD cbData)
第二个参数是指向包含你想写到注册表的二进制数据的缓冲。
BYTE data[] = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef };
extern CVORegistry reg;
reg.WriteData(_T("BinaryData"), data, sizeof(data));
--------------------------------------------------------------------------------
13·  Windows CE支持钩子API吗?这样我们可以监视需要的时间。如果支持,用法也象Windows 2000那样吗?
坏消息:CE不支持钩子。
--------------------------------------------------------------------------------
14·  我不能使用Pocket PC上CDialog的TitleBar,我能用静态文本框控件替代,使之与TitleBar相似。有办法显示TitleBar吗?
大多数Pocket PC上的对话框是全屏的,没有自己的主题栏,而是使用系统任务栏。你可以创建一个非全屏对话框(象消息框那样)。
--------------------------------------------------------------------------------
15·  如何在程序中关闭(suspend)Pocekt PC?
方法1:虚拟关机键
::keybd_event(VK_OFF, 0, 0, 0);
::keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
方法2:调用未公开函数PowerOffSystem()
extern "C" __declspec(dllimport) void PowerOffSystem();
--------------------------------------------------------------------------------
16·  如何在程序中重启(soft reset)Pocekt PC?
#include
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern "C" __declspec(dllimport) BOOL KernelIoControl(
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned);
BOOL ResetPocketPC()
{
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
}
--------------------------------------------------------------------------------
17·  如何在程序中硬启动(hardware reset)Pocekt PC?
注意:使用此段代码会将您的Pocket PC的用户数据全部清空。
#include
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern "C" __declspec(dllimport)void SetCleanRebootFlag(void);
extern "C" __declspec(dllimport) BOOL KernelIoControl(
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned);
BOOL HardResetPocketPC()
{
SetCleanRebootFlag();
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
}
--------------------------------------------------------------------------------
18·  以下方法信息不全,无法使用:
1.系统不认识VK_OFF
2.使用哪个dll 和 lib文件?
·  如何在程序中关闭(suspend)Pocekt PC?
方法1:虚拟关机键
::keybd_event(VK_OFF, 0, 0, 0);
::keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
方法2:调用未公开函数PowerOffSystem()
extern /"C/" __declspec(dllimport) void PowerOffSystem();
关闭(suspend)
方法1:
//虚拟关机键
::keybd_event(VK_OFF, 0, 0, 0);
::keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
方法2:
//调用未公开函数PowerOffSystem()
extern "C" __declspec(dllimport) void PowerOffSystem();
重起(soft reset)
//Soft reset the device
#include
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern "C" __declspec(dllimport) BOOL KernelIoControl(
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned);
BOOL ResetPocketPC()
{
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
}
硬起动(hard reset)
//注意!!!使用此段代码会将您的Pocket PC的用户数据全部清空,
//请勿非法使用,用者后果自负.
#include
#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
extern "C" __declspec(dllimport)void SetCleanRebootFlag(void);
extern "C" __declspec(dllimport) BOOL KernelIoControl(
DWORD dwIoControlCode,
LPVOID lpInBuf,
DWORD nInBufSize,
LPVOID lpOutBuf,
DWORD nOutBufSize,
LPDWORD lpBytesReturned);
BOOL HardResetPocketPC()
{
SetCleanRebootFlag();
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android应用程序开发常见问题汇总

问:在平时Android开发时突然执行程序,出现了 Application does not specify a android.test.InstrumentationTestRunner inst...

wince 嵌入式应用程序常见问题(含解决方案及有源码)

[说明:本文是网上,积累资料 进行整理后的文章,部分代码归个人所有!] 下载地址:猛点击这... 详细功能实现 含自己写的代码:http://blog.csdn.net/li0531/ar...
  • li0531
  • li0531
  • 2012-08-15 13:28
  • 3443

wince常见问题解答

  • 2013-04-16 21:20
  • 281KB
  • 下载

WINCE常见问题解答

  • 2008-12-17 09:23
  • 250KB
  • 下载

Android Launcher开发(五)添加应用程序桌面快捷方常见问题及解决方案

最近做到的应用做刚好需要添加快捷方式的功能, 在参考了源代码和网上一些其他资料后做了出来. 在做的时候遇到两个问题, 一.  程序卸载后桌面快捷方式仍然存在:   关于此问题, 网上的资料和实际中...

WinCE 常见问题解答

  • 2009-03-27 16:50
  • 250KB
  • 下载

WinCE常见问题解答

  • 2008-02-15 09:35
  • 225KB
  • 下载

微信小程序开发常见问题FAQ之三

微信小程序遇到问题怎么办?遇到微信小程序方面的问题,该去哪里提问呢?一起来看看第九程序为您整理的微信开发者社区开发常见问题FAQ吧~在文中,您可使用「CTRL+F」,输入关键词来快速找寻您需要的答案。

WINCE常见问题解答

  • 2013-05-22 11:41
  • 281KB
  • 下载

WINCE常见问题解答

  • 2012-09-24 14:15
  • 250KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)