单词小助手V1.0
117 views 九月 07, 04 by Timothy单词小助手是我学VC数据库开发的一个练手的软件,主要采用ADO+ACCESS编程结构。由于学VC不久,所以这个小软件虽然功能不太多,但是也花了我几天的时间,做这个软件其实是自己突发奇想,自己在背单词的时候,总是写在本子上,一次一次地背,但是时间久了,不但单词忘了,就连背单词地本子也找不到了。:(
索性写了这个小软件。
该软件的主要功能,就是帮助你记忆单词。将自己不认识的单词加入,然后背诵,对背诵过的单词进行标记,随着标记次数的增多,相信你的单词量也不知不觉增加了。这是一个测试版本,可能很多功能并不完善,我以后还会对这个软件进行更多的改进。争取不断退出2.0,3.0版本呵呵……
程序预览图:

程序主要用到的核心技术和代码:
1.Splash窗口的逐渐淡出效果
采用到NT系统一个未公开的API。
在头文件加入#define WS_EX_LAYERED 0×00080000
定义API函数结构:
typedef BOOL (WINAPI *lpfn)(HWND hWnd,COLORREF cr,BYTE bAlpha,DWORD dwFlags);
lpfn g_pSetLayeredWindowAttributes;
从DLL取出该API函数地址:
HMODULE hUser32 = GetModuleHandle(_T(“USER32.DLL”));
g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32,”SetLayeredWindowAttributes”);
调整目标窗口属性:
::SetWindowLong(hWindow,GWL_EXSTYLE,GetWindowLong(hWindow,GWL_EXSTYLE)^WS_EX_LAYERED);
调用函数,实现透明效果:
g_pSetLayeredWindowAttributes(hWindow,5,50,2);
::RedrawWindow(hWindow, NULL, NULL,RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);
逐渐淡出效果,是采用了WM_TIMER消息,在OnTimer响应函数中,采用一个变量不断自减,和不断调用以上函数,来实现Splash窗口逐渐淡出的效果。
2.主程序背景窗口实现:
背景是一张我自己绘制的BMP图片,然后将其导入到工程中。
在窗口的OnPaint()函数中,加入如下代码:
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);//得到窗体的大小
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);//加载背景图片
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
将背景图片画在窗口上。如果需要较快的速度,可以采用BitBlt函数。
3.按钮主要是采用了CButtonST类,这个类的功能很丰富,实现也很简单,在这里就不重复了。可以方便地在网上找到代码和示例。
该程序源代码下载:
WIN2000/XP程序下载:
WIN98程序下载:
声明: 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论,对其完全的正确不做任何担保或假设
本站文章均采用 知识共享署名-相同方式共享3.0 协议进行授权,除非注明,本站文章均为原创,转载请注明转自 Timothy's Space 并应以链接形式标明本文地址!
[evil]