Следующий макрос вернет требование выравнивания любого заданного типа (даже если это структура):
#define TYPE_ALIGNMENT( t ) offsetof( struct { char x; t test; }, test )
Примечание: я, вероятно, заимствовал эту идею из заголовка Microsoft в некоторый момент назад в моем прошлое ...
Редактировать: как указывает Роберт Гэмбл в комментариях, этот макрос не гарантированно работает. На самом деле, это, конечно, не будет работать очень хорошо, если компилятор настроен для упаковки элементов в структурах. Поэтому, если вы решите использовать его, используйте его с осторожностью.
Некоторые компиляторы имеют расширение, позволяющее получить выравнивание типа (например, начиная с VS2002, MSVC имеет встроенную функцию __alignof()
). Их следует использовать, когда они доступны.
Вы не можете. Обычно не гарантируется, что hWnd консольного окна подходит для всех операций с оконными дескрипторами, как, например, документировано здесь .
Вы можете попробовать комплексное решение, включающее сокрытие окна консоли (это возможно), а затем настроить окно (без элементов управления), которое пересылает соответствующие события назад и вперед. из реального окна консоли. В частности, события GDI для рисования содержимого окна консоли в фальшивом окне консоли и взаимодействия с полосой прокрутки (которая, в свою очередь, настраивает консоль ...).
Это решение довольно далекое и довольно техническое.
Думаю, я бы написал / использовал две программы. Одна консольная программа выполняет эту работу, а вторая программа является управляемым окном консоли, на котором запущено первое. Скорее всего, уже существуют консольные программы, и некоторые из них можно запустить без заголовка? Или найдите открытый исходный код и измените его.