Я думаю, что DirectX или SDL будут соответствовать вашим потребностям. Они предназначены для 3D, но работают и для 2D. Оба поддерживают Windows CE / Mobile и SDL, а также доступны для множества не-ОС Microsoft.
К сожалению, прямая совместимость с GDI не поддерживается в библиотеках. Но вы можете добиться цели, создав класс конвертера, который будет принимать всю выводимую графику из классов приложений, разработанных в GDI, и преобразовывать формат в соответствии с потребностями классов DirectX или SDL (в зависимости от того, что вы хотите использовать).
Лично я однажды сделал такой класс конвертера. У меня была игра, написанная для Pocket PC с использованием SDL, и мне нужно было портировать ее на устройство Palm. Там мне пришлось использовать другую графическую библиотеку (я сейчас не помню названия библиотеки), но мне удалось перенести вывод всех функций SDL в формат, необходимый для другой библиотеки. Мне нужно было изменить приложение, чтобы оно вызывало функции конвертера (оболочки), которые перенаправляют вызов в библиотеку Palm или Pocket PC, в зависимости от того, какое устройство в данный момент работает. Поэтому я думаю, что вы можете сделать то же самое для преобразования GDI -> DirectX или GDI -> SDL.