Разработка информационно-поисковой системы, страница 12

                        {

                              tmp = data[(i-1)*cols + j];

                              data[(i-1)*cols + j] = data[i*cols + j];

                              data[i*cols + j] = tmp;

                        }

                        exchange = true;

                  }

      for (i=0; i<cnt; i++)

            for (j=0; j<cols; j++)

            {    

                  lvi.iItem = i;

                  lvi.iSubItem = j;

                  lvi.pszText = (TCHAR*)data[i*cols + j];

                  ListView_SetItem(hWnd, &lvi);

                  free(data[i*cols + j]);

            }

      free(data);

}

// сохранение результатов поиска в файл

void save_result(TCHAR * name, HWND hWnd, int cols)

{

      HANDLE hFile;

      DWORD bytes_write;

      // открытие файла; при его отсутствии он будет создан

      hFile = CreateFile(name,              // create MYFILE.TXT

                    GENERIC_WRITE,                // open for writing

                      0,                            // do not share

                        NULL,                         // no security

                        CREATE_ALWAYS,                // overwrite existing

                        FILE_ATTRIBUTE_NORMAL |       // normal file

                        FILE_FLAG_SEQUENTIAL_SCAN,    // asynchronous I/O 

                        NULL);                        // no attr. template

      if (hFile == INVALID_HANDLE_VALUE)

            error_msg("Ошибка при открытии файла !");

      else

      {

            TCHAR buf[256];

            TCHAR line[1024];

            LV_ITEM lvi;

            lvi.mask = LVIF_TEXT;

            lvi.pszText = buf;

            lvi.cchTextMax = sizeof(buf);

            // получение количества рядов в списке

            int items = ListView_GetItemCount(hWnd);

            for (lvi.iItem=0; lvi.iItem < items; lvi.iItem++)

            {

                  line[0] = '\0';

                  for (lvi.iSubItem = 0; lvi.iSubItem < cols; lvi.iSubItem++)              

                  {

                        // получение элемента списка

                        ListView_GetItem(hWnd, &lvi);

                        lstrcat(line, "\t");

                        lstrcat(line, buf);

                  }    

                  lstrcat(line, "\n");

                  // запись ряда в файл

                  WriteFile(hFile, line, lstrlen(line), &bytes_write, NULL);

            }

      }

      // закрытие файла

      CloseHandle(hFile);

}

Файл gui\main_wnd.c :

#include "..\CORE\main.h"

/* Обработчик сообщений главного окна приложения */

LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

      int wmId, wmEvent;

      wmId    = LOWORD(wParam);

      wmEvent = HIWORD(wParam);

      switch (message)

      {

      case WM_CREATE:

            break;

      case WM_COMMAND:

            /* обработка сообщений от меню */

            switch (wmId)

            {

            case IDM_EXIT:

                  PostQuitMessage(0);

                  break;

            case IDM_ABOUT:

                  DialogBox (hInstance, (LPCTSTR)IDD_ABOUT, hWnd, (DLGPROC)AboutWndProc);

                  break;

            case IDM_SEARCH:

                  DialogBox (hInstance, (LPCTSTR)IDD_SEARCH, hWnd, (DLGPROC)SearchWndProc);

                  break;

            case IDM_SQL_CMD:

                  DialogBox(hInstance, (LPCTSTR)IDD_SQL_CMD, hWnd, (DLGPROC)SQLWndProc);

                  break;

            case IDM_VIEW_RESULT:

                  if (hResultsWnd == 0)

                  {

                        column_t table1[] =

                        {

                              {"ID",                       CT_CONST, 30,  0, 0},

                              {"Название",            CT_TEXT,  100, 0, 0},

                              {"Потр. мощность",      CT_TEXT,  120, 0, 0},

                              {"Макс. температура",CT_TEXT,  120, 0, 0},

                              {"Макс. влажность",     CT_TEXT,  120, 0, 0},