<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DZWH的博客]]></title><description><![CDATA[勤学似春起之苗，不见其增，日有所长！]]></description><link>https://blog.youkuaiyun.com/friendsdan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; friendsdan]]></copyright><item><title><![CDATA[VS2008, MFC 文件的操作5 - 注册表 操作]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106967919</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106967919</guid><author>friendsdan</author><pubDate>Fri, 26 Jun 2020 12:33:30 +0800</pubDate><description><![CDATA[接上一节笔记：VS2008, MFC 文件的操作4 - CFile类, CFileDialog类 方式 文本方式打开

1. 在工程APP类，先在InitInstance中进行示范


	// 不需要的特定初始化例程
	// 更改用于存储设置的注册表项
	// TODO: 应适当修改该字符串，
	// 例如修改为公司或组织名
	SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
   //操作win.ini
	//::WriteProfileString(_T("xxxxxxxx.]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 文件的操作4 - CFile类, CFileDialog类  方式 文本方式打开]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106967849</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106967849</guid><author>friendsdan</author><pubDate>Fri, 26 Jun 2020 11:36:14 +0800</pubDate><description><![CDATA[接上一节笔记：VS2008, MFC 文件的操作3 - Win32 API 方式 文本方式打开

1. 代码 及 点击 子菜单项 WriteFile 时候的可选文件


void Cvs2008_SX_jiaocheng12View::OnFileWritefile()
{
	// TODO: 在此添加命令处理程序代
	//CFilel类
	//CFile file(L"5.txt",CFile::modeCreate | CFile::modeWrite);
	//file.Write(L"yyyyyx.]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 文件的操作3 - Win32 API 方式 文本方式打开]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106967091</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106967091</guid><author>friendsdan</author><pubDate>Fri, 26 Jun 2020 10:45:26 +0800</pubDate><description><![CDATA[接上一节笔记：VS2008, MFC 文件的操作2 - C++ 语言方式 文本方式打开

1. 代码


void Cvs2008_SX_jiaocheng12View::OnFileWritefile()
{
	// TODO: 在此添加命令处理程序代码
//Win32 API 方式
	HANDLE hFile;
	hFile = CreateFile(_T("4.txt"),GENERIC_WRITE,0,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
	DWO]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 文件的操作2 - C++ 语言方式 文本方式打开]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106966604</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106966604</guid><author>friendsdan</author><pubDate>Fri, 26 Jun 2020 10:18:14 +0800</pubDate><description><![CDATA[上一节是：VS2008, MFC 文件的操作1 - C语言方式 文本方式打开 / 二进制方式打开 读写 C

本节接着 上一笔记

1. 在工程view类中 增加头文件#include &lt;fstream&gt;

2. 加入代码


void Cvs2008_SX_jiaocheng12View::OnFileWritefile()
{
	// TODO: 在此添加命令处理程序代码
//C++方式
	ofstream ofs("3.txt");
	ofs.write("xxxxxxxddddddddd]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 文件的操作1 - C语言方式  文本方式打开 / 二进制方式打开 读写 C]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106962441</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106962441</guid><author>friendsdan</author><pubDate>Thu, 25 Jun 2020 23:08:44 +0800</pubDate><description><![CDATA[1. 在菜单栏 新建 子菜单File 和菜单项 WriteFile，ReadFlile,并都添加 事件处理函数到工程view类中。





2. 以文本新式打开 读写文件代码


void Cvs2008_SX_jiaocheng12View::OnFileWritefile()
{
	// TODO: 在此添加命令处理程序代码
	//C语言方式
	FILE *pFile = fopen("1.txt","w");//Opens an empty file for writing. If the give]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面2 - 向导属性表单 List Box Combo Box]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106955584</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106955584</guid><author>friendsdan</author><pubDate>Thu, 25 Jun 2020 16:56:26 +0800</pubDate><description><![CDATA[本部分需要 查看 我的另一篇：VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面1 - 点击子菜单 显示建立的属性对话框

1. 在上一篇， 成功的实现了点击 子菜单 PropertyPage 弹出 属性表单对话框，只需要在 建立模态对话框之前加入 设置向导模式就可以，函数为 SetWizardMode();


void Cvs2008_SX_jiaocheng08_1View::OnPropertypage()
{
	// TODO: 在此添加命令处理程序代码
	CPropShee]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记6 - 属性表单 TAB 页面1 - 点击子菜单 显示建立的属性对话框]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106949890</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106949890</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 23:13:24 +0800</pubDate><description><![CDATA[1. 插入属性表单，在资源视图中 右键Diag，选择 添加资源， 在Dialog展开项 可以看到三种PROPPAGE的属性页。选择IDD_PROPPAGE_LARGE页插入 3个PROPPAGE。ID 分别为 IDD_PROP1,IDD_PROP2,IDD_PROP3. caption分别改为 Page1,Page2,Page3.



2. 给新建的3个PROPPAGE添加控件 如下：







3. 针对3个PROPAGE属性框 建立3各基类为CPropertyPage,的类:CProp1,CPro]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记5 - 逃跑按钮的实现（鼠标指到某按钮，则按钮消失）]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106949268</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106949268</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 18:58:50 +0800</pubDate><description><![CDATA[原理：当鼠标指到 escape 按键，则当前escape消失 另外一个显示。



1. 新增加一个类 基类为CButton，右键工程，







2. 控件关联成员变量 成员变量放到工程Dlg类中，成员变量类型为步骤1 中创建的类CDyBtn。





3. 给新增加的类CDyBtn 增加windows消息WM_MOUSEMOVE响应的函数OnMouseMove:（因为是button类 所以只有到鼠标移动到button上才响应WM_MOUSEMOVE）



4. 在工程Dlg 的OnInitDia]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记4 - 实现回车键 在Edit Control控件 焦点切换]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106948273</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106948273</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 17:50:54 +0800</pubDate><description><![CDATA[1. 把Edit Control 控件属性Multiline设置为False



2. 在default 按钮 OnOK函数里操作：（OnOK 函数 ，不管 确定 按钮存在与否，都会被调用，以做默认操作）如果要使用自定义的buton去做OnOK（比如 默认 确定 按钮不见了）,一定要把自定义的button 的ID改为IDOK。


void CtestDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
//	OnOK(); 注释掉基类的 OnOK调用 那么在按 ]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记3 - 实现回车键 在Edit Control控件 输入焦点切换(此方法比较麻烦)]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106945926</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106945926</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 17:16:35 +0800</pubDate><description><![CDATA[1. 一般情况，当按回车键 会触发default按键，而一般来讲是 确定 按钮 ，此时会程序会退出，原因是 确定 按钮 的Defalut Button属性 设为true，过程中调用了基类的OnOK函数:



2. 在新建的Dialog类中，增加 Windows 消息处理INITDIALOG，但是不太一样的是 要在重写里面添加



3. 用来转移焦点的Edit control控件的属性 Multiline 设为True



4.双击 资源视图 dialog的 确定 按钮 实现一个OnBnClickedO]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记2 - 实现展开收缩对话框]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106944250</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106944250</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 15:51:58 +0800</pubDate><description><![CDATA[1. 当点击Unexpand的时候 图像控件 以下部分展开，再次点击 图像控件以下部分收缩；Dialog图：



2.实现功能的代码 ，请参看注释：


void CtestDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	
	CString str;
	if(GetDlgItemText(IDC_BUTTON2,str),str == L"Unexpand&lt;&lt;")//点击Unexpand 呈展开显示文字
	{
		SetDlgItem]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 编程 对话框 笔记1]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106941543</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106941543</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 14:51:51 +0800</pubDate><description><![CDATA[1. 静态文本框要响应鼠标单击 就要设置其属性中的Notify 为True,同时改变其ID，以使得其ID 与其他静态文本ID不同.





2. 实现 点击 静态文本改变 其内容的代码


void CtestDlg::OnStnClickedNumber1()
{
	// TODO: 在此添加控件通知处理程序代码
	CString str;
	if( GetDlgItem(IDC_NUMBER1)-&gt;GetWindowTextW(str),str ==L"Number1")//GetDlgIt..]]></description><category></category></item><item><title><![CDATA[VS2019, MFC 使用按键动态给对话框上添加一个按钮]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106940118</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106940118</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 11:42:43 +0800</pubDate><description><![CDATA[1 . 当点击ADD 会在对话框中新增一个按钮，属性：





2. 见代码注释


void CTestDlg::OnBnClickedBtnAdd()
{
	// TODO: 在此添加控件通知处理程序代码
	/*方法1
	if (FALSE == m_bIsCreate)//m_bIsCreate是CTestDlg 的bool类型成员，在构造函数中初始化为FALSE
	{                        //当多次点击ADD 按钮就不会增加或消失 一个DDD按钮，就不会因多次装载而报错。]]></description><category></category></item><item><title><![CDATA[VS2019, MFC 模态对话框与非模态对话框]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106937619</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106937619</guid><author>friendsdan</author><pubDate>Wed, 24 Jun 2020 11:01:31 +0800</pubDate><description><![CDATA[1. 模态对话框 显示时，应用程序被暂停，只有模态对话框关闭了 才能操作其他应用.

2. 非模态对话框 显示时 其他程序仍然可以运行。

3. 首先建立一个对话框

3.1 在资源视图 右键Dialog 增加一个IDD_DIALOG1



3.2 右键 Dialog面板 为其增加CDialog 类CTestDlg



4. 增加菜单项，用于当点击菜单项时候 弹出新建的 对话框。设为非Popup类型，ID：ID_DIALOG



4.1 右键子菜单 ”对话框“ ，为其添加“事件处理程序(A)...”.]]></description><category></category></item><item><title><![CDATA[VS2008, MFC  view类中实现一个电话簿程序]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106924994</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106924994</guid><author>friendsdan</author><pubDate>Tue, 23 Jun 2020 17:09:58 +0800</pubDate><description><![CDATA[功能为：往view窗口输入 信息（姓名 电话）然后回车，则在子菜单的菜单项增加一项。通过点击增加的菜单项，又可以显示 窗口输入的信息（姓名 电话）



1. 在View类中增加一个windows消息响应WM_CHAR,这样所有键盘的消息都会在OnChar消息响应函数中被捕获。实现函数 参看代码注释


void CxxxxView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	
	CC...]]></description><category></category></item><item><title><![CDATA[VS2008, MFC 动态添加菜单项]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106924161</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106924161</guid><author>friendsdan</author><pubDate>Tue, 23 Jun 2020 15:31:30 +0800</pubDate><description><![CDATA[1. 在CMainFrame类的OnCreate函数的最后的TODO::后面添加代码，如下：见代码注释：


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP]]></description><category></category></item><item><title><![CDATA[vs2019, MFC 如何在视类窗口添加右键弹出菜单功能]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106919543</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106919543</guid><author>friendsdan</author><pubDate>Tue, 23 Jun 2020 11:57:38 +0800</pubDate><description><![CDATA[1. 添加一个menu资源



2.在view类中增加一个右键WM 消息处理，在消息响应函数OnRButtonDown中添加如下代码：




void CxxxxView::OnRButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CMenu menu;
	menu.LoadMenuW(IDR_MENU2);//装载创建的menu资源
	CMenu* pPopup = menu.GetSubMenu(0);
	C]]></description><category></category></item><item><title><![CDATA[vs2019, MFC 工具栏和菜单项，disable和enable操作]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106918370</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106918370</guid><author>friendsdan</author><pubDate>Tue, 23 Jun 2020 11:17:14 +0800</pubDate><description><![CDATA[1. 要使得工具栏与菜单项同步，只需要把菜单项的ID号与工具栏的ID号一致即可。如子菜单编辑(E)&gt;&gt;剪切(I)的ID：ID_EDIT_CUT,那么工具栏这个图标的ID：ID_EDIT_CUT.

2. Enable或disable一个菜单项，在资源视图里面右键菜单项，如下添加UPDATE_COMMAND_UI,在CFRAME类中。在生成的函数OnUpdateEditCut添加代码






void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)
{.]]></description><category></category></item><item><title><![CDATA[VS2019, MFC 菜单以及菜单相关编程---标记菜单/缺省菜单项]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106909743</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106909743</guid><author>friendsdan</author><pubDate>Mon, 22 Jun 2020 21:50:54 +0800</pubDate><description><![CDATA[1. Menu消息在各个类中的响应顺序：

view类-&gt;DOC 类-&gt;Frame类-&gt;APP 类

2.要实现标记菜单可以在 CMainFrame OnCreate成员中进行。即在窗口创建完成之后,在OnCreate函数最后加入如下代码：




//GetMenu()-&gt;GetSubMenu(0)-&gt;CheckMenuItem(0, MF_BYPOSITION | MF_CHECKED);//设置菜单项check状态
	// Get the main window's m.]]></description><category></category></item><item><title><![CDATA[VS2019, MFC 光标文字操作]]></title><link>https://blog.youkuaiyun.com/friendsdan/article/details/106903837</link><guid>https://blog.youkuaiyun.com/friendsdan/article/details/106903837</guid><author>friendsdan</author><pubDate>Mon, 22 Jun 2020 20:18:50 +0800</pubDate><description><![CDATA[1. 如何创建光标显示在view类中

1.1 创建OnCreate函数，在view类上右键&gt;&gt;属性，然后在选择WM消息中的OnCreate





1.2, 在Oncreate中添加如下代码（详细见代码及注释，取消代码中的注释以打开功能即可）


int CxxxxView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;

	// TODO:]]></description><category></category></item></channel></rss>