powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / WinApi: красивое окно
11 сообщений из 11, страница 1 из 1
WinApi: красивое окно
    #35681458
KWS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KWS
Гость
Народ!
Ряд программ написанных на WinApi (то бишь без MFC) содержит довольно симпатичное окно - скругленные края, желный заголовок и т.п. Выглядит симпатично, что-то вроде "БаллонТипа".
Но не "подсказка" а все-таки главное окно. Поскольку проги от разных производителей, а окно 1 в 1, думаю нарисовано не "руками", а вызвано как-то стандартно. Может стили какие хитрые или функции.
Никто не подскажет как это сделано?

Ну и вторая часть вопроса - может кто подскажет как вообще главное окно посимпотнее сделать? Может ссылки есть какие или куски кода.

Похожей темы тут не нашел, но считаю ее важной для всех.
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35681475
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. В WinAPI-программе можно использовать и VCL, и NET, и ActiveX и вместе.
2. Скругленные края делаются функций SetWindowRgn.
3. Окно симпатичным делается с помощью WM_PAINT, WM_DRAWITEM, WM_NCPAINT


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35681795
KWS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KWS
Гость
Хм. Тогда вопрос - если все делают руками почему получается одинаково?
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35681846
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что используют компоненты или чужой код.


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35681889
KWS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KWS
Гость
Понятно. Спасибо.

Тогда просьба. Не поделитесь кодом или каким его кусочком? Чтобы хоть глазком глянуть, я в этом не очень силен. Сорри за наглость.
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35681900
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего именно?


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35681963
KWS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KWS
Гость
Ну, украшательством каким.
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35682026
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35682059
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
// Этот обработчик может сильно отличатся, но принцип такой:

int wndProc(int mid,int wp,int lp) {
  if(mid==WM_DRAWITEM) {
    DRAWITEMSTRUCT* d = (DRAWITEMSTRUCT*)lp;
    if(d->hwndItem==button1.hwnd) {
      drawButton(button1, *d, getWindowText(d->hwndItem));
      return  0 ;
    }
  }
};

// Это рисование кнопки

void drawButton(Button& btn, DRAWITEMSTRUCT& d, string caption) {
  HDC hdc = d.hDC;
  inr x = d.rcItem.left;
  int y = d.rcItem.top;
  inr x1 = d.rcItem.right;
  int y1 = d.rcItem.bottom;

  // Тут рисуй, что хочешь.
  dc_fillRect(hdc,x,y,x1,y1,bg);
  dc_fillRect(hdc,x+ 8 ,y+ 8 ,x1- 8 ,y1- 8 ,buttonBg);
  dc_copy_m(hdc,x,y, 8 , 8 ,buttonsBmp,mode+ 0 , 0 );
  dc_copy_m(hdc,x1- 8 ,y, 8 , 8 ,buttonsBmp,mode+ 11 , 0 );
  dc_copy_m(hdc,x,y1- 8 , 8 , 8 ,buttonsBmp,mode+ 0 , 11 );
  dc_copy_m(hdc,x1- 8 ,y1- 8 , 8 , 8 ,buttonsBmp,mode+ 11 , 11 );
  dc_copy_z(hdc,x,y+ 8 , 8 ,y1-y- 16 ,buttonsBmp,mode+ 0 , 9 , 8 , 1 );
  dc_copy_z(hdc,x1- 8 ,y+ 8 , 8 ,y1-y- 16 ,buttonsBmp,mode+ 11 , 9 , 8 , 1 );
  dc_copy_z(hdc,x+ 8 ,y,x1-x- 16 , 8 ,buttonsBmp,mode+ 9 , 0 , 1 , 8 );
  dc_copy_z(hdc,x+ 8 ,y1- 8 ,x1-x- 16 , 8 ,buttonsBmp,mode+ 9 , 11 , 1 , 8 );
}

// А это мои функции, мне так удобнее писать (просто для примера)

void dc_copy_m(HDC hdc, int x, int y, int w, int h, const Bitmap& sbmp, int 
sx, int sy) {
  sbmp.prepareMask();
  DCCompatible cdc(hdc);
  SetTextColor(hdc,  0 );
  SetBkColor(hdc, 0xFFFFFF);
  { DCSelect sel(cdc.hdc, sbmp.andHandle);
    BitBlt(hdc, x, y, w, h, cdc.hdc, sx, sy, SRCAND); }
  { DCSelect sel(cdc.hdc, sbmp.orHandle);
    BitBlt(hdc, x, y, w, h, cdc.hdc, sx, sy, SRCPAINT); }
}

void dc_copy_z(HDC hdc, int x, int y, int w, int h, const Bitmap& sbmp, int 
sx, int sy, int sw, int sh) {
  DCCompatible cdc(hdc);
  SetTextColor(cdc.hdc,  0 );
  SetBkColor(cdc.hdc,  0 );
  DCSelect sel(cdc.hdc, sbmp.handle);
  StretchBlt(hdc, x, y, w, h, cdc.hdc, sx, sy, sw, sh, SRCCOPY);
}

class DCSelect {
public:
  HDC hdc;
  HGDIOBJ oldhandle;

  inline DCSelect(HDC _hdc, HANDLE handle) {
    hdc = _hdc;
    oldhandle = SelectObject(hdc, handle);
    if(oldhandle== 0  && GetLastError()!= 0 ) raise_os("SelectObject");
  }

  inline ~DCSelect() {
    if(oldhandle) SelectObject(hdc, oldhandle);
  }
};

class DCCompatible {
public:
  HDC hdc;

  inline DCCompatible(HDC _hdc) {
    hdc = CreateCompatibleDC(_hdc);
    if(hdc== 0 ) raise_os("CreateCompatibleDC");
  }

  inline ~DCCompatible() {
    if(hdc) if(!DeleteDC(hdc)) raise_os("DeleteDC");
  }
};



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35682125
KWS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
KWS
Гость
Спасибо всем кто откликнулся! Буду думать :)
...
Рейтинг: 0 / 0
WinApi: красивое окно
    #35682131
Алексей Морозов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думать вредно, от этого умирают.


Posted via ActualForum NNTP Server 1.4

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / WinApi: красивое окно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]