Новые книги

Огромное количество предпринимателей мечтают, наконец, сдвинуть продажи своего бизнеса с мертвой точки, выстроить работающую систему и начать получать удовольствие от ведения собственного бизнеса. К сожалению, получается это далеко не у всех.

В этой книге авторы объединили 99 конкретных практических инструментов, которые необходимы для построения четкой системы продаж в вашем бизнесе.

Все, что вам нужно, – это взять и применить их в своем бизнесе. Все остальное (шаблоны, скрипты, таблицы, успешные стратегии) мы собрали в этой книге.

Это издание – бесценная подборка самых лучших практических моделей. Обязательная настольная книга для любого бизнесмена, генерального и коммерческого директора, руководителя отдела продаж, а также для всех, кто собирается ими стать.
В той отрасли, где мы работаем, библиотека DirectDraw появилась довольно давно. Во всяком случае, за это время она успела доказать свои возможности, и о ней было написано несколько книг. Как обычно, эти книги отличаются по своему качеству. Однако в основном это были добротные учебники, которые (как и многие книги о компьютерах) были написаны за три месяца авторами, изучавшими предмет по ходу дела. В результате большинство этих книг содержит лишь подготовительный материал. Теперь, когда библиотека DirectDraw подросла и обрела свою репутацию (во всяком случае, она старше других компонентов DirectX), настало время уйти от основ и познакомиться с ее некоторыми нетривиальными возможностями.

Эта книга начинается с того, на чем другие книги обычно заканчивались. Мы поговорим об основах DirectDraw, но лишь в общих чертах. Читатель — опытный программист, но незнакомый с DirectDraw — сможет с ходу войти в курс дела. Затем мы перейдем к другим темам, столь же интересным, сколь и полезным.

Цель этой книги — научить вас работать с DirectDraw, а не предоставить некоторую «структурную основу» или нестандартный API, который бы выполнял за вас всю работу. Демонстрационные программы написаны на C++ и используют MFC, но совсем не для того, чтобы скрыть все технические подробности. С++ и MFC — превосходные инструменты, потому что с их помощью любое приложение можно написать несколькими разными способами. Примеры для этой книги были написаны так, чтобы при этом получались структурированные и удобные для чтения проекты, которые наглядно показывают, что и почему происходит в программе.

Помимо DirectDraw, во многих примерах используется библиотека DirectInput. Строго говоря, при программировании графики для Windows можно обойтись и без DirectInput, но ей все же стоит воспользоваться. Она работает быстрее традиционных средств ввода Windows и к тому же входит в DirectX, так что для работы с ней не потребуется никаких дополнительных SDK.

FAQ Part 1



Visual C++ / FAQ Part 1

Как сделать так, чтобы при редактировании были видны комментарии для _своих_ методов или переменных?
1. Надо отметить, если не отмечено, все опции флажками в Tools/Options/Statement completion options;
2. Оставлять комментарии _перед_ объявлением, как например:

//Minimize to tray 
//Надо ли минимизировать в System Tray
 BOOL bTrayMin;
Как сделать так, чтобы показывалось только имя приложения?

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
        if( !CFrameWnd::PreCreateWindow(cs) )
                return FALSE;
        cs.style &= ~(FWS_PREFIXTITLE|FWS_ADDTOTITLE);
        return TRUE;
}
Как в консольной программе выводить цветные надписи и менять палитру?
 
=== Hачало CTEST.CPP ===
#include 

void main()
{
 HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 SMALL_RECT srct;
 CHAR_INFO chiBuffer[160];
 COORD coord1, coord2;
 char ddd[666];
 CharToOem("2:5095/38 - злобный ламеpюга", ddd);
 DWORD cWritten;
 coord1.Y = 0; coord1.X = 0;
 hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 WriteConsoleOutputCharacter(hStdout, ddd, lstrlen(ddd), coord1, &cWritten);
 for (int i = 0; i < lstrlen(ddd); i++)
 {
  WORD wColors = 1 + i * 3;
  coord1.X = i;
  WriteConsoleOutputAttribute(hStdout, &wColors, 1, coord1, &cWritten);
 }
 srct.Top = 0; srct.Left = 0; srct.Bottom = 1; srct.Right = 79;
 coord1.Y = 0; coord1.X = 0;
 coord2.Y = 1; coord2.X = 80;
 ReadConsoleOutput(hStdout, chiBuffer, coord2, coord1, &srct);
 for (i = 0; i < 50; i++)
 {
  srct.Left = (SHORT)((double)(79 - lstrlen(ddd)) * rand() / RAND_MAX);
  srct.Top = (SHORT)((double)25 * rand() / RAND_MAX);
  srct.Bottom = srct.Top + 1;
  WriteConsoleOutput(hStdout, chiBuffer, coord2, coord1, &srct);
 }
 Sleep(10000);
}
=== Конец CTEST.CPP ===
Как подгрузить Riched32.dll в InitInstance()?
 
BOOL CTestApp::InitInstance()
{
    HMODULE    hmod = LoadLibrary("Riched32.dll"); //Загружаем
    if(hmod == NULL){
        AfxMessageBox("RichEdit пахать не будет");
        return false;
    }

    CTestDlg dlg;
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal(); // в TestDlg нарисован RichEdit

    FreeLibrary(hmod);    //Выгружаем

    return false;
}
Как программно определить тип файловой системы?
Используйте Win32 API - функцию GetVolumeInformation(...)

Как на VC5.0 создать окошко на full-screen?
 
BOOL CMyWnd::Create()                                                          
{                                                                              
...                                                                            
CRect rect(0, 0, GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN)); 
strClass - заpегистpиpованный оконный класс.                                   
CreateEx(WS_EX_APPWINDOW, strClass, AfxGetAppName(), WS_SYSMENU | WS_POPUP | 
WS_VISIBLE, 0, 0, rect.right, rect.bottom, NULL, NULL, 0);                   
...                                                                            
}
или
 hwnd=CreateWindowEx(0, "Name", "Title",
        WS_POPUP|WS_SYSMENU, 0, 0,
        GetSystemMetrics(SM_CXSCREEN),
        GetSystemMetrics(SM_CYSCREEN),
        0, 0, hInstance, 0);
Как занести строку из CEdit'a в CListBox?
 
m_Edit.SetWindowText("aaa\r\nbbb\r\nccc");
// в Edit теперь три строки. Ловим первую
char    buffer[100];                           // Выделяем буфер
int    count = m_Edit.GetLine(0,       // индекс строки
                              buffer,              // указатель на буфер
                              sizeof(buffer));  // размер буфера
// Если OK, то возвращает кол-во скопированных символов
buffer[count] = 0;           // Скопированная строка не заканчивается \0
m_ListBox.AddString(buffer); // В данном случае "aaa"
или с помощью MFC:
 
CTreeCtrl *list = (CTreeCtrl*)GetDlgItem(IDC_TREE);
list->InsertItem( string, NULL, TVI_LAST );
    
Почему функция CreateProcess не запускает *.lnk-файлы?
Потому что она создает процессы только для _запускаемых_ файлов. *.lnk-файлы не являются запускаемыми.Чтобы это сделать используйте ShellExecute.

Как поменять указатель мыши со стрелки на часики и обратно?
Используйте функции BeginWaitCursor() и EndWaitCursor(). Есть еще один (из многих) путь:
 
void CTest::MyBiiiiigFunc()
{
    CWaitCursor    wait;
    for(int j=0; j<0x7ffffff; j++){
        //......
        Sleep(1000);
        // И тут все время крутятся часики
    }
} // А вот тут их уже нет.
    
При создании объекта курсор заменяется на часики дефолтным конструктором. Деструктором - восстанавливается прежний.

Как заставить CHttpFile принудительно передавать файлы в бинарном виде?
По умолчанию незвестным типам файлов MFC присваивает тип text/plain. Чтобы принудительно установить бинарный режим передачи, укажите тип как application/x-ofc.
Prev. Part Оглавление Next Part