Форумчанин
Регистрация: 01.03.2015
Сообщений: 118
|
Кнопки,скрыть и показать (WinApi c++)
Здравствуйте,у меня есть 6 кнопок,одна из них Выход, остальные пять должны выполнять действие : если нажали на любую из кнопок то она скрывается (ShowWindow)- вроде как позволяет это делать , и если есть скрытые (не считая на ту что нажали ) оно должно отобразить одну из них или несколько.
1.Подскажите пожалуйста как можно отобразить любую скрытую кнопку,и 2.как сделать проверку : если все кнопки скрыты то выводит любое окно.
Мой Код :
Код:
#include <Windows.h>
#define Button_0 100
#define Button_1 101
#define Button_2 102
#define Button_3 103
#define Button_4 104
#define Button_EXIT 105
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
HWND hMainWnd;
HWND hButton[7];
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevIntance, LPSTR lpCmdline, int nCmdShow) {
TCHAR Messege[] = L"AnyThing";
WNDCLASSEX wc;
MSG msg;
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.lpszMenuName = NULL;
wc.lpszClassName = Messege;
wc.cbWndExtra = NULL;
wc.cbClsExtra = NULL;
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
wc.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hInstance = hInstance;
if (!RegisterClassEx(&wc)) {
MessageBox(NULL, L"Error", L"Class not Registed class", MB_OK);
return NULL;
}
hMainWnd = CreateWindow(Messege, L"Window", WS_OVERLAPPEDWINDOW | WS_VSCROLL, CW_USEDEFAULT, CW_USEDEFAULT,
420, 385, HWND_DESKTOP, NULL, HINSTANCE(hInstance), NULL);
if (!hMainWnd) {
MessageBox(NULL, L"Error", L"Window not Create", MB_OK);
return NULL;
}
hButton[0] = CreateWindow(L"button", L"Exit", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 150, 300, 80, 30, hMainWnd, (HMENU)Button_EXIT, hInstance, NULL);
hButton[1] = CreateWindow(L"button", L"", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 10, 10, 120, 50, hMainWnd, (HMENU)Button_0, hInstance, NULL);
hButton[2] = CreateWindow(L"button", L"", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 135,65, 120, 50, hMainWnd, (HMENU)Button_1, hInstance, NULL);
hButton[3] = CreateWindow(L"button", L"", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 10, 120, 120, 50, hMainWnd, (HMENU)Button_2, hInstance, NULL);
hButton[4] = CreateWindow(L"button", L"", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 260, 10, 120, 50, hMainWnd, (HMENU)Button_3, hInstance, NULL);
hButton[5] = CreateWindow(L"button", L"", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 260, 120, 120, 50, hMainWnd, (HMENU)Button_4, hInstance, NULL);
ShowWindow(hMainWnd, nCmdShow);
UpdateWindow(hMainWnd);
while (GetMessage(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
HDC hDC;
PAINTSTRUCT ps;
RECT rect;
COLORREF colorText = RGB(0, 255, 0);
switch (uMsg) {
case WM_COMMAND:
if (LOWORD(wParam) == Button_0) {
ShowWindow((HWND)lParam, SW_HIDE);
return 0;
}
if (LOWORD(wParam) == Button_1) {
ShowWindow((HWND)Button_0, SW_SHOW);
return TRUE;
}
if (LOWORD(wParam) == Button_EXIT) {
DestroyWindow(hMainWnd);
return 0;
}
break;
case WM_DESTROY:
PostQuitMessage(NULL);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
return NULL;
}
|