Nano Hash - криптовалюты, майнинг, программирование

CMyPrintDialog::OnInitDialog() не вызывается в IE10

У меня есть класс с именем CMyPrintDialog, производный от CPrintDialog MFC. Он используется как ActiveX в IE, и проект статически связан с MFC. Он хорошо работает в IE8 уже много лет. Но тот же бинарник проекта плохо работает в IE10. Диалоговое окно печати может появиться, но, к сожалению, его OnInitDialog никогда не вызывается и вызывает проблемы. Странно то, что если я прикреплю отладчик VS к IE, OnInitDialog будет вызываться правильно, и настроенный диалог печати будет работать хорошо. Кажется, Microsoft что-то изменила и вызывает проблему.

Я нашел подобную ссылку, но она не работает.

Миллион благодарностей за любые идеи.


Ответы:


1

Проблема вызвана новой функцией IE после IE9 — «Зависание сопротивления». Мы можем избежать этой проблемы, отключив новую функцию: установите ниже значение как 0 и закройте все окна IE. HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\ Тип: REG_DWORD Имя: HangRecovery Значение: 0

24.02.2014

2

Я не совсем понимаю вашу точку зрения, которую вы хотите сказать: рассмотрите возможность сбоя CPrintDialog в вашем приложении с помощью IE10. Что вам нужно сделать, так это:

Настройте функцию обработчика сообщений, _AfxCommDlgProc(), в конструкторе вашего

Класс, производный от CPrintDialog, как показано ниже:

 // CMyPrintDialog is a CPrintDialog-derived class.
   CMyPrintDialog::CMyPrintDialog(DWORD dwFlags)
   : CPrintDialog(FALSE,dwFlags)
   {
      //{{AFX_DATA_INIT(CMyPrintDialog)
      //}}AFX_DATA_INIT
      // MFCBUG: MFC 6.0 doesn't set the message hook!
      m_pd.Flags |= PD_ENABLEPRINTHOOK | PD_ENABLESETUPHOOK;
      // _AfxCommDlgProc is exported from static MFC libraries
      m_pd.lpfnPrintHook = _AfxCommDlgProc;
      m_pd.lpfnSetupHook = _AfxCommDlgProc;
   }
28.11.2013
  • Код такой же, как у вас в конструкторе. Моя проблема не в аварии. На самом деле открывается диалоговое окно печати, но дескриптор сообщения производного класса, например OnOk(), не вызывается, когда я нажимаю кнопку OK. Это делает диалог неправильным. 28.11.2013
  • @Cesc, вы уверены, что ваше сообщение OnOK() имеет правильный прототип, поскольку оно присутствует в родительском классе. То есть в вашем случае вызов OnOK() означает, что вы пишете родительскую функцию. Таким образом, прототип должен быть таким же, как и другой, связанный с кодом. 28.11.2013
  • Да, это точно так же. Как я уже упоминал, я создал dll и использовал его в IE8, все работает хорошо. Но если я использую ту же dll в IE10, у меня возникают проблемы. Я построил код VS2012. 28.11.2013
  • Подскажите, пожалуйста, значение #define _WIN32_IE в вашем проекте? Вероятно, значение может быть объявлено в stdafx.h 28.11.2013
  • Нет такого флага. Кстати, мой проект - это проект MFC, созданный VS. 28.11.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..