Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы Afx:400000 
:(
    Опции темы
Delphist
Дата 1.9.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Здравствуйте! Поздравляю так сказать всех с днем знаний. Хотелось бы, чтобы в этот день моих знаний стало больше, а именно:
 подскажите, пожалуйста, какие есть аналоги в Delphi классам (или хотя бы скажите, что это за класса и для чего предназначены): 
    AfxFrameOrView42s
     Afx:400000:8:10023:0:0
     Afx:400000:b:10011:6:3024e
     Afx:400000:2b:10011:1900010:0

Из анализа двух программ (написанные разными фирмами) я понял что эти классы используются для рисование.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Earnest
Дата 1.9.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Вряд ли есть прямые аналоги...
Эти классы регистрирует MFC для своих окон. Afx + цифры - это кисть, курсор, какие-то другие параметры. 
Т.е. большого смысла имя класса не имеет - лишь бы было уникальным.
Причем, эти классы могут использоваться для совершенно разных окон. Например, AfxFrameOrView - это может быть или фрейм, или вью - а это две большие разницы. Функциональность-то реализуется на другом уровне, в виде обработчиков конкретных C++ классов. 


--------------------
...
PM   Вверх
Damarus
Дата 1.9.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Delphist, вот функция из MFC, которая создаёт такие классы (последние три):
Код

LPCTSTR AFXAPI AfxRegisterWndClass(UINT nClassStyle,
    HCURSOR hCursor, HBRUSH hbrBackground, HICON hIcon)
{
    // Returns a temporary string name for the class
    //  Save in a CString if you want to use it for a long time
    LPTSTR lpszName = AfxGetThreadState()->m_szTempClassName;

    // generate a synthetic name for this class
    HINSTANCE hInst = AfxGetInstanceHandle();

    if (hCursor == NULL && hbrBackground == NULL && hIcon == NULL)
    {
        ATL_CRT_ERRORCHECK_SPRINTF(_sntprintf_s(lpszName, _AFX_TEMP_CLASS_NAME_SIZE, _AFX_TEMP_CLASS_NAME_SIZE - 1, _T("Afx:%p:%x"), hInst, nClassStyle));
    }
    else
    {
        ATL_CRT_ERRORCHECK_SPRINTF(_sntprintf_s(lpszName, _AFX_TEMP_CLASS_NAME_SIZE, _AFX_TEMP_CLASS_NAME_SIZE - 1, _T("Afx:%p:%x:%p:%p:%p"), hInst, nClassStyle,
            hCursor, hbrBackground, hIcon));
    }
    
    // see if the class already exists
    WNDCLASS wndcls;
    if (::AfxCtxGetClassInfo(hInst, lpszName, &wndcls))
    {
        // already registered, assert everything is good
        ASSERT(wndcls.style == nClassStyle);

        // NOTE: We have to trust that the hIcon, hbrBackground, and the
        //  hCursor are semantically the same, because sometimes Windows does
        //  some internal translation or copying of those handles before
        //  storing them in the internal WNDCLASS retrieved by GetClassInfo.
        return lpszName;
    }

    // otherwise we need to register a new class
    wndcls.style = nClassStyle;
    wndcls.lpfnWndProc = DefWindowProc;
    wndcls.cbClsExtra = wndcls.cbWndExtra = 0;
    wndcls.hInstance = hInst;
    wndcls.hIcon = hIcon;
    wndcls.hCursor = hCursor;
    wndcls.hbrBackground = hbrBackground;
    wndcls.lpszMenuName = NULL;
    wndcls.lpszClassName = lpszName;
    if (!AfxRegisterClass(&wndcls))
        AfxThrowResourceException();

    // return thread-local pointer
    return lpszName;
}

PM MAIL ICQ Jabber   Вверх
Delphist
Дата 1.9.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Damarus @ 1.9.2006,  11:20)
Delphist, вот функция из MFC, которая создаёт такие классы (последние три):

Я так понял из кода это функция генерирует имя класса. 
А как узнать, что это за класс - форма, панель, фрейм или еще что-то.

Это сообщение отредактировал(а) Delphist - 1.9.2006, 13:10


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Damarus
Дата 1.9.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(Delphist @  1.9.2006,  14:02 Найти цитируемый пост)
А как узнать, что это за класс - форма, панель, фрейм или еще что-то.

Никак. Earnest уже сказала, что эти классы могут использоваться для совершенно разных окон.

Добавлено @ 15:01 
А функцию я привёл для того, чтобы было понятно, как связано имя класса с параметрами, переданными в функцию.
PM MAIL ICQ Jabber   Вверх
Delphist
Дата 8.9.2006, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: нет
Всего: 3



Цитата(Earnest @  1.9.2006,  10:44 Найти цитируемый пост)
может быть или фрейм, или вью

А в чем между ними разница.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Earnest
Дата 8.9.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Между ними просто-таки ничего общего  smile 


--------------------
...
PM   Вверх
Zqrilsrog
Дата 21.12.2020, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.12.2020

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.1318 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.