פורסם 2007 במרץ 2518 שנים בביצפר יש 2003 ואצלי יש 2005 מדובר על פרוייקט win32 ב c++ .פתחתי פרוייקט באותו שם?העתקתי את מה שנמצא בקובץ ה c++ לקובץ החדש בפרוייקט החדש..מה עוד יכול להיות הבעיה?אני אובד עצות..
פורסם 2007 במרץ 2518 שנים הקומפיילר של VS2005 למיטב ידעתי מקפיד יותר על התקן של C++.בכל מקרה, לא אמרת מה הבעיה שיש לך, אז קשה לנו לנבא...
פורסם 2007 במרץ 2618 שנים מחבר זאת התוכנית:// 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 instanceTCHAR szTitle[MAX_LOADSTRING]; // The title bar textTCHAR 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 Windows 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.cppc:\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 castc:\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 castBuild 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 ==========
פורסם 2007 במרץ 2618 שנים אההה בעיה .... אני חושב שאתה צריך לעשות ככהכתבת:#include <windows.h>ןעכשיו תכתוב את זה ככה ותבדוק אם אין לך בעיות#include <windows>אם זה פתר לך את הבעיה תגיב בבקשה
פורסם 2007 במרץ 2618 שנים לא נראה לי שזה ממש קשור.אתה כרגע עובד עם UNICODE, ואין המרה אוטומטית מ- char (בייט אחד) ל- WCHAR (שני בתים).אפשרות אחת - במקום לעבוד עם char תעבוד עם TCHAR.אפשרות שניה - תשנה את הגדרות הפרוייקט שלך מ- UNICODE ל- ANSI.
פורסם 2007 במרץ 2618 שנים מחבר מה זאת אומרת לעבוד עם TCHAR ? מה שעשיתי זה ישר רשמתי בגרשיים את מה שהייתי צריך שיהיה כתוב.. בקשר לאפשרות השניה: איך משנים את זה בדיוק מ UNICODE ל ANSI ומה זה בדיוק אומר ששינתי את זה? תודה על התגובה.
פורסם 2007 במרץ 2618 שנים לעבוד עם TCHAR זה אומר במקום כל מקום שכתוב char אתה כותב TCHAR, וכשאתה כותב quoted string אתה משתמש במקרו_Tכדי להמיר אותו אם צריך.אם אתה עובד ככה אז לא צריך להיות לך אכפת יותר מדי אם הפרוייקט עובד עם או בלי unicode, כי ההמרות תמיד נעשות בצורה הנכונה.אני לא ממש זוכר איפה מגדירים אם הפרוייקט הוא UNICODE או ANSI.
פורסם 2007 במרץ 2718 שנים מחבר לא הבנתי בדיוק איך אני משתמש במאקרו ב quoted string איך אני רושם בדיוק אתה יכול לתת דוגמא קטנה של פקודה שלמה.. תודה
פורסם 2007 במרץ 2718 שנים במקום לקרוא לפונקציה ע"י: TextOut(hdc,420,50,"The Conqueror",13);אתה קורא ע"י:TextOut(hdc,420,50,_T("The Conqueror"),13);
פורסם 2007 במרץ 2718 שנים יכול להיות שה- defaults לפרוייקט השתנו, ושה- defaults החדשים הם עם UNICODE.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.