Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прозрачный Фон! Разве это фантастика? 
:(
    Опции темы
Феликс
Дата 24.8.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 28.11.2006

Репутация: -2
Всего: -3



Здраствуйте,
При нажатии по кнопке на форме всплывает модальное окно, на котором и хотелось бы разместить рисунок с прозрачным фоном. Делаю вот так вот:
Код

// Обработчик модального окна
void CLogoDlg::OnPaint() {
    CDC* dc = GetDC();
    CImage m_Frame;
    m_Frame.Load(MAKEINTRESOURCE(IDB_LOGO));
    TransparentBlt(    dc->m_hDC, 
                    100, 
                    100, 
                    m_Frame.GetWidth(), 
                    m_Frame.GetHeight(), 
                    m_Frame.GetDC(), 
                    0, 
                    0, 
                    m_Frame.GetWidth(), 
                    m_Frame.GetHeight(), 
                    RGB(255, 255, 255));
    m_Frame.ReleaseDC();
}


При запуске программы и нажатии по кнопке, програма закрывается.
Я уверен что мой код не верен, но и в сети нет достойных примеров!
Заранее спасибо за помощь.

Это сообщение отредактировал(а) Феликс - 24.8.2007, 18:17
PM   Вверх
zkv
Дата 24.8.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Код

#pragma once
#include <atlimage.h>


// CPaintDlg dialog

class CPaintDlg : public CDialog
{
    DECLARE_DYNAMIC(CPaintDlg)
    CImage m_image;
public:
    CPaintDlg(CWnd* pParent = NULL);   // standard constructor
    virtual ~CPaintDlg();

// Dialog Data
    enum { IDD = IDD_DIALOG2 };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnPaint();
};

// PaintDlg.cpp : implementation file
//

#include "stdafx.h"
#include "TestDlg.h"
#include "PaintDlg.h"
#include ".\paintdlg.h"


// CPaintDlg dialog

IMPLEMENT_DYNAMIC(CPaintDlg, CDialog)
CPaintDlg::CPaintDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CPaintDlg::IDD, pParent)
{
    m_image.LoadFromResource( AfxGetInstanceHandle(), IDB_BITMAP1 );
}

CPaintDlg::~CPaintDlg()
{
}

void CPaintDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
}


BEGIN_MESSAGE_MAP(CPaintDlg, CDialog)
    ON_WM_PAINT()
END_MESSAGE_MAP()


// CPaintDlg message handlers

void CPaintDlg::OnPaint()
{
    CPaintDC dc(this); // device context for painting
    TransparentBlt(    dc.m_hDC, 
                    100, 
                    100, 
                    m_image.GetWidth(), 
                    m_image.GetHeight(), 
                    m_image.GetDC(), 
                    0, 
                    0, 
                    m_image.GetWidth(), 
                    m_image.GetHeight(), 
                    RGB(255, 255, 255));
    m_image.ReleaseDC();
}

PM MAIL   Вверх
Феликс
Дата 24.8.2007, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 28.11.2006

Репутация: -2
Всего: -3



#zkv, работает!!! но вот мне еще надо сделать модальное окно прозрачным. Не поможеш?
PM   Вверх
zkv
Дата 24.8.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



нашел, оно?
PM MAIL   Вверх
Феликс
Дата 24.8.2007, 21:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 28.11.2006

Репутация: -2
Всего: -3



Цитата(zkv @ 24.8.2007,  19:14)
нашел, оно?

Спасибо конечно за примерчик, но примерчик оставляет желать лучшего. Там много лишнего, а разобраться в таком примерчике не легкое дело. Может есть способ по проше?

Это сообщение отредактировал(а) Феликс - 24.8.2007, 21:53
PM   Вверх
zkv
Дата 24.8.2007, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



Цитата(Феликс @  24.8.2007,  21:53 Найти цитируемый пост)
Спасибо конечно за примерчик, но примерчик оставляет желать лучшего.

если напишите достойную альтернативу, просьба, сообщите. 
Удачи!
PM MAIL   Вверх
zkv
Дата 25.8.2007, 03:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



поражают такие личности. Как сделать не знают, но берутся утверждать, что лишнее, а что нет...
PM MAIL   Вверх
Andrey44
Дата 25.8.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1501
Регистрация: 4.12.2006
Где: На работе

Репутация: 12
Всего: 26



SetLayeradWindowAttributes() smile 


--------------------
????? ??, ??????? ?????.  smile 
PM MAIL WWW ICQ   Вверх
Феликс
Дата 25.8.2007, 17:28 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 28.11.2006

Репутация: -2
Всего: -3



Цитата(zkv @ 25.8.2007,  03:56)
поражают такие личности. Как сделать не знают, но берутся утверждать, что лишнее, а что нет...

А вот не надо вот этого! Я не думаю что в мелкософте сидят тормоза. Они делают всё оптимально. А этот код, это просто чейто проект, кто знает что туда наталкали. Был бы пример с MSDN, вот тогда я бы промолчал.

Это сообщение отредактировал(а) Феликс - 25.8.2007, 17:28
PM   Вверх
Earnest
Дата 26.8.2007, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(Феликс @  24.8.2007,  22:53 Найти цитируемый пост)
Спасибо конечно за примерчик, но примерчик оставляет желать лучшего. Там много лишнего, а разобраться в таком примерчике не легкое дело.

А кто тебе обещал "легкое", когда ты в программисты пошел? Кроме того, половина, если не больше, работы программиста заключается в том, чтобы разбираться в чужом коде, причем он почти всегда раздражает и кажется дебильным, даже если ты сам его написал ...дцать лет назад. Так что это тоже полезное упражнение.
Цитата(Феликс @  25.8.2007,  18:28 Найти цитируемый пост)
Я не думаю что в мелкософте сидят тормоза. Они делают всё оптимально.

Просто умираю от смеха. Достаточно посмотреть код MFС... smile  smile  smile 
Цитата(Феликс @  25.8.2007,  18:28 Найти цитируемый пост)
А этот код, это просто чейто проект, кто знает что туда наталкали. 

Как я уже сказала, тебе всю жизнь придется иметь дело с "чьими-то" проектами...


--------------------
...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0850 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.