之前在学习MFC的时候,没找到合适的学习资源,只能在百度、CSDN等搜索,不能系统性的学习。遇到一些问题,以下为个人随笔,记录学习中的一些问题。
关于GetLocalTime()与GetCurrentTime()这个问题比较深刻,就先从此开始吧。本意是想获取系统的时间,在MFC Dialog UI上实时更新,功能很简单,但每个人总有第一次,嘿嘿,不懂嘛,找资料,照着做,还是出了问题,尴尬了。虽然网上有很多教程,自己还是总结一下。
第一次做到这里就不知道该怎么设置了,首先一个问题,我该如何让显示的系统时间在不断更新,创建出来的MFC程序没有main()函数,或者说它把main()隐藏起来了,我们不能修改。那我的函数怎么循环执行成了一个问题。想到使用while循环,放在初始化函数中试了试,程序不能正常运行。想到MFC是基于消息循环的程序框架,是不是应该添加消息响应函数呢。
又是一波找资料,发现需要设置定时器,再为WM_TIMER消息添加消息响应函数。首先我是在初始化函数中添加了定时器 SetTimer(1, 1000, NULL); (也可以添加多个定时器,ID不一样即可) 1:定时器ID, 可为非零正整数;1000:1000ms定时间隔;参数三:可为回调函数,也可为NULL,为NULL时则消息响应操作在OnTime()中实现,回调还没有试过。
SetTimer() OK后,在Class View视图下选择要添加消息响应函数的Class,我选的是 CTimeDlg,右键属性(properties),最上边有个闪电符号,其右边有个Tool Tip为Messages的,点击进去,找到WM_TIMER,点击右边出现下来选项框,Add Ontimer3.SetTimer() OK后,在Class View视图下选择要添加消息响应函数的Class,我选的是 CTimeDlg,右键属性(properties),最上边有个闪电符号,其右边有个Tool Tip为Messages的,点击进去,找到WM_TIMER,点击右边出现下来选项框,Add Ontimer
.接下来就是实现Ontimer()消息响应函数了。两种方式:这边参考了其他人的做法,经测试完全没问题,嘿嘿。
***GetLocalTime()***形式:
SYSTEMTIME st;
GetLocalTime(&st);
CString strtime;
strtime.Format(_T("%4d-%02d-%02d %02d:%02d:%02d"), st.wYear,st.wMonth ,st.wDay ,st.wHour ,st.wMinute ,st.wSecond );
**GetCurrentTime()***形式:
CString strTime;
CTime cTime = CTime::GetCurrentTime();
strTime = cTime.Format(_T("%Y:%m:%d:%H:%M:%S"));
最后设置编辑框即可编译运行,在UI 上即可实时更新时间。
SetDlgItemText(IDC_TimeEdit, strTime);
差点忘了要KillTimer(1),具体参考最后的链接。我把它放在了对话框析构函数中,但是这里不知道为啥,使用KillTimer()时点击对话框右上角退出按钮会Crash掉,所以使用了::KillTimer(m_hWnd, 1); 具体原因还没有深究,可能与放在析构函数中有关。
//KillTimer(1);
::KillTimer(m_hWnd, 1); //避免点击右上角退出按钮出现Crash
第一次写,排版搞不来,还没研究,包含!同时感谢那些分享干货很多的博主,嘿嘿,得多向你们学习!
https://www.cnblogs.com/yangxx-1990/p/4837327.html
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
链接: link.
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' |
‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" |
“Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash |
– is en-dash, — is em-dash |
一个具有注脚的文本。2
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::
这将产生一个流程图。:
我们依旧会支持flowchart的流程图:
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