- 博客(58)
- 资源 (8)
- 收藏
- 关注
原创 Android 实现 WheelView
我们都知道,在iOS里面有一种控件------滚筒控件(Wheel View),这通常用于设置时间/日期,非常方便,但Android SDK并没有提供类似的控件。这里介绍一下如何Android实现WheelView。这是很通用的一个控件,而且提供了很灵活的API,现在分享给各位看官。
2013-02-28 20:51:52 65183 75
原创 Java Thread 总结
这篇文章的主要内容来自于网络,由我来整理,姑且算是原创吧,但是对于内容的提供者,在此表示感谢。1.线程概述线程是一个程序的多个执行路径,执行调度的单元,依托于进程的存在。线不仅可以共享进程的内在,而且还拥有一个属于自己的内存空间,这段内存空间就是线程栈,是在建立线程时系统分配的,主要用来保存线内部所使用的数据,如线程执行函数中所定义的变量,线程的状态等信息。Java中的多线程是一个抢占
2013-02-28 19:18:44 12147
原创 Windows文件检索之——查询范围
对于检索范围来说,也是比较简单的,根据第一节,我们知道,ISearcherFolderFactory提供了一个方法SetScope,就是让用户传一个IShellItemArray的指针进去。所以,我们主要的工作就是如何来创建IShellItemArray接口指针。1.如何创建IShellItemArrayShell API提供了一个方法,SHCreateShellItemArrayFrom
2013-02-26 13:51:41 3057 1
原创 Windows文件检索之——查询条件
这一节讲如何实现查询条件。我们把查询条件封装成了一个类,SdkQueryCondition,它的本质是对ICondition这个COM接口进行的封装。1.SdkQueryCondition接口下面列出SdkQueryCondition类的公共接口。HRESULT GetCondition(ICondition **ppc);HRESULT SetCondition(LPCWS
2013-02-26 13:46:09 2051
原创 Windows文件检索之——接口设计
这一节我们讲文件检索,主要讲一讲它用到了哪些COM接口和Shell相关知识。这里,我们重点讲一讲它的本质,至于如何利用设计模式的东西去包装,用没用线程等,这里就不用讲了。我们需要的是关注本质。其实对于熟悉Shell的人来说,Search这一部分是比较简单的。我们很幸运,由于之前做的一个项目是仅仅是运行在Windows 7之上的,所以我们这个检索模块可以不用支持Windows 7以下的OS,
2013-02-26 13:29:21 2418 1
原创 C#基本图像处理
最近没事,有网上看到一篇关于图像处理的文章,觉得很好,结合它上面的原理,自己写了一个C#图像处理的例子。这个DEMO的界面的有两个PictrueBox控件,用来显示图片,一个是源图片,一个是经过转换的目标图片,UI下面部分有一些按钮,每个按钮实现一个转换功能。这个DEMO允许用户拖一张图片到源PictureBox中,然后通过这些功能按钮实现图片的效果转换。这些功能有把图片变成黑白、底片、浮雕、锐化
2013-02-26 12:33:58 18490 2
原创 x86程序读取64位系统注册表失败解决方案
在做一个项目时,遇到了这么一种情况,在64位操作系统下(WOW),运行一个x86的应用程序,这个程序会读取注册表项目,读取注册表的代码是一样的,只要不交叉访问就是正确的(32位程序运行在x86平台,64位程序运行在x64平台),最后进行了一番调试,才搞明白失败的原因。 导致原因是这样的,32位与64位两个操作系统版本上的注册表的结构是不一样的,有些键是可以共享的,而有些键是不可以共享
2013-02-26 12:25:28 7689
原创 关于AlphaBlend函数使用时遇到的问题
AlphaBlend函数在使用时,要注意以下几点:1,源图片的宽高只能小于等于实际图片(选入到hMemDC的HBITMAP)的宽高,不然的话就绘制不出来。比如说,实际的HBITMAP的大小是 256 * 256 的,那么你的宽高不能超过 256,不然就绘制不出来。2,源的left和top与源的width和height相加的值也应当要小于等于源图片的宽高。也就是说,如果源top是
2013-02-26 12:22:18 1598
原创 Win32遍历指定路径下的文件(Shell实现)
其实有很多种方法实现遍历指定路径下的文件,最普通的可能就是用FindFirstFile、FindNextFile等API来实现,这种实现方法也可以,但是,如果文件夹时里面有子文件夹的话,用这个方法实现起来就有点麻烦,可能要用递归,而递归这种方式效率是个很大的问题,在这不打算讲这种方法,下面要说的是另一种方式------Windows Shell。 其实用Shell来实现,思路很简
2013-02-26 12:21:19 2442
原创 打开文件夹,并同时选中指定文件
如何用程序打开一个文件,并选中这个文件夹中指定的文件呢?其实这个功能用得很多。1.方法一ShellExecute( NULL, _T("open"), _T("Explorer.exe"), _T("/select, D:\\a.mp3"), NULL, SW_SHOWDEFAULT);打开D盘,并选中a.mp3这个文件。2
2013-02-26 12:19:06 6551 1
原创 Windows获取所有视频文件的扩展名
有时候,我们想得到当前电脑上面视频类型文件的扩展名,(事实上,不光是视频类型的,还有音乐类型,文档类型的文件的扩展名),我们要怎么实现呢?其实这些信息都是存放在注册表中,包括每种类型的文件的属性选项都是存放在注册表中。下面讲一下如何得到视频类型的文件扩展名(同理也可以得到其实类型的)。 注册表路径: HKEY_LOCAL_MACHINE\\Software\\Micro
2013-02-26 12:16:21 3280
原创 如何提升应用程序启动权限
有些应用程序在启动时就需要管理员权限,比如Spy++,regedit等,如果在Windows Vista或Windows 7操作系统上面,用户把UAC打开的话,这些应用程序运行时就会弹出一个UAC对话框,请求获得管理员权限。这些程序都有一个特别,就是程序的图标上面有一个小盾牌,说明运行时是需要管理员权限,如下图:关于提升权限,有两种方式:自动与手动。1.手动提升权限手动提升
2013-02-26 12:04:35 4595
原创 Win32 创建控件风格不是Win XP解决方案
有时候我有在用Win32 API来向窗体上添加控件时,通过CreateWindow或CreateWindowEx创建出来的控件的风格不像XP风格,而是像Windows 2000的风格,界面很难看。注意,是动态调用CreateWindow来创建控件,不是从资源中加载。这种情况下,我们怎么办呢,通常说来,造成这种情况都是由于没有正确加载资源,我们知道,像button, combob
2013-02-26 11:57:50 2457
原创 Windows键盘消息处理
文大部分来自MSDN和网友的博客,我在实践的基础上再作了一些总结。1. 虚拟键(VK_*)键盘上每一个键对应一个扫描码,扫描码是OEM厂商制定的,不同的厂商生产的键盘同样一个按键的扫描码都有可能出现不一致的情况,为了摆脱由于系统设备不一致的情况,通过键盘驱动程序将扫描码映射为统一的虚拟键码表示,从而达到所有的设备都有一个统一的虚拟键,比如回车键的虚拟键是VK_RETURN。
2013-02-26 11:52:37 15662
原创 第五部分:IDropTarget实现
这一节我们讲如何来实现一个自己的Drop Target,我们需要实现IDropTarget接口。1.如何成为一个"Drop Target"为了使窗体能接收拖放的数据,窗口必须注册为drop目标,调用OLE API RegisterDragDrop来完成这件事情,函数原型如下:WINOLEAPI RegisterDragDrop( HWND hwnd,
2013-02-26 11:49:30 6402 4
原创 第四部分:IDropSource实现
上一节,我们讲了如何实现一个自己的IDataObject接口,在开始这一部分之前,我还想再说一下,IDataObject有一个接口------ EnumFormatEtc,这个接口用来枚举当前data object所支持的数据格式,它相当重要。在上一节中,我们给出了它的一个实现,它内部本质是用API SHCreateStdEnumFmtEtc来实现的,这里再来看一看它的实现:STDMETHOD
2013-02-25 14:59:47 5418
原创 第三部分:IDataObject实现
第二部分我们介绍了OLE数据传输的相关知识,这一节主要讲怎么实现一个IDataObject接口。然后再给出一个例子。首先我们要明白,IDataObject是一个COM接口,我们就必须得创建一个类,实现这个接口的每一个方法,包括它的基类的方法。1. SdkDataObject.h 头文件: #ifdef __cplusplus#ifndef _SDKDATAOBJECT_H
2013-02-25 14:53:08 9284 2
原创 第二部分:OLE 数据传送(Data Transfer)
这一部分讲一讲OLE数据传输相关知识,多数来自于MSDN和网上其同志们的观点,加以总结而成。 COM接口提供了一种用于在不同的应用程序中交换数据的机制,这就是我们要讲的数据对象,对应的COM接口就是IDataObject。 大多数平台,包括Windows,都定义了一个用于在应用程序之间传输数据的标准协议,基于一系列的剪切板的函数。应用程序使用这些函数可以共享数据,即使它们
2013-02-25 14:44:23 4059 1
原创 第一部分:OLE Drag&Drop 介绍
1.基本概念 拖放,是指用鼠标拖动的方法,在不同程序的窗口之间、同一程序的不同窗口之间或同一程序同一窗体的不同控件之间,进行移动、复制、粘贴数据等操作的技术。拖放操作是依靠操作系统来完成的,被拖动的对象首先向操作系统注册一种它所使用数据的格式,并且按照这种格式来提供数据,拖放结束时,目标窗口提取出数据,并根据提取的数据生成相应的对象。 拖放方式有两种,一种是OLE拖放(
2013-02-25 14:41:11 4381
原创 Win32 窗体风格说明
体风格是各种窗口开发的重要基础之一。它可以分为普通风格(WS_系列)和扩展风格(WS_EX_系列)。从其特点上来说,主要分两大类:1、一类表明窗口和其他窗口的关系,如:WS_CHILD、WS_POPUP、WS_OVERLAPPED、WS_CLIPCHILDREN、WS_CLIPSIBLINGS、WS_GROUP、WS_EX_TOPMOST、WS_EX_MDICHILD等,这里的关系并不是指
2013-02-25 14:35:23 2208
原创 Android 检查gmail Inbox邮件
最近实现了一个android程序,能从一个gmail帐户中得到收件箱(Inbox)里面邮件信息,如多少未读邮件,邮件总数等。类似的功能,网上有很多例子。实现原理还是用java提供的一些类,先看一看界面效果:图一:输入email地址和密码,只能是gmail的,别的邮件目前没做图二:连接服务器过程中。图三:结果,我只实现了一些简单的功能,
2013-02-25 14:34:40 2413
原创 Win32 使HBITMAP显示成透明效果2
我之前写了一篇文章,关于如果将HBITMA(如Excel文件的图标)显示在界面上。Win32 使HBITMAP显示成透明效果由于有的HBITMAP有透明色,如果直接把这个HBITMAP画在界面上,透明的地方就会显示成黑色(也不一定是黑色)。当时我用的方法是把这个HBITMAP通过转换成GDI+的Image里面,然后把这个Image画在界面上,这样就可以去掉黑色。最近又发现了一个新的方法
2013-02-25 14:27:25 4339
原创 Android clipRect与Animation连用引起的问题
最近在写一个关于Clip图片的Android demo,遇到了一个小问题。如果有问题,欢迎交流:leehong2005@163.com。我这个DEMO的功能是能从SDCard中找出所有的图片,然后选择一张图片后,浏览大图,能上下翻页,当点击图片时,翻页按钮显示(有一个动画过程),过一段时间(3秒),按钮又会隐藏,这其中也有一个动画。运行效果图图一:从SDCard中找
2013-02-25 13:58:54 2277
原创 Win 7 如何备份与还原 Ubuntu
Ubuntu有两种安装方式,一种是基于windows的操作系统,安装在windows上面(如win 7),这样的话,那么这个ubuntu就像win 7的一个程序一样,可以在控制面板中卸载掉,在ubuntu里面可以访问windows里面的资源,但是,那么这样一来,如果把win 7重装的话(或者说哪天win 7坏了,不重装不行),之前安装的ubuntu的引导信息就没有了,所以在重装win 7之前要
2013-02-25 13:50:10 846
原创 Android widget 用法总结
最近做了一个widget,功能跟android自带的Picture frame功能相似,唯一不同的是,Picture frame是从SDCard中取得图片,而我做的这个widget所找的图片是从Google Picasa上面找,具体操作不是写本文的目的。在这里,我就对widget的用法作一个总结,算是自己记的笔记吧。大家可以与我交流:leehong2005@163.com,由于代码太多,想要代码的
2013-02-25 13:43:58 4641
原创 Android 常用命令
要想通过命令行的形式使用Android命令,一般情况是把ADK 下面的tools目录的路径加入到环境变量中,如何设置环境变量,大家可以查阅相关资料,这里不用说明了。在这里列出一些常用的命令,聊以备忘。1,android命令如果直接在cmd里面输入android命令,就会把Android SDK and AVD Manager调出来,通过这个界面可以对已经存在的Virtual Devic
2013-02-25 12:18:34 1264
原创 Java创建GUID
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。实现代码如下:public class GuidCreatorUtil{ /** * The value before MD5 */
2013-02-25 12:13:24 4244
原创 Android onTouchEvent, onClick及onLongClick的调用
针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件?在Android中,一次用户操作可以被不同的View按次序分别处理,并将完全响应了用户一次UI操作称之为消费了该事件(consume),那么Android是按什么次序将事件传递的呢?又在什么情况下判定为消费了该事件?搞清楚这些问题对于编写出能正
2013-02-25 12:08:55 1048
原创 DeskBand实现之——遇到的问题2
1. 最近又发现一个问题,相当严重,但重现机率相当小,最后通过打LOG,调了半天,终于找到原因。现象如下:把Desk Band关闭,再重新打开就会把explorer弄挂掉。一定要多试几次才可能出现。原因是什么呢?Desk Band出来是会创建一个窗体的,同时也会注册一个全局类,调用RegisterClass函数就行。RegisterClass会指定一个消息处理函数地址,也就是一
2013-02-25 12:02:08 1712
原创 DeskBand实现之——遇到的问题
在做DeskBand过程中,遇到了一些问题,这些问题说大可大,说小可小,不是三下两下就解决了,还是花了一些时间来解决。1. 会导致explorer.exe挂掉 原因: 这个问题导致是由于当前DeskBand的DLL的引用计数不正确导致的。系统每隔一段时间就会去调用 DllCanUnloadNow函数来检测当前DLL是否可以被系统卸载。系统大约每隔15分钟会检
2013-02-25 12:00:39 3430 1
原创 DeskBand实现之——注册与反注册
有了COM对象后,必须对浏览栏的CLSID进行注册。另外如果要与IE或资源管理器协调运行,还必须进行的恰当的组件种类(CATID_DeskBand)注册。这个工作由DllRegisterServer处理。实现代码如下:注册表中的结构如下图:1. 注册STDAPI DllRegisterServer(){ BOOL isSuccess = S
2013-02-25 11:56:42 3186 1
原创 DeskBand实现之——四个函数
对于一个DeskBand来说,它应该是一个DLL,也是一个COM对象,它是由explorer来调用的。对于DLL来说,它有几个函数,相当重要,本文对这几个函数作一个简单说明。 1,DllMain 2,DllGetClassObject 3,DllCanUnloadNow 4,DllRegisterServer 5,DllUnre
2013-02-25 11:52:48 2259
原创 DeskBand实现之——代码实现
SdkDeskBandObject.cpp文件说明:这是Desk Band最核心的类,它主要完成Band对象的创建,销毁,窗体创建,关闭,显示等。当创建空上对象时,一定要把当前DLL的引用计数加1,对象析构时,DLL的引用计数要减1。#define _DEFINE_GLOBAL_VARIABLES#include "SdkDeskBandDef.h"#include
2013-02-25 11:50:21 5965 1
原创 DeskBand实现之——实现声明
本文列出Desk Band的具体实现细节与代码。我这个Desk Band都是用SDK直接实现,没有用ATL来实现,用ATL也是可以的。用SDK可能麻烦一点。 SdkDeskBandObject.h文件说明:SdkDeskBandObject这个类定义了Band对象的接口。#ifdef __cplusplus#ifndef _SDKDESKBANDD
2013-02-25 11:40:05 4097
原创 DeskBand实现之——对象介绍
最近的项目上用到了Desk Band这种东西,我也是第一次做这个,做完后感觉收获很多,本文就讲一个如果实现一个自定义的Desk Band COM对象。 1. Band对象介绍Windows的区(Bands)对象有三种:浏览栏(Explorer Bar)区对象,工具栏(Tools Bands)区对象,和桌面区对象(Desk Bands)。本文主要讲一下桌面区对象的实现
2013-02-25 11:36:37 6972
原创 String类的包装 ---- 类实现
接上一篇《String类的包装 ---- 类声明》这是SdkString类的方法实现,每个方法都经过我测试,应该没有问题。如果大家发现有写得效率不高或者BUG的地方,可以进行回贴指出。// SdkString.cpp#ifndef SAFE_DELETE_ARRAY#define SAFE_DELETE_ARRAY(p) { if ((p) != NU
2013-02-24 22:13:56 2522
原创 String类的包装 ---- 类声明
这是我用C++语言实现的一个String类,类的声明如下:目前还没有重载 + 操作符,有时间把这个也实现。 说明:CPP中实现有些用到库函数,我这里没有表出所引用的头文件。因此直接拷贝可能会导致编译错误。// SdkString.hclass SdkString{public: // 构造函数 SdkString();
2013-02-24 22:12:35 1072
原创 操作配置文件的一种设计思路
我在写一个DeskBand Sample时,界面上出现的元素都是来自于配置信息,配置信息要从配置文件中来。目前是从注册表中来,但是,我们不能把它写死了。 还是那句话,封装是要封装变化,变化的东西是什么,是配置文件类型,XML,注册表,INI,数据库等等。数据格式,一般情况下变化不会太多。所以我们应该一个尽可能灵活的接口出来,即使某一天要从注册表换成XML,我们也能很从容应对。
2013-02-24 22:10:29 1113
原创 钩子原理与应用
1. 基本概念钩子(Hook)是Windows消息处理机制的一个平台,应用程序可以在上面设置子程序以监听指定窗口的某种消息,而且所监听的窗口可以是由其他他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,
2013-02-24 22:08:38 6989
原创 绘制窗体时防止闪烁
原文在这里:如何在绘画窗口时防止闪烁http://www.catch22.net/tuts/flicker.asp===================================================================================================================================
2013-02-24 22:05:41 1705
Android 画图板
2013-11-23
Android WheelView Demo源码
2013-11-01
Android下拉刷新框架源码
2013-10-13
PullToRefreshDemo
2013-10-13
WebViewBugDemo
2013-09-30
Image Cache v2.0
2012-10-26
Gallery 3D效果
2012-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人