S
solova
Создал совершенно чистый проект.
Нашёл работающий примерчик.
Создаю окошко:
Закрашиваю его: <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
Цвет приятный в окне, но вот его голубая рамка (XP Style) просто раздражает.
Внимание, вопрос!
Можно ли этот цвет поменять\зарисовать как-то?
PSесли предыдущее не возможно то)я видел окна без sysmenu и рамки, в MFC такое можно сделать установив "Title Bar"-FALSE, как такое создать через CreateWindow ?
Нашёл работающий примерчик.
Создаю окошко:
Закрашиваю его: <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
C++:
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
HWND hWnd;
MSG lpMsg;
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL; //LoadIcon(NULL, IDI_ICON);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_WINDOW+2;//(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = "ClassName";
if (!RegisterClass(&wc))
{
MessageBox(NULL, "Не могу зарегистрировать класс окна!", "Ошибка", MB_OK);
return 0;
}
hWnd = CreateWindow("ClassName", // Имя класса
"Шаблон WinAPI приложения", // Текст заголовка
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, // Стиль окна
50,50, // Позиция левого верхнего угла
300,200, // Ширина и высота окна
NULL, // Указатель на родительское окно NULL
NULL, // Используется меню класса окна
hInstance, // Указатель на текущее приложение
NULL); // Передается в качестве lParam в событие WM_CREATE
if (!hWnd){
MessageBox(NULL, "Не удается создать главное окно!", "Ошибка", MB_OK);
return 0;}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
// Выполняем цикл обработки сообщений до закрытия приложения
while (GetMessage(&lpMsg, NULL, 0, 0))
{
TranslateMessage(&lpMsg);
DispatchMessage(&lpMsg);
}
return (lpMsg.wParam);
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
RECT Rect;
HDC hdc, hCmpDC;
HBITMAP hBmp;
switch (message)
{
case WM_PAINT:
GetClientRect(hWnd, &Rect);
hdc = BeginPaint(hWnd, &ps);
// Создание теневогоs контекста для двойной буфферизации
hCmpDC = CreateCompatibleDC(hdc);
hBmp = CreateCompatibleBitmap(hdc, Rect.right - Rect.left,Rect.bottom - Rect.top);
SelectObject(hCmpDC, hBmp);
// Закраска фоновым цветом
LOGBRUSH br;
br.lbStyle = BS_SOLID;
br.lbColor = 0x333333;
HBRUSH brush;
brush = CreateBrushIndirect(&br);
FillRect(hCmpDC, &Rect, brush);
DeleteObject(brush);
// Копируем изображение из теневого контекста на экран
SetStretchBltMode(hdc, COLORONCOLOR);
BitBlt(hdc, 0, 0, Rect.right - Rect.left, Rect.bottom - Rect.top,hCmpDC, 0, 0, SRCCOPY);
// Удаляем ненужные системные объекты
DeleteDC(hCmpDC);
DeleteObject(hBmp);
hCmpDC = NULL;
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return 0;
}
Внимание, вопрос!
Можно ли этот цвет поменять\зарисовать как-то?
PSесли предыдущее не возможно то)я видел окна без sysmenu и рамки, в MFC такое можно сделать установив "Title Bar"-FALSE, как такое создать через CreateWindow ?