Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Задать свое имя классу программы. GetClassName........ 
:(
    Опции темы
DigitSphinx
Дата 15.6.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



хашу шоб GetClassName возвращал “I_LOVE_BILL_GATES”
Код

BOOL CTESTDlg::PreCreateWindow(CREATESTRUCT& cs)
{
    // TODO: Add your specialized code here and/or call the base class
    cs.lpszClass = _T("I_LOVE_BILL_GATES");
    cs.lpszName = _T("YES_I_LOVE_HIM_!!!");
    return CDialog::PreCreateWindow(cs);
}

Ставлю брейкпойнт но это событие никогда не наступает !
Может я что то путаю ?



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Greeen
Дата 15.6.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А ты лови WM_CREATE макросом ON_WM_CREATE()


--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
DigitSphinx
Дата 15.6.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



На OnCreate событие наступает, но эффекта 0
Код

BOOL ClopaDlg::PreCreateWindow(CREATESTRUCT& cs)
{
    // TODO: Add your specialized code here and/or call the base class

    MessageBox(_T("PreCreateWindow"));
    cs.lpszClass = _T("I_LOVE_BILL_GATES");
    cs.lpszName = _T("YES_I_LOVE_HIM_!!!");
    return CDialog::PreCreateWindow(cs);
}

int ClopaDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    MessageBox(_T("OnCreate"));
    lpCreateStruct->lpszClass = _T("I_LOVE_BILL_GATES");
    lpCreateStruct->lpszName  = _T("YES_I_LOVE_HIM_!!!");
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;

    // TODO:  Add your specialized creation code here

     

    return 0;
}

GetClassName Возвращает это #32770

Это сообщение отредактировал(а) DigitSphinx - 15.6.2007, 22:56


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
korbian
Дата 18.6.2007, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Для диалогов, почему то всегда возвращется такое значение, я не знаю с чем это связано. Для недиалоговых окон в WTL есть макрос: 
Код
 DECLARE_FRAME_WND_CLASS_EX()
, используя который можно установить имя класса окна.


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


Эксперт
****


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

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



Для модальных диалогов PreCreateWindow не вызывается, т.к. модальные диалоги создаются вызовом API-функции CreateDialogIndirect.


--------------------
...
PM   Вверх
korbian
Дата 18.6.2007, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Из  определеннии метода  IsParentDialog() класса CWindow из atlwin.h я понял, что
имя класса дочерних диалоговых окон зарезервировано как "#32770". 
Скорее всего эта константа строго определена в недрах Windows и изменению тривиальным способом не подлежит.


Ищи в msdn статью "About Window Classes",в ней все написано.

Это сообщение отредактировал(а) korbian - 18.6.2007, 11:18


--------------------
korbian ©
PM   Вверх
DigitSphinx
Дата 18.6.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



Мне сказали что можно сабкласить диалог но результат того не стоит !
Учитывая что я не знаю что это такое  smile 



--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Rapalex
Дата 18.6.2007, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 732
Регистрация: 20.1.2006
Где: Украина -> Ник олаев

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



Цитата(DigitSphinx @  18.6.2007,  11:30 Найти цитируемый пост)
сабкласить диалог

Не поможет...


--------------------
In vitium ducit culpae fuga.
Желание избежать ошибки вовлекает в другую.
(Horatius)
PM ICQ   Вверх
DigitSphinx
Дата 18.6.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 28.4.2007
Где: Москва

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



Цитата(DigitSphinx @  18.6.2007,  11:30 Найти цитируемый пост)
Мне сказали что можно сабкласить диалог но результат того не стоит !

т.е. супперклассить диалог  smile Я даже не смог запомнить как это называется ! smile 


--------------------
Чтобы пробить стену лбом нужен или большой разбег, или много лбов.
(Альберт Эйнштейн)
Умен ты или глуп, велик ты или мал, не знаем мы, пока ты слова не сказал.
(Альберт Эйнштейн)
user posted image
PM MAIL ICQ   Вверх
Coocky
Дата 18.6.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



smile
Мне б ваши проблемы smile)
ClassName  содержит ДОПУСТИМОЕ имя класса для окна. В качестве имени можно указать имя класса, созданого с помощью функции RegisterClass () или RegisterClassEx() ИЛИ типа перечисленых в МСДН - BUTTON ,EDIT, LIST  и т.д.
ClassName может представлять собой также атомарное значение.Оно создается с помощью функции GlobalAddAtom ()

Да, кстати, насчет атома.
Если строка имеет атомарное значение, то она хранится в глобальной таблице атомов и возвращает УНИКАЛЬНОЕ значение, которое определяет эту строку ,как атом smile
Если даная строка существует в этой таблице, возвращается ТОТ ЖЕ самый атом, который возвращался при добавлении строки первый раз.

Цитата(DigitSphinx @  15.6.2007,  22:42 Найти цитируемый пост)
GetClassName Возвращает это #32770

Это и есть атом. Они всегда, сЦуки, начинаются с #  smile
С ув. Ваш гений-Куки  smile 


Это сообщение отредактировал(а) Coocky - 18.6.2007, 16:28


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


 




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


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

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