Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.89/46: Рейтинг темы: голосов - 46, средняя оценка - 4.89
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436

Как сделать красивую кнопку?

28.09.2011, 15:00. Показов 9768. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень редко вижу такие кнопки: [cut] . И очень часто такие: [cut]. Как сделать второй вариант?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2011, 15:00
Ответы с готовыми решениями:

Как сделать, чтобы C++ нажимал кнопку?
Доброго вечера, есть код: while (1) { if (GetAsyncKeyState(0x57)) { // </> Здесь необходимо, чтобы Ctrl задерживалась до тех...

Как сделать красивую кнопку?
Искал я на просторах интернета: "Как сделать кнопку более красивой?", ничего нормального не находилось, только на C++/Си шарп/Девел Студио...

Сделать красивую кнопку в виде картинки
Сделать красивую кнопку в виде картинки. Кнопка должна иметь следующие состояния : плоская кнопка–если указатель мышки не над кнопкой,...

28
12 / 12 / 0
Регистрация: 21.08.2009
Сообщений: 87
04.10.2011, 23:43
Студворк — интернет-сервис помощи студентам
Всё правильно, если нужна кнопка как в ХР, достаточно подключить Манифест к ресурсному файлу и после создания окна и перед его показом, вызвать InitCommonControls.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
05.10.2011, 00:36
Это где так два раза вызывается, в Дельфи?
0
12 / 12 / 0
Регистрация: 21.08.2009
Сообщений: 87
05.10.2011, 00:49
Не понял смысл фразы о 2 разах.
Так делается в Дельфи с использованием WinAPI (без VCL), что одинаково и в С. И, если Вы внимательно читали предложенную Вами же ссылку, то там приводится ТАКОЕ же решение. И не мудрено, других решений просто нет.
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
05.10.2011, 01:22
Разуй мне пожалуйста глазки еще раз.

C++
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
#include "stdafx.h"
 
#include <windows.h>
#include <commctrl.h>
#pragma comment (lib, "comctl32")
#pragma comment (linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls'\
version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language= '*'\"")
 
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam);
 
HINSTANCE hInst;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    INITCOMMONCONTROLSEX icex;
    InitCommonControlsEx(&icex);
 
    WNDCLASSEX wc;
    HWND hWnd;
    MSG msg;
    
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW |CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "Base";
    wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
    
    if (!RegisterClassEx(&wc))
        return 0;
    if (!(hWnd = CreateWindowEx (NULL, "Base", "", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT,
        CW_USEDEFAULT, 500, 400, NULL, NULL, hInst, NULL)))
        return (0);
    
    ShowWindow(hWnd, SW_SHOWDEFAULT);
    UpdateWindow(hWnd);
    
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (msg.wParam);
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hButton;
    
    switch(message)
    {
    case WM_CREATE:
        {
            hButton = CreateWindow ("BUTTON", "Push", WS_CHILD | WS_VISIBLE,
                0, 0, 119, 20, hWnd, (HMENU)100, hInst, 0);
        }
        break;
        
        case WM_DESTROY:
            {
                PostQuitMessage(0);
                return (0);
            }
        break;
    }
    return (DefWindowProc(hWnd, message, wParam, lParam));
}
Изображения
 
0
12 / 12 / 0
Регистрация: 21.08.2009
Сообщений: 87
05.10.2011, 01:39
В чём мне их тебе разуть? В том, что ты не понимаешь смысл приведённого тобой кода или в чём ещё?
0
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
05.10.2011, 01:46
Где там два раза вызывается InitCommonControls?
0
12 / 12 / 0
Регистрация: 21.08.2009
Сообщений: 87
05.10.2011, 01:49
Так устроит:
Delphi
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
program Test;
 
uses
  Windows, Messages;
 
const
  szAppName     = 'test';
  szCaptionName = ' test';
 
var
  Window        : HWND;
  Msg           : TMsg;
  WndClass      : TWndClassEX;
  Btn           : HWND;
 
const
  cctrl         = 'comctl32.dll';
 
procedure InitCommonControls; external cctrl name 'InitCommonControls';
 
//---------------------------------------------------------
 
function MainProc(Wnd : HWND; Msg : Integer; wParam, lParam : Longint): Integer; stdcall;
begin
  Result := 0;
 
  case Msg of
    WM_CREATE :
       Btn := CreateWindow('BUTTON', 'Delete', WS_CHILD or WS_VISIBLE, 0, 0, 75, 25, Wnd, 100, hInstance, 0);
 
    WM_CLOSE :
      DestroyWindow(Wnd);
 
    WM_DESTROY :
    begin
      DeInitApp(Wnd);
      PostQuitMessage(0);
      Exit;
    end;
  end;
  Result := DefWindowProc(Wnd, Msg, wParam, lParam);
end;
 
//---------------------------------------------------------
 
begin
  FillChar(WndClass, SizeOf(TWndClassEx), 0);
  WndClass.cbSize        := SizeOf(TWndClassEx);
  WndClass.style         := CS_HREDRAW or CS_VREDRAW;
  WndClass.lpfnWndProc   := @MainProc;
  WndClass.hInstance     := hInstance;
  WndClass.hCursor       := LoadCursor(0, IDC_ARROW);
  WndClass.hbrBackGround := GetSysColorBrush(COLOR_BTNFACE);
  WndClass.lpszClassName := szAppName;
 
  if RegisterClassEx(WndClass) = 0 then
    Exit;
 
  Window := CreateWindowEx(0, szAppName, szCaptionName, WS_OVERLAPPEDWINDOW,
                           0, 0, 320, 200, 0, 0, hInstance, NIL);
 
  InitCommonControls;
  ShowWindow(Window, SW_SHOW);
 
  while(GetMessage(Msg, 0, 0, 0)) do
  begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
  end;
  Exit;
end.
И где я, интересно сказал, что нужно вызвать InitCommonControls 2 раза? Прочитай ещё раз, внимательно, по-буковкам:
Всё правильно, если нужна кнопка как в ХР, достаточно подключить Манифест к ресурсному файлу и после создания окна и перед его показом, вызвать InitCommonControls
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
05.10.2011, 08:12
Digit@ll, в сообщении №24 icex в строке 16 может инициализироваться "мусором", иметь случайные значения без обнуления. И, имхо, если структура ничем не проиниализирована, то проще вызвать простой InitCommonControls().

Добавлено через 2 минуты
SDmaN, в чем проблема сейчас? Опиши, а то тут, посмотрю, еще куча всего обсуждается
1
Brainsbreaker
 Аватар для Digit@ll
899 / 374 / 54
Регистрация: 01.02.2011
Сообщений: 1,608
05.10.2011, 19:32
GrayWolf, да, проще...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2011, 19:32
Помогаю со студенческими работами здесь

Как создать красивую кнопку для формы?
Как создать красивую кнопку для формы ?

Как сделать красивую тень?
Такой вопрос Как сделать тень от слоя? &lt;div id='sloy' style='width:100px;height:100px;border:solid 1px;}'&gt; ..... &lt;/div&gt;

Как сделать красивую форму?
Где-то полгода назад я наткнулся в инете на библиотеку элементов формы (в основном поле text), которые были выполнены, кажется на css, но...

Как сделать красивую навигацию на сайте
К примеру, есть такая картинка островок, в котором есть зоны, по которым пользователь может перемещаться и в кажой зоне будет надпись -...

Как сделать красивую всплывающую подсказку?
Как сделать красивую всплывающую подсказку вместо стандартного желтого прямоугольника в навигационной карте? &lt;script...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru