Mfc

Тема в разделе "MS Visual C++", создана пользователем Mozzart, 12 май 2006.

Статус темы:
Закрыта.
  1. Mozzart

    Mozzart Гость

    Уважаемые товарищи знающие!
    Меня интересует название и автор лучшей книги по MFC
    Я попытался прочитать Мешков, Тихомиров "VC++ и MFC"
    и мне она страшно не понравилась там выпадают логические шаги
    при создании приложений и их описания.
    Последней каплей стало то, что я нашел идентичный
    только на английском пример программы из книги в MSDN HELPe!
    Другие книги пишут про создание на основе диалогового окна и инструментов
    VC++! НО!!! мне нравится делать все руками (всмысле программировать :)))
    и не ползоваться (почти) мастером!!!
    Помогите плиз! А то я буду закидывать форум тем что мне стало НЕПОНЯТНО!!!
    ___________________________________________________________________
    С ув. Mozzart
     
  2. eBit

    eBit Гость

    читай КРУГЛИНСКОГО для MFC
    .
    а если нравится все ручками то используй WTL но сперва почитай Педзольда "Программирование под виндовс" ... не пугайся если найдеш для 95 винды :) принципы все теже
     
  3. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    WTL штучка интерестная, но вот больно уж узкоспециализированная. В случае с итрефейсом она даст с то очков вперед MFC, в основном засчет компактности. Но WTL это не альтернатива MFC, которая гораздо универсальнее.
     
  4. eBit

    eBit Гость

    Как на меня WTL более универсальнее.
    А вот MFC болнее развитая и много всего готового уже есть.

    MFC так же хорош как и плох. У него много функциональности но и много ошибок, а также нужно тащить за собой ище несколько метров DLL'ок. К ниму написано множество класов с разной функциональностю.

    Но не стоит забывать, что WTL это "надстройка" над ATL, и тут сразу открываются все прелести ActiveX/COM. Плюс компактность и быстродествие. Так как код открыт то можно вносить свои изминения и плюс написано не мало собственых контролов. А при использовании SubClassing можно выводить свои контролы напорядок легче чем в MFC (IMHO и опыт).
    При использовании WTL можно сотворить небывалей сложности интерфейс. Нужны только хорошие руки.
     
  5. Kmet

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    Очередной религиозной спор.Но все же поясню, что имел ввиду.
    "Но WTL это не альтернатива MFC, которая гораздо универсальнее."
    Применение WTL сугубо интерфейс, с чем она отлично справляется, MFC же монструозно создание с клссами чуть ли не на все случае жизни. Это библиотеки для различных задач. Да и прелести ActiveX/COM открываются из обоих библиотек. И еще, к сожелению, будующее WTL до сих пор не ястно, ей так и не нашлось место в официальных плнах мелкомягких.
     
  6. Гость

    Да нет и впринципе не может быть более развернутого описания МФЦ классов, чем в MSDN, все книги по данной тематике являются переводом и описанием классов из МСДН, +- несколько глав компиляции из разных источников (или самописных).

    МФЦ - простая как грабли, достаточно взглянуть на иерархию класса и все понятно (если знаком с С++)

    CObject
    --- CWnd
    ------CDialog к примеру

    это что касаемо интерфейса, что касается вспомагательных классов, алгоритмов и т.д. то тут
    stl + boost - рулят
     
  7. Yuniti_Death

    Yuniti_Death Гость

    Помогите, если кто захочет...
    Не получается организовать вывод в окно требуемого результата. То есть кнопка с окном связана, с кнопкой связаны переменные и программный код, в котором требуемый результат считается. А вот при запуске в окно результата ничего не выводится.
     
  8. zubr

    zubr Гость

    Для: Mozzart
    Я начинал изучать MFC с книги Тихомирова "Самоучитель MFC". Книга так себе, но создание окон без визарда у него описано достаточно подробно.
    Для: Yuniti_Death
    Код в студию.

    По поводу WTL - штука не плохая, но очень плохо документированная. Кто знает ссылки какие нибудь по WTL или литература, сообщите, самому интересно.
     
  9. Yuniti_Death

    Yuniti_Death Гость

    zubr
    Спасибо, я сделала!)) Всего-то надо было еще один UpdateData добавить
     
  10. Cisco

    Cisco Гость

    У меня след. проблема в одной из функций вызываю DrawItem(lpDrawItemStruct); , где lpDrawItemStruct->itemID=(UINT)GetCurSel(); , но этот пункт не перерисовывается. Я та понимаю, что это из-за того, что не определены такие элементы структуры как lpDrawItemStruct->hDC и lpDrawItemStruct->hwndItem, но от куда их взять. Подскажите как решить данную проблему!
    Спасибо!
     
  11. orcommander

    orcommander Гость

    Ну, lpDrawItemStruct->hwndItem - это хэндл контрола, а lpDrawItemStruct->hDC=GetDC(hwndItem)... наверно, попробуй.
     
  12. Cisco

    Cisco Гость

    orcommander - respect и уважуха)!
     
  13. Cisco

    Cisco Гость

    Есть ли функция, позволяющая изменять текст в записи listbox, т.е. противоложность GetText() - что-то вроде "PutText()". InsertString - не хочется использовать, т.к. просто надо изменить текст.
     
  14. Maxx

    Maxx Гость

    Cisco
    такой функции нет :(, но можно сделать так
    создать listbox со стилями LBS_NODATA | LBS_OWNERDRAWFIXED, т.е. это будет что-то похожее на виртуальный listbox
    только в таком случае необходимо будет самому рисовать текст элементов и соответсвенно поддерживать какую-нить структуру данных, зато при изменении данных они изменяются на экране при наступлении события перерисовки
     
  15. Cisco

    Cisco Гость

    Maxx спасибо, но у меня так и сделано, только структура данных у меня файл и каждый раз лезть в него не хочется, т.к. сама строка (если бы можно было ее менять:(((( ) и говорила бы о том как надо перерисовывать! Т.е. все таки придется делать некрасиво:(
     
  16. Cisco

    Cisco Гость

    Как можно сделать, чтобы диалоговое окно, например, каждые 15 минут выполняло какие-то действия?
    Одно из решений, которое я вижу - это создание дополнительного потока, однако это не очень красиво. Подскажите пожалуйста как можно это сделать без вспомогательных потоков.
     
  17. Dest!n

    Dest!n Гость

    #define TIMER_EVENT 1

    // ... BOOL CALLBACK DlgProc(...)
    case WM_CREATE:
    SetTimer(hDlg, TIMER_EVENT, 15*60*1000, NULL);
    // fall through
    case WM_TIMER:
    switch (wParam){
    case TIMER_EVENT: /*Твои действия здесь*/ break;
    }
    return 0;
    //...

    По крайней мере, это работало для главного окна приложения.
     
  18. Cisco

    Cisco Гость

    Спасибо Dest!n.
    Если я правильно понял, то вызываем m_ListBox.SetTimer(1, 15*60*1000, NULL); в OnInitDialog() и т.к. в качестве адреса обработчика указан NULL - это означает, что он находится в этой же функции?
     
  19. Dest!n

    Dest!n Гость

    Для: Cisco
    Все верно. Можно также указать вместо NULL имя функции вида

    VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime);
    где
    hwnd - дескриптор окна, вызывающего таймер (то есть твое модальное окно - прим. ред.)
    uMsg - определяет WM_TIMER
    idEvent - определяет ID таймера (указывается с помощью #define - прим. ред.)
    dwTime - количество миллисекунд, прошедших с момента запуска системы. Это значение возвращается функцией GetTickCount

    (с) MSDN Library
    Переведено мной.
     
  20. Cisco

    Cisco Гость

    For: Dest!n

    Спасибо большое!
     
Загрузка...
Похожие Темы - Mfc
  1. PetrovVA
    Ответов:
    3
    Просмотров:
    1.719
  2. harimambura
    Ответов:
    0
    Просмотров:
    1.302
  3. Antonim
    Ответов:
    1
    Просмотров:
    1.237
  4. Antonim
    Ответов:
    4
    Просмотров:
    1.812
  5. ezus
    Ответов:
    4
    Просмотров:
    4.688
Статус темы:
Закрыта.

Поделиться этой страницей