VC开发细节小结
来源:互联网 发布:美工培训需要多少钱 编辑:程序博客网 时间:2024/06/05 12:06
遇到一些经典的东西(个人认为),在此做一个小记录。。
1。Mfc 对话框的移植
我们一直在苦恼mfc 可移植性太差,不方便团队开发,看了下面的介绍之后就不会这么想啦。
步骤:
1、首先要生成一个*.ogx的文件。
方法:打开包含有所要加的对话框资源的工程(源工程)。
在试图资源(ClassView)中鼠标右键点击所需的对话框的类(也可以是所需的类)
这时,你会看到右键菜单中有个“Add to Gallery”的选项。
选择这个选项,则*.ogx文件生成。
生成的文件名会类似你的对话框的类名,只不过中间会多出的空格(这无关紧要)
关键是此文件生成在什么地方!
一般情况下是:
C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Gallery
/源工程名 目录下
2、接着就是Insert这个*.ogx的文件。
也就是Insert这个对话框资源和这个对话框类
打开所要加入的工程(目的工程),选择
Project->Add To Project->components and controls...
这时打开的是一个对话框,默认的打开目录就是:
C:/Program Files/Microsoft Visual Studio/Common/MSDev98/Gallery
在对话框中选择进入“源工程名”的目录,你就会看到那个 *.ogx的文件,
选择它,然后Insert. 最后关闭对话框。
这时你就会看到那个对话框的类已经出现在你的工程中,
再到资源ResourceView中的Dialog中看看吧,那个对话框的资源已经出现。
到这个时候,你所需要改动的就不是很多了。。。
2。CTime类获取当前时间,并将其格式化
用CTime类得到当前日期、时间、星期,格式化
① 定义一个CTime类对象 CTime time;
② 得到当前时间 time = CTime::GetCurrentTime();
③ GetYear( ),GetMonth( ), GetDay( ), GetHour( ), GetMinute( ), GetSecond( ), GetDayOfWeek( ) 返回整型(int)对应项目
④ 将当前时间格式化 CString date = time.Format("%Y-%m-%d %H:%M:%S %W-%A");
说明:
1) 结果为:2006-10-13 17:23:47 41-Friday
2) 格式符号说明
%a —— 星期(缩写英文),如Fri;
%A —— 星期(全写英文),如Friday
%b —— 月份(缩写英文),如Oct
%B —— 月份(全写英文),如 October
%c —— 月/日/年 时:分:秒,如 10/13/06 19:17:17
%d —— 日期(1 ~ 31)
%H —— 时(24小时制)(0 ~ 23)
%I —— 时(12小时制)(0 ~ 12)
%j —— 一年当中的第几天,(1 ~ 366)
%m —— 月份(数字 1 ~ 12)
%M —— 分(0 ~ 59)
%p —— 12小时中的A M/PM指示,或者AM,或者PM
%S —— 秒(0 ~ 59)
%U —— 一年中的第几周,星期日作为每周的第一天(0 ~ 53)
%w —— 星期(数字表示,0 ~ 6,0代表星期日)
%W —— 一年中的第几周,星期一作为每周的第一天(0 ~ 53)
%x —— 月/日/年,%c的前半段
%X —— 时/分/秒,%c的后半段
%y —— 年份(不带世纪,如 06)
%Y —— 年份(带世纪,如 2006)
更详细资料:http://hi.baidu.com/whenisee/blog/item/6a376f270113100a918f9d96.html
3。发送自定义消息
消息传递的方法一:使用ON_MESSAGE
使用ON_MESSAGE响应消息,必须配合定义消息#define WM_MY_MESSAGE (WM_USER+100)
一、对于发送消息者-MyMessageDlg,
①在其MyMessageDlg.h中,定义#define WM_MY_MESSAGE (WM_USER+100)
② 在其MyMessageDlg.cpp中要先添加:#include "MainFrm.h" ,因为使用了CMainFrame*定义对象。
③并且要有测试消息的函数:
void MyMessageDlg::OnButtonMsg()
{
// TODO: Add your control notification handler code here
CMainFrame* pMF=(CMainFrame*)AfxGetApp()->m_pMainWnd; //先通过获取当前框架指针
CView * active = pMF->GetActiveView();//才能获取当前视类指针
if(active != NULL) //获取了当前视类指针才能发送消息
active->PostMessage(WM_MY_MESSAGE,0,0); //使用PostMessage发送消息
}
二、对于消息的接受者-MessageTestView,
在其MessageTestView.h中
①也要定义#define WM_MY_MESSAGE (WM_USER+100)
②并定义消息映射函数-OnMyMessage()
protected:
//{{AFX_MSG(CMessageTestView)
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
在其MessageTestView.cpp中,
①先要声明响应消息:
BEGIN_MESSAGE_MAP(CMessageTestView, CEditView)
//{{AFX_MSG_MAP(CMessageTestView)
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
//}}AFX_MSG_MAP
②再添加消息响应的函数实现:
LRESULT CMessageTestView::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
MessageBox("OnMyMessage!");
return 0;
}
这样当执行OnButtonMsg()中的postmessage()时,会把此消息加到消息队列中等待响应。响应就会执行 OnMyMessage()内的代码,如果要立即响应此消息,则可以使用sendmessage()
更详细资料:http://blog.163.com/luxiaojun./blog/static/92132782008116111114914/
4。VC 对话框控件排序(Tab键改变焦点顺序)
当我们填写资料时,习惯用tab键,当利用VC制作对话框之后,怎样实现这个效果呢?
方法有两种:
一、界面操作
切换到对话框资源界面,按ctrl+d,出现数字标记后,按所要的顺序点击控件
工具栏-->布局(LayOut)-->Taborder(Ctrl+D)
二、修改代码
点击【文件】-->【打开】-->选择.rc文件,打开模式用text,找到begin 和 end之间定义的控件宏,改变顺序就OK了
5。MFC弹出文件或是执行文件
ShellExecute(m_hWnd,_T("open"),".//res//Bible.chm",NULL,NULL,SW_SHOWNORMAL);
6。VC的一些快捷键
ctrl+shift+F9 去掉工程内所有的断点 (当我们为了调试设了很多断点之后,此快捷键非常方便)
ctrl+F9 去掉当前页内断点
F9 去掉/添加光标所在行的断点
Ctrl+F10 DebugRunToCursor 调试并执行到光标所在行
Ctrl+L 剪切光标所在行
Alt+F8 为选择的代码规范格式
- VC开发细节小结
- 开发项目细节问题小结
- vc开发工作小结
- vc开发小结
- vc++ DLL开发小结
- VC 下Microsoft Speech SDK开发小结
- VC 下Microsoft Speech SDK开发小结
- VC 小结
- VC小结
- VC----小结
- HttpServletResponse 细节小结
- HttpServletRequest细节小结。。。
- JSP细节小结
- HDFS-上传下载-细节小结
- iOS-细节小结
- 开发细节
- VC 下Microsoft Speech SDK5.1开发小结
- VC 下Microsoft Speech SDK 5.1 开发小结
- rsync bind failed (Address already in use)故障处理
- 有些时候
- 【关于大学生就业】读透可少奋斗15年
- 数的几何-网格求积分法初阶
- rsync: error while loading shared libraries
- VC开发细节小结
- JS 打印
- PHP 5.2.11版本修复多个安全漏洞
- spring的aop做日志的控制
- socket编程
- 面试小趣
- rsync examples
- 正在找工作,给自己加把劲
- 如何使用动态创建模板列并绑定数据(GridView,Repeater,DataGrid)