الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]كيف تكتب برنامج بالعربيه بالـ C

مغلق
بدأه SeifCoder في 10 أغسطس 2009 · 20 رد · 4,318 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته

من فضلكم هل يعلم أحدكم كيف تبرمج برنامج بلغة C و باستعمال Win_32_API بدون MFC_CLR... أو غيرها من المكتبات و يظهر حروف العربية ؟؟

لقد بحث كثيرا كثيرا و تعبث من البحث حثى وفقني الله و وجدت بالظبط ما كنت أبحث عنه، من الميكروسوفت و أيضا يظهر العربية حتى لو لم يكن النضام يدعم العربية بشكل كامل : http://www.microsoft.com/msj/0499/default.aspx

و لكن يجب استعمال المكتبة ديناميكة UniAnsi.dll_usp10.dll

لم أنجح ببرمجة و لا برنامج واحد !!

هل من متخصص يساعدني ؟؟

و أقترح كذالك أن يقوم متخصص بكتابة موضوع كيف تكتب بالعربية في برنامج C_Win_32_API

و شكرا

#2

اذا كنت تقصد الكتابه داخل شاشة الـ console بالعربيه فممكن بإستخدام الدالتين SetConsoleCP و SetConsoleOutputCP و شكلهما كالتالى

 

[color= #0000ff;]BOOL WINAPI SetConsoleCP[color= #000000;](UINT wCodePageID[color= #000000;]);

[color= #0000ff;]BOOL WINAPI SetConsoleOutputCP[color= #000000;](UINT wCodePageID[color= #000000;]);

تقوم بتمرير الـ CodePage الخاصه بالعربيه و هو 1256.

الداله الأولى تسمح لمستخدم البرنامج ان يقوم بالكتابه بالعربيه.

الداله الثانيه تسمح لك (من داخل البرنامج) بالكتابه بالعربيه داخل شاشة الـ Console.

مرجع الدالتين SetConsoleCP و SetConsoleOutputCP

يوجد درس ايضا عن الكتابه بلغات مختلفه داخل الـ Console من CodeProject للدخول عليه من هنــا

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#3

السلام عليكم و رحمة الله و بركاته

شكرا لك علاء دين، و لكن الامر ليس بهده السهولة

أريد برنامج Win_32_API بلغة C بنوافد و ليس Console ثم الامر صعب جدا !! شهور و أنا ابحث و من دون جدوى !!

هدا موقع يشرح البرمجة Win_32_API بلغة C بشكل جيد : http://www.winprog.org/tutorial/

أريد نمودج لبرنامج Win_32_API يدعم العربية

أعرف أن هدا صعب و لكن أتمنى التعاون لنبرمج بلغة القرآن :)

#4

اخى الأمر ليس بالصعوبه التى تتوقعها فدوال نظام التشغيل ويندوز صنعت بلغه الـ C و اذا قمت بتصفح الـ MSDN ستجد مثال اسمه A Generic Sample Application و يمكنك رؤيته من هنــا اما بالنسبه لإظهار اللغه العربيه داخل برنامجك فهى تعتمد اولا على نوع اللغه للبرامج غير الإنجليزيه و التى ستجدها من Control Panel ثم Regional and Language Options ثم Advanced.

فى خصائص اى برنامج للغه الـ C او الـ C++ يوجد اختيار اسمه Character Set اجعله Use Unicode Character Set.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#5

السلام عليكم و رحمة الله و بركاته

شكرا أخي كثيرا على الرد

هل تقبل بان تعطيني خمس دقائق من وقتك و تكتب لي مثالا يعمل ؟

لقد بحث عن مثال واحد فقط يدعم العربية و لم أجده ابدا !!!

هل تقبل بان تكتب لي مثالا واحد فقط ؟

أرجوك أنا بامس الحاجة له، يكفي أني أمضيت ثلاتة أشهر و أنا ابحث كل ليلة

وجدت هنا مثالا جميلا جدا يضهر العربية حتى لو كانت لغة النضام انجليزية

http://www.cppfrance.com/gdi/c/49067.cs.jpg

http://www.cppfrance.com/codes/APPLICATION...IN32_49067.aspx

و لكن لم أنجح بترجمته، أتمنى أن تساعدني فانا جد جد محتاج لمثال واحد، لنافدة و قائمة و زر مكتوبين بالعربية و شكرا مرة أخرى و جزاك الله خيرا

#6

توجد العديد من الأساليب و ما قلته فى المشاركه 5 هو احدهما فيمكنك التعامل مع الـ Resource File لتقوم بعمل UI تحتوى علبى اكثر من لغه و فى هذه الحاله لابد منك ان تقوم بعمل Attach للخط الذى سيتم استخدامه حيث قد يكون نظام التشغيل لا يحتوى على خطوط للـ Complex Script كالعربيه.

ايضا يمكنك استخدام تقنيه Uniscribe اذا كنت تريد عمل شئ احترافى حيث تتيح لك التحكم بالـ Glyph "ابعاد الحرف" لتقوم بتركيب حروف مع بعضها و يمكننى تذكيرك ببرنامج الـ Word و خصوصا الجزء الخاص بالمعادلات الرياضيه فهو يستخدم Uinscribe "على ما اعتقد" حيث لم اجد وسيله للتحكم بمخرجات البرنامج إلا من خلال هذه التقنيه يمكنك مراجعه الـ MSDN للمزيد من التفاصيل من هنــا.

اما بالنسبه للمثال سأقوم بتجهيزه لك فى اقرب وقت.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#7

هذا هو مثال ميكروسوفت لنافذه مجرده (لا تحتوى على اى شئ) و قمت بتغيير مخرجاتها للعربيه

post-135620-1250248401_thumb.jpg

الملف فى المرفقات

و الله ولى التوفيق

Generic_Window.rar

مدونتي: C++ Tips and Tricks

#8

السلام عليكم و رحمة الله و بركاته

ألم أقل لك أن الأمر صعب جدا ؟؟ المثال لم يعمل عندي، و كذالك ليس مرفقا مع Resource File ؟؟

سأعطيك مثالا و حاول أن تجعله بالعربية، و استعمل مترجم Borlanad_C_Compiler أو GCC رجأ، فانا احتج مثالا مع أحد هدين المترجمين .

لا أرد عليك حتى أمضي ليلة أحاول فهم ما قلت و استعماله لكن لم أنجح

و شكرا مرة أخرى و جزاك الله خيرا

app_two.c

#include <windows.h>
#include "resource.h"

const char g_szClassName[] = "myWindowClass";

#define IDC_MAIN_EDIT	101

BOOL LoadTextFileToEdit(HWND hEdit, LPCTSTR pszFileName)
{
	HANDLE hFile;
	BOOL bSuccess = FALSE;

	hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL,
		OPEN_EXISTING, 0, NULL);
	if(hFile != INVALID_HANDLE_VALUE)
	{
		DWORD dwFileSize;

		dwFileSize = GetFileSize(hFile, NULL);
		if(dwFileSize != 0xFFFFFFFF)
		{
			LPSTR pszFileText;

			pszFileText = (LPSTR)GlobalAlloc(GPTR, dwFileSize + 1);
			if(pszFileText != NULL)
			{
				DWORD dwRead;

				if(ReadFile(hFile, pszFileText, dwFileSize, &dwRead, NULL))
				{
					pszFileText[dwFileSize] = 0; // Add null terminator
					if(SetWindowText(hEdit, pszFileText))
						bSuccess = TRUE; // It worked!
				}
				GlobalFree(pszFileText);
			}
		}
		CloseHandle(hFile);
	}
	return bSuccess;
}

BOOL SaveTextFileFromEdit(HWND hEdit, LPCTSTR pszFileName)
{
	HANDLE hFile;
	BOOL bSuccess = FALSE;

	hFile = CreateFile(pszFileName, GENERIC_WRITE, 0, NULL,
		CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
	if(hFile != INVALID_HANDLE_VALUE)
	{
		DWORD dwTextLength;

		dwTextLength = GetWindowTextLength(hEdit);
		// No need to bother if there's no text.
		if(dwTextLength > 0)
		{
			LPSTR pszText;
			DWORD dwBufferSize = dwTextLength + 1;

			pszText = (LPSTR)GlobalAlloc(GPTR, dwBufferSize);
			if(pszText != NULL)
			{
				if(GetWindowText(hEdit, pszText, dwBufferSize))
				{
					DWORD dwWritten;

					if(WriteFile(hFile, pszText, dwTextLength, &dwWritten, NULL))
						bSuccess = TRUE;
				}
				GlobalFree(pszText);
			}
		}
		CloseHandle(hFile);
	}
	return bSuccess;
}

void DoFileOpen(HWND hwnd)
{
	OPENFILENAME ofn;
	char szFileName[MAX_PATH] = "";

	ZeroMemory(&ofn, sizeof(ofn));

	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hwnd;
	ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
	ofn.lpstrFile = szFileName;
	ofn.nMaxFile = MAX_PATH;
	ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
	ofn.lpstrDefExt = "txt";

	if(GetOpenFileName(&ofn))
	{
		HWND hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
		LoadTextFileToEdit(hEdit, szFileName);
	}
}

void DoFileSave(HWND hwnd)
{
	OPENFILENAME ofn;
	char szFileName[MAX_PATH] = "";

	ZeroMemory(&ofn, sizeof(ofn));

	ofn.lStructSize = sizeof(OPENFILENAME);
	ofn.hwndOwner = hwnd;
	ofn.lpstrFilter = "Text Files (*.txt)\0*.txt\0All Files (*.*)\0*.*\0";
	ofn.lpstrFile = szFileName;
	ofn.nMaxFile = MAX_PATH;
	ofn.lpstrDefExt = "txt";
	ofn.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;

	if(GetSaveFileName(&ofn))
	{
		HWND hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
		SaveTextFileFromEdit(hEdit, szFileName);
	}
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch(msg)
	{
		case WM_CREATE:
		{
			HFONT hfDefault;
			HWND hEdit;

			hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "EDIT", "", 
				WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL, 
				0, 0, 100, 100, hwnd, (HMENU)IDC_MAIN_EDIT, GetModuleHandle(NULL), NULL);
			if(hEdit == NULL)
				MessageBox(hwnd, "Could not create edit box.", "Error", MB_OK | MB_ICONERROR);

			hfDefault = (HFONT)GetStockObject(DEFAULT_GUI_FONT);
			SendMessage(hEdit, WM_SETFONT, (WPARAM)hfDefault, MAKELPARAM(FALSE, 0));
		}
		break;
		case WM_SIZE:
		{
			HWND hEdit;
			RECT rcClient;

			GetClientRect(hwnd, &rcClient);

			hEdit = GetDlgItem(hwnd, IDC_MAIN_EDIT);
			SetWindowPos(hEdit, NULL, 0, 0, rcClient.right, rcClient.bottom, SWP_NOZORDER);
		}
		break;
		case WM_CLOSE:
			DestroyWindow(hwnd);
		break;
		case WM_DESTROY:
			PostQuitMessage(0);
		break;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case ID_FILE_EXIT:
					PostMessage(hwnd, WM_CLOSE, 0, 0);
				break;
				case ID_FILE_NEW:
					SetDlgItemText(hwnd, IDC_MAIN_EDIT, "");
				break;
				case ID_FILE_OPEN:
					DoFileOpen(hwnd);
				break;
				case ID_FILE_SAVEAS:
					DoFileSave(hwnd);
				break;
			}
		break;
		default:
			return DefWindowProc(hwnd, msg, wParam, lParam);
	}
	return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
	LPSTR lpCmdLine, int nCmdShow)
{
	WNDCLASSEX wc;
	HWND hwnd;
	MSG Msg;

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

	if(!RegisterClassEx(&wc))
	{
		MessageBox(NULL, "Window Registration Failed!", "Error!",
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	hwnd = CreateWindowEx(
		0,
		g_szClassName,
		"theForger's Tutorial Application",
		WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, 480, 320,
		NULL, NULL, hInstance, NULL);

	if(hwnd == NULL)
	{
		MessageBox(NULL, "Window Creation Failed!", "Error!",
			MB_ICONEXCLAMATION | MB_OK);
		return 0;
	}

	ShowWindow(hwnd, nCmdShow);
	UpdateWindow(hwnd);

	while(GetMessage(&Msg, NULL, 0, 0) > 0)
	{
		TranslateMessage(&Msg);
		DispatchMessage(&Msg);
	}
	return Msg.wParam;
}

app_two.rc

//Microsoft Developer Studio generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS


/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (Canada) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENC)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_CAN
#pragma code_page(1252)
#endif //_WIN32

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE DISCARDABLE 
BEGIN
	"resource.h\0"
END

2 TEXTINCLUDE DISCARDABLE 
BEGIN
	"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
	"#include ""windows.h""\r\n"
	"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
	"\0"
END

3 TEXTINCLUDE DISCARDABLE 
BEGIN
	"\r\n"
	"\0"
END

#endif	// APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

IDR_MAINMENU MENU DISCARDABLE 
BEGIN
	POPUP "&File"
	BEGIN
		MENUITEM "&New",						ID_FILE_NEW
		MENUITEM "&Open...",					ID_FILE_OPEN
		MENUITEM "Save &As...",				 ID_FILE_SAVEAS
		MENUITEM SEPARATOR
		MENUITEM "E&xit",					   ID_FILE_EXIT
	END
END

#endif	// English (Canada) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif	// not APSTUDIO_INVOKED

resource.h

//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by app_two.rc
//
#define IDR_MAINMENU					102
#define ID_FILE_EXIT					40001
#define ID_FILE_OPEN					40002
#define ID_FILE_SAVEAS				  40003
#define ID_FILE_NEW					 40004

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE		103
#define _APS_NEXT_COMMAND_VALUE		 40005
#define _APS_NEXT_CONTROL_VALUE		 1000
#define _APS_NEXT_SYMED_VALUE		   101
#endif
#endif
#9

اخى سيف

اولا المثال المرفق فى المشاركه رقم 7 لا يحتوى على اى Resource File فقط ملف كود واحد فقط.

ثانيا المثال المرفق فى المشاركه رقم 7 يحتاج ان تكون اللغه الخاصه بالنصوص غير الإنجليزيه ان تكون بالعربيه و الا لن تظهر النصوص عربى و ستظهر بحروف من لغه اخرى انظر الصورة التاليه

post-135620-1250374128_thumb.jpg

بالنسبه للمثال الذى وضعته سأجربه و سأرفق لك النتيجه

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 16 أغسطس 2009 في 01:10

مدونتي: C++ Tips and Tricks

#10

قمت بتجربة المثال الذى كتبته فى المشاركه

و هذه هى النتيجه على جهازى

post-135620-1250375541_thumb.jpg

و بعد ان قمت بحفظ الملف قمت بفتحه من برنامج Notepad و هذه النتيجه

post-135620-1250375553_thumb.jpg

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#11

السلام عليكم و رحمة الله و بركاته

كيف أجعل القائمة بالعربية كذالك ؟

#12

أنا أبحث عن من يساعدني في فهم هدا المثال الجميل من الميكروسفت، لانه يظهر العربية حتى لو كانت الواجهة الويندوز بانجليزية، يعني لاداعي لتغير اللغه الخاصه بالنصوص !!

انظر هنا في هده الصفحة:

http://www.microsoft.com/msj/0499/multilan...angUnicode.aspx

هنا البرنامج و سورس كود:

http://download.microsoft.com/download/0/6...itLingualUI.exe

هده صورة للبرنامج اللذي أحلم بفهمه و برمجة مثله :)

