2013-11-20 40 views
0

我一直在改善類,我一直在努力與那些事情之一是創建庫來處理不屬於某些任務不兼容真的需要在我的主要項目中看到。然而,當我調用類和實例我剛創建的庫,我得到:智能感知:類型「HWND」的說法是有類型的參數「RAWDATA :: HWND」

智能感知:類型「HWND」的說法是不符合類型的參數 「RAWDATA :: HWND」

// register the window for touch instead of gestures 
    rawData::RegisterTouchWindow(hWnd, 0); 

這這裏的完整代碼:

當我打電話從庫的方法,並通過這些參數(錯誤是在第一個參數)正在發生的事情
//Creates the main window 
int WINAPI WinMain(HINSTANCE hInstance, 
        HINSTANCE hPrevInstance, 
        LPSTR lpCmdLine, 
        int nCmdShow) 
{ 

    WNDCLASSEX wcex; 

    wcex.cbSize = sizeof(WNDCLASSEX); 
    wcex.style   = CS_HREDRAW | CS_VREDRAW; 
    wcex.lpfnWndProc = WndProc; 
    wcex.cbClsExtra  = 0; 
    wcex.cbWndExtra  = 0; 
    wcex.hInstance  = hInstance; 
    wcex.hIcon   = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
    wcex.hCursor  = LoadCursor(NULL, IDC_ARROW); 
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); 
    wcex.lpszMenuName = NULL; 
    wcex.lpszClassName = szWindowClass; 
    wcex.hIconSm  = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 

    if (!RegisterClassEx(&wcex)) 
    { 
     MessageBox(NULL, 
      _T("Call to RegisterClassEx failed!"), 
      _T("Win32 Guided Tour"), 
      NULL); 

     return 1; 
    } 

    hInst = hInstance; // Store instance handle in our global variable 

    // The parameters to CreateWindow explained: 
    // szWindowClass: the name of the application 
    // szTitle: the text that appears in the title bar 
    // WS_OVERLAPPEDWINDOW: the type of window to create 
    // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y) 
    // 500, 100: initial size (width, length) 
    // NULL: the parent of this window 
    // NULL: this application does not have a menu bar 
    // hInstance: the first parameter from WinMain 
    // NULL: not used in this application 
    HWND hWnd = CreateWindow(
     szWindowClass, 
     szTitle, 
     WS_OVERLAPPEDWINDOW, 
     CW_USEDEFAULT, CW_USEDEFAULT, 
     800, 600, 
     NULL, 
     NULL, 
     hInstance, 
     NULL 
    ); 

    if (!hWnd) { 
     MessageBox(NULL, 
      _T("Call to CreateWindow failed!"), 
      _T("Win32 Guided Tour"), 
      NULL); 

     return 1; 
    } 
    // register the window for touch instead of gestures 
    /*ERROR HERE*/rawTData::RegisterTouchWindow(hWnd, 0);/*ERROR HERE*/ 

    // the following code initializes the points 
    for (int i=0; i< MAXPOINTS; i++){ 
    points[i][0] = -1; 
    points[i][1] = -1; 
    idLookup[i] = -1; 
    } 

    ShowWindow(hWnd, nCmdShow); 
    UpdateWindow(hWnd); 

    // Main message loop: 
    MSG msg; 
    while (GetMessage(&msg, NULL, 0, 0)) 
    { 
     TranslateMessage(&msg); 
     DispatchMessage(&msg); 
    } 
    return (int) msg.wParam; 
} 

我已經去了幾個網站,他們建議使用「this->」來指定你指向哪個變量,但是當我嘗試它時什麼都不顯示。這就是爲什麼我來這裏看看是否有人遇到這種情況。任何一點小小的幫助都會讓你最感激提前致謝!

而且,這裏是我的庫類的源:

#ifndef RAWTOUCHDATA_H 
#define RAWTOUCHDATA_H 

#pragma once 
namespace rawTData 
{ 
//#define __in           __allowed(on_parameter) 
#if (defined(_M_IX86) || defined(_M_IA64) || defined(_M_AMD64)) && !defined(MIDL_PASS) 
#define DECLSPEC_IMPORT __declspec(dllimport) 
#else 
#define DECLSPEC_IMPORT 
#endif 

// 
// Define API decoration for direct importing of DLL references. 
// 
#if !defined(_USER32_) 
#define WINUSERAPI DECLSPEC_IMPORT 
#define WINABLEAPI DECLSPEC_IMPORT 
#else 
#define WINUSERAPI 
#define WINABLEAPI 
#endif 

#ifndef NO_STRICT 
#ifndef STRICT 
#define STRICT 1 
#endif 
#endif /* NO_STRICT */ 

#ifdef __cplusplus 
extern "C" { 
#endif /* __cplusplus */ 

#ifndef WINVER     // Specifies that the minimum required platform is Windows 7. 
#define WINVER 0x0601   // Change this to the appropriate value to target other versions of Windows. 
#endif 

#ifndef _WIN32_WINNT   // Specifies that the minimum required platform is Windows 7. 
#define _WIN32_WINNT 0x0601  // Change this to the appropriate value to target other versions of Windows. 
#endif 

// 
// The following types are guaranteed to be signed and 32 bits wide. 
// 
typedef signed int LONG32, *PLONG32; 

// 
// The following types are guaranteed to be unsigned and 32 bits wide. 
// 
typedef unsigned int ULONG32, *PULONG32; 
typedef unsigned int DWORD32, *PDWORD32; 

#if !defined(_W64) 
#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 
#define _W64 __w64 
#else 
#define _W64 
#endif 
#endif 

// 
// The INT_PTR is guaranteed to be the same size as a pointer. Its 
// size with change with pointer size (32/64). It should be used 
// anywhere that a pointer is cast to an integer type. UINT_PTR is 
// the unsigned variation. 
// 
// __int3264 is intrinsic to 64b MIDL but not to old MIDL or to C compiler. 
// 
#if (501 < __midl) 

    typedef [public] __int3264 INT_PTR, *PINT_PTR; 
    typedef [public] unsigned __int3264 UINT_PTR, *PUINT_PTR; 

    typedef [public] __int3264 LONG_PTR, *PLONG_PTR; 
    typedef [public] unsigned __int3264 ULONG_PTR, *PULONG_PTR; 

#else // midl64 
// old midl and C++ compiler 

#if defined(_WIN64) 
    typedef __int64 INT_PTR, *PINT_PTR; 
    typedef unsigned __int64 UINT_PTR, *PUINT_PTR; 

    typedef __int64 LONG_PTR, *PLONG_PTR; 
    typedef unsigned __int64 ULONG_PTR, *PULONG_PTR; 

    #define __int3264 __int64 

#else 
    typedef _W64 int INT_PTR, *PINT_PTR; 
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR; 

    typedef _W64 long LONG_PTR, *PLONG_PTR; 
    typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR; 

    #define __int3264 __int32 

#endif 
#endif // midl64 

// 
// Define API decoration for direct importing system DLL references. 
// 
#if !defined(_NTSYSTEM_) 
#define NTSYSAPI  DECLSPEC_IMPORT 
#define NTSYSCALLAPI DECLSPEC_IMPORT 
#else 
#define NTSYSAPI 
#if defined(_NTDLLBUILD_) 
#define NTSYSCALLAPI 
#else 
#define NTSYSCALLAPI DECLSPEC_ADDRSAFE 
#endif 
#endif 

// 
// Basics 
// 
#ifndef VOID 
#define VOID void 
typedef char CHAR; 
typedef short SHORT; 
typedef long LONG; 
#if !defined(MIDL_PASS) 
typedef int INT; 
#endif 
#endif 

#ifndef WINVER 
#define WINVER 0x0500 
#endif /* WINVER */ 

/* 
* BASETYPES is defined in ntdef.h if these types are already defined 
*/ 
#ifndef BASETYPES 
#define BASETYPES 
typedef unsigned long ULONG; 
typedef ULONG *PULONG; 
typedef unsigned short USHORT; 
typedef USHORT *PUSHORT; 
typedef unsigned char UCHAR; 
typedef UCHAR *PUCHAR; 
typedef char *PSZ; 
#endif /* !BASETYPES */ 

#define MAX_PATH   260 

#ifndef NULL 
#ifdef __cplusplus 
#define NULL 0 
#else 
#define NULL ((void *)0) 
#endif 
#endif 

#ifndef FALSE 
#define FALSE    0 
#endif 

#ifndef TRUE 
#define TRUE    1 
#endif 

#ifndef IN 
#define IN 
#endif 

#ifndef OUT 
#define OUT 
#endif 

#ifndef OPTIONAL 
#define OPTIONAL 
#endif 

#undef far 
#undef near 
#undef pascal 

#define far 
#define near 
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)) 
#define pascal __stdcall 
#else 
#define pascal 
#endif 

#if defined(DOSWIN32) || defined(_MAC) 
#define cdecl _cdecl 
#ifndef CDECL 
#define CDECL _cdecl 
#endif 
#else 
#define cdecl 
#ifndef CDECL 
#define CDECL 
#endif 
#endif 

#ifdef _MAC 
#define CALLBACK PASCAL 
#define WINAPI  CDECL 
#define WINAPIV  CDECL 
#define APIENTRY WINAPI 
#define APIPRIVATE CDECL 
#ifdef _68K_ 
#define PASCAL  __pascal 
#else 
#define PASCAL 
#endif 
#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) 
#define CALLBACK __stdcall 
#define WINAPI  __stdcall 
#define WINAPIV  __cdecl 
#define APIENTRY WINAPI 
#define APIPRIVATE __stdcall 
#define PASCAL  __stdcall 
#else 
#define CALLBACK 
#define WINAPI 
#define WINAPIV 
#define APIENTRY WINAPI 
#define APIPRIVATE 
#define PASCAL  pascal 
#endif 

#ifdef _M_CEE_PURE 
#define WINAPI_INLINE __clrcall 
#else 
#define WINAPI_INLINE WINAPI 
#endif 

#undef FAR 
#undef NEAR 
#define FAR     far 
#define NEAR    near 
#ifndef CONST 
#define CONST    const 
#endif 

typedef unsigned long  DWORD; 
typedef int     BOOL; 
typedef unsigned char  BYTE; 
typedef unsigned short  WORD; 
typedef float    FLOAT; 
typedef FLOAT    *PFLOAT; 
typedef BYTE near   *PBYTE; 
typedef BYTE far   *LPBYTE; 
typedef int near   *PINT; 
typedef int far    *LPINT; 
typedef WORD near   *PWORD; 
typedef WORD far   *LPWORD; 
typedef long far   *LPLONG; 
typedef DWORD near   *PDWORD; 
typedef DWORD far   *LPDWORD; 
typedef void far   *LPVOID; 
typedef CONST void far  *LPCVOID; 

typedef int     INT; 
typedef unsigned int  UINT; 
typedef unsigned int  *PUINT; 

#if(WINVER >= 0x0601) 
#define WM_TOUCH      0x0240 
#endif /* WINVER >= 0x0601 */ 

// 
// Handle to an Object 
// 
#ifdef STRICT 
typedef void *HANDLE; 
#if 0 && (_MSC_VER > 1000) 
#define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name 
#else 
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name 
#endif 
#else 
typedef PVOID HANDLE; 
#define DECLARE_HANDLE(name) typedef HANDLE name 
#endif 

typedef HANDLE *PHANDLE; 
#ifndef WIN_INTERNAL 
DECLARE_HANDLE   (HWND); 
DECLARE_HANDLE   (HHOOK); 
#ifdef WINABLE 
DECLARE_HANDLE   (HEVENT); 
#endif 
#endif 

typedef const RECTL FAR* LPCRECTL; 
typedef struct tagPOINT 
{ 
    LONG x; 
    LONG y; 
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT; 
typedef struct _POINTL  /* ptl */ 
{ 
    LONG x; 
    LONG y; 
} POINTL, *PPOINTL; 

typedef struct tagSIZE 
{ 
    LONG  cx; 
    LONG  cy; 
} SIZE, *PSIZE, *LPSIZE; 

typedef SIZE    SIZEL; 
typedef SIZE    *PSIZEL, *LPSIZEL; 

typedef struct tagPOINTS 
{ 
#ifndef _MAC 
    SHORT x; 
    SHORT y; 
#else 
    SHORT y; 
    SHORT x; 
#endif 
} POINTS, *PPOINTS, *LPPOINTS; 

#if(WINVER >= 0x0601) 

/* 
* Touch Input defines and functions 
*/ 

/* 
* Touch input handle 
*/ 
DECLARE_HANDLE(HTOUCHINPUT); 

typedef struct tagTOUCHINPUT { 
    LONG x; 
    LONG y; 
    HANDLE hSource; 
    DWORD dwID; 
    DWORD dwFlags; 
    DWORD dwMask; 
    DWORD dwTime; 
    ULONG_PTR dwExtraInfo; 
    DWORD cxContact; 
    DWORD cyContact; 
} TOUCHINPUT, *PTOUCHINPUT; 
typedef TOUCHINPUT const * PCTOUCHINPUT; 

/* 
* Conversion of touch input coordinates to pixels 
*/ 
#define TOUCH_COORD_TO_PIXEL(l)   ((l)/100) 

/* 
* Touch input flag values (TOUCHINPUT.dwFlags) 
*/ 
#define TOUCHEVENTF_MOVE   0x0001 
#define TOUCHEVENTF_DOWN   0x0002 
#define TOUCHEVENTF_UP    0x0004 
#define TOUCHEVENTF_INRANGE   0x0008 
#define TOUCHEVENTF_PRIMARY   0x0010 
#define TOUCHEVENTF_NOCOALESCE  0x0020 
#define TOUCHEVENTF_PEN    0x0040 
#define TOUCHEVENTF_PALM   0x0080 

/* 
* Touch input mask values (TOUCHINPUT.dwMask) 
*/ 
#define TOUCHINPUTMASKF_TIMEFROMSYSTEM 0x0001 // the dwTime field contains a system generated value 
#define TOUCHINPUTMASKF_EXTRAINFO  0x0002 // the dwExtraInfo field is valid 
#define TOUCHINPUTMASKF_CONTACTAREA  0x0004 // the cxContact and cyContact fields are valid 

WINUSERAPI 
BOOL 
WINAPI 
ScreenToClient(
    HWND hWnd, 
    LPPOINT lpPoint); 

WINUSERAPI 
BOOL 
WINAPI 
GetTouchInputInfo(
    HTOUCHINPUT hTouchInput,    // input event handle; from touch message lParam 
    UINT cInputs,       // number of elements in the array 
    PTOUCHINPUT pInputs, // array of touch inputs 
    int cbSize);       // sizeof(TOUCHINPUT) 

WINUSERAPI 
BOOL 
WINAPI 
CloseTouchInputHandle(
    HTOUCHINPUT hTouchInput);     // input event handle; from touch message lParam 

/* 
* RegisterTouchWindow flag values 
*/ 
#define TWF_FINETOUCH  (0x00000001) 
#define TWF_WANTPALM  (0x00000002) 

WINUSERAPI 
BOOL 
WINAPI 
RegisterTouchWindow(
    HWND hwnd, 
    ULONG ulFlags); 

WINUSERAPI 
BOOL 
WINAPI 
UnregisterTouchWindow(
    HWND hwnd); 

WINUSERAPI 
BOOL 
WINAPI 
IsTouchWindow(
    HWND hwnd, 
    PULONG pulFlags); 

#endif /* WINVER >= 0x0601 */ 

#ifdef __cplusplus 
} 
#endif /* __cplusplus */ 
} 
#endif //RAWTOUCHDATA_H 
+0

看起來你可能已經把一些Windows API的文件的'#include'類或命名空間內。它認爲'HWND'類型屬於你的'rawData'類或名字空間(我實際上不知道它是哪個而沒有看到那個代碼)。 –

+0

聽起來像rawData類聲明自己的HWND類型時,不同於Windows標頭聲明的無範圍聲明。 –

+0

@SamCristall:嗨,該文件包含在我的課程的頭文件中。在RAWDATA類中 –

回答

1

通過把一切都在自己的namespace rawTData,你已經宣佈所有這些類型的屬於rawTDataHWND是Windows API類型,是等同於您的定義(這是rawTData::HWND)命名空間不僅僅是用於包裝一串代碼,你不希望智能感知顯示,它們「隱藏」的名字在類目錄結構體。一個簡單的解決方法是在namespace rawTData {向下移動到上面你自己的聲明,但它迴避了一個問題:爲什麼你namespace rawTData包裝一切

看起來你已經剪切和粘貼一堆Windows.h定義成自己的名稱空間。你真的應該只包括適當的文件。如果這不起作用,可能還有其他問題需要解決,你不應該通過複製粘貼來解決這個問題。

+0

謝謝,先生,它的工作! –

相關問題