Как я могу получить объект HDC от объекта CDC?

Решение для Bash, если Вы хотите сделать это командой (например, если необходимо часто делать это):

addnums () {
  local total=0
  while read val; do
    (( total += val ))
  done
  echo $total
}

Тогда использование:

addnums < /tmp/nums
10
задан bdonlan 5 August 2009 в 16:29
поделиться

5 ответов

В классе CDC определен оператор HDC () , который позволяет компилятору преобразовывать объект CDC в HDC неявно. Следовательно, если у вас есть CDC * и функция, которая принимает HDC, вы просто разыменовываете указатель и отправляете его функции.

11
ответ дан 3 December 2019 в 14:44
поделиться

Если у вас есть объект CDC , он будет неявно преобразован в HDC при необходимости:

CDC dc;
HDC hdc = dc; // HDC hdc = dc.operator HDC();

Если у вас есть указатель на CDC , то использование функции GetSafeHdc будет выглядеть более ясным:

CDC* pdc = SOME;
HDC hdc = pdc->GetSafeHdc();
14
ответ дан 3 December 2019 в 14:44
поделиться

Еще несколько советов:

  • Избегайте использования поставщика Microsoft Oracle, потому что он выходит из поддержки ( http://blogs.msdn.com/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx )
  • Если вы обязуетесь Oracle использует специфические функции Oracle и связывает сборку Oracle.DataAccess с вашим кодом
  • . Если вы не уверены и хотите быть гибкими, используйте System.
2
ответ дан 3 December 2019 в 14:44
поделиться

CDC - это класс C ++, который - с разумным приближением - инкапсулирует HDC, который является дескриптором контекста устройства.

Документация, на которую вы ссылаетесь, описывает преобразование оператор , который представляет собой конструкцию C ++, которую классы могут предоставить, чтобы разрешить неявное преобразование из экземпляра класса в какой-либо другой тип. В этом случае неявное преобразование приводит к базовому дескриптору (HDC), который инкапсулирует экземпляр CDC .

Вы можете выполнить преобразование с помощью экземпляра CDC в любом месте, где это необходимо быть преобразованным в HDC .

Проще всего:

void f( const CDC& cdc )
{
    HDC hdc = cdc;

    // use hdc here
}
3
ответ дан 3 December 2019 в 14:44
поделиться

Просто назначьте его.

CDC cdc = something.
HDC hdc = cdc;
if (hdc != 0)
{
  //success...
}
2
ответ дан 3 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: