MFC

最近用MFC 写了一个迷你的小说阅读器

做个总结:

自动滚屏效果可以用:SetScrollPos和CEdit::LineScroll函数。

定时器的用法:

创建定时器:SetTimer(1,1000,NULL);
1表示定时器的ID,1000表示没1000ms也就是1s调用一次处理函数,最后一个参数是处理的函数,如果填NULL表示,使用系统默认的,默认处理函数是OnTimer()那个函数,在这里面写你要执行的操作就可以了,如果你有多个定时器要在这里写if(id == 1)类似的东西去区分不同的定时器,更换贴图最好是在OnTimer里面更换当前显示的图片编号,然后刷新界面,更换图片的工作让OnPaint去做,让他们各司其职。
关闭定时器:KillTimer(1)

MFC对话框关闭的时候弹出一个消息框这个该如何做到?

添加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/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值