Доброго времени суток
Подскажите пожалуйста как по кнопке взвать окно
Написал вот так
Код:
/* ************************************************************
Основной фаил проекта test
Средв разработки: Microsoft Visual Studio Ultimate 2012
************************************************************* */
// Библиотеки;
#include <Windows.h>
#include <WinUser.h>
// Константы;
#define width 800 //Ширина экрана;
#define height 600 //Высота экрана;
int CALLBACK WinMain(HINSTANCE hInstanceMain, HINSTANCE hPrevInstanceMain, LPSTR lpCmdLineMain, int nCmdShowMain) {
//Объявление класса;
WNDCLASSEX windowClass;
//ID окна;
HWND hWndMain;
//Сообщение в окне;
MSG uMsgMain;
//Заполнение класса окна;
memset(&windowClass, 0, sizeof(WNDCLASSEXW)); //Заполняем нулями;
windowClass.cbSize = sizeof(WNDCLASSEX); //Определение собственого размера;
windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); //Определение курсора;
windowClass.hIcon = LoadIcon(NULL, IDI_ASTERISK); //Определение иконки;
windowClass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); //Определение Фона окна;
windowClass.hInstance = hInstanceMain;
windowClass.lpfnWndProc = WindowProcMain; //Вызов метода WindowProc;
windowClass.lpszClassName = "Simple Class"; //Определение имени Класса;
//Регистрация окна;
RegisterClassEx(&windowClass);
//Создаём окно;
hWndMain = CreateWindow(windowClass.lpszClassName, "Формо написанная средствами Visual C++",
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU,
(GetSystemMetrics(SM_CXSCREEN) - width) / 2, (GetSystemMetrics(SM_CYSCREEN) - height) / 2,
width, height, NULL, NULL, NULL, NULL);
CreateWindow("button", "кнопка 1", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
700, 10, 80, 30, hWndMain, (HMENU)10, hInstanceMain, NULL);
CreateWindow("button", "кнопка 2", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
700, 50, 80, 30, hWndMain, (HMENU)20, hInstanceMain, NULL);
//Показываем окно;
ShowWindow(hWndMain, nCmdShowMain);
//Зациклим окно;
while (GetMessage(&uMsgMain, hWndMain, NULL, NULL)) {
TranslateMessage(&uMsgMain);
DispatchMessage(&uMsgMain);
}
return uMsgMain.wParam;
}
int CALLBACK WindFerst(HINSTANCE hInstanceFerst, HINSTANCE hPrevInstanceFerst, LPSTR lpCmdLineFerst, int nCmdShowFerst) {
WNDCLASSEX windFerstClass;
HWND hWndFerst;
MSG uMsgFerst;
memset(&windFerstClass, 0, sizeof(WNDCLASSEXW));
windFerstClass.cbSize = sizeof(WNDCLASSW);
windFerstClass.hCursor = LoadCursor(NULL, IDC_ARROW);
windFerstClass.hIcon = LoadIcon(NULL, IDI_ASTERISK);
windFerstClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
windFerstClass.hInstance = hInstanceFerst;
windFerstClass.lpfnWndProc = WindowProcMain;
windFerstClass.lpszClassName = "Simple Class";
RegisterClassEx(&windFerstClass);
hWndFerst = CreateWindow(windFerstClass.lpszClassName, "Вложенная форма №2",
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU,
(GetSystemMetrics(SM_CXSCREEN) - width) / 2, (GetSystemMetrics(SM_CYSCREEN) - height) / 2,
width, height, NULL, NULL, NULL, NULL);
ShowWindow(hWndFerst, nCmdShowFerst);
while (GetMessage(&uMsgFerst, hWndFerst, NULL, NULL)) {
TranslateMessage(&uMsgFerst);
DispatchMessage(&uMsgFerst);
}
}
LRESULT CALLBACK WindowProcMain(HWND hWndMain, UINT uMsgMain, WPARAM wParamMain, LPARAM lParamMain) {
switch (uMsgMain) {
case WM_COMMAND:
if (LOWORD(wParamMain) == 10) MessageBox(hWndMain, "Ура меня написали", "Да", 0);
if (LOWORD(wParamMain) == 20) WindFerst(HINSTANCE hInstanceFerst, HINSTANCE hPrevInstanceFerst, LPSTR lpCmdLineFerst, int nCmdShowFerst);
break;
case WM_CLOSE:
ExitProcess(0);
break;
default:
return DefWindowProc(hWndMain, uMsgMain, wParamMain, lParamMain);
}
}
На красную строку компилятор ругается как
Цитата:
1> main.cpp
1>d:\profiles\mirvaliev\documents\v isual studio 2012\projects\test\test\windowproc_ rec.h(14): error C2275: HINSTANCE: недопустимое использование этого типа в качестве выражения
1> c:\program files\windows kits\8.0\include\shared\minwindef.h (242): см. объявление "HINSTANCE"
1>d:\profiles\mirvaliev\documents\v isual studio 2012\projects\test\test\windowproc_ rec.h(14): error C2146: синтаксическая ошибка: отсутствие ")" перед идентификатором "hInstanceFerst"
1>d:\profiles\mirvaliev\documents\v isual studio 2012\projects\test\test\windowproc_ rec.h(14): error C2059: синтаксическая ошибка: )
1>d:\profiles\mirvaliev\documents\v isual studio 2012\projects\test\test\windowproc_ rec.h(14): error C3861: WindFerst: идентификатор не найден
|
Понимаю, что где то не так
Мой алгоритм был таков, что основная процедура вызывает форму с двумя кнопками Кнопка 1 просто а кнопка 2 для вызова второй формы
В процедуру ветвления case по условию вызывается процедура которая покажет второе окно
Заранее Спасибо