2016-10-10 25 views
0

このMFC uArtコードのエラーを修正する際に問題があります。プログラムにいくつかのヘッダーファイルが含まれていても、3つのIntelliSenseは未定義です。MFC uArtで定義されていないインテリセンス識別子を解決するには?

これはプログラムをビルドして実行するときのエラーコードです。

ERROR enter image description here

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); 
    } 

} 

誰もが私がincludeに欠けていたもののヘッダファイルの任意のアイデアを持っていますか?コードでエラーがあり、またstrcpyメソッドにcharのsUart [60]が宣言されている場合、pBuffer LPTSTRにエラーがあるようです。助けてください。

答えて

1

これは通常、あなたがLPTSTRwchar_t *に出て展開するUnicodeのビルドを、やっている、とあなたはあなたのケースで非Unicode文字列(char配列でそれをミックスしようとしているサインです。

その代わりとしてtmpUartを定義します。

TCHAR tmpUart[60]; 

と文字列をコピーする_tcscpyを使用するこの方法では、あなたのコードはUnicodeでコンパイルされ、非Unicodeビルド

+0

それは先生の作品、ありがとうございました。。。問題は 'sUart'と' IDC_OUT_VALUE'であり、 'IntelliSense:identifier is undefined'のためエラーをコンパイルします。これを修正する方法はありますか? –

+0

定数が定義されているヘッダファイルを '#インクルード 'する必要があります。私はあなたが必要とするファイルは 'resource.h'です。 – Sean

+0

' resource.h'に 'IDC_OUT_VALUE'はありません:( –

関連する問題