|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.12.2012, 13:46 | #1 |
Пользователь
Регистрация: 12.11.2012
Сообщений: 11
|
Подправить программу.
Написать программу, в которой используется диалог для работы со структурами данных, определяющими списки. Ввод элементов данных осуществляется с помощью окна редактирования EditBox. Состояние списка выводится в окно списка ListBox. Элемент списка удаляется, если по нему дважды щелкнуть курсором мыши. Вид структурs данных: очередь. Тип данных элементов: int. Вид диалога: модальный.
Файл list.cpp: Код HTML:
#include <windows.h> #include <string.h> #include <stdio.h> #include "list.h" #include <stdlib.h> using namespace std; LRESULT CALLBACK WindowFunc(HWND,UINT,WPARAM,LPARAM); //оконная функция BOOL CALLBACK DialogFunc (HWND,UINT,WPARAM,LPARAM); // диалог char szWinName[] = "Lists"; HINSTANCE hInst; char str[80]; char st[80]; int i=1; struct slink {int e; slink *next;}; slink* list1=NULL; // очередь // запись нового элемента в очередь slink *insert( slink *lst, int a) { slink *prev=lst, *p= new slink; p->e = a; p->next = NULL; if(lst==NULL) return p; while(lst->next!=NULL) { lst =lst->next; } lst->next = p; return prev; } //удаление первого элемента из очереди slink *del( slink *lst) { slink *p=lst; if(lst) { lst = lst->next; delete p; } return lst; } int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevinst, LPSTR lpszArgs, int nWinMode) { HWND hwnd; MSG msg; WNDCLASS wcl; HACCEL hAccel; wcl.hInstance = hThisInst; wcl.lpszClassName = szWinName; wcl.lpfnWndProc= WindowFunc; wcl.style = 0; wcl.hIcon = LoadIcon (NULL, IDI_APPLICATION); // иконка wcl.hCursor = LoadCursor(NULL,IDC_ARROW); // курсор wcl.lpszMenuName = "MYMENU"; // меню wcl.cbClsExtra = 0; wcl.cbWndExtra = 0; wcl.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); if(!RegisterClass(&wcl)) return 0; hwnd = CreateWindow(szWinName, "Dialogs", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, hThisInst, NULL); hInst = hThisInst; hAccel = LoadAccelerators(hThisInst,"MYMENU");//подключим акселераторы ShowWindow(hwnd,nWinMode); //отобразить окно UpdateWindow(hwnd); // обработка горячих клавиш while(GetMessage(&msg,NULL,0,0)) { if(!TranslateAccelerator(hwnd,hAccel,&msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; } LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT paintstruct; static TEXTMETRIC tm; SIZE size; int str1; switch(message) { case WM_COMMAND: switch (LOWORD (wParam)) { case IDM_DIALOG: DialogBox(hInst,"MYDB",hwnd, (DLGPROC)DialogFunc); break; case IDM_HELP: MessageBox(hwnd,"\nПосле ввода данных" "\n в окно редактирования нажмите на клавишу ENTER или" "\n на кнопку Ввод","Help",MB_OK); break; } break; case WM_DESTROY: PostQuitMessage(0); //сообщение о завершении break; default: //обработка остальных сообщений return DefWindowProc(hwnd,message,wParam,lParam); } return 0; } BOOL CALLBACK DialogFunc(HWND hdwnd, UINT message, WPARAM wParam, LPARAM lParam) { long i; slink* lst_tmp; switch(message) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hdwnd,0); return 1; case ID_LB1: if(HIWORD(wParam)==LBN_DBLCLK) { i = SendDlgItemMessage(hdwnd,ID_LB1,LB_GETCURSEL,0,0L); sprintf(str,"Индекс выбранного элемента = %d",i); MessageBox(hdwnd,str,"Выбор сделан",MB_OK); } return 1; case IDOK: GetDlgItemText(hdwnd, ID_EB1, str,80); if ((strlen(str)&& atoi(str))||*str=='0') { list1 = insert(list1,atoi(str)); SendDlgItemMessage(hdwnd, ID_LB1, LB_ADDSTRING,0,(LPARAM)str); } return 1; case ID_DEL: list1=del(list1); SendDlgItemMessage(hdwnd, ID_LB1, LB_DELETESTRING ,0,(LPARAM)str); return 1; } return 1; case WM_INITDIALOG: lst_tmp = list1; while (lst_tmp!=NULL) { itoa(lst_tmp->e,st,10); SendDlgItemMessage(hdwnd, ID_LB1,LB_ADDSTRING,0,(LPARAM)st); lst_tmp = lst_tmp->next; } ; return 1; } return 0; } Необходимо поменять вид диалога с модального на немодальный. Что нужно изменить в коде ? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
подправить программу с матрицой! | roman936 | Общие вопросы Delphi | 2 | 16.12.2009 20:14 |
Delphi(подправить написанную программу) | Квио | Общие вопросы Delphi | 1 | 23.09.2009 08:02 |
помогите подправить программу | Deniska112 | Общие вопросы C/C++ | 6 | 25.06.2009 15:04 |
надо бы подправить программу)) | Fylhtq | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 19.05.2009 19:55 |
Можете подправить программу??? Срочно надо | Fylhtq | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 06.01.2009 10:56 |