سؤال

وكيف يجب أن أقول SDL لتحقيق أقصى قدر من نافذة التطبيق؟

وأنا خلق نافذة مع هذه العلامات: SDL_OPENGL | SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_RESIZABLE.

هل كانت مفيدة؟

المحلول

ويتم التحكم في هذه الوظيفة من قبل مدير النوافذ عند استخدام العلم SDL_RESIZABLE. لمحاكاة تعظيم نافذة مع SDL قد تحتاج إلى أولا تحديد حجم سوف تحتل النافذة عندما مكبر. ثم هل يمكن أن أسميه SDL_SetVideoMode مع هذا الحجم بعد وضع الإطار مع في بيئة SDL_VIDEO_WINDOW_POS متغير .

إذا كنت حقا بحاجة النافذة ليكون الحد الأقصى كما لو كنت قد النقر على زر تكبير، ثم سيكون لديك للوصول إلى الكامنة مدير النوافذ مباشرة (أي SDL لن يساعدك).

وظيفة

وعلى سبيل المثال، ShowWindow يمكن استخدامها لتحقيق أقصى قدر من نافذة باستخدام API Win32 و. للحصول على مؤشر إلى النافذة التي أنشأتها SDL استخدام SDL_GetWMInfo وظيفة. الناتج SDL_SysWMinfo البنية يحتوي على حقل <م> نافذة من اكتب HWND. يجب أن يتم تمرير ذلك إلى وظيفة ShowWindow جنبا إلى جنب مع العلم SW_MAXIMIZE.

SDL_SysWMinfo info;
SDL_VERSION(&info.version);
SDL_GetWMInfo(&info);
ShowWindow(info.window, SW_MAXIMIZE);

نصائح أخرى

في SDL2.0

sdl_window = SDL_CreateWindow("title", 10, 30, window_width, window_height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
SDL_MaximizeWindow(sdl_window);
SDL_GetWindowSize(sdl_window, &window_width, &window_height);
sdl_gl_context = SDL_GL_CreateContext(sdl_window);
SDL_GL_MakeCurrent(sdl_window, sdl_gl_context);

وجميع الإجابات يبدو عفا عليها الزمن، في الوقت الحاضر فقط تحديد SDL_WINDOW_MAXIMIZED كما علم لSDL_CreateWindow.

window = SDL_CreateWindow(
    "Foobar",
    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720,
    SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_MAXIMIZED
);

وهناك متغيرات بيئة الإضافية التي يمكن وضعها للسيطرة على نافذة العرض. للأسف مستندات SDL انخفضت في الوقت الحالي، لذلك لا يمكن البحث عن ما تحتاجه.

وSDL_FULLSCREEN هو الخيار الذي تبحث عنه:

flags |= SDL_FULLSCREEN;
screen = SDL_SetVideoMode(..., flags);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top