{A}
{S0}简介
我试图找到一个现成的使用按钮类,将工作与Pocket PC,看起来比微软的沉闷按钮更好。我认为,这将是很容易找到。好了,它没有发挥出来。我能找到的最好的代码仍然需要大量的修改,以满足我的期望。
的目标是....好了,让我们看看在功能列表。特点所有者绘制按钮类。完全透明的选项。透明位图支持向上和向下按钮。平原或3D按钮上的文字。WAV文件关联按钮。
这些都是基本要求,让您进行简单的专业寻找/代理按钮。使用代码添加UniButton.cpp和UniButton.h到项目中。添加#include quot; UniButton.hquot xxxxxxDlg.h文件或需要的地方。添加背景位图的资源和位图的句柄成员变量m_hBmpBkgnd。载入位图和分配结果在OnInitDialog()处理。这个成员变量的值稍后会通过UniButton类。画在OnPaint()的背景。将按钮添加到所需的对话框资源。对于每一个按钮,添加一个成员变量CButton的类型,使用类向导。在xxxxxDlg.h文件中,与CUniButton取代CButton的类型。在资源编辑器,检查quot;所有者Drawquot;财产。
添加所需的位图资源。例如,IDB_BITMAP_BTNUP和IDB_BITMAP_BTNDOWN。所有的按钮配置在OnInitDialog()使用CUniButton类的公共成员函数。这是位图句柄的m_hBmpBkgnd传递到CUniButton。它是这样的原因是由于背景的多个副本,以尽量减少内存的使用情况。公共方法
所有这些方法是不言自明。下面列出了其中的几个:
详情void SetTransparent(BOOL Enable = FALSE);
void SetTextColor(COLORREF TextColor = RGB(0,0,0));
BOOL FontStyle(CString sFont = "MS Sans Serif",
int iHeight = 10, int iWidth = 6,
BOOL bFont3D = FALSE, BOOL bConcave = FALSE);
void HideText(BOOL bHide = TRUE);
void SetBtnDownImg(int bmpID); //Assign bitmap ID from resources
void SetBtnUpImg(int bmpID); //Assign bitmap ID from resources
BOOL LoadWAV(CString fileName, BOOL loadMEM);
BOOL WavIsSupported(void);
BOOL WAVLoaded(void);
void SetBkgndHandle(HBITMAP hBitmap); //Pass a background bitmap
void SetTopEdgeColor(COLORREF TopEdge = RGB(50,50,50));
void SetLeftEdgeColor(COLORREF LeftEdge = RGB(70,70,70));
void SetTranspColor(COLORREF transpCREF);
创建CUniButton时,提供支持的WAV是自动完成的。主要的功能,可以检查通过调用WavIsSipported(可用性)前调用LoadWAV()。然而,自LoadWAV()类似的检查本身,它是安全的调用没有事先检查。
LoadWAV()有两个参数。 filename指定的WAV文件的路径。 loadMEM,如果情况属实,将加载到内存缓冲区的WAV文件,因此在使用的内存为代价更快。当它是假的,每次的文件是要发挥,将创建缓冲区,将被复制到它的WAV文件,然后播放。这将是慢,但它需要较少的内存。
透明度,在这个类中,有两个含义。当透明度与SetTransparent(TRUE),按钮位图被忽略,并且按钮与背景绘制。当关闭按钮位图的透明度。虽然,它听起来令人困惑,他们画的透明度。将位图的颜色(255,255,255) - 白色透明的。透明色可以改变SetTranspColor()。
为了尽量包括Test.wav文件,它必须放在quot;我Devicequot;目录。一直以来,我无法弄清楚如何做一个模拟器,我在实际设备上测试声音。从可以下载预建演示。杂项
这段代码是quot; ISquot,没有任何担保,并只用于非商业使用。对于所有的问题,请联系{A3}。历史2005年12月25日:版本1.0 - 初始版本。