最近用MFC 写了一个迷你的小说阅读器
做个总结:
自动滚屏效果可以用:SetScrollPos和CEdit::LineScroll函数。
定时器的用法:
创建定时器:SetTimer(1,1000,NULL);
1表示定时器的ID,1000表示没1000ms也就是1s调用一次处理函数,最后一个参数是处理的函数,如果填NULL表示,使用系统默认的,默认处理函数是OnTimer()那个函数,在这里面写你要执行的操作就可以了,如果你有多个定时器要在这里写if(id == 1)类似的东西去区分不同的定时器,更换贴图最好是在OnTimer里面更换当前显示的图片编号,然后刷新界面,更换图片的工作让OnPaint去做,让他们各司其职。
关闭定时器:KillTimer(1)
添加WM_CLOSE消息出来函数 void CTestCloseDlg::OnClose() { // TODO: 在此添加消息处理程序代码和/或调用默认值 UINT nRet=MessageBox(_T("退出不?"),_T("wei"),MB_YESNO); if (nRet!=IDYES) { return; } CDialogEx::OnClose(); }在对话框中添加了RichEdit控件之后,调用对话框函数DoModal()总是无法显示对话框。
发现需要在调用对话框函数DoModal()之前需要调用AfxInitRichEdit( )函数,对于一个工程中,只需要调用一次AfxInitRichEdit( )函数就可以初始化所有的RichEdit控件的基本信息,实际上只要在工程的初始化中调用一次就可以了
void CMyView::OnShow() { // TODO: Add your command handler code here CDIALOG1 dlg; dlg.Create(IDD_DIALOG1) ; dlg.ShowWindow(SW_SHOW); } 作为非模态对话框,你定义的dlg是一个局部对象,那么执行完dlg.ShowWindow(SW_SHOW);后一到}符号处OnShow()函数结束,dlg这个局部对象的生命周期也到了,系统会随之把为dlg所关联的对话框资源也销毁,所以你看不到对话框显示,你把dlg改变成CMyView的类成员变量来定义就好了MAX_PATH 是C语言运行时库中通过#define指令定义的一个宏常量,它定义了编译器所支持的最长全路径名的长度。
文件的拖拽功能的实现:http://hi.baidu.com/woluxiaojiang/item/701c32287139561b08750836
这个文章写的不错。
对话框方面的,写的不错:http://visionsky.blog.51cto.com/733317/322890
对话框改变颜色写的不错:http://zzili.blog.163.com/blog/static/193620024201223135119604/
提示:在非模态对话框的OnCancel函数中可以不调用CWnd::DestroyWindow,取而代之的是调用CWnd::ShowWindow(SW_HIDE)来隐藏对话框.在下次打开对话框时就不必调用Create了,只需调用CWnd::ShowWindow(SW_SHOW)来显示对话框.这样做的好处在于对话框中的数据可以保存下来,供以后使用.由于拥有者窗口在被关闭时会调用DestroyWindow删除每一个所属窗口,故只要非模态对话框是自动清除的,程序员就不必担心对话框对象的删除问题.
关于位图按钮:http://blog.csdn.net/akof1314/article/details/4951836/