记录学习过程中的一些点滴:
在做工程的时候遇到,在遇到解决方案里的菜单有用到项目里的类来创建变量,对于不在同一目录下的项目来说,这里是用到的的把同类的放到一起,包含头文件(全局用到的)放在inc文件夹里,
1..lib文件放到lib文件夹里(这里的拷贝是设置vs2005,项目—》右键属性-》配置属性-》生成事件-》生成后事件-》命令行copy $(SolutionDir)$(ConfigurationName)\vss_carinfo.lib ..\lib\vss_carinfo.lib,这样可以不用人工把生成好的lib拷到文件夹,
2.注意c++常规----附加包含目录设置为:..\inc,
3.连接器常规-----附加库目录设置为..\lib。
对余菜单的函数如下
void CMainFrame::OnMenuTest()
{//不用包含头文件,因为已经在stdafx.h里加载了#include "IVSS_CarInfoLibrary.h" #pragma comment(lib,"vss_carinfo.lib")
//
CtestDlg *dlg = new CtestDlg();
dlg->DoModal();
delete dlg;
}
注:以下stdafx.h的内容
// 或是经常使用但不常更改的
// 特定于项目的包含文件
#pragma once
#ifndef _SECURE_ATL
#define _SECURE_ATL 1
#endif
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料
#endif
// 如果您必须使用下列所指定的平台之前的平台,则修改下面的定义。
// 有关不同平台的相应值的最新信息,请参考 MSDN。
#ifndef WINVER // 允许使用特定于 Windows XP 或更高版本的功能。
#define WINVER 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINNT // 允许使用特定于 Windows XP 或更高版本的功能。
#define _WIN32_WINNT 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。
#endif
#ifndef _WIN32_WINDOWS // 允许使用特定于 Windows 98 或更高版本的功能。
#define _WIN32_WINDOWS 0x0410 // 将它更改为适合 Windows Me 或更高版本的相应值。
#endif
#ifndef _WIN32_IE // 允许使用特定于 IE 6.0 或更高版本的功能。
#define _WIN32_IE 0x0600 // 将此值更改为相应的值,以适用于 IE 的其他版本。值。
#endif
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的
// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC 核心组件和标准组件
#include <afxext.h> // MFC 扩展
#include <afxdisp.h> // MFC 自动化类
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT
#define __MYSQL_DEF__
#include "IVSS_Corelibrary.h"
#pragma comment(lib,"vss_core.lib")
#include "IVSS_MysqlLibrary.h"
#pragma comment(lib,"vss_mysql.lib")
#include "IVSS_GeoLibrary.h"
#pragma comment(lib,"vss_geo.lib")
#include "IVSS_WsLibrary.h"
#pragma comment(lib,"vss_ws.lib")
#include "IVSS_DmLibrary.h"
#pragma comment(lib,"vss_dm.lib")
#include "IVSS_MapLibrary.h"
#pragma comment(lib,"vss_map.lib")
#include "IVSS_GuiLibrary.h"
#pragma comment(lib, "vss_gui.lib")
#include "IVSS_CarInfoLibrary.h"
#pragma comment(lib,"vss_carinfo.lib")
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
所以在MainFrm.cpp里不用
#include "CtestDlg.h
在编译的时候,先生成个部分的,
最后编译整个方案。
注:要使菜单不是灰色可点的,必须有与之相对应的函数,而且是在MainFram.cpp里面。而且还要
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_WM_CREATE()
ON_COMMAND(ID_DB_CONNECT, &CMainFrame::OnDbConnect)
ON_COMMAND(ID_MIF_IMPORT, &CMainFrame::OnMifImport)
ON_COMMAND(ID_MAP_ZOOMIN, &CMainFrame::OnMapZoomin)
ON_COMMAND(ID_MAP_ZOOMOUT, &CMainFrame::OnMapZoomout)
ON_COMMAND(ID_MAP_SCROLL, &CMainFrame::OnMapScroll)
ON_COMMAND(ID_MENU_GUI, &CMainFrame::OnMenuGui)
END_MESSAGE_MAP()
待续.....