vs2008 创建对话框MFC应用程序调试c++代码
android 调用了不少c++生成的.so库。有时怀疑库出了问题。android方面调用的库,调试基本调试不了。所以就用vs2008 创建对话框MFC应用程序调试c++代码。以前也有以调试,久了又快忘了。这次就记录一下。我不是专业c++,所以容易忘记。
1、创建MFC应用程序
2、选择对话框
下一步,然后看到这个界面
接下来直接下一步,下一步,或者直接完成即可。
3、项目结构,找对打对话框
打开之后如下图,下图拖了一个编辑框在哪里了
5、拷贝c++代码到项目
找到写对话框逻辑代码.cpp的位置。
在对话框代码的路径下,最好建一个文件夹,放你需要调试代码。
然后在项目中添加,现有项。把刚刚建文件夹的代码全部添加进去即可。如果这个文件夹有子目录,也陆续添加进去。
、
6、右键生成时候出现编译头问题
在.cpp文件中, 添加到“stdafx.h” 一定要在最前面。
在解决方案资源管理器视图下选中某些导致错误的文件,浏览到头文件.cpp那,右键属性---C/C++-----预编译头-----选择 不使用预编译头 即可。
这样你的mfc调试已经弄好了。
7、写代码啦
在引用你添加调试c++的代码路径,因为你是放在你代码下,新建的文件下代码,包含进去即可。
#include "src/CoordManage.h"
全局变量需要.h头文件声明变量的。
void CEncryptERMFCDlg::OnBnClickedOk() { CSystemManage *systemManage = new CSystemManage; const std::string &filePath = "F:\erer.er"; systemManage->LoadformFile(filePath); if (systemManage->isEncpt()) { std::string strKey = "123456"; systemManage->unEncpt(strKey); } OnOK(); }c++跟java还是有一定区别的。
实例化类是这样
CCSystemManage *systemManage = new CSystemManage;
然后使用这个类里面的函数是这样的,不是用.就可以,使用->来使用的。
systemManage->LoadformFile(filePath);
8、附上两个对话框调试代码的头文件以及.cpp文件
// ToolPosionTestDlg.h : 头文件 // #pragma once #include "ToolPosition/PositionOffset.h" #include "ToolPosition/DefineStructure.h" #include "ToolPosition/PositionOffset.h" #include "afxwin.h" #include "afxcmn.h" //#include "ToolPosition/PositionOffset_1Pt1Line1Angle.h" // CToolPosionTestDlg 对话框 class CToolPosionTestDlg : public CDialog { // 构造 public: CToolPosionTestDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_TOOLPOSIONTEST_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: afx_msg void OnEnChangeEditInputPx1(); afx_msg void OnEnChangeEditInputPx2(); afx_msg void OnEnChangeEditInputPx3(); afx_msg void OnEnChangeEditAngel(); afx_msg void OnEnChangeEditAngelHigh(); afx_msg void OnEnChangeEditDistance(); afx_msg void OnEnChangeEditDistanceHigh(); private: ToolCoordinate m_coordPx1; ToolCoordinate m_coordPx2; ToolAngle m_angle1; ToolDistance m_diatance1; ToolAngle m_angle2; ToolDistance m_diatance2; public: afx_msg void OnBnClickedOk(); double m_Showcoordx; double m_coodrp1x; double m_coodrp1y; double m_angle; double m_distance; double m_coodrp1z; afx_msg void OnLbnSelchangeList1(); afx_msg void OnCbnSelchangeComboboxexSeclectMethod(); CComboBoxEx m_ComboBoxSeclect; afx_msg void OnEnChangeEditInputPy1(); afx_msg void OnEnChangeEditEditInputPy2(); afx_msg void OnEnChangeEditEditInputPy3(); double m_coodrp2x; double m_coodrp2y; double m_coodrp2z; afx_msg void OnBnClickedButtonTwoPointTwoLine(); afx_msg void OnBnClickedButtonTwoPointLineAngle(); };
// ToolPosionTestDlg.cpp : 实现文件 // #include "stdafx.h" #include "ToolPosionTest.h" #include "ToolPosionTestDlg.h" #include <string> using namespace std; #ifdef _DEBUG #define new DEBUG_NEW #endif #include "ToolPosition/PositionOffset_1Pt1Line1Angle.h" #include "ToolPosition/PositionOffset_2Pt2Line.h" #include "ToolPosition/PositionOffset_2Pt1Line1Angle.h" // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialog { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // CToolPosionTestDlg 对话框 CToolPosionTestDlg::CToolPosionTestDlg(CWnd* pParent /*=NULL*/) : CDialog(CToolPosionTestDlg::IDD, pParent) , m_coodrp1x() , m_coodrp1y() , m_angle(0) , m_distance(0) , m_coodrp1z(0) , m_coodrp2x(0) , m_coodrp2y(0) , m_coodrp2z(0) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CToolPosionTestDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EDIT3, m_coodrp1x); DDX_Text(pDX, IDC_EDIT2, m_coodrp1y); DDX_Text(pDX, IDC_EDIT4, m_coodrp1z); DDX_Text(pDX, IDC_EDIT5, m_angle); DDX_Text(pDX, IDC_EDIT7, m_distance); DDX_Control(pDX, IDC_COMBOBOXEX1, m_ComboBoxSeclect); DDX_Text(pDX, IDC_EDIT1, m_coodrp2x); DDX_Text(pDX, IDC_EDIT9, m_coodrp2y); DDX_Text(pDX, IDC_EDIT10, m_coodrp2z); } BEGIN_MESSAGE_MAP(CToolPosionTestDlg, CDialog) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_EN_CHANGE(IDC_EDIT2, &CToolPosionTestDlg::OnEnChangeEditInputPx2) ON_EN_CHANGE(IDC_EDIT3, &CToolPosionTestDlg::OnEnChangeEditInputPx1) ON_EN_CHANGE(IDC_EDIT4, &CToolPosionTestDlg::OnEnChangeEditInputPx3) ON_EN_CHANGE(IDC_EDIT5, &CToolPosionTestDlg::OnEnChangeEditAngel) ON_EN_CHANGE(IDC_EDIT6, &CToolPosionTestDlg::OnEnChangeEditAngelHigh) ON_EN_CHANGE(IDC_EDIT7, &CToolPosionTestDlg::OnEnChangeEditDistance) ON_EN_CHANGE(IDC_EDIT8, &CToolPosionTestDlg::OnEnChangeEditDistanceHigh) ON_BN_CLICKED(IDOK, &CToolPosionTestDlg::OnBnClickedOk) ON_CBN_SELCHANGE(IDC_COMBOBOXEX1, &CToolPosionTestDlg::OnCbnSelchangeComboboxexSeclectMethod) ON_EN_CHANGE(IDC_EDIT1, &CToolPosionTestDlg::OnEnChangeEditInputPy1) ON_EN_CHANGE(IDC_EDIT9, &CToolPosionTestDlg::OnEnChangeEditEditInputPy2) ON_EN_CHANGE(IDC_EDIT10, &CToolPosionTestDlg::OnEnChangeEditEditInputPy3) ON_BN_CLICKED(IDC_BUTTON1, &CToolPosionTestDlg::OnBnClickedButtonTwoPointTwoLine) ON_BN_CLICKED(IDC_BUTTON2, &CToolPosionTestDlg::OnBnClickedButtonTwoPointLineAngle) END_MESSAGE_MAP() // CToolPosionTestDlg 消息处理程序 BOOL CToolPosionTestDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CToolPosionTestDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CToolPosionTestDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CToolPosionTestDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CToolPosionTestDlg::OnEnChangeEditInputPx1() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditInputPx2() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditInputPx3() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditAngel() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditAngelHigh() { } void CToolPosionTestDlg::OnEnChangeEditDistance() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditDistanceHigh() { } void CToolPosionTestDlg::OnBnClickedOk() { UpdateData(FALSE); m_coordPx1.dCoorx = m_coodrp1x; m_coordPx1.dCoory = m_coodrp1y; m_coordPx1.dCoorh = m_coodrp1z; m_angle1.dAngle = m_angle; m_angle1.dDHeight = 0; m_diatance1.dDistance = m_distance; m_diatance1.dDHeight = 0; CPositionOffset *positionOffset ; positionOffset = new CPositionOffset_1Pt1Line1Angle; positionOffset->SetKnownAngleAndHeight1(m_angle1); positionOffset->SetKnownDistanceAndHeight1(m_diatance1); positionOffset->SetKnownPointP1(m_coordPx1); m_coordPx1 = positionOffset->GetOffsetCoordinate(); CString strResultx; strResultx.Format(_T("x:%.4f "), m_coordPx1.dCoorx); CString strResulty; strResulty.Format(_T("y:%.4f "), m_coordPx1.dCoory); CString strResultz; strResultz.Format(_T("z:%.4f "), m_coordPx1.dCoorh); strResultx += strResulty; strResultx += strResultz; MessageBox(strResultx,_T("程序运行结果"),MB_OK); } void CToolPosionTestDlg::OnCbnSelchangeComboboxexSeclectMethod() { m_ComboBoxSeclect.AddString(_T("鸡啄米")); // 为组合框控件的列表框添加列表项“百度” m_ComboBoxSeclect.AddString(_T("百度")); // 在组合框控件的列表框中索引为1的位置插入列表项“新浪” m_ComboBoxSeclect.InsertString(1, _T("新浪")); // 默认选择第一项 m_ComboBoxSeclect.SetCurSel(0); // 编辑框中默认显示第一项的文字“鸡啄米” SetDlgItemText(IDC_COMBOBOXEX1, _T("鸡啄米")); } void CToolPosionTestDlg::OnEnChangeEditInputPy1() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditEditInputPy2() { UpdateData(TRUE); } void CToolPosionTestDlg::OnEnChangeEditEditInputPy3() { UpdateData(TRUE); } void CToolPosionTestDlg::OnBnClickedButtonTwoPointTwoLine() { UpdateData(FALSE); m_coordPx1.dCoorx = m_coodrp1x; m_coordPx1.dCoory = m_coodrp1y; m_coordPx1.dCoorh = m_coodrp1z; m_coordPx2.dCoorx = m_coodrp2x; m_coordPx2.dCoory = m_coodrp2y; m_coordPx2.dCoorh = m_coodrp2z; m_diatance1.dDistance = m_angle; m_diatance1.dDHeight = 0; m_diatance2.dDistance = m_distance; m_diatance2.dDHeight = 0; CPositionOffset *positionOffset ; positionOffset = new CPositionOffset_2Pt2Line; positionOffset->SetKnownDistanceAndHeight1(m_diatance1); positionOffset->SetKnownDistanceAndHeight2(m_diatance2); positionOffset->SetKnownPointP1(m_coordPx1); positionOffset->SetKnownPointP2(m_coordPx2); m_coordPx1 = positionOffset->GetOffsetCoordinate(); CString strResultx; strResultx.Format(_T("x:%.4f "), m_coordPx1.dCoorx); CString strResulty; strResulty.Format(_T("y:%.4f "), m_coordPx1.dCoory); CString strResultz; strResultz.Format(_T("z:%.4f "), m_coordPx1.dCoorh); strResultx += strResulty; strResultx += strResultz; MessageBox(strResultx,_T("程序运行结果"),MB_OK); } void CToolPosionTestDlg::OnBnClickedButtonTwoPointLineAngle() { UpdateData(FALSE); m_coordPx1.dCoorx = m_coodrp1x; m_coordPx1.dCoory = m_coodrp1y; m_coordPx1.dCoorh = m_coodrp1z; m_coordPx2.dCoorx = m_coodrp2x; m_coordPx2.dCoory = m_coodrp2y; m_coordPx2.dCoorh = m_coodrp2z; m_angle1.dAngle = m_angle; m_angle1.dDHeight = 0; m_diatance1.dDistance = m_distance; m_diatance1.dDHeight = 0; CPositionOffset *positionOffset ; positionOffset = new CPositionOffset_2Pt1Line1Angle(); positionOffset->SetKnownAngleAndHeight2(m_angle1); positionOffset->SetKnownDistanceAndHeight2(m_diatance1); positionOffset->SetKnownPointP1(m_coordPx1); positionOffset->SetKnownPointP2(m_coordPx2); m_coordPx1 = positionOffset->GetOffsetCoordinate(); CString strResultx; strResultx.Format(_T("x:%.4f "), m_coordPx1.dCoorx); CString strResulty; strResulty.Format(_T("y:%.4f "), m_coordPx1.dCoory); CString strResultz; strResultz.Format(_T("z:%.4f "), m_coordPx1.dCoorh); strResultx += strResulty; strResultx += strResultz; MessageBox(strResultx,_T("程序运行结果"),MB_OK); }
方便查看计算出来数据使用这个
MessageBox(strResultx,_T("程序运行结果"),MB_OK);
c++博大精深。。。多多学习
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。