У меня появился вот такой вот вопрос: программа проверяет разрешение экрана, и, если оно меньше
1024 х 768 (например, 800 х 600), то должна произойти автоматическая настройка парметров экрана.
Разрешение изменять-то изменяет, но та же панель панель задач остается "висеть" как при прежнем,
800 х 600, разрешении. Как это устранить? Или другой пример: с разрешения 1024 х 768 переставить
(в программе) на 800 х 600, то иконки на рабочем столе вылезают за пределы экрана... Как
написать так, чтобы рабочий стол автоматически (если бы пользователь вручную бы настраивал
параметры экрана) настраивался при запуске программы?
P.S. используется обычное MFC-приложение на базе диалога
////////////////////////////////////////////////////////////
// //
// класс, проверяющий разрешение монитора //
#pragma comment(lib,"ddraw.lib")
#include "ddraw.h"
class CDirectDraw
{
public:
BOOL SetMode1024_768_32();
BOOL InitDirectDraw();
CDirectDraw();
virtual ~CDirectDraw();
private:
LPDIRECTDRAW lpDD;
HRESULT rezult;
};
CDirectDraw::CDirectDraw()
{
lpDD=NULL;
}
CDirectDraw::~CDirectDraw()
{
if (lpDD!=NULL)
lpDD->Release();
}
BOOL CDirectDraw::InitDirectDraw()
{
rezult = DirectDrawCreate(NULL, &lpDD, NULL );
if( rezult != DD_OK )
return FALSE;
return TRUE;
}
BOOL CDirectDraw::SetMode1024_768_32()
{
if (lpDD->SetDisplayMode(1024,768,32) != DD_OK)
return FALSE;
return TRUE;
}
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
BOOL CDlg::OnInitDialog()
{
/**********************************************/
///////////////////////////////////////////////////////////
// //
// проверка и установка разрешения экрана //
// //
int x;
int y;
CDirectDraw cDirectDraw;
// инициализация
if( cDirectDraw.InitDirectDraw() != TRUE )
{
MessageBox("Error!!!", "E R R O R !", MB_OK|MB_ICONHAND);
return FALSE;
}
CString str("");
// //
///////////////////////////////////////////////
x = GetDeviceCaps(hDC,HORZRES);
y = GetDeviceCaps(hDC,VERTRES);
if( x < 1024 && y < 768 )
{
str.Format("Извините, но Ваше разрешение экрана %d x %d не подходит.\r\n
Будет произведена автоматическая настройка", x, y);
MessageBox(str, "Предупреждение",MB_OK|MB_ICONINFORMATION);
if( cDirectDraw.SetMode1024_768_32() != TRUE )
{
MessageBox("Error set mode!!!", "ERROR!", MB_OK|MB_ICONHAND);
return FALSE;
}
}
else
{
str.Format("Ваше разрешение экрана %d x %d подходит.\r\n", x, y);
MessageBox(str,"Информация",MB_OKCANCEL|MB_ICONINFORMATION);
}
/**********************************************/
retunt TRUE;
}
Всем заранее большое спасибо!