简体   繁体   English

如何解决MFC uArt中未定义的智能感应标识符?

[英]How to solve intellisense identifier undefined in MFC uArt?

I'm having trouble in fixing the errors in this MFC uArt code. 我无法解决MFC uArt代码中的错误。 Three intellisense is undefined even though I included some header files to the program. 即使我在程序中包含了一些头文件,也没有定义三个intellisense。

This is the error code when I build and run the program. 这是我构建和运行程序时的错误代码。

ERROR 错误 在此处输入图片说明

PROGRAM 程序

// MFCApplication2Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "MFCApplication2.h"
#include "MFCApplication2Dlg.h"
#include "afxdialogex.h"
#include "afxwin.h"
#include "CyAPI.h"
#include "Periph.h"

#define UART_H

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

bool IsConnect = false;
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialogEx
{
public:
    CAboutDlg();

// Dialog Data
    enum { IDD = IDD_ABOUTBOX };

    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
    DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CMFCApplication2Dlg dialog



CMFCApplication2Dlg::CMFCApplication2Dlg(CWnd* pParent /*=NULL*/)
    : CDialogEx(CMFCApplication2Dlg::IDD, pParent)
{
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCApplication2Dlg::DoDataExchange(CDataExchange* pDX)
{
    CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CMFCApplication2Dlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication2Dlg::OnBnClickedButton1)
    ON_BN_CLICKED(IDC_BUTTON2, &CMFCApplication2Dlg::OnBnClickedButton2)
    ON_BN_CLICKED(IDC_BUTTON3, &CMFCApplication2Dlg::OnBnClickedButton3)
END_MESSAGE_MAP()


// CMFCApplication2Dlg message handlers

BOOL CMFCApplication2Dlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // Add "About..." menu item to system menu.

    // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE);         // Set big icon
    SetIcon(m_hIcon, FALSE);        // Set small icon

    // TODO: Add extra initialization here

    return TRUE;  // return TRUE  unless you set the focus to a control
}

void CMFCApplication2Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialogEx::OnSysCommand(nID, lParam);
    }
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CMFCApplication2Dlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // Center icon in client rectangle
        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;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);
    }
    else
    {
        CDialogEx::OnPaint();
    }
}

// The system calls this function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CMFCApplication2Dlg::OnQueryDragIcon()
{
    return static_cast<HCURSOR>(m_hIcon);
}


void CMFCApplication2Dlg::OnBnClickedButton1()
{

    USBDevice->Open(0);

    if (USBDevice->IsOpen() != TRUE)
    {
        AfxMessageBox(_T("Failed to Open Device"));
    }
    else
    {
        IsConnect = true;
    }
}


void CMFCApplication2Dlg::OnBnClickedButton3()
{
    USBDevice->Close();
    IsConnect = false;
}

void CMFCApplication2Dlg::OnBnClickedButton2()
{
    char tmpUart[60];
    long OutPacketSize;
    OutPacketSize = sizeof(sUart);

    LPTSTR pBuffer;
    CString sBuffer;

    int i;

    if (IsConnect == false)
    {
        AfxMessageBox(_T("USB Connect Fail"));
        return;
    }

    CEdit *OutValue = (CEdit*)GetDlgItem(IDC_OUT_VALUE);

    pBuffer = sBuffer.GetBuffer(60);
    OutValue->GetWindowText(pBuffer, 60);

    strcpy(tmpUart, pBuffer);

    OutPacketSize = strlen(tmpUart);

    for (i = 0; i<OutPacketSize; i++) sUart[i] = tmpUart[i];

    sUart[OutPacketSize + 1] = 0;
    OutPacketSize = OutPacketSize + 1;

    //Perform the BULK OUT

    if (USBDevice->BulkOutEndPt)
    {
        USBDevice->BulkOutEndPt->XferData(sUart, OutPacketSize);
    }

}

Does anyone have any idea what header files I've been missing to include with? 有没有人有什么样的头文件我已经错过任何想法include用? cause when i declare char sUart[60] in the code there's an error and also on the strcpy method there seems to be an error in the pBuffer LPTSTR. 原因是当我在代码中声明char sUart [60]时出现错误,并且在strcpy方法上pBuffer LPTSTR中似乎存在错误。 Please help. 请帮忙。

This is usually a sign that you're doing a Unicode build, where LPTSTR expands out to wchar_t * , and you're trying to mix it with non-Unicode strings (in your case a char array. 这通常表明您正在执行Unicode构建, LPTSTR扩展为wchar_t * ,并且您尝试将其与非Unicode字符串(在您的情况下为char数组)混合使用。

Instead define tmpUart as: 而是将tmpUart定义为:

TCHAR tmpUart[60];

and use _tcscpy to copy the string. 并使用_tcscpy复制字符串。 This way your code will compile in Unicode and non-Unicode builds. 这样,您的代码将以Unicode和非Unicode版本进行编译。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 IntelliSense:标识符“ XMFLOAT4”未定义 - IntelliSense: Identifier “XMFLOAT4” is undefined 智能感知:标识符“IDXGISwapChain1”未定义 - IntelliSense: identifier "IDXGISwapChain1" is undefined IntelliSense错误标识符“ emlrtStack”未定义 - IntelliSense error identifier “emlrtStack” is undefined 如何解决这个未声明的标识符 - How to solve this undeclared identifier IntelliSense:未为我的函数中使用的每个变量定义标识符“ [空白]” - IntelliSense: identifier “[blank]” is undefined for each of the variables used in my function VSCode C/C++ IntelliSense 标识符未定义,但可以解析定义 - VSCode C/C++ IntelliSense identifier undefined, but can resolve definition 这个C ++标识符是如何定义的? - How is this C++ identifier undefined? 在Opencv中找不到带有函数的标识符,该如何解决? - Identifier not found with a function in Opencv, how to solve this? 如何解决“if”块中的“未声明的标识符错误”? - How to solve “Undeclared identifier error” in “if” block? 如何解决“未声明的标识符”和“重新定义形参”? - How to solve “undeclared identifier” and “redefinition of formal parameter”?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM