Windows Api

Тема в разделе "MS Visual C++", создана пользователем RDN_ResidentS, 27 дек 2006.

  1. RDN_ResidentS

    RDN_ResidentS Гость

    Репутация:
    0
    Есть кнопка созданная с помощью CreateWindow()
    Как на эту кнопку наложить BITMAP??

    Что мне нужно от этой кнопки:
    1. При наведении на нее курсором мыши чтобы она подсвечивалась.
    2. При нажатии на нее она меняла вид на нажатый.
    3. При отжатии отображала не нажатую кнопку.
    Нужно так сделать чтобы она была схожа на кнопку со стилем BS_DEFPUSHBUTTON. Т. е. при нажатой левой кнопке мыши, она нажималась а при отжатии кнопки она сразу отжималась.

    Правда я пробывал, но кнопка что то не так работает, как мне хотелось, если кто может помогите..., please!


    Прикрепленные данные


    Посмотреть вложение find_up.bmp
    Посмотреть вложение find_dn.bmp
    Посмотреть вложение MyButton.cpp.txt
    Посмотреть вложение Resource.h.txt
     
  2. orcommander

    orcommander Гость

    Репутация:
    0
    Не уверен, но попробуй...
    1. Получить контекст кнопки HDC hDC=GetDC(......);
    2. На события развесить BitBlt (не помню точно, но вроде так)
     
  3. EuGenius

    EuGenius Гость

    Репутация:
    0
    могу помочь только так
    Код:
    BEGIN_MESSAGE_MAP(CYourDlg, CDialog)
    //{{AFX_MSG_MAP(CYourDlg)		
    ON_WM_LBUTTONDOWN() //Ловить нажатие на мышь
    ON_WM_LBUTTONUP( )//ловить отпускание мыши
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    обьявляешь в классе функции обработки мыши
    Код:
    afx_msg void OnLButtonDown( UINT, CPoint );
    afx_msg void OnLButtonUp( UINT, CPoint );
    в этих функциях рисуешь бмп
    Код:
    			CDC* pDC;
    pDC = GetWindowDC();//дескриптор окна
    CBitmap bmp;
    BITMAP bmpInfo;	
    bmp.LoadBitmap(IDB_BITMAP1);	
    bmp.GetBitmap(&bmpInfo);
    CDC dcMemory;
    dcMemory.CreateCompatibleDC(pDC);
    CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);
    //здесь "404, 63" - координата точки, куда вывести бмп
    pDC->BitBlt(404, 63, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory, 
    0, 0, SRCCOPY);
    Попытайся как-нибудь узнать координаты, куда выводить.
    А может использовать область, куда рисуешь как кнопку(в смысле убрать её вообще).
    При этом надо обрабатывать точку нажатия (CPoint).
    Вместо BitBlt() можно сделать PictureControl и назначать ему бмп-ресурс. Но я не знаю как, сам выложил эту тему на форум. Помог?
     
  4. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Для: EuGenius, не надо помогать абы как.
    Для автора - на codeproject полно кнопок с картинками. Найди пример попроще и посмотри реализацию.
     
  5. WinMain

    WinMain Гость

    Репутация:
    0
    В библиотеках MFC и WTL есть специальный класс CBitmapButton.
     
Загрузка...

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