⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 doc.txt

📁 Windows mobile下的透明控件(皮肤控件) 当前Windows mobile下的皮肤控件还很少
💻 TXT
📖 第 1 页 / 共 2 页
字号:
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下,把#include <stdlib.h>、#include <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(&shidi); 
//InitOptionDlg(hDlg); 
//CDialog::OnInitDialog(); 
…… 

} 

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

4.在eVC基于MFC的程序中如何将ToolBar栏隐藏

关于ToolBar的隐藏: 
首先,如果你是用MFC向导创建的工程,则默认会生成ToolBar,我要说的是,干掉它!自己来创建。:) 
First,声明CToolBar成员变量: 
CToolBar * d_pToolbar2; 
然后…… 
static UINT BASED_CODE Toolbar2Buttons[] = 
{ 
// 下面是工具栏对应菜单的ID,工具栏图标是我弄的一个Bitmap,其ID为IDR_ADD_TOOLBAR 
ID_FILE_NEW, 
ID_FILE_OPEN, 
ID_FILE_SAVE, 
ID_SEPARATOR, 
ID_EDIT_CUT, 
ID_EDIT_COPY, 
ID_EDIT_PASTE, 
ID_SEPARATOR, 
ID_TRANS_DICT, 
ID_TOOLBAR_SHOW, //这是新加入的菜单项,点击隐藏工具栏,再点击就显示工具栏 
}; 
然后…… 
在CMainFrame的OnCreate()中加入: 
OnToolbarCreate(); 
然后…… 
void CMainFrame::OnToolbarCreate() 
{ 
// Should only get here if we don't have a toolbar. 
ASSERT(d_pToolbar2 == 0); 
// Create C++ object and WinAPI window. 
d_pToolbar2 = new CToolBar(); 
d_pToolbar2->Create(this, WS_CHILD | CBRS_BOTTOM | 
CBRS_SIZE_FIXED | CBRS_FLOATING, 
0x9100); 
// Get bitmap and connect to tool items. 
d_pToolbar2->LoadBitmap(IDR_ADD_TOOLBAR); 
d_pToolbar2->SetButtons(Toolbar2Buttons, 
sizeof(Toolbar2Buttons)/sizeof(UINT)); 
// Make toolbar dockable. 
d_pToolbar2->EnableDocking(CBRS_ALIGN_ANY); 
EnableDocking(CBRS_ALIGN_ANY); 
DockControlBar(d_pToolbar2); 
} 
然后…… 
void CMainFrame::OnToolbarShow() 
{ 
ASSERT(d_pToolbar2 != 0); 

// Query current visibility. 
BOOL bVisible = (d_pToolbar2->GetStyle() & WS_VISIBLE); 

// Show or hide. 
int nShow = (bVisible) ? SW_HIDE : SW_SHOWNORMAL; 
d_pToolbar2->ShowWindow(nShow); 

// Reconfigure remaining toolbar items. 
RecalcLayout(); 

// Store visibility state for later. 
d_bToolbarVisible = (!bVisible); 
} 

void CMainFrame::OnUpdateToolbarShow(CCmdUI* pCmdUI) 
{ 
//This function is signed for checking the menu 'Edit|Show Toolbar' 
pCmdUI->Enable(d_pToolbar2 != 0); 
int nCheck = (d_bToolbarVisible) ? 1 : 0; 
pCmdUI->SetCheck(nCheck); 
} 

OK,默认情况下ToolBar是隐藏的,点击菜单中的新加入的隐藏/显示工具栏命令即可来回切换了。 

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

5.如何制作pocket Pc 下的安装程序?

在C:\Windows CE Tools\wce300\MS Pocket PC\support\ActiveSync\windows ce application installation 下面有例子. 
也有其它第三方的安装工具,比如installshield。 

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

6.怎样在主界面中显示一幅图片 

我做了一个小程序, 想在主界面中显示一幅图片,我的图片是.JPG格式的,如果需要转换,用什么工具? 

把JPG图转为BMP图咯,网上有不少这样的程序。 
然后用LoadBitmap、SelectObject、StretchBlt等语句把BMP图显示到VIEW中。 


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

7. 请问,在WinCE下如何截获所有鼠标和键盘的消息?

wince下只能用三种钩子 
#define WH_JOURNALRECORD 0 
#define WH_JOURNALPLAYBACK 1 
#define WH_KEYBOARD_LL 20 

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

8.在Pocket PC下用eVC作的对话框能否做成不是全屏的?

在MFC中 

m_bFullScreen = FALSE;


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

9.如何将char 类型的中文字符串转换成Unicode的字符串?

MultiByteToWideChar,在仿真器中无效;你也可以通过其他方法;用wcsprintf这个函数


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

10. evc单文档界面中,菜单左边总有一个"new",如何将其去掉?

在MainFrm的OnCreate内找到这个: 
m_wndCommandBar.m_bShowSharedNewButton = TRUE; 
把TRUE改为FALSE 

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

11.Edit出现上下文菜单问题? 

近来我看了一下SDK带的Sample中的Npp,其中它有一个功能就是在EDIT上出现上下文菜单,可是当我仿照它在自己的项目中添加此功能时,即在资源中添加CONTROL "",IDC_STATIC,"SIPPREF",NOT WS_VISIBLE,-10,-10、,6,6,在模拟器中正常,但在PDA中不能显示包含Edit的对话框。而Npp可以在两者正常显示。我又在Npp中增加一个对话框,也相应的改变资源,结果是在模拟器和PDA中都能正常显示。 

调用SHInitExtraControls()应该在构造函数,不应在OnInitDialog中。如果在OnInitDialog中调用,包含EDIT的对话框将不显示。 
事实上在XXXApp::InitInstance函数中调用更好,这样只需调用一次,就万事大吉。 

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

12. 如何将.mdb数据库转换为.cdb数据库 

如何将.mdb数据库转换为.cdb数据库,在没有实际PDA,只有Pocket PC Emuliation和EVB的情况下。 
Pocket PC Emuliation运行时为何提示“存储器不足,无法完成操作”? 

此问题微软已经给出了答案。 
在SDK文档中有一个叫做device的例子程序,它就是将tdb文件转化成cdb文件的,而还有一个desktop的程序,它是将mdb文件转化成tdb文件的。 


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

13.请问如何用EVC建立和调用DLL 

我按照帮助中用MFC开发DLL的例子做,但是另外一个程序调用的时候的时候却出现连接错误,说找不到那个函数。后来看了EVC的例子spintest之后也是这样。 

和在WINDOWS下的一样 
是不是LINK2001 ERROR? 
你如果是隐式调用(就是不用LOADLIBRARY()的),要把你的DLL的LIB文件在PROJECT-->SETTINGS--->LINK--->INPUT里指明。 

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

14.编辑框如何自动会换行 ?

请教,Plam中的table控件,在Wince上怎么做? 
就是编辑框自动会换行.当你输入的内容超过一行,自动切换到下一行,下面的内容自动往下滚。 

勾选编辑控件的MultiLine,如果想输入回车换行,再勾选want renturn 

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

15.是否在adoce,pocket access中的update语句不能执行?

ADOCE不能直接执行UPDATE语句,但ADOCE有Update方法,你可用它实现。


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

16.请问如何在Windows CE中实现BC++中的inport(...)与outportb(...)函数功能?

CE下,可以用WINDOWS API函数来对端口操作。 比较简单。 
API一般只要用到CreateFile(打开端口,串口操作和文件操作只有一点不同就是打开方式不同,所以第三个参数要用 OPEN_EXISTING ) 
COMMTIMEOUTS、DCB两个结构是存放设置参数的,可以改 
WriteFile、WriteFile(读写端口) 
因为串口通讯用的是异步通讯,所以下面两句比较重要 
SetCommMask(指定监视的端口事件) 
WaitCommEvent(等待端口事件) 

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

17. 如何显示一个对话框让用户选择一个目录而不是文件

没有标准的函数处理这个,你只好自己实现活使用第三方的解决方案。


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

18.有没有办法(API)激活或禁止电源保存模式?

参看SystemIdleTimerReset()的安装文档。创建一个包含象睡眠的无限循环的线程,然后调用SystemIdleTimerReset()。也许有一种中断线程的办法就是程序退出。


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

19. Windows CE的文件名最小程度是多少?

在windef.h定义了MAX_PATH,普遍应该是260个字符。

20. 我使用CFileDialog创建了一个浏览按钮,默认目录始终是显示"All Folders"和在"\My Device\My do***ents"下。怎样改变初始目录到"\My Device"。使用fileDlg.m_ofn.lpstrInitialDir = TEXT("file://My/ Device");,但是没有改变默认显示的目录。
lpstrInitialDir指向一个指定初始文件目录的字符串。如果为NULL,将使用系统的根目录。尽量尝试一下lpstrInitialDir为NULL。


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

21.在Pocket PC任务栏上可能有X和OK按钮吗?

不可能,至少没有象WisBar的第三方工具。


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

22.如何禁止用户改变日期和时间?有可能实现吗?

你可能用自己的程序替代\windows\clock.exe,但是,它们可以通过另外的程序处理这个。同样,在同步时ActiveSync改变设备的时间与PC匹配。


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

23.  我有一个xscal cpu的ipaq 3970设备,但是在eMbedded Visual C++ 3.0上没有目标类型。我应该在EVC3.0上使用什么类型。这个问题也发生在安装程序Cabwiz.exe上。

你可以使用ARM类型。XScal基于ARM体系。


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

24.  如何使程序在后台运行?

最小化程序将使程序进入后台,因此只要在程序启动时最小化,那么它将运行在后台。

补充:还可以做成service。
--------------------------------------------------------------------------------

25.  我准备去掉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,因为对话框还没有可见。你应该传递一个自定义消息,在那个消息调用这个函数。 

也许下面这段代码会有用: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -