嵌入开发(WinCE)的一些经验[摘录][sunny12]
<---->
WindowsCE下Unicode和Ansi字符间互相转换的例子
纵所周知,WindowsCE下编程99%的问题都和Unicode有关.比如文件编辑,一般都保存为Ansi格式;无线通讯中控制Modem需要发送的AT指令,必须是Ansi格式;网络通讯中,PC端一般都是Ansi的,为了和PC上协议兼容,在WindowsCE中必须把要发送的一个指令从Unicode 转换成Ansi格式...等等.很多初学者对于这些问题总是感到很麻烦.其实WindowsCE中有标准的API实现了Unicode和Ansi字符间的互转.下面就是网络通讯中的程序片断.
m_psocket是指向一个从CCeSocket派生的类,如果没有连接的话其为NULL;
m_snd是要发送的CString,和一个EDIT相对应.
//发送函数片断
void CClient1Dlg::OnButtonSend()
{
   // TOD Add your control notification handler code here
   if (!m_psocket) //无Socket连接,退出
   {
       MessageBox(TEXT("无连接!"),TEXT("信息"));
       return;
   }
   UpdateData(TRUE); //保存输入的字符串到m_snd
   unsigned char buf[129]; //发送缓冲区
   ZeroMemory(buf,sizeof(buf)); //缓冲区清零
   CString tmpstr(m_snd); //复制要发送的字符串
   int multibytelen=WideCharToMultiByte( //计算从Unicode转换到Ansi后需要的字节数
   CP_ACP, //根据ANSI code page转换
   WC_COMPOSITECHECK | WC_DEFAULTCHAR, //转换出错用缺省字符代替
   tmpstr.GetBuffer(m_snd.GetLength()), //要转换的字符串地址
       m_snd.GetLength(), //要转换的个数
       0, //转换后字符串放置的地址
       0, //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节
       0, //缺省的字符:"/0"
       0 //缺省的设置
     );
   WideCharToMultiByte( //转换Unicode到Ansi
       CP_ACP,
       WC_COMPOSITECHECK | WC_DEFAULTCHAR,
       tmpstr.GetBuffer(m_snd.GetLength()),
       m_snd.GetLength(),
       (char *)buf, //转换到缓冲区中
       128, //最多128个字节
       0,
       0
     );
   int sendcount=m_psocket->Send(buf,multibytelen+1); //发送转换后的缓冲区
   CString statusstr;
   statusstr.Format(TEXT("共发送字节数:%d"),sendcount);
   m_status.SetWindowText(statusstr); //更新显示栏
}
程序接收到的字符串最后保存到CString tmpstr中.
//接收函数片断
void MyCeSocket::OnReceive(int nErrorCode)
{
   // TOD Add your specialized code here and/or call the base class
   unsigned char p[129]; //接受缓冲区
   ZeroMemory(p,sizeof(p)); //接收缓冲区清零
   this->Receive(p,128); //接收128个字节
   int widecharlen=MultiByteToWideChar( //计算从Ansi转换到Unicode后需要的字节数
       CP_ACP,
       MB_COMPOSITE,
       (char*)p, //要转换的Ansi字符串
       -1, //自动计算长度
       0,
       0
   );
   CString tmpstr;
   tmpstr.GetBuffer(widecharlen); //为转换后保存Unicode字符串分配内存
   MultiByteToWideChar( //从Ansi转换到Unicode字符
       CP_ACP,
       MB_COMPOSITE,
       (char*)p,
       -1,
       tmpstr.GetBuffer(widecharlen), //转换到tmpstr
       widecharlen //最多转换widecharlen个Unicode字符
   );
   m_clientdlg->m_listbox.InsertString(0,tmpstr); //插入到listbox中显示
   CCeSocket::OnReceive(nErrorCode);
}
注意:以上代码都是在WindowsCE样板机上运行,PC端发送和接收到的字符均为Ansi格式的.把以上代码稍微修改一下用到自己的产品中,就可以利用以前的协议无缝连接PDA和PC.
以上代码在MicroSoft Embed Visual C++ 3.0 + 联想天玑5100(WindowsCE3.0)
+ Eagle Tec 10M CF卡通过.

用eVC编制了一个ActiveX控件,提示需要registered to the desktop,
用vs提供的ActiveX control test container 进行注册,可怎么也注册不上
为什么?应该怎么注册呢?
可以用VC的ActiveX control test container 进行注册,只不过要进行稍微改动。
1.用VC产生一个与EVC相同名字的Active x工程,比如为pocket。
2.把VC工程中的dsp和dsw文件重命名,pocket-win32.dsw和pocket-win32.dsp拷到EVC工程的文件夹中。
3.修改pocket-win32.dsw文件,使他指向pocket-win32.dsp。
Project: "Pocket"="./Pocket.dsp"
改为Project: "Pocket"="./Pocket_Win32.dsp"
4.修改output 文件的名称,使它指向evc工程的文件夹。
即可

我需要用一种特定的图案填充进度条的条的颜色,不知道能不能实现?
CProgressCtrl mCtrl;
在OnInitDialog()中:
mCtrl.Create(WS_CHILD|WS_VISIBLE|PBS_SMOOTH, CRect(10,10,200,30),
     this, IDC_PROGRESS);
mCtrl.SetRange(0,10);
mCtrl.SetPos(0);
mCtrl.SetStep(1);
在OnPaint()中:
{
CPaintDC dc(this);
CRect rect(10,10,200,30);
     CBitmap bmp;
bmp.LoadBitmap(IDB_PROGRESS);
CBrush brush(&bmp);
dc.FillRect(rect,&brush);
}
在OnStep()中(按一下按钮进度条前进一步)
{
mCtrl.StepIt();
}

(EVC3)启动PPC2002模拟器,在EVC的TOOLS菜单下选择“Remote File Viewer”,启动Windows CE Remote File Viewer。
使Remote File Viewer与PPC2002模拟器连接,选择工具栏上第一个按钮。弹出Select Windows CE Device对话框,选择对应的模拟器或硬件设备---PPC2002后确定。在Remote File Viewer中就可以看到PPC2002中的文件。
在Remote File Viewer中选择菜单FILE下的“Export File”,将想要的文件传输到模拟器的相应的目录中。

“添加/删除硬件向导”----------“添加/排除设备故障”----------“选择一个硬件设备”中选择“Microsoft Loopback Adapter”.

隐藏“开始”栏
HWND lpClassName;
lpClassName = ::FindWindow(TEXT("HHTaskBar"), NULL);
::ShowWindow(lpClassName, SW_HIDE);

只隐藏Taskbar还不行,你得把work area 设为整个屏幕:
int screenx=GetSystemMetrics(SM_CXSCREEN);
int screeny=GetSystemMetrics(SM_CYSCREEN);
CRect rcWorkArea;
rcWorkArea.left = 0;
rcWorkArea.right = screenx;
rcWorkArea.top = 0;
rcWorkArea.bottom = screeny;
::SystemParametersInfo( SPI_SETWORKAREA, 0, &rcWorkArea, SPIF_SENDCHANGE );

如何获取 Pocket PC 2002 装置的序列号(以下例程获取的装置的序列号通常是Flash ROM的ID号.)?
--------------------------------------------------------------------------------
从 Pocket PC 2000 开始, 微软就建议OEM厂商提供一个叫 KernelIoControl 的函数, 以便用户能访问Pocket PC 2002装置内建的序列号; 遗憾的是, 几乎没有厂商提供这个支持.
从 Pocket PC 2002 开始, 微软开始强制OEM厂商提供此函数. 目前市面上所有经过biplip测试的Pocket PC 2002装置都支持这个函数调用.
以下是个调用例子:

#include
extern "C" __declspec(dllimport)
BOOL KernelIoControl(
DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize,
LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned
);

#define IOCTL_HAL_GET_DEVICEID CTL_CODE(FILE_DEVICE_HAL, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)

CString GetSerialNumberFromKernelIoControl()
{
DWORD dwOutBytes;
const int nBuffSize = 256;
byte arrOutBuff[nBuffSize];

BOOL bRes = ::KernelIoControl(IOCTL_HAL_GET_DEVICEID,
                 0, 0, arrOutBuff, nBuffSize, &dwOutBytes);

if (bRes) {
CString strDeviceInfo;
for (unsigned int i = 0; i    CString strNextChar;
strNextChar.Format(TEXT("%02X"), arrOutBuff);
strDeviceInfo += strNextChar;
}
CString strDeviceId =
strDeviceInfo.Mid(40,2) +
strDeviceInfo.Mid(45,9) +
strDeviceInfo.Mid(70,6);

return strDeviceId;
} else {
return _T("");
}
}
=====================================================================================

我用以下代码成功禁止任务栏被点击,但不知怎样才能解除,特此请教,谢谢。
LONG lOldWindowStyle;
RECT rectOldTaskBarRect;

HWND hOldhTaskBar = ::FindWindow(_T("HHTaskBar"),NULL);

while( hOldhTaskBar == NULL )
{
hOldhTaskBar = ::FindWindow(_T("HHTaskBar"),NULL);
Sleep( 1000 );
}

::GetWindowRect( hOldhTaskBar, &rectOldTaskBarRect );
::SetWindowPos( hOldhTaskBar, HWND_BOTTOM, 0, 0, 0, 0, SWP_HIDEWINDOW|SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE);
lOldWindowStyle = GetWindowLong(hOldhTaskBar, GWL_STYLE);
::SetWindowLong( hOldhTaskBar, GWL_STYLE, lOldWindowStyle|WS_DISABLED );

比如控制打开一个jpg文件。
我用的是ShellExecute,好像有点问题:
ExecuteFile(LPCTSTR filename)
{
SHELLEXECUTEINFO info;
info.cbSize=sizeof(SHELLEXECUTEINFO);
info.fMask=SEE_MASK_NOCLOSEPROCESS;
info.hwnd=this->GetSafeHwnd();
info.lpVerb=L"open";
info.lpFile=filename;
info.lpParameters=NULL;
info.lpDirectory=NULL;
info.nShow=SW_SHOW;
return ShellExecuteEx(&info);
}
这会用IE来打开jpg
每次总是第一次的时候对,以后调用的时候总是自动调原来的东西,没有更新。还有其他更好用的api吗?

Microsoft® eMbedded Visual C++ 4.0
http://download.microsoft.com/download/WindowsCENETPlatformBuilder/Install/4.0/NT5XP/EN-US/eVC4.exe

eMbedded Visual C++ 4.0 SP1 ENU
http://download.microsoft.com/download/WinCENET41PlatBuilder/SP/4.0/NT5XP/EN-US/eVC4SP1.exe

eMbedded Visual Tools 3.0
http://download.microsoft.com/download/9/d/2/9d2f6ee8-4c75-4749-86df-2dd5189e6081/evt2002web_min.exe

OK" 按钮隐掉
SHDoneButton(AfxGetMainWnd()->m_hWnd,SHDB_HIDE);
"X" 按钮隐掉
ModifyStyle(AfxGetMainWnd()->m_hWnd,WS_CAPTION,WS_MINIMIZEBOX,SWP_NOSIZE);

ftp://ftp.wy.hziee.edu.cn/winsoft

单步调试是完全可以的。
首先安装微软的同步软件在PC机上;其次在PC机上运行该同步软件的同时,在小机上运行/Windows/repllog.exe文件;如果同步成功,在PC机上会出现一个盘符(Mobile device)。在其中可以看到小机的文件。这样同步即完成。
在选择了该目标机后,在开始调试前会出现同步提示框。同步成功后即可单步调试;我是通过这样的方法来调试CE系统的,单步不成问题!

如果您是在硬件上运行您的程序,除了SDK外还需要装同步软件,一般是Microsoft ActiveSync。可以在微软的网站上下载到。

全球第一款中文Windows手机,dopod具有强大的功能:配备Intel SA-1110 CPU,主频为206MHz,运算能力相当于PII。内存采用32兆/64兆SDRAM,32兆/64兆闪存。配备SD卡接口,可以用SD卡实现存储扩容。显示屏规格为3.5" 240x320 pixels, 4096彩色反射式TFT。内置GSM/GPRS模块,分别支持900/1800 MHz的GSM和GPRS无线通信功能。在基本应用程序方面,dopod686类似其他采用Pocket PC操作系统的高端掌上电脑,具有Pocket Word、Pocket Excel、Pocket TV以及Windows Media Player等功能。支持中文连笔手写识别,并可以做到中英文混合识别。通过Microsoft ActiveSync可以与PC同步进行数据传输。也可以通过红外接口与笔记本、其他掌上设备以及手机进行数据交换。通过类似Outlook式的联系人功能管理移动电话、电子邮件、短信等通信功能,可以方便地进行短信群发等操作。传统PDA的各种功能在dopod中仅仅能算是最为基本的功能,其最大亮点在于其强大的多媒体功能,可以非常流畅地播放音频和视频文件。

1.好像没有其它方法,为什么不用__FILE__ 中取?
2.fopen,您可以加上全路径。
3.wince2.11没有用过,但我想是支持的。在CE帮助中,一般均说明此函数从那个版本开始支持,但fopen中却没有。
4.下面是CE帮助中的一段:
CWinApp::WriteProfileString
This method writes the specified string into the specified section of the .ini file in the application.

BOOL WriteProfileString(
LPCTSTR lpszSection,
LPCTSTR lpszEntry,
LPCTSTR lpszValue );
5.不知您所用的CE版本为多少。CE3.0不支持中文,如果您所用的是3.0,那一定是OEM商汉化了CE。可能只支持一种字体;最新版.Net支持中文,有多种字体供选择。

PC与掌上电脑的串口是不是一样,这很难说。因为嵌入式开发是针对不同硬件平台进行的!
有的掌上电脑用的是标准的RS232,有的不是。
您用EVT(EVC和EVB)写的串口操作程序,可以下载到开发板上进行测试。当然开发板上需有串口硬件。

Palm OS ROM
http://www.echoice.com.cn/download/download.asp?softwareID=132

Release configurations use the following macros:
RETAILMSG(cond, printf_exp). Conditionally displays the print message.
RETAILLED(cond, parms). Conditionally outputs WORD values to the LED.
ERRORMSG(cond, printf_exp). Prints "Error: File Line" before the print message.

To enable the debug macros, you must build a debug configuration. Debug configurations use the three retail macros listed above, as well as the following debug macros:
DEBUGMSG(cond, printf_exp). Conditionally displays the print message.
DEBUGLED(cond, parms). Conditionally outputs WORD values to the LED.
DEBUGCHK(expr). Asserts the expression. If expr is FALSE, the macro calls DEBUGBREAK.
DEBUGZONE(zone_id). Tests the mask bit in the current debug zone settings. You can use DEBUGZONE to turn debug zones on or off.

Declare Function TranslateMessage Lib "coredll.dll" (ByVal MSG As String) As Boolean
网上down到的,有关unicode的函数集:

Attribute VB_Name = "modUniCode"
Option Explicit
Public Function MemStringToLong(StringIn As String) As Long
   On Error Resume Next
   Dim hWorkVal As String
   ' Convert the String back to Long Integer.
   ' Converting back to Big Endian format.
   Dim i As Long
   For i = 4 To 1 Step -1
   hWorkVal = hWorkVal & Hex(AscB(MidB(StringIn, i, 1)))
   Next i
   ' Return Long Integer value.
   MemStringToLong = CLng("&H" & hWorkVal)
End Function
Public Function LongToMemoryString(ByVal lInputValue As Long) As String
Dim hWorkVal As String
Dim n As Long
Dim i As Long
' Convert to HEX value.
hWorkVal = Hex(lInputValue)
' Check to see if it is not zero.
If hWorkVal <> "0" Then
   ' Convert to memory storage format (Little Endian).
   ' For example, 0000A411 would convert to 11A40000.
   '
   ' Place leading zeros in 8 character sequence to
   ' maintain consistent character count
   n = Len(hWorkVal)
   If n < 8 Then
     hWorkVal = String(8 - n, "0") & hWorkVal
   End If
   '
   ' Use ChrB to rebuild Bytes.
   For i = 7 To 1 Step -2
     LongToMemoryString = LongToMemoryString & _
               ChrB(CInt("&H" & Mid(hWorkVal, i, 2)))
   Next i
  
Else
   ' Just return zeros.
   ' Use ChrB to build Bytes.
   LongToMemoryString = ChrB(CInt("&H00"))
   LongToMemoryString = LongToMemoryString & ChrB(CInt("&H00"))
   LongToMemoryString = LongToMemoryString & ChrB(CInt("&H00"))
   LongToMemoryString = LongToMemoryString & ChrB(CInt("&H00"))
End If
End Function

在EVC3.0下怎样使编出来的窗口最大化(占满所有屏幕),并能够将开始菜单条挡住?
BOOL SHFullScreen(
HWND hwndRequester,
DWORD dwState);
注意包含Aygshell.h
用shfullscreen产生全屏窗口,用showwindow隐藏任务条,用movewindow设置窗口大小为全屏。
代码如下:
#define MENU_HEIGHT 26
   RECT rc;
   //get window size
   GetWindowRect(hWnd, &rc);
   SHFullScreen(hWnd, SHFS_HIDETASKBAR | SHFS_HIDESIPBUTTON);
   ShowWindow(hwndCB, SW_HIDE);
   MoveWindow(hWnd,
rc.left,
rc.top-MENU_HEIGHT,
rc.right,
rc.bottom+MENU_HEIGHT,
TRUE);

Windows CE 3.0 supports the standard Winsock 1.1 functions.except the asychronous functions.

eVC4:
http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000437
Tools(For PPC2002):
http://www.microsoft.com/mobile/developer/downloads/default.asp
OR: http://www.microsoft.com/mobile/developer/default.asp
CEF:
http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/926/msdncompositedoc.xml

目前大的GIS厂商,如MapInfo和ArcInfo对Paml支持太弱了,我咨询了这两家公司,都说还没有这方面的产品,WinCE下的产品倒是到了应用层次。
国外不少公司有开发出来的产品,比如www.GeoDiscovery.com,但是不提供二次开发接口。不知道大虾们是如何选择这方面的产品的。
电子地图:ArcInfo和MapInfo有全系列的开发包。绝对支持VS。
你打电话向ArcInfo中国代理,好像是富融科技,要一个开发包,当然是试用性质的。或者向MapInfo公司中国代理,是方正,咨询一下开发事宜。
我没有做过WinCE上的GPS和GIS开发。我做过PalmOS下的一些实验。GPS部分是通过串口和Palm连接,并且提供相应的协议,用来解释GPS 信息和操纵GPS设备。这个没有什么复杂的。但是地图表现部分却苦于没有合适的地图产品。关于GPS的例子,我是从Palm应用程序的开发工具 CodeWarrior的帮助文档中获得的,也就是简单的串口/端口操作,简单的监听->读->分析->表现->控制命令- >写.和DOS下串口通信或者控制打印机之类的事情,没有两样。你所需要的,是你所选用的GPS设备的接口标准、开发文档。
你看看www.supermap.com.cn的eSuperMap,能提供二次开发,具体没谈过,有什么消息也告诉我一声,我也想用他们的搞二次开发。
不过eSuperMap同时支持WinCE和Windows 98等。
帮你找到了一个地图,你可以到www.lingtu.com.cn看看,它也支持二次开发。

这样说吧:在EVC编译程序时,有一个重要的选项,在工具栏中的WCE Configuration中。您用EVC自带的模拟器编译时,选择的是Win32 [WCE x86em] Debug/Release。若选择其它,编译时丢出错。
X86em,说明程序运行时的Micro CPU平台。正如UP所说!如果您所有的PDA不在EVC支持的范围之内,则您需要CEPB来生成支持它的SDK。安装后EVC才可以用来开发针对您所用的PDA的应用。
你把EVC的Target类型设为MIPS,然后直接debug,EVC会把XXXd.dll下载到PDA上,这样你就可以在PDA上debug了。不过这些dll挺大的,有好几M,在PDA上debug速度也很慢

http://www.eg3.com/
http://www.c51bbs.com/
www.pday.com.cn
www.move.com.cn
www.pdazone.com.cn
www.palmheart.com.cn
http://www.embed.com.cn/
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnce30/html/realtimecapabilities.asp
http://msdn.microsoft.com/downloads/default.asp?url=/downloads/topic.asp?url=/msdn-files/028/000/219/topic.xml
http://www.palm.com

<<Programming Microsoft Windows CE程序设计>>,北京大学出版社出版
<<Windows CE高级开发指南>>,电子工业出版社出版。可做为手册用!
<<Building Powerful Plarforms with Windows CE>>。最经典的。但国内可能买不到

2002-4-21(在嵌入式和Visual C++中提出下面的问题)
我做了一个应用,读出系统时间显示在6个Edit控件中;同时设置两个按键用于在得到系统时间和设置系统时间之间切换,得到系统时间时不能修改Edit中的内容。
读系统时间由一个线程来实现。

在设置系统时间时,想使用tab键在各个控件之间移动。但我为每个控件都设置了WS_TABSTOP属性后,仍然不能达到使用tab键控制焦点位置的目的!!!
请问:各个高手这是为何?

下一个:::PostMessage(hWnd, WM_NEXTDLGCTL, 0, 0);
前一个:::PostMessage(hWnd, WM_NEXTDLGCTL, 1, 0);
任意control hCtrl:::PostMessage(hWnd, WM_NEXTDLGCTL, (WPARAM)hCtrl, 1L);

模拟器中是否能使程序自起动?希望高手支招!!!
我认为不能。
在硬件平台上,可修改注册表。
例如:
[HKEY_LOCAL_MACHNE/Init]
"Launch40"="App.exe"
"Depend40"=hex:14,00

我们也用过汉王,是需要自己修改较多的东东才能过到满意的效果。
以下四点是我们修改Hwr.c的注释,我只能提供您这些!!!
1.汉王对笔迹数据的要求是在0xff以内,但触摸屏的尺寸(480X320)超过了此范围,所以要对数据进行调整,以满足任何尺寸的要求。
2.防跨屏操作
3.全屏操作
4.触屏四线不接任何电容

EVC下如何具体编程开机启动?
>>模拟器中是否能使程序自起动?希望高手支招!!!
我认为不能。
在硬件平台上,可修改注册表。
例如:
[HKEY_LOCAL_MACHNE/Init]
"Launch40"="App.exe"
"Depend40"=hex:14,00
>>应该是用api:
BOOL CeRunAppAtEvent(
TCHAR *pwszAppName,
LONG lWhichEvent );
其中lWhichEvent有个值为:
NOTIFICATION_EVENT_WAKEUP
>>>>>>>>>>NOTIFICATION_EVENT_WAKEUP:When the device wakes up.
我认为对开机启动:不能算错误,但也不能说正确。
此处device所指为何?不清楚!
当系统起动时,device被Initialize或wake up,而不只是wake up。
还有,当存在即插即用device 时,插上device ,可能也会引起NOTIFICATION_EVENT_WAKEUP事件。

有关中文编码问题
请问在winCE操作系统中,用emVC来开发,用linux来做服务器,
请问这两者间通信的中文问题如何解决?非常感谢。
可以写一个Unicode和GB的转换函数,不太难的,只是点阵的计算方式不同,unicode是竖着计算而GB是横着计算,仅此而已!

I use the RegisterDevice API to load the driver and I have no problem doing that on the "old" Pocket PC but on the Pocket PC 2002 the driver fails to load.
I have tested the driver using LoadLibrary and GetProcAddress and calling all functions just to see if there was something wrong with the exported interface from the DLL but I didn't have any problem.

I know that mapping from physical to virtuall addressing is done bye OEMAddressTable in ARM
Virtual to physical mapping is done by the CPU Memory Management Unit (MMU)not the address table. The SHx and MIPS processors have some pre-fixed mappings defined in the CPU architecture. The other CPUs do not and therefore use the OEMAddressTable to specify where in Virtual memory certain on-chip resources are to be mapped so the OAL and interrupt handlers can access them.

嵌入开发(WinCE)的一些经验1相关推荐

  1. 嵌入开发(WinCE)的一些经验

    WindowsCE下Unicode和Ansi字符间互相转换的例子 纵所周知,WindowsCE下编程99%的问题都和Unicode有关.比如文件编辑,一般都保存为Ansi格式;无线通讯中控制Modem ...

  2. 嵌入开发(WinCE)的一些经验[摘录]

    WindowsCE下Unicode和Ansi字符间互相转换的例子 纵所周知,WindowsCE下编程99%的问题都和Unicode有关.比如文件编辑,一般都保存为Ansi格式;无线通讯中控制Modem ...

  3. 嵌入开发(WinCE)的一些经验(2)

    球 第一款中文Windows手机,dopod具有强大的功能:配备Intel SA-1110 CPU,主频为206MHz,运算能力相当于PII.内存采用32兆/64兆SDRAM,32兆/64兆闪存.配备 ...

  4. C# 开发WinCE 遇到Motorola PDA 的问题记录

    1.Motorola MC5590 的扫描枪按钮必须安装一个插件才能扫描,这个问题郁闷我很久.....已放到文件列表了,估计没人会找我要吧~~先做个记录,什么年代了,还在开发WinCE. 转载于:ht ...

  5. WIN7 UAC/结构体的Equals方法/C# 开发wince程序,窗口上总留有一块空白区域/静态构造函数...

    1. vs2005在win7下通过IIS7调试时,调用dll失败,但在XP下正常.相信是权限问题,请问应该如何解决?能不能设置dll默认以管理员身分运行? 备注:此DLL已注册成功! 回复引用 全部回 ...

  6. qt 编译mysql wince_Qt4.8.6开发WinCE 5.0环境搭建

    Qt-Wince5.0开发环境介绍 1.Windows7SP1 64 2.vs2008,以及sp1补丁 3.编译qt-everywhere-opensource-src-4.8.6.zip 4.qt- ...

  7. java开发五年面试经验_只有经验丰富的开发人员才能教您有关Java的5件事

    java开发五年面试经验 深入研究Java之前需要了解的所有内容的概述 有许多工具,方法,环境和功能会改变您处理代码的方式,而这些通常是在学年期间不会遇到的. 虽然它在Java开发世界中迈出了第一步, ...

  8. Entity Framework 实体框架的形成之旅--实体框架的开发的几个经验总结

    在前阵子,我对实体框架进行了一定的研究,然后把整个学习的过程开了一个系列,以逐步深入的方式解读实体框架的相关技术,期间每每碰到一些新的问题需要潜入研究.本文继续前面的主题介绍,着重从整体性的来总结一下 ...

  9. 使用Unity开发项目的一点经验

    使用Unity开发项目的一点经验 我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中. 默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项 ...

最新文章

  1. 云服务器dns配置文件,linux服务器dns配置文件
  2. android代码混淆笔记
  3. 一张图说明 函数, 实例(对象), 原型之间的关系
  4. ASP.NET MVC Html.ActionLink使用说明
  5. 视频编码中常用熵编码介绍
  6. Redis的三种启动方式【转】
  7. 玩转ECS第7讲 | ECS数据保护-数据备份新特性与最佳实践
  8. AI在汽车中的应用:实用深度学习
  9. mysql设计技巧_MySQL库表设计小技巧
  10. 模块单元学习笔记(日志记录模块os模块sys)
  11. linux lvm的管理
  12. python实现图片识别文字程序
  13. random.sample函数
  14. 合肥工业大学计算机与信息学院胡敏,合肥工业大学计算机与信息学院博士生导师:薛峰教授...
  15. 2021.9.15 每日总结
  16. 微信小程序最新获取头像以及昵称方法
  17. 采集网易云上面的MV保存方法
  18. ubuntu系统添加新的字体——JetBrains Mono 字体添加实例
  19. MethodType用法和setattr区别
  20. 高性能MySQL(3th)(第一章 MySQL概述) —— 04 InnoDB和MyISAM

热门文章

  1. js 批量下载多个文件
  2. 这些年这些OI大佬-访IOI2019国家队杨骏昭
  3. 怎么把图片批量旋转?简单三招就可以实现
  4. 建议收藏:数据标准的概念,分类,价值及6大实施步骤解析
  5. SAP IRPA ---LoginSAP的更简单方式
  6. Z-Score模型的进阶版:Zeta模型
  7. 【概念信息】成本中心会计
  8. 中小型企业选择私有化部署ERP管理系统
  9. android搜索不到蓝牙 找不到设备
  10. BIGEMAP地图数据加偏/纠偏