multilangfig07.gif

أرجوك خد وقتك في قراة هدا المثال من الميكروسفت لانه مهم جدا و أعتقد حسب فهمي البسيط انه يستعمل المكتبة ديناميكة usp10.dl و UniAnsi.dll

ولكنك أنت صاحب الخبرة فأرجو أن تساعدني و لن أنسى خيرك ابدا

#13

أرجو أن تساعدني و لن أنسى خيرك ابدا :rolleyes:

#14

اخى سيف سأقوم بتجهيز مثال لك فى اقرب وقت و سأضعه لك

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#15

أشكرك جزيل الشكر مسبقا و جزاك الله خيرا سيد محمد علاء الدين عبد العزيز :rolleyes:

#16

قمت بجعل لغة جهازى Traditional Chinese حتى اختبر البرنامج و الحمد لله فقد عمل بشكل جيد اهم شئ ليعمل لديك هو ان تكون قمت بتثبيت اللغه العربيه على جهازك حتى و ان لم تكن هى اللغه الأساسيه او الفرعيه له هذه Screen shot للبرنامج

الإنجليزيه

post-135620-1250637663_thumb.jpg

العربيه

post-135620-1250637670_thumb.jpg

الكود الخاص بالبرنامج

MultiLang.rar

يحتوى البرنامج على ملفين DLL هما ArabicUI و EnglishUI ويحتووا على قائمه و String Table كل منهم بلغته، اما البرنامج التنفيذى لا يحتوى على اى Resources فقط الملف Main و الـ IDs الخاصه بالقائمه حتى يستطيع التعامل معها.

توجد بالبرنامج دالتين هما المسئولين عن تهيئة لغة البرنامج و هما DoArabicUI و DoEnglishUI و ستجد ان الشبه بينهم كبيير ماعدا جزء واحد من الكود و هو المسئول عن جعل الواجهه العربيه من اليمين لليسار.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#17

السلام عليكم و رحمة الله و بركاته

أولا قبل كل شيئ شكرا لك من القلب على تعبك لمساعدتي و رمضان مبارك سعيد أن شاء الله

مند يوم أخدت مثالك سهرت ليلة كلها لافهمه فلقد عمل جيدا جيدا عندي و الحمد لله

و لا تتصور شدة فرحتي لمجرد رأية صورة بالعربية :lol:

و مند أن أخدت مثالك أمضيت وقتا طويلا جدا في البحث

لكي أعدله كما أتمنى و لكن لم أستطع مع كامل الأسف :(

الله وحده يعلم كم أتشوق للوصول الى البرنامج اللذي أحلم به مند أكثر من تلاتة أشهر

أتمنى من أعماقي أن تقبل بان تساعدني لتطوير مثالك :)

حسنا، أتمنى برنامج ذو واجهة عربية و فيه :

main.c

resource.h

resource.rc

و يترجم من قبل المترجمات GCC أو Borland

و أشكرك جزيل الشكر و جزاك الله خيرا و رمضان مبارك سعيد أن شاء الله

#18

تطبيق المثال على اى مترجم سيكون واحد (فى الأغلب) لإنك فى كل الأحوال تتعامل مع windows.h و بالتالى نفس الكود المفترض ان يعمل مع الإثنان.

لم اعمل مع مترجمات Borland من قبل و لكنى استخدمت الـ GCC لفتره و مازلت استخدمه و لكن ليس فى الوقت الحالى حيث انى مشغول ببعض المشاريع.

لذا ابدء فى برنامجك و اذا احتجت مساعده فكلنا موجودين. و رمضان كريم :rolleyes:

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 24 أغسطس 2009 في 00:12

مدونتي: C++ Tips and Tricks

#19

لقد بدأت فيه مند أكثر من تلاتة أشهر و لكن من دون جدوى ... تظهر علامات بدلا من الحروف العربية

حسنا، هل يمكن لك أن تعطيني أخر مثال من دون استعمال ArabicUI.dll ؟

أقصد كيف أجمع ArabicUI.dll و MyApp في شيفرة واحدة ؟؟

يعني واجهة عربية فقط من دون الواجهة الانجليزية و لا تحتاج الى ArabicUI.dll فهي مندمة في البرنامج اصلا :hmm:

#20

سأقوم بتجهيزه لك و وضعه فى اقرب وقت

مدونتي: C++ Tips and Tricks

#21

ها هى ذا النسخه العربيه فقط بدون ArabicUI

تحتوى على الملفات

main.cpp

resource.h

resource.rc

بالإضافه إلى ملف المشروع MyApp.vcproj

فقط قم بتغيير إمتداد ملف الـ main إلى c

و الله ولى التوفيق

ArabicLang.rar

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 24 أغسطس 2009 في 05:18

مدونتي: C++ Tips and Tricks

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…