工作总结(3)
1、PathFunctions
首先需要包含头文件
#include <shlwapi.h>
其次需要链接库
#pragma comment(lib, "Shlwapi.lib")
MSDN网址:http://msdn.microsoft.com/en-us/library/windows/desktop/bb773559(v=vs.85).aspx
2、在调试代码时,在监视中添加@err,hr可以查看GetLastError得到的错误消息提示
3、在使用VS创建项目时,选择控制台项目、win32项目,选择UNICODE、多字节,对应于不同的选择,VS偷偷的做了什么?在什么地方写着?
4、在项目中,将共同的部分抽取出来,作为多个项目都可以引用的部分
5、数据类型
6、最怕需求不明确,
7、MFC模态对话框dlg.DoModal()返回值
MSDN:http://msdn.microsoft.com/en-us/library/619z63f5.aspx
An int value that specifies the value of the nResult parameter that was passed to the CDialog::EndDialog member function, which is used to close the dialog box. The return value is –1 if the function could not create the dialog box, or IDABORT if some other error occurred, in which case the Output window will contain error information from GetLastError.
意思是,该函数的返回值是传给EndDialog(nResult)函数的参数,EndDialog()函数用来关闭对话框的成员函数。如果返回值是-1则表示该函数没能创建一个对话框,如果返回IDABORT则表示有其他错误发生,可以使用GetLastError()函数来捕捉该错误。
默认对话框关闭方式有两种:OnOk()、OnCancel(),
当使用OnOk()函数关闭对话框时,返回值为IDOK
当使用OnCancel()函数关闭对话框时,返回值为IDCANCEL
返回值与点击按钮的ID无关。
当点击模态对话框右上方的红叉按钮关闭对话框时,总是跳到OnCancel()关闭对话框处理,处理办法是相应WM_CLOSE消息,在消息相应函数中使用EnDialog()函数返回自定义的值即可。
8、VS2003以后,好多MFC的消息都修改为了虚函数,比如WM_INITDIALOG消息,如果要添加OnInitdlg函数,需要添加虚函数即可。
9、利用对话框类实例化一个对象,在对话框关闭时,对象并没有销毁,所以可以利用这个原理来传递值。
10、获取系统从启动到现在经过的时间,API函数 GetTickCount(),返回经过的毫秒数。
11、.h .lib .dll 的区别
.h文件主要是提供函数签名原型
至于函数的实现有两种库:动态库:dll 静态库: lib
当使用动态库dll的时候,有两种情况
1,只有dll而没有.h和.lib而有api文档的情况下,可以通过LoadLibrary动态加载dll,并通过GetProcAddress来获取函数地址并使用。
2,有dll,有.h,有lib的话,在编译选项里正确链接lib,并在代码头文件中includ .h文件即可使用
其中dll存储了函数具体的执行代码和资源,.h文件给出了函数的原型,.lib文件给出了函数在dll中的内存偏移地址。使用时dll与exe文件在同一目录即可
注意的是:此时的lib是导出文件,而不是静态库
而只有dll,没有.h .lib也没有文档,只有hack出函数接口和dll导出的lib了。
当使用静态库lib的时候,这个lib是包含了函数的执行代码的
只需要include h文件并在编译选项里正确链接lib即可。
《程序员的自我修养--链接、装载与库》