Окно без границ, использующее c ++ в visual studio, работает с небольшими изображениями, но не на полном экране - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь отобразить картинку в окне без полей. Я установил параметры окна, как показано в коде, используя HWND. Это работает для меньшего изображения, то есть изображений, меньших, чем разрешение моего монитора. Ниже вы можете видеть, что изображение отображается в абсолютно безбаховом окне:

enter image description here

Но когда я пытаюсь загрузить изображение с разрешением моего монитора, в нижней части моего окна отображается серая полоса, как показано красными стрелками:

enter image description here

Как убрать эту полосу? Мой код выглядит следующим образом:

#include "stdafx.h"
#include "includes.h"
using namespace cv;


/********************* PRESETS **************************/

/*configBorderlessWindow : This Function configures the opencv image display 
window to 
borderless using windows system functions*/
HWND win_handle;
void configBorderlessWindow( IplImage* cv_img )
{
cvNamedWindow("TEST");
cvMoveWindow("TEST", 0, 0);
cvShowImage("TEST", cv_img);

win_handle = FindWindow(0, L"TEST");
if (!win_handle) {  printf("Failed FindWindow\n");  }

/* Setting the flags for the borderless window */
unsigned int flags = (SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE );
flags &= ~SWP_NOSIZE;
unsigned int x = 0;
unsigned int y = 0;
unsigned int w = cv_img->width;
unsigned int h = cv_img->height;
SetWindowPos(win_handle, HWND_TOPMOST, x, y, w, h, flags);

SetWindowLong(win_handle, GWL_STYLE, GetWindowLong(win_handle, GWL_EXSTYLE) | WS_EX_TOPMOST);
ShowWindow(win_handle, SW_SHOW);

//ShowWindow(win_handle, SW_MAXIMIZE); // Maximize window AK 04012019
SetActiveWindow( win_handle );
HWND setFocusHandle = SetFocus(win_handle);
//ShowCursor( FALSE );

}

int main()
{
    IplImage* cv_img= cvLoadImage("android_189017-640x480.jpg");
    printf("Success");
    configBorderlessWindow(cv_img );
    waitKey(0);
}
...