Шаг 297 - Венгерская нотация и MFC

В MFC используется венгерская нотация. То есть правила написания имен переменных. Смысл этих правил в том, чтобы по имени переменной можно было определить ее тип. Например, chName - 8 битная строка. Почему называется она венгерской ??? Существует такая история, что был в Microsoft такой программист из венгрии по имени Чарльз Симони, программировал он на С++ . Его код смотрелся очень необычно. Когда его спрашивали на чем это написано тот отвечал на венгерском. Говорят по этому поводу им была написана диссертация.

Главные соглашения MFC.

Префикс 		тип 			пример
С 		класс или структура 	CPoint,CPrintInfo
m_ 		переменная член класса 	m_pDoc

Итак, все объявления классов и структур начинаются с С, а если переменная является членом класса, то с m_. Дальше таблица соответствий префиксов типам:

Префикс 	Тип 		Пример 
ch		char 		chGrade 
ch 		TCHAR 		chName
b 		BOOL 		bEnabled
n 		int 		nLength
n 		UINT 		nLength 
w 		WORD 		wPos 
l 		LONG 		lOffset 
dw 		DWORD 		dwRange 
p 		* 		pDoc 
lp 		FAR* 		lpDoc 
lpsz 		LPSTR 		lpszName 
lpsz 		LPCSTR 		lpszName 
lpsz 		LPCTSTR 	lpszName
h 		handle 		hWnd 
lpfn 		callback 	lpfnAbort

Так же рекомендованы префикс для идинтификаторов и выделены соответствующие диапазоны:

Префикс 	Тип 					Пример	 	 	Диапазон
IDR_ 	Идентификатор ресурса нескольких типов	IDR_MAINFRAME 		1 to 0x6FFF
IDD_ 	Диалоговый ресурс				IDD_SPELL_CHECK 		1 to 0x6FFF
HIDD_ 	Диалоговый ресурс для помощи 		HIDD_SPELL_CHECK  		0x20001 to 0x26FF 
IDB_ 	Изображение 				IDB_COMPANY_LOGO 		1 to 0x6FFF 
IDC_ 	Курсор 					IDC_PENCIL 		1 to 0x6FFF 
IDI_ 	Икона 					IDI_NOTEPAD 		1 to 0x6FFF
ID_ _	Команда меню или панели инструментов 	ID_TOOLS_SPELLING		0x8000 to 0xDFFF 
HID_ 	Команда помощи 				HID_TOOLS_SPELLING 	0x18000 to 0x1DFFF 
IDP_ 	Окно сообщения строка 			IDP_INVALID_PARTNO 	8 to 0xDFFF 
HIDP_ 	Окно сообщения помошь 			HIDP_INVALID_PARTNO 	0x30008 to 0x3DFFF
IDS_ 	Элемент управления на диалоговом окне	IDS_COPYRIGHT 		1 to 0x7FFF 
IDC_ 	Control within dialog box 			IDC_RECALC 		8 to 0xDFFF 

Давайте разберем несколько примеров:

hwndMain 
	h дискриптор
	wnd окна
	Main имя Main
lpsztext
	lp дальний указатель
	sz на строку
	Text имя Text

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 5.01.2001