Работа с элементами управления, пример 2
В центре экрана отобразить окно без рамок, в верхней части которого отобразить текст "Анкетные данные служащего", ниже - поле ввода фамилии, имени и отчества, под которым группы переключателей о поле и образовании. Окно также содержит кнопки "Запись", "Очистка" и "Выход".
Результат работы приложения:
рис. 4 рис. 5
Исходный код программы:
2.rc:
// Microsoft Visual C++ generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Russian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_DIALOG1 DIALOGEX 200, 100, 209, 259
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "Запись",IDOK,23,226,50,14
PUSHBUTTON "Выход",IDCANCEL,143,226,50,14
DEFPUSHBUTTON "Очистить",IDCLEAR,83,226,50,14
LTEXT "Фамилия",IDC_STATIC,21,38,84,11
LTEXT "Имя",IDC_STATIC,22,56,84,11
LTEXT "Отчество",IDC_STATIC,21,74,84,11
EDITTEXT IDC_EDIT_F,69,37,84,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_I,69,55,84,12,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_O,69,72,84,12,ES_AUTOHSCROLL
GROUPBOX "Пол",IDC_STATIC,21,101,58,42
CONTROL "Мужской",IDC_M,"Button",
BS_AUTORADIOBUTTON | WS_GROUP,28,113,46,10
CONTROL "Женский",IDC_G,"Button",
BS_AUTORADIOBUTTON,28,127,46,10
GROUPBOX "Образование",IDC_STATIC,22,156,57,56
CONTROL "Начальное",IDC_NACHALNOE,"Button",
BS_AUTORADIOBUTTON | WS_GROUP,27,170,48,10
CONTROL "Среднее",IDC_SREDNEE,"Button",
BS_AUTORADIOBUTTON,27,184,46,10
CONTROL "Высшее",IDC_VISHEE,"Button",
BS_AUTORADIOBUTTON,27,199,46,10
GROUPBOX "Анкетные данные служащего",IDC_STATIC,7,7,195,245
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO
BEGIN
IDD_DIALOG1, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 202
TOPMARGIN, 7
BOTTOMMARGIN, 252
END
END
#endif // APSTUDIO_INVOKED
#endif // Russian resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
resource.h:
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by 2.rc
//
#define IDCLEAR 3
#define IDD_DIALOG1 101
#define IDC_EDIT_F 1001
#define IDC_EDIT_I 1002
#define IDC_EDIT_O 1003
#define IDC_M 1004
#define IDC_G 1005
#define IDC_NACHALNOE 1006
#define IDC_SREDNEE 1007
#define IDC_SREDNEE1 1008
#define IDC_VISHEE 1008
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1005
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
main.cpp:
// --- Обязательный включаемый файл
#include <stdio.h>
#include <windows.h>
#include "resource.h"
// --- Описание функции диалогового окна
BOOL CALLBACK WndProcDlg(HWND, UINT, WPARAM, LPARAM);
// --- Глобальные переменные
HINSTANCE hInst; // Дескриптор экземпляра приложения
char Fam[50],Imya[50],Otch[50],Pol[20],Obrazovanie[50],str[300];
// --- Функция WinMain
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,WndProcDlg);
return 0;
}
BOOL CALLBACK WndProcDlg(HWND hWndMain, UINT msg, WPARAM wParam,
LPARAM lParam)
{
switch(msg)
{
case WM_COMMAND:
{
// Обработка сообщений от переключателей
switch(LOWORD(wParam)) {
case IDC_M:
// Выбран мужской пол
sprintf_s(Pol, "%s", "Мужской пол");
break;
case IDC_G:
// Выбран женский пол
sprintf_s(Pol, "%s", "Женский пол");
break;
case IDC_NACHALNOE:
// Выбрано начальное образование
sprintf_s(Obrazovanie, "%s", "Начальное образование");
break;
case IDC_SREDNEE:
// Выбрано среднее образование
sprintf_s(Obrazovanie, "%s", "Среднее образование");
break;
case IDC_VISHEE:
// Выбрано высшее образование
sprintf_s(Obrazovanie, "%s", "Высшее образование");
break;
// Кнопка ОК
case IDOK:
// Сохраняем информацию из поля ФАМИЛИЯ в массив Fam
GetDlgItemText(hWndMain, IDC_EDIT_F, Fam, 18);
// Сохраняем информацию из поля ИМЯ в массив Imya
GetDlgItemText(hWndMain, IDC_EDIT_I, Imya, 18);
// Сохраняем информацию из поля ОТЧЕСТВО в массив Otch
GetDlgItemText(hWndMain, IDC_EDIT_O, Otch, 18);
// "Склеиваем" в один массив всю полученую информацию
sprintf_s(str, "%s\n%s\n%s\n%s\n%s",
Fam,Imya,Otch,Pol,Obrazovanie);
MessageBox(hWndMain,str,
"Анкетные данные служащего",MB_OK);
break;
// Кнопка ОЧИСТИТЬ
case IDCLEAR:
// Обнуляем массивы
sprintf_s(Pol, "%s", "");
sprintf_s(Obrazovanie, "%s", "");
sprintf_s(Fam, "%s", "");
sprintf_s(Imya, "%s", "");
sprintf_s(Otch, "%s", "");
// Убираем переключатели
CheckRadioButton(hWndMain, IDC_M, IDC_G, NULL);
CheckRadioButton(hWndMain, IDC_NACHALNOE,
IDC_VISHEE, NULL);
// Очищаем поля формы
SetDlgItemText(hWndMain, IDC_EDIT_F, "");
SetDlgItemText(hWndMain, IDC_EDIT_I, "");
SetDlgItemText(hWndMain, IDC_EDIT_O, "");
break;
// Кнопка ВЫХОД
case IDCANCEL:
PostQuitMessage(0);
break;
}
}
}
return 0;
}
Дата добавления: 2017-01-26; просмотров: 1033;