今天在社区上又看到了一篇在WINDOWS MOBILE上TIMER不准确的问题。这种篇子很多所以有感而发写博客。 先明确两个概念,WM下有两个TIMER,一个是窗体TIMER,一个是线程TIMER。二,其实TIMER和框架没有关系不管是MFC,还是WIN32亦或是NET C#他最终的实现都是靠原生的WIN32的机制完成的。我们下面呢用C#为例讲解。 窗体TIMER,在System.Windows.Forms命名空间下,他的最大好处是其实处理(回调)函数是运行在UI进程,怎么看函数的运行进程呢,当然你可以看线程的ID。但是在。NET下不太需要这样做。原因很简单,每个CONTROL都有一个公共的. Read More
最近看到有人在网上讲论WM上的下载工具,就提供个断点传的思路,供大家交流。断点续传就是在上一次下载时断开的位置开始继续下载。在HTTP协议中,可以在请求报文头中加入Range段,来表示客户机希望从何处继续下载。代码如下,在WM6环境下测试通过。 static void Main(string[] args){ string StrFileName="c://aa.zip"; //根据实际情况设置 string StrUrl="http://www.xxxx.cn/xxxxx.zip"; //根据实际情况设置 //打开上次下载的文件或新建文件 long l Read More
在WM下用户可以经常转屏,但是这个也能通过代码实现,下面是一个经过测试的代码。int ChangeDisplaySettings( ){ DEVMODE DevMode; int RotationAngles = 0; int CurrentAngle = 0; int NewAngle = 0; //Check for rotation support by getting the rotation angles supported. memset( &DevMode, 0, sizeof( DevMode ) ); DevMode.dmSize = sizeof( DevMo... Read More
在WM下获得运营商的名称需要用TAPI,找了个例子给大家SHARE一下//在CRegInfoDlg类中定义成员变量 HLINEAPP m_hLineApp; HLINE m_hLine; TCHAR m_tchOpertionNum[MAX_PATH];//函数实现BOOLCRegInfoDlg::GetCurrentOperator(TCHAR* szCurrentOperator,TCHAR* szCurrentOperatorNumName){ LINEOPERATOR CurrentOperator; if ( lineGetCurrentOperator( m_hLine,... Read More
准备两个mobile的ppc手机A和B, 要带SIM卡的, 并且能够有"INTERNET共享"功能 将A手机连接上cmwap网络(当然要配置好A手机的cmwap代理连接) 一台PC机器,将PC机器断开网络连接 在ActiveSync里面连接设置中, 不选中"允许USB连接" 使用A手机将其"INTERNET共享"功能打开,连接PC机 这时, pc机器上面可以使用浏览器 , 将浏览器设置代理服务器, cmwap的网关设置好 之后, 使用浏览器访问一下,看看能不能打开移动梦网如果能够打开,说明代理服务成功, 但此时还不能够进一步访问移动梦 Read More
在PPC上当系统休眠的时候会把很多设备的电源关掉,但是一些应用程序需要一些设备一直工作供电,比如GPS.但是MS官方说的这就需要其它的处理.SetPowerRequirement并不能解决问题,调用该函数在系统断电的时候还是会把指定的设备电源切掉.正确的做法应该是这样.1SetPowerRequirement把需要供电的设备名称定好,比如GPS设备一般就是"GPD0:";2CreateMsgQueue建立消息队列ptr = CreateMsgQueue(L"PtrSvsPowerNotify", &options);3PowerNotifyHan Read More
首先有关UI的东西有几点建议,一尽量不要使用D3D,因为D3D基本上不被很多的机型甚至是许多主流的SP机型所支持,所以这很有可能让您的UI不能在很多机型上被支持.二在.NET平台上实现透明的效果很有难度,原因有以下几方面由于.NET的GDI+的速度本身就不快,而且还要P/INVOKE一系列的API.按照我的反复实验.在实现透明有可能,但是防卡闪烁与拖动效果基本上是不可监得.如果还要一个比较快的刷新速度的话,SP的平台上基本上是别想了.下面说一下,实现透明控件的基本思路,由于具体的代码由于涉密的关系实在是不方便贴出来说一下大体的思路.下面进入正文.1.不管您是用WTL框架(不推荐MFC由于不通用 Read More
前一个项目要SUPPORT的机型很多,PPC,SP,而且要求主流的机型全覆盖,总结一下在做这方面开发的时候需要用的API,如果大家也遇到这种情况少走些弯路:)GetSystemMetrics( SM_CXSCREEN ); //得到X横的宽度,如果想得到Y轴宽度为M_CYSCREEN )这个对于要SUPPORT不同大小的屏幕的PROJECT很有用。int GetDeviceCaps( HDC hdc, // handle to DC int nIndex // index of capability );// nindex 参数可设置的值很多 当设为LOGPIXELSY得到分辨率,注意相同.. Read More
那天在网上还看到有人继承讨论 什么流驱动要实现的函数是不是一定要叫做INIT,OPEN什么的,前辍到底是哪来的,等等,于是干脆就翻出来自己当时入门时的一个程序SHARE一下:)其实你要实现的函数可以看下面的注释,前辍吗是在注册表当中写好的,呵呵。应该是"Prefix"="STR",然后你就要实现XXX_INIT.以这个最小的驱动为例子,注释在后面了,// StringDriver.cpp : Defines the entry point for the DLL application.//#include "stdafx.h"#in Read More
我们知道WM平台上有签名的机制,不太像SYMBIAN SIGN,WM平台对于签名没有那么严格的要求,不过对于一些SMARTPHONE的手机则是必须要签名否则一些DLL干脆就不能被调用。(具体的一些经验会在后面说到短信等GPS,注册表的时候和大家聊到)。不过对于开发人员微软提供了一个DEVELOPER的签名方式,步骤如下: 1. 打开目录.x:/Program Files/Windows Mobile 6 SDK/Tools/Security/SDK Development Certificates/点击 SamplePrivDeveloper.pfx一直按下一步(这个很重要)中间什么都不要选。 Read More