Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Программисты долго мучаются с кодом прогаммы, изучают С++, WinAPI функции, MSDN. Потом пишут банальную систему защиты или навешивают банальный протектор, а крэкеры и реверсеры справляются с такой защитой за 5 минут. В итоге, продажи программы почти нулевые. Чтобы такого не допустить, тут самому надо немного поднабрать опыта отладки, реверсинга, тот же отладчик Ollydbg изучить или дизассемблер IDA Pro. Но где искать по крохам эти знания? Нет, конечно можно годами "методом тыка" разбираться, но куда быстрее видеокурс специальный посмотреть. Вот тут он есть: ссылка. Автор курса с большим опытом и объясняет понятно, я из этого курса много узнал про то как работает компьютер, процессор, про инструменты специальные и как с ними работать. Мои коллеги программисты на работе ничего такого и не знают, теперь я им нос утру.

Возможность перетаскивания элементов в List Control


Автор: Jean Claude Dauphin.

Возможности

Это расширенный элемент управления позволяет перетаскивать элементы между списками при помощи OLE. Программист может разрешать/запрещать локальное перетаскивание элементов (т.е. в одном и том же списке, автоматический скролинг и удаление перенесённых элементов из исходного списка.

Использование элемента

  1. Инициализируем библиотеку OLE в функции InitInstance Вашего приложения:
    BOOL CDdDemoApp::InitInstance()
     
     {
     
      AfxEnableControlContainer();
     
     #ifdef _AFXDLL
     
      // Call this when using MFC in a shared DLL
     
      Enable3dControls();
     
     #else
     
      // Call this when linking to MFC statically
     
      Enable3dControlsStatic();
     
     #endif
     
     
     
      //-------------------------
     
      // Initialize OLE libraries
     
      //-------------------------
     
      if (!AfxOleInit())
     
       return FALSE;
  2. Вставляем #include "DDListCtrl.h" в файл описывающий главный диалог приложения и содержащий Списки.
  3. В функции OnInitDialog диалога, инициализируем и создаём собственную инициалицию списков по следующему шаблону:
    BOOL CDdDemoDlg::OnInitDialog()
     
     {
     
      CDialog::OnInitDialog();
     
     
     
      //.................................
     
     
     
      //---------------------------->
     
      // 1 - Subclass the list controls
     
      //----------------------------
     
      m_listVars.SubclassDlgItem(IDC_LIST_VAR, this);
     
      m_listRows.SubclassDlgItem(IDC_LIST_ROWS, this);
     
      m_listCols.SubclassDlgItem(IDC_LIST_COLS, this);
     
      m_listData.SubclassDlgItem(IDC_LIST_DATA, this);
     
      m_listPages.SubclassDlgItem(IDC_LIST_PAGES, this);
     
     
     
      //--------------------------------------------------------------
     
      // 2 - Инициализируем списки
     
      //--------------------------------------------------------------
     
      CString s(TCHAR('M'),29);
     
      int len = m_listVars.GetStringWidth(s)+15;
     
      LV_COLUMN lvC;
     
      lvC.mask = LVCF_FMT | LVCF_WIDTH;
     
      lvC.fmt  = LVCFMT_LEFT;  // колонка выравнена влево
     
      lvC.cx   = len;          // Ширина колонки в пикселях
     
      if (m_listVars.InsertColumn(0,&lvC) == -1)
     
       return FALSE;
     
     
     
      m_listVars.DeleteAllItems();
     
     
     
      m_listVars.SetLocalDD(FALSE);   // Запрещаем локальный Drag&Drop
     
      m_listVars.SetScrolling(FALSE); // и авто скроллирование
     
     
     
      // Create a column for the row variables list view control.
     
      if (m_listRows.InsertColumn(0,&lvC) == -1)
     
       return FALSE;
     
     
     
      m_listRows.DeleteAllItems();
     
     
     
      // Create a column for the column variables list view control.
     
      if (m_listCols.InsertColumn(0,&lvC) == -1)
     
       return FALSE;
     
     
     
      m_listCols.DeleteAllItems();
     
     
     
      // Create a column for the data variables list view control.
     
      if (m_listData.InsertColumn(0,&lvC) == -1)
     
       return FALSE;
     
     
     
      m_listData.DeleteAllItems();
     
     
     
      // Create a column for the page variables view control.
     
      if (m_listPages.InsertColumn(0,&lvC) == -1)
     
       return FALSE;
     
     
     
      m_listPages.DeleteAllItems();
     
     
     
      //------------------------------------------
     
      // 3 - Устанавливаем содержимое списка
     
      //------------------------------------------
     
      CWordArray aVars;
     
      int size = m_pSelectInfo->m_asNames.GetSize();
     
      aVars.SetSize(size);
     
      // Initially the list of available variables contains all variables
     
      for (int i=0; i<size; i++)
     
       aVars[i] = i;
     
     
     
      // Заполняем список переменных
     
      m_pData->FillListCtrl(m_listVars, aVars);
     
      m_pData->FillListCtrl(m_listRows, m_pSelectInfo->m_aRowsVar);
     
      m_pData->FillListCtrl(m_listCols, m_pSelectInfo->m_aColsVar);
     
      m_pData->FillListCtrl(m_listData, m_pSelectInfo->m_aDataVar);
     
      m_pData->FillListCtrl(m_listPages, m_pSelectInfo->m_aPagesVar);
     
     
     
      //-----------------------------------------------
     
      // 4 - Инициализируем списки для перетаскивания (Drag&Drop)
     
      //-----------------------------------------------
     
      m_listVars.Initialize();
     
      m_listRows.Initialize();
     
      m_listCols.Initialize();
     
      m_listData.Initialize();
     
      m_listPages.Initialize();
     
     
     
      return TRUE;
     
     }

Downloads

Скачать исходник - 9 Kb
Скачать демонстрашку - 32 Kb



<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS