1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Кодерский уголок

Тема в разделе "Мастерская", создана пользователем Dimouse, 10 сен 2006.

  1. Dimouse King of Mice

    Dimouse

    Администратор Переводчик

    Регистрация:
    18 апр 2003
    Сообщения:
    35.044
    В соответствии с назначением раздела, в этой теме предполагается обсуждать конкретные вопросы, которые у вас возникают при создании своих программ (в частности - игр), помогать другим, размещать полезные ссылки на статьи и материалы, которые могут пригодиться другим.

    Что здесь не допускается:
    - беспорядочный флуд на всевозможные темы, в том числе общие обсуждения языков программирования без конкретики (карается по статье "флуд и оффтопик" *),
    - разжигания на темы "что лучше, Си или Си++ и чем они отличаются?", "какой язык программирования лучше X или Y?" и т.п. (карается по статье "флейм и участие в холиварах" *),
    - мерение пиписьками в стиле "я лучше программирую" или "ты не умеешь программировать" (карается по статье "оскорбление участников и их взглядов" *).

    Всё это допускается в специально созданной теме "Беседка для программистов или «Бутерброд с кодом».

    * по усмотрению модератора также возможно применение блокировки в данной теме.

    Оригинальное сообщение
     
    Последнее редактирование модератором: 24 ноя 2014
    CY8R4Y нравится это.
  2.  
  3. Grue13 Ocelote.12

    Grue13

    Регистрация:
    26 апр 2006
    Сообщения:
    10.025
    http://betanews.com/2014/06/01/norm...-once-again-comfortably-outpaces-windows-8-x/

    Прирост доли популярности Windows 7 в процентах больше, чем у Windows 8.x. Это скорее всего связано с окончанием поддержки Windows XP. Люди больше предпочитают переходить на Windows 7, даже с учётом того, что восьмёрка почти всегда навязывается предустановленной при покупке новых ноутбуков и десктопов.
     
  4. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Grue13, да. Этой информации самое место здесь. НО, следовало бы указать, что Linux стал неимоверно популярен ! Ведь грядущее прекращение поддержки семёрки приведёт всех к 8, что ужасно ! о !

    Так что следует осветить как быть, если человек захочет запускать свои обновляющиеся версии на принтере Линуксе. Тоже ж ведь надо как то определять под какой системой работает !
     
    Goblinit нравится это.
  5. netsky2004

    netsky2004

    Регистрация:
    31 янв 2007
    Сообщения:
    1.443
    У меня Visual Studio 2003 в ней функции определения версии Windows не существует?
     
  6. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    netsky2004, мягким и добрым голосом: она там есть, притом именно в том виде в каком описана в MSDN и по выданной тебе ссылке. Или слишком сложно для понимания ? :facepalm:
     
  7. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    "мы не ищем легких путей!" - сказал daemolisher, и пошел подключать kernel32.dll

    воть:

    Код:
    using System;
    using System.Runtime.InteropServices;
    
    [StructLayout(LayoutKind.Sequential)]
    public class OSVersionInfo
    {
        public int dwOSVersionInfoSize;
        public int dwMajorVersion;
        public int dwMinorVersion;
        public int dwBuildNumber;
        public int dwPlatformId;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public String szCSDVersion;
    }
    
    
    class MainClass
    {
        [DllImport("kernel32.dll")]
        public static extern bool GetVersionEx([In, Out] OSVersionInfo osvi);
    
        static void Main(string[] args)
        {
            OSVersionInfo osvi = new OSVersionInfo();
            osvi.dwOSVersionInfoSize = Marshal.SizeOf(osvi);
    
            GetVersionEx(osvi);
    
            Console.WriteLine("Class size: " + osvi.dwOSVersionInfoSize);
            Console.WriteLine("Major Version: " + osvi.dwMajorVersion);
            Console.WriteLine("Minor Version: " + osvi.dwMinorVersion);
            Console.WriteLine("Build Number: " + osvi.dwBuildNumber);
            Console.WriteLine("Platform Id: " + osvi.dwPlatformId);
            Console.WriteLine("CSD Version: " + osvi.szCSDVersion);
            Console.WriteLine("Platform: " + Environment.OSVersion.Platform);
            Console.WriteLine("Version: " + Environment.OSVersion.Version);
    
        }
    }
    честно скомуниздил исходник там

    таблицу соответсвующих ОС можно посмотреть на сайте некоего Микрософта - OSVERSIONINFOEX

     
  8. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
  9. netsky2004

    netsky2004

    Регистрация:
    31 янв 2007
    Сообщения:
    1.443
    Определить тип процессора и его частоту в С# возможно?
     
  10. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    netsky2004, возможно. Тебе снова готовые решения нужны ?
     
  11. Guyver

    Guyver

    Регистрация:
    2 окт 2005
    Сообщения:
    4.959
    Нет, так ты программистом не станешь.
     
  12. netsky2004

    netsky2004

    Регистрация:
    31 янв 2007
    Сообщения:
    1.443
    Bato-San, да, ведь я так и не нашел это ни в одной литературе и ни в одном уроке.
    насчет ассемблера ты прав, раз надо знать ассемблер, просто я думал что в языке высокого уровня существуют такие функции
     
  13. daemolisher

    daemolisher

    Регистрация:
    2 дек 2009
    Сообщения:
    1.704
    почитай книги по WinAPI
    выше уже приводил рабочий пример, с вызовом нужных winapi-функций из C#

    только это не очень удачное решение, имхо, в самом C# должны быть аналоги некоторых функций


    netsky2004, частоту процессора смысла нет измерять - она сейчас динамически меняется

    никакой полезной информации не несёт

    если хочется измерить производительность - нужно писать конкретные тесты с кодом самого приложения
     
  14. MisterGrim Very old

    MisterGrim

    Legacy

    Регистрация:
    29 ноя 2007
    Сообщения:
    25.423
    Вот нормальный пример, без всякого ассемблера и WinAPI: http://code.msdn.microsoft.com/windowsdesktop/CCS-LABS-WMI-Getting-c0403bd9

    вывод
     
    Последнее редактирование: 10 июн 2014
    netsky2004 нравится это.
  15. netsky2004

    netsky2004

    Регистрация:
    31 янв 2007
    Сообщения:
    1.443
    daemolisher, а тип, класс, код и разрядность процессора можно определить в C#? AMD или Intel?, Pentium, Сeleron или Xeon? 32 или 64-бит?
     
  16. jack7277

    jack7277

    Регистрация:
    23 май 2004
    Сообщения:
    1.115
    Для хранения каждой строки в BMP выделяется кратное 4 количество байт. В незначащих байтах хранится мусор.

    Ну вот, кажется, нашлась причина чего у меня строки расползались.
    Переходим на RAW)
     
    AxXxB нравится это.
  17. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Нуждаюсь в помощи знатоков win32 GDI.
    Wing Commander IV, DVD edition. Мне нужно на "главном терминале" дорисовать свой субтитр для перевода голосовой подсказки; перехватываю вывод на экран (вызов gdi'шной функции StretchDIBits(), оказалось - она вызывается под тысячу раз в секунду. Это нормально? Как выяснить, какие из вызовов реально что-то прорисовывают, чтобы не пыхтеть зря - тыщу раз в секунду врисовывая свою строку?
     
  18. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, ну ты нашёл что перехватить...

    вощем делай просто счётчик и отрисовывай своё токо один раз в сколько то вызовов. Остальное немедленно отдавай операционке.

    Токо AltTab не нажимай...
     
  19. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Bato-San, ответ неверный.
     
    Последнее редактирование: 27 июн 2014
  20. Bato-San Чеширский волк-киборг

    Bato-San

    Регистрация:
    24 июн 2010
    Сообщения:
    14.136
    Рыжий Тигра, hDC - для кого присобачен ? Индеец блин...
     
    Последнее редактирование: 28 июн 2014
  21. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    (ехидно кривляясь и нагло подмигивая) А ну-ка, догадаешься, где в этой фразе одно-единственное неверное слово? :-)
    "Давай-давай, плобар... то есть пробал... О! Пробартывайся!" (L)
     
  22. Рыжий Тигра Сам себе «пират»

    Рыжий Тигра

    Регистрация:
    3 май 2012
    Сообщения:
    1.823
    Фрагмент лога. Работают три перехватчика: позиционирование по .tre-файлу (xlat_seek(), чтение из него (xlat_read()) и StretchDIBits(). Коричневым выделены мои комменты к логу.
    Код:
    [COLOR="Sienna"]// чтение фонового звука к картинке:[/COLOR]
    05:37:35.187 000004c4 xlat_seek( 7fff0005("Q:GAMEFLOW.TRE"), 6804368 (01c0:1f6f30) (from FILE_BEGIN) ): OK RET=6804368 (67d390); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0ac40004, 16384 ): from file: 16384 bytes (16384 read); RET=16384 (4000); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0ac44004, 16384 ): from file: 16384 bytes (16384 read); RET=16384 (4000); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0ac48004, 16384 ): from file: 16384 bytes (16384 read); RET=16384 (4000); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0ac4c004, 13724 ): from file: 13724 bytes (13724 read); RET=13724 (359c); 
    [COLOR="Sienna"]// чтение фонограммы, к которой нужно вывести субтитры:[/COLOR]
    05:37:35.187 000004c4 xlat_seek( 7fff0005("Q:GAMEFLOW.TRE"), 13724932 (01c0:8908a4) (from FILE_BEGIN) ): OK RET=13724932 (d16d04); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0012f87c, 4 ): from file: 4 bytes (4 read); RET=4 (4); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200000, 16384 ): from file: 16384 bytes (16384 read); RET=16384 (4000); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200001, 16383 ): from file: 16383 bytes (16383 read); RET=16383 (3fff); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.187 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.203 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.203 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.203 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.203 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 16382 ): from file: 16382 bytes (16382 read); RET=16382 (3ffe); 
    05:37:35.203 000004c4 xlat_read( 7fff0005("Q:GAMEFLOW.TRE"), 0a200002, 9672 ): from file: 9672 bytes (9672 read); RET=9672 (25c8); 
    [COLOR="Sienna"]// начало вывода картинки:[/COLOR]
    05:37:35.203 000004c4 frame  5077; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.203 000004c4 frame  5078; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.203 000004c4 frame  5079; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.218 000004c4 frame  5080; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.218 000004c4 frame  5081; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.218 000004c4 frame  5082; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.218 000004c4 frame  5083; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.218 000004c4 frame  5084; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.234 000004c4 frame  5085; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.234 000004c4 frame  5086; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.234 000004c4 frame  5087; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.234 000004c4 frame  5088; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.234 000004c4 frame  5089; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.250 000004c4 frame  5090; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:37:35.250 000004c4 frame  5091; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    [COLOR="Sienna"]// ...и так в течение 33 секунд...[/COLOR]
    05:38:08.031 000004c4 frame 15851; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.031 000004c4 frame 15852; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.046 000004c4 frame 15853; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.046 000004c4 frame 15854; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.046 000004c4 frame 15855; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.046 000004c4 frame 15856; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.046 000004c4 frame 15857; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.062 000004c4 frame 15858; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    05:38:08.062 000004c4 frame 15859; call from 00477C2E: StretchDIBits( 8f011466, dst[0,0,640,480], src[0,0,640,480], 01980000, 0196C218[40,640,-480,1,8,0,307200,100,100,256,256], 00000000, 00cc0020 ) = 480 
    Итого - почти 11 тыщ кадров за 33 секунды, по 300 с чем-то абсолютно идентичных (специально прогонял лог через find /v <строка от "call from" до конца>" вызовов в секунду. Кадры, ясен перец, не всё время одна и та же картинка: мышовая стрелка передвигается, изображения ракеты и самолёта вращаются.

    [​IMG]

    Проверка, а действительно ли именно эта функция выводит картинку, проводилась:
    Код:
    int WINAPI wc4_stretch_dib( [COLOR="Sienna"]// перехватчик StretchDIBits()'а[/COLOR]
        HDC hdc,                      // handle to DC
        int XDest,                    // x-coord of destination upper-left corner
        int YDest,                    // y-coord of destination upper-left corner
        int nDestWidth,               // width of destination rectangle
        int nDestHeight,              // height of destination rectangle
        int XSrc,                     // x-coord of source upper-left corner
        int YSrc,                     // y-coord of source upper-left corner
        int nSrcWidth,                // width of source rectangle
        int nSrcHeight,               // height of source rectangle
        CONST VOID *lpBits,           // bitmap bits
        CONST BITMAPINFO *lpBitsInfo, // bitmap data
        UINT iUsage,                  // usage options
        DWORD dwRop                   // raster operation code
        ) {
      int rc, count = lpBitsInfo->bmiHeader.biSizeImage;
      [COLOR="Blue"]char newbits[ 620000 ];[/COLOR]
      static int frame = 0;
    [COLOR="Sienna"]// проверил - собственно вывод картинки происходит ЗДЕСЬ:[/COLOR]
      [COLOR="Blue"]int linelen = 640;
      int jx, *jp = (int *) newbits;
      memcpy( newbits, lpBits, count );[/COLOR] [COLOR="Sienna"]// копирую картинку в свой буфер[/COLOR]
    [COLOR="Sienna"]// рисую вертикальные полосы от 144-й до 319-й строк:[/COLOR]
      [COLOR="Blue"]for ( jx = 144 * linelen / 4 ; jx < ( 320 * linelen / 4 ); jx += 16 ) {
        int ja = 0x55555555 + 0x11111111 * ( ( jx / 16 ) % ( linelen / 64 ) );
        jp[ jx ] = ja;
      }[/COLOR]
    [COLOR="Sienna"]// отдаю выводить на экран:[/COLOR]
      rc = StretchDIBits( hdc,
        XDest, YDest, nDestWidth, nDestHeight, XSrc, YSrc, nSrcWidth, nSrcHeight,
        [COLOR="Blue"]newbits[/COLOR], lpBitsInfo, iUsage, dwRop );
    [COLOR="Sienna"]// зачищаю на случай отложенного вывода:[/COLOR]
      [COLOR="Blue"]memset( newbits, 0, count );[/COLOR]
    [COLOR="Sienna"]// вывожу запись в лог:[/COLOR]
      ddprint_log_start(( "frame %5d; call from %p: "
        "StretchDIBits( %08x, dst[%d,%d,%d,%d], src[%d,%d,%d,%d], %p, "
        "%p[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d], "
        "%08x, %08x ) = %d ",
        frame++, ( (uint32_t *) &hdc )[ -1 ], hdc,
        XDest, YDest, nDestWidth, nDestHeight,
        XSrc, YSrc, nSrcWidth, nSrcHeight, lpBits, lpBitsInfo,
            lpBitsInfo->bmiHeader.biSize,
            lpBitsInfo->bmiHeader.biWidth,
            lpBitsInfo->bmiHeader.biHeight,
            lpBitsInfo->bmiHeader.biPlanes,
            lpBitsInfo->bmiHeader.biBitCount,
            lpBitsInfo->bmiHeader.biCompression,
            lpBitsInfo->bmiHeader.biSizeImage,
            lpBitsInfo->bmiHeader.biXPelsPerMeter,
            lpBitsInfo->bmiHeader.biYPelsPerMeter,
            lpBitsInfo->bmiHeader.biClrUsed,
            lpBitsInfo->bmiHeader.biClrImportant,
        iUsage, // DIB_PAL_COLORS or DIB_RGB_COLORS
        dwRop, rc ));
      return ( rc );
    [​IMG]
     

    Вложения:

    Последнее редактирование: 28 июн 2014
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление