最近在考虑怎样记单词,想在电脑上弄个类似弹幕的工具,滑动显示单词,增加查看次数,提高记忆效果
网上找了下,没有找到比较方便的工具,就准备做一个MFC界面的小工具试试看。
通过代码拼凑,简单的实现了这个功能。
需要实现的功能
1. 界面透明的设置
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE) ^ WS_EX_LAYERED);
HINSTANCE hInst = LoadLibrary(L"User32.DLL"); //显式加载DLL
if (hInst)
{
typedef BOOL(WINAPI *MYFUNC) (HWND, COLORREF, BYTE, DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if (fun)
fun(this->GetSafeHwnd(), 0, 200, 2); //通过第三个参数来设置窗体透明程度
FreeLibrary(hInst);
}
2. 滑动效果的展现
通过定时器调用,截取子字符串来模拟滑动效果
3. 读取文本数据
由于工程项目使用的是Unicode字符集,为了避免出现乱码,所以读取的文本设置为unicode编码的txt,
如果原始文件不是unicode格式,使用记事本另存为的方式进行编码转换
MFC中读取unicode格式txt的方法
void readUnicodetxt(CString &str)
{
str.Empty();
CFile ReadF(_T("D:\\filename.txt"), CFile::modeRead);
TCHAR* temp = new TCHAR[ReadF.GetLength() / 2 + 1];
ReadF.Read(temp, ReadF.GetLength());
temp[ReadF.GetLength() / 2] = 0;
ReadF.Close();
str = temp;
delete [] temp;
}
4. 让程序显示在最前面
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
就这样,一个简单的单词滑动提示器就做出来了
使用说明:
数据文件 D:\\filename.txt,应该是unicode编码
程序下载地址
网上找了下,没有找到比较方便的工具,就准备做一个MFC界面的小工具试试看。
通过代码拼凑,简单的实现了这个功能。
需要实现的功能
1. 界面透明的设置
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE) ^ WS_EX_LAYERED);
HINSTANCE hInst = LoadLibrary(L"User32.DLL"); //显式加载DLL
if (hInst)
{
typedef BOOL(WINAPI *MYFUNC) (HWND, COLORREF, BYTE, DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun = (MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
if (fun)
fun(this->GetSafeHwnd(), 0, 200, 2); //通过第三个参数来设置窗体透明程度
FreeLibrary(hInst);
}
2. 滑动效果的展现
通过定时器调用,截取子字符串来模拟滑动效果
3. 读取文本数据
由于工程项目使用的是Unicode字符集,为了避免出现乱码,所以读取的文本设置为unicode编码的txt,
如果原始文件不是unicode格式,使用记事本另存为的方式进行编码转换
MFC中读取unicode格式txt的方法
void readUnicodetxt(CString &str)
{
str.Empty();
CFile ReadF(_T("D:\\filename.txt"), CFile::modeRead);
TCHAR* temp = new TCHAR[ReadF.GetLength() / 2 + 1];
ReadF.Read(temp, ReadF.GetLength());
temp[ReadF.GetLength() / 2] = 0;
ReadF.Close();
str = temp;
delete [] temp;
}
4. 让程序显示在最前面
SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
就这样,一个简单的单词滑动提示器就做出来了
使用说明:
数据文件 D:\\filename.txt,应该是unicode编码
程序下载地址
http://download.csdn.net/detail/aaajj/8535457
使用效果