Здравствуйте, rommix, Вы писали:
R>Если у меня есть переменная HDC, напрмер полученная так:
R>R>HDC hdc = CreateDC("DISPLAY", NULL, NULL, NULL);
R>HDC hdcCompatible = CreateCompatibleDC(hdc);
R>
R>то могу я переменную hdcCompatible передавать между процессами и работать с тем же HDC в другом процессе (не потоке) последовательно, т.е. HDC в один и тот же момент времени не используется в обоих процессах? есть мысль, что нет... т.к. в МСДНе написанно:
R>Note that the handle to the DC can only be used by a single thread at any one time.
R>говорится про потоки, а в разных процессах тогда тем более??
Согласно Feng Yuan, объекты GDI привязаны к процессу, поэтому воспользоваться хэндлом созданным в другом процессе не получится.
То, что написано в MSDN, к этому отношения не имеет, так как там речь идет о синхронизации доступа к HDC.
Если у меня есть переменная HDC, напрмер полученная так:
HDC hdc = CreateDC("DISPLAY", NULL, NULL, NULL);
HDC hdcCompatible = CreateCompatibleDC(hdc);
то могу я переменную hdcCompatible передавать между процессами и работать с тем же HDC в другом процессе (
не потоке) последовательно, т.е. HDC в один и тот же момент времени не используется в обоих процессах? есть мысль, что нет... т.к. в МСДНе написанно:
Note that the handle to the DC can only be used by a single thread at any one time.
говорится про потоки, а в разных процессах тогда тем более??
хорошо, хэндл контекста передавать нельзя, а если мне надо передать битмап (изображение) из процесса в процесс, то это можно сделать через функции GetDIBits, SetDIBits (передав BITMAPINFO и байты самого изображения), да? не надо использовать еще какую-нибудь функциональность для ускорения работы данных функций?
Здравствуйте, rommix, Вы писали:
R>хорошо, хэндл контекста передавать нельзя, а если мне надо передать битмап (изображение) из процесса в процесс, то это можно сделать через функции GetDIBits, SetDIBits (передав BITMAPINFO и байты самого изображения), да? не надо использовать еще какую-нибудь функциональность для ускорения работы данных функций?
Можно создать dib section, основанную на memory mapped file, который отображается в память обоих процессов. Тогда данные, записанные в одном процессе, будут автоматически видны в другом.
Последние два параметра
CreateDIBSection позволяют задать memory mapped file handle и смещение к данным изображения. В начало файла можно положить структуру BITMAPINFO и любые дополнительные данные, которые вы хотите разделять между процессами.