תוכנית שעובדת ב visual studio 2003 לא עובדת ב 2005 מה הבעיה?? - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

תוכנית שעובדת ב visual studio 2003 לא עובדת ב 2005 מה הבעיה??


eli33

Recommended Posts

בביצפר יש 2003 ואצלי יש 2005

מדובר על פרוייקט win32 ב c++ .

פתחתי פרוייקט באותו שם?

העתקתי את מה שנמצא בקובץ ה c++ לקובץ החדש בפרוייקט החדש..

מה עוד יכול להיות הבעיה?

אני אובד עצות..

קישור לתוכן
שתף באתרים אחרים

זאת התוכנית:

// conq.cpp : Defines the entry point for the application.
//
#include <windows.h>
#include "stdafx.h"
#include "conqer.h"
#define MAX_LOADSTRING 100
#define SCREEN 2


// Global Variables:
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name

// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
MSG msg;
HACCEL hAccelTable;

// Initialize global strings
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_CONQER, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);

// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}

hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_CONQER);

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

return (int) msg.wParam;
}



//
// FUNCTION: MyRegisterClass()
//
// PURPOSE: Registers the window class.
//
// COMMENTS:
//
// This function and its usage are only necessary if you want this code
// to be compatible with Win32 systems prior to the 'RegisterClassEx'
// function that was added to 95. It is important to call this function
// so that the application will get 'well formed' small icons associated
// with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_CONQER);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (LPCTSTR)IDC_CONQER;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

return RegisterClassEx(&wcex);
}

//
// FUNCTION: InitInstance(HANDLE, int)
//
// PURPOSE: Saves instance handle and creates main window
//
// COMMENTS:
//
// In this function, we save the instance handle in a global variable and
// create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;

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

hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

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

return TRUE;
}

//
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
// PURPOSE: Processes messages for the main window.
//
// WM_COMMAND - process the application menu
// WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
RECT rect;

switch (message)
{
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX, hWnd, (DLGPROC)About);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);

switch(SCREEN)
{
case 1:
GetClientRect(hWnd,&rect);
TextOut(hdc,420,50,"The Conqueror",13);
case 2:
GetClientRect(hWnd,&rect);
TextOut(hdc,420,50,"Help",4);
}

// TODO: Add any drawing code here...

EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

// Message handler for about box.
LRESULT CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_INITDIALOG:
return TRUE;

case WM_COMMAND:
if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
{
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}

וזה השגיאה:

------ Build started: Project: conqer, Configuration: Debug Win32 ------
Compiling...
conqer.cpp
c:\documents and settings\sharabi\my documents\visual studio 2005\projects\conqer\conqer\conqer.cpp(164) : error C2664: 'TextOutW' : cannot convert parameter 4 from 'const char [14]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
c:\documents and settings\sharabi\my documents\visual studio 2005\projects\conqer\conqer\conqer.cpp(167) : error C2664: 'TextOutW' : cannot convert parameter 4 from 'const char [5]' to 'LPCWSTR'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\Documents and Settings\sharabi\My Documents\Visual Studio 2005\Projects\conqer\conqer\Debug\BuildLog.htm"
conqer - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

קישור לתוכן
שתף באתרים אחרים

אההה בעיה .... אני חושב שאתה צריך לעשות ככה

כתבת:

#include <windows.h>

ןעכשיו תכתוב את זה ככה ותבדוק אם אין לך בעיות

#include <windows>

אם זה פתר לך את הבעיה תגיב בבקשה

קישור לתוכן
שתף באתרים אחרים

לא נראה לי שזה ממש קשור.

אתה כרגע עובד עם UNICODE, ואין המרה אוטומטית מ- char (בייט אחד) ל- WCHAR (שני בתים).

אפשרות אחת - במקום לעבוד עם char תעבוד עם TCHAR.

אפשרות שניה - תשנה את הגדרות הפרוייקט שלך מ- UNICODE ל- ANSI.

קישור לתוכן
שתף באתרים אחרים

מה זאת אומרת לעבוד עם TCHAR ?

מה שעשיתי זה ישר רשמתי בגרשיים את מה שהייתי צריך שיהיה כתוב..

בקשר לאפשרות השניה:

איך משנים את זה בדיוק מ UNICODE ל ANSI ומה זה בדיוק אומר ששינתי את זה?

תודה על התגובה. :xyxthumbs:

קישור לתוכן
שתף באתרים אחרים

לעבוד עם TCHAR זה אומר במקום כל מקום שכתוב char אתה כותב TCHAR, וכשאתה כותב quoted string אתה משתמש במקרו

_T

כדי להמיר אותו אם צריך.

אם אתה עובד ככה אז לא צריך להיות לך אכפת יותר מדי אם הפרוייקט עובד עם או בלי unicode, כי ההמרות תמיד נעשות בצורה הנכונה.

אני לא ממש זוכר איפה מגדירים אם הפרוייקט הוא UNICODE או ANSI.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...