Назад | Начало урока | Вперед
Содержание

Глава 5

Теперь хорошо сделать так, чтобы курсор оказавшись на поле противника
становился прицелом.


BOOL CField::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) {
if(m_Mode == FOREIGN_FIELD && (m_Operation == FIRE || m_Operation == WAIT)) {
::SetCursor(m_cFire);
return true;
}
return CStatic::OnSetCursor(pWnd, nHitTest, message);
}

    Для этого надо включить в ресурсы соответствующую картинку.

  1. Скопируем графич файлы в диреторию res

    cur00001.cur
    cursor1.cur

    cur00002.cur
    cur00003.cur

  2. SeaBattle.vcproj

    <File
    RelativePath=".\res\cur00001.cur">
    </File>
    <File
    RelativePath=".\res\cur00002.cur">
    </File>
    <File
    RelativePath=".\res\cur00003.cur">
    </File>
    <File
    RelativePath=".\res\cursor1.cur">
    </File>

  3. SeaBattle.rc

    /////////////////////////////////////////////////////////////////////////////
    //
    // Cursor
    //

    IDC_SIGHT CURSOR DISCARDABLE "res\\cursor1.cur"
    IDC_FIRE CURSOR DISCARDABLE "res\\cur00001.cur"
    IDC_DEFAULT CURSOR DISCARDABLE "res\\cur00003.cur"
    //IDC_MOVE CURSOR DISCARDABLE "res\\H_move.cur"
    IDC_HAND CURSOR DISCARDABLE "res\\cur00002.cur"

  4. resource.h

    #define IDC_SIGHT 138
    #define IDC_FIRE 140
    #define IDC_DEFAULT 142
    #define IDC_HAND 155

  5. Еще добавить в функцию OnCreate() строку:

    m_cFire = ::LoadCursor(hInst, MAKEINTRESOURCE(IDC_FIRE));


Подсказка

Ну вот! Теперь стреляем так как надо! Программа наша становится все более
умелой. Далее надо научить компютер отвечать на наши выстрелы своими.

На скриншотах курсор никогда не бывает виден. Но выглядит он на чужом поле как
прицел.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz