uxtheme.dll :: правильная загрузка

Тема в разделе "WASM.WIN32", создана пользователем UTeX, 12 мар 2008.

  1. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    ??
    Весь "код" - это несколько банальнейших строк, там просто нечему мешать контролам отображаться. От нашего стола вашему столу:

    [​IMG]
     
  2. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    У меня это выглядит следующим образом
    [​IMG]
    что-то не так?
     
  3. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    >что-то не так?

    А это уж вам решать, комп-то ваш.
     
  4. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.347
    kero
    Похоже, что comctl32.dll в импорт не попала. Из-за этого на некоторых машинах не отображается содержимое диалогов, мессаджбоксов и т.п.

    [+]
    исправил :)
     
  5. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    rmn
    Видимо, надо читать - comctl32 ? Всегда оставлял ее в исходниках закомментированной, в надежде когда-нибудь лично нарваться на ситуацию ее необходимости при наличии манифеста. Неужели это наконец-то случилось ? :)
    В аттаче comctl32 раскомментирована, а WM_THEMECHANGED теперь незаконно посылается не только контролам, но и самому диалогу.
     
  6. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    Так и есть

    Теперь все работает

    Тему в принципе можно считать закрытой

    Если не считать того что это сообщение нужно послать всем контролам, которых фактически на данном этапе нет
     
  7. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Это на каком же таком данном этапе ??
    И почему нужно именно на таком хреновом этапе ??

    ---
    И хотелось бы все же конкретики.
    Вот rmn говорит:
    Так не проверите ли на вашем компе приаттаченный non-dialog вариант с закомментированной comctl32 ?
     
  8. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    kero
    Я о том говорю что образ загружаемого файла погружен в АП загрузчика, все настроено и остается только прыжок на EntryPoint загружаемого файла (на данном этапе никаких окон нет) потому я и говорил что стиль нужно установить для приложения в целом а не для конкретны окон.
    Думаю тут все понятно - окон нет на данном этапе
     
  9. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    Между прочим, до сих пор я ведь здесь отвечал только вот на это:
    Но если начать с начала, - а вы уверены, что в результате имеете дело с comctl32 именно 6 версии ?
    Ведь фраза -
    - сообщает, похоже, именно об отсутствии манифеста в нужное время на нужном месте.
    А тогда говорить об uxtheme вообще нет смысла.

    ---
    Так как насчет non-dialog варианта?
     
  10. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    встретилась вот функция которая должна добавлять манифест в EXE во время выполнения
    но увы это не работает
    подскажите это вообще реально?

    Код (Text):
    1. BOOL AddManifest(__in LPWSTR szFilespec,
    2.                   __in LPWSTR szProgName,
    3.                   __in LPWSTR szProgDesc)
    4. //Adds a manifest
    5. {
    6.     static LPWSTR szFormat =    
    7.         L"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
    8.         L"<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersion=\"1.0\">"
    9.         L"<assemblyIdentity "
    10.         L"version=\"1.0.0.0\" "
    11.         L"processorArchitecture=\"x86\" "
    12.         L"name=\"%s\" "
    13.         L"type=\"win32\" />"
    14.         L"<description>%s</description>"
    15.         L"<dependency>"
    16.         L"<dependentAssembly>"
    17.         L"<assemblyIdentity type=\"win32\" "
    18.         L"name=\"Microsoft.Windows.Common-Controls\" "
    19.         L"version=\"6.0.0.0\" "
    20.         L"publicKeyToken=\"6595b64144ccf1df\" "
    21.         L"processorArchitecture=\"x86\"/>"
    22.         L"</dependentAssembly>"
    23.         L"</dependency>"
    24.         L"</assembly>";
    25.     HMODULE hMod=LoadLibrary(szFilespec);
    26.     if (!hMod)
    27.         return FALSE;
    28.     HRSRC hRes=FindResource(hMod,MAKEINTRESOURCE(1),MAKEINTRESOURCE(24));
    29.     FreeLibrary(hMod);
    30.     if (!hRes)
    31.     {
    32.         HANDLE hUpdate=BeginUpdateResource(szFilespec,FALSE);
    33.         if (!hUpdate)
    34.             return FALSE;
    35.         LPWSTR szManifest=new WCHAR[lstrlenW(szFormat)+
    36.             (szProgName ? lstrlenW(szProgName) : 0)+
    37.             (szProgDesc ? lstrlenW(szProgDesc) : 0)+1];
    38.         wsprintf(szManifest,szFormat,
    39.             szProgName ? szProgName : L"",szProgDesc ? szProgDesc : L"");
    40.         BOOL bUpdateSuccessful=UpdateResource(hUpdate,
    41.             MAKEINTRESOURCE(24),
    42.             MAKEINTRESOURCE(1),
    43.             MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_UK),
    44.             (LPVOID)szManifest,(DWORD)lstrlenW(szManifest));
    45.         if (!bUpdateSuccessful)
    46.         {
    47.             delete[] szManifest;
    48.             EndUpdateResource(hUpdate,TRUE);
    49.             return FALSE;
    50.         }
    51.         delete[] szManifest;
    52.         if (!EndUpdateResource(hUpdate,FALSE))
    53.             return FALSE;
    54.     }
    55.     return TRUE;
    56. }