Windows CE开发常见问题解答

本文汇总了Windows CE开发中遇到的一些常见问题,包括如何在控件获得焦点时自动打开软键盘、字符串与数字转化的困扰、非全屏对话框的创建、隐藏和显示ToolBar的方法、制作安装程序的途径、如何显示图片、如何截获鼠标和键盘消息、非全屏对话框实现、中文字符串转Unicode、菜单项去除、Edit控件上下文菜单、数据库转换、DLL调用、编辑框自动换行、选择目录对话框、禁止电源保存模式、文件名长度限制、初始化目录设置、后台运行程序、禁止修改日期时间、目标类型选择、SIP按钮隐藏、读取图标文件、绘制透明圆、关闭运行程序、设置PDA时间、写入注册表二进制数据、以及设备的重启和关机方法。这些问题涉及Windows CE开发的多个方面,提供了详细的解答和示例代码。
摘要由CSDN通过智能技术生成

 

1.怎样在一个控件获得焦点时打开软键盘?

比如一个EditBox获得焦点后,这个时候自动打开软键盘,这样可以方便用户输入——SIPINFO、SHSIPINFO、SIPSETINFO、SIPGETINFO里面有些参数弄不明白

//隐藏输入面板

BOOL LowerSip()

{

BOOL fRes = FALSE;

SIPINFO si;

memset( &si, 0, sizeof( si ) );

si.cbSize = sizeof( si );

if( SHSipInfo( SPI_GETSIPINFO, 0, &si, 0 ) )

{

si.fdwFlags &= ~SIPF_ON;

fRes = SHSipInfo( SPI_SETSIPINFO, 0, &si, 0 );

}

return fRes;

}

//升起输入面板

BOOL RaiseSip( void )

{

BOOL fRes = FALSE;

SIPINFO si;

memset( &si, 0, sizeof( si ) );

si.cbSize = sizeof( si );

if( SHSipInfo( SPI_GETSIPINFO, 0, &si, 0 ) )

{

si.fdwFlags |= SIPF_ON;

fRes = SHSipInfo( SPI_SETSIPINFO, 0, &si, 0 );

}

return fRes;

}

再试试下面这些:

//SHSipPreference(m_hWnd, SIP_UP);//弹出输入面板

//SHSipPreference(m_hWnd, SIP_DOWN);//隐藏输入面板(有一个时延)

//SHSipPreference(m_hWnd, SIP_FORCEDOWN );//隐藏输入面板(立即)

//SHSipPreference(m_hWnd, SIP_UNCHANGED );

//一般只用在调用SIP_DOWN时的的后面,使这个命令无效

--------------------------------------------------------------------------------

2.WinCE下字符串-数字转化的问题!

在VC6.0下,把#i nclude <stdlib.h>、#i nclude <stdio.h>两个文件包括进去后,下面这段代码一点问题没有,

CString str1,str2;

str1="123";

str2="123.4";

int i;

float j;

i=atoi(str1);

j=atof(str2);

但是在EVC3.0里面,却出现了问题:提示atof没有定义,atoi也不能正常转化。

用wcstoi,wcstof, wcstol和wcstod

--------------------------------------------------------------------------------

3. 我新拿了一个Pocket Pc,编了几个程序,但发现对话框都只能全屏显示,这是为什么?

一般在Pocket PC中所有的对话框都是全屏显示,这是操作系统规定的行为。但如使用系统自定义的信息提示框,则不是全屏显示。如: Afxmessagebox所激发的提示框就是如此。

可以重载WM_INITDIALOG消息

MSDN:

The DialogBox macro uses the CreateWindowEx function to create the dialog box. DialogBox then sends a WM_INITDIALOG message to the dialog box procedure. The function displays the dialog box (regardless of whether the template specifies the WS_VISIBLE style), disables the owner window, and starts its own message loop to retrieve and dispatch messages for the dialog box.

就是说当对话框窗口创建完以后,会发出一个WM_INITDIALOG 消息,你只要在自己的窗口消息处理函数里对这个消息进行处理,就可以了

比如:

case WM_INITDIALOG:

// Create a Done button and size it.

shidi.dwMask = SHIDIM_FLAGS;

shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | SHIDIF_SIZEDLGFULLSCREEN;

shidi.hDlg = hDlg;

SHInitDialog(&shidi);

InitOptionDlg(hDlg);

return TRUE;

主要就是修改shidi.dwFlags ,看看ABOUT的窗口消息处理吧

补充: SHINITDLGINFO shidi;

SHINITDLGINFO shidi;

上面说的是在纯API的程序中的方法

对于MFC创建的DIALOG程序,可以这样:

BOOL CXXXDlg::OnInitDialog()

{

SHINITDLGINFO shidi;

HWND hDlg = m_hWnd;

// Create a Done button and size it.

shidi.dwMask = SHIDIM_FLAGS;

shidi.dwFlags = SHIDIF_SIPDOWN ;

shidi.hDlg = hDlg;

SHInitDialog(&am

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值