Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 16.08.2015
Сообщений: 16

Как убрать кнопки из "летающего" окна?

16.08.2015, 22:14. Показов 1572. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Я начал делать первую прогу из книги "программирование на с++ глазами хакера". Начал делать первое задание. Сделал все правильно и окно начало летать с кнопкой пуск, но кнопки file и help никак не убираются. Как мне сделать так, что бы их не было видно? Т.е. я так понял, что мне надо обрезать экран, т.е. нужно назначить первоначальную точку. Как это сделать? Вот мой код программы. Все это на visual studio 2013

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
// Start Button.cpp : Defines the entry point for the application.
//
 
#include "stdafx.h"
#include "Start Button.h"
 
#define MAX_LOADSTRING 100
 
// Global Variables:
HINSTANCE hInst;                                // current instance
TCHAR szTitle[MAX_LOADSTRING];                  // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];            // the main window class name
 
HWND hWnd;
HBITMAP startBitmap;
 
// Forward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 
void DrawStartButton()
{
    int i;
    int toppos = GetSystemMetrics(SM_CYSCREEN) - 70;
 
    ShowWindow(hWnd, SW_SHOW);
    // Устанавливаем верхнюю позицию окна в левый нижний угол экрана
    SetWindowPos(hWnd, HWND_TOPMOST, 4, toppos, 39, 70, SWP_SHOWWINDOW);
    
    UpdateWindow(hWnd);
    /* Сейчас будем поднимать кнопку
     От 1 до 50 выполнять действия для изменения положения окна*/
    for (i = 0; i < 39; i++)
    {
        toppos = toppos - 4;
        SetWindowPos(hWnd, HWND_TOPMOST, 4, toppos, 39, 70, SWP_SHOWWINDOW);
        Sleep(15);// Задержка в 5 миллисекунд
        
    }
    // Опускаем кнопку вниз
    for (i = 39; i>0; i--)
    {
        toppos = toppos + 4;
        SetWindowPos(hWnd, HWND_TOPMOST, 4, toppos, 39, 70, SWP_SHOWWINDOW);
        Sleep(15);// Задержка в 5 мс
    }
}
 
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPTSTR    lpCmdLine,
                     _In_ int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: Place code here.
    MSG msg;
    HACCEL hAccelTable;
 
    // Initialize global strings
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_STARTBUTTON, szWindowClass, MAX_LOADSTRING);
    startBitmap = (HBITMAP)::LoadImage(hInstance,
        MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP,
        0, 0, LR_DEFAULTCOLOR);
    MyRegisterClass(hInstance);
 
    // Perform application initialization:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_STARTBUTTON));
 
    DrawStartButton();
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        DrawStartButton();
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int) msg.wParam;
}
 
 
 
//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_STARTBUTTON));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_STARTBUTTON);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
 
//
//   FUNCTION: InitInstance(HINSTANCE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   //HWND hWnd;
 
   hInst = hInstance; // Store instance handle in our global variable
 
   hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 
   if (!hWnd)
   {
      return FALSE;
   }
 
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
 
   // Следующие строки добавлены нами
   int Style;
   Style = GetWindowLong(hWnd, GWL_STYLE);
   Style = Style || WS_CAPTION;
   Style = Style || WS_SYSMENU;
   SetWindowLong(hWnd, GWL_STYLE, Style);
 
   return TRUE;
}
 
//
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND  - process the application menu
//  WM_PAINT    - Paint the main window
//  WM_DESTROY  - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    HDC hdcBits;
 
    switch (message)
    {
    
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        /*case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;*/
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
 
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        Rectangle(hdc, 1, 1, 10, 10);
        hdcBits = ::CreateCompatibleDC(hdc);
        SelectObject(hdcBits, startBitmap);
        BitBlt(hdc, 0, 0, 39, 31, hdcBits, 0, 0, SRCCOPY);
        DeleteDC(hdcBits);
 
        EndPaint(hWnd, &ps);
        break;
    
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
// Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;
 
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
Миниатюры
Как убрать кнопки из "летающего" окна?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.08.2015, 22:14
Ответы с готовыми решениями:

QML Dialog: как изловчиться и убрать кнопки из заголовка окна?
Всем привет. Проблема следующая. У меня есть окно QML Dialog. Оно используется для авторизации и, следовательно, не должно...

Как убрать кнопки в заголовке окна
здравствуйте, собственно вопрос в теме

Как убрать кнопки управления окна?
Сделал свои кнопки управления окном, но не знаю как убрать те что по умолчанию, оставив возможность изменять размеры окна, в данном случае...

3
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
19.08.2015, 00:13
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Привет, WolfLonely95, строка 116
C++
1
2
//wcex.lpszMenuName = MAKEINTRESOURCE(IDC_STARTBUTTON);
wcex.lpszMenuName = NULL;
1
0 / 0 / 0
Регистрация: 16.08.2015
Сообщений: 16
19.08.2015, 19:04  [ТС]
Спасибо огромное! Но теперь у меня сначала не высвечивается картинка пуск, а показывает просто белый фон, а потом через пару секунд уже показывается картинка пуск. Больше никак изменить нельзя?
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
20.08.2015, 00:38
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

WolfLonely95, я немного поиграл, вот, что получилось...
WinMain.cpp

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
////////////////////////////////////////////////////////////////////////////////
// WinMain.cpp
 
#include <windows.h>
#include "resource.h"
 
TCHAR GWndname[]=TEXT("SHOCKING_BUTTON_2015");
TCHAR GAppname[]=TEXT("Shocking Button [Адская кнопка]");
 
int nCX = 145;  // Ширина кнопки.
int nCY = 70;   // Высота кнопки.
 
HWND GWnd;      // Идентификатор Главного окна (обычно, для удобночитаемости), я
HDC GHdc,GMem;  // печатаю так или g_hWnd ( просто не запутаешься, ну и всё прочеее...
                // так что и "Ширину" с "Высотой", можно обазначить например g_CX и g_CY.
 
void DrawStartButton()
{
    int i, nX = 4;
    int toppos = GetSystemMetrics(SM_CYSCREEN) - nCY;
    ShowWindow(GWnd, SW_SHOW);
    SetWindowPos(GWnd, HWND_TOPMOST, nX, toppos, nCX, nCY, SWP_SHOWWINDOW);
    UpdateWindow(GWnd);
 
    for( i=0; i<nCX; ++i )
    {
        toppos = toppos - 4;
        SetWindowPos(GWnd, HWND_TOPMOST, nX, toppos, nCX, nCY, SWP_SHOWWINDOW);     
        Sleep(15);
    }
    
    for( i=nCX; i>0; --i )
    {
        toppos = toppos + nX;
        SetWindowPos(GWnd, HWND_TOPMOST, nX, toppos, nCX, nCY, SWP_SHOWWINDOW);
        Sleep(15);
    }
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BITMAP bmp;
    HANDLE hBitmap;
    LRESULT retval=0;
 
    switch( uMsg )
    {
    case WM_CREATE:
        {
            GHdc=GetDC(hWnd);
            GMem=CreateCompatibleDC(NULL);
            hBitmap=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(IDB_BITMAP1));
            if( !hBitmap ) {// Сообщение, в случае неудачной загрузки изображения.
                MessageBox(NULL,TEXT("Could not LoadBitmap"),GAppname,MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_TOPMOST);
                SendMessage(hWnd,WM_CLOSE,0,0);
                return 0;
            }
            GetObject(hBitmap,sizeof(bmp),&bmp);
            HGDIOBJ hGdiObj=SelectObject(GMem,hBitmap);
            BitBlt(GHdc,0,0,nCX,nCY,GMem,0,0,SRCCOPY);
            DeleteObject(hBitmap);
        }
        break;
 
    case WM_MOVE:
        BitBlt(GHdc,0,0,nCX,nCY,GMem, 0,0,SRCCOPY);
        break;
    case WM_PAINT:
        BitBlt(GHdc,0,0,nCX,nCY,GMem, 0,0,SRCCOPY);
        ValidateRect(hWnd,FALSE);
        break;
 
    case WM_LBUTTONDBLCLK:/* Выход, по-двойному щелчку мыши. */
        SendMessage(hWnd,WM_CLOSE,0,0);
        break;
 
    case WM_CLOSE:
        DestroyWindow(hWnd);
        break;
    case WM_DESTROY:
        if( GMem ) DeleteDC(GMem);// Здесь удаляем объекты
        if( GHdc ) DeleteDC(GHdc);// из оперативной памяти.
        PostQuitMessage(0);
        break;
    default:
        retval=DefWindowProc(hWnd, uMsg, wParam, lParam);
        break;
    }
    return retval;
}
 
////////////////////////////////////////////////////////////////////////////////
// WinMain
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.style         = CS_NOCLOSE|CS_DBLCLKS;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = NULL;
    wc.hCursor       = LoadCursor(NULL,IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = GWndname;
    wc.hIconSm       = NULL;
    if( !RegisterClassEx(&wc) ) {
        MessageBox(NULL,TEXT("Could not RegisterClass"),GAppname,MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_TOPMOST);
        return 1;
    }
    GWnd=CreateWindowEx(WS_EX_TOPMOST|WS_EX_TOOLWINDOW,GWndname,GAppname,WS_VISIBLE|WS_POPUP,0,0,0,0,NULL,NULL,(HINSTANCE)hInstance,(LPVOID)NULL);
    if( GWnd==NULL ) {
        MessageBox(NULL,TEXT("Could not CreateWindow"),GAppname,MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_TOPMOST);
        return 1;
    }
 
    ShowWindow(GWnd,nCmdShow);
    UpdateWindow(GWnd);
    SetForegroundWindow(GWnd);
 
    MSG msg;
    while( GetMessage(&msg,NULL,0,0) )
    {
        DrawStartButton();
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}
 
////////////////////////////////////////////////////////////////////////////////
// <<eof>> WinMain.cpp
////////////////////////////////////////////////////////////////////////////////

Скриншот

Это проект, распакуй, двойной щелчок "ShockingButton.vcp", нажать "F5"... ( ах-да, в папке "Res", заменить на нужную картинку и выставить по-размерам в int nCX [Ширина кнопки], int nCY [Высота кнопки].
ShockingButton_win32.zip
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2015, 00:38
Помогаю со студенческими работами здесь

Как убрать Caption окна приложения Access и изменять размеры этого окна
Подскажите, пожалуйста! Как программно убрать Caption окна приложения Access и подгонять размеры этого окна под активную форму?

При перетаскивании окна на рабочем столе отображается тень окна, как это убрать?
Помогите разобраться,при перетаскивании окна на рабочем столе отображается тень окна,как это убрать?В свойствах отображение содержимого...

Как убрать кнопки "Minimize" и "Maximize", "Close" в заголовке окна?
КАК УБРАТЬ КНОПОЧКИ 'Minimize' и 'Maximize', 'Close' в заголовке окна (чтобы не было крестика в правом верхнем углу, минусика и окошка)? Я...

При открытии дочернего окна, отображаются формы и кнопки с основного окна; как исправить?
при открытии дочернего окна, отображаются формы и кнопки с основного окна, как можно исправить? ...

Как убрать осветление по краям кнопки как у прямоугольной кнопки?
Моя кнопка круглой формы, но осветление по краям такое же как и прямоугольной кнопки. Как их убрать?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru