Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 4
1

Перекрывающиеся окна

19.11.2012, 22:30. Показов 682. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Помогите пожалуйста доделать прогу. Надо создать главное окно и подчиненное, стиль которого OVERLAPPED. Ничего не получается.
#include <afxwin.h>
#include <windows.h>

class ChildWindow : public CFrameWnd
{
public:
ChildWindow(CFrameWnd*);
int PreCreateWindow(CREATESTRUCT& cs);
afx_msg void OnLButtonDown1(UINT, CPoint);
void OnMouseMove(UINT, CPoint);
DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(ChildWindow, CFrameWnd)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

ChildWindow::ChildWindow(CFrameWnd* parent)
{
Create(0,0,0,RECT(),parent,0);
}

class App : public CWinApp
{
public:
App() { ; }
int InitInstance();
};

class MainWindow : public CFrameWnd
{
ChildWindow* Child;
public:
MainWindow();
afx_msg void OnLButtonDown(UINT, CPoint);
DECLARE_MESSAGE_MAP()
};

BEGIN_MESSAGE_MAP(MainWindow, CFrameWnd)
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()

App theApp;

int App::InitInstance()
{
m_pMainWnd=new MainWindow;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;
}

MainWindow::MainWindow()
{
RECT rect;
rect.left = GetSystemMetrics(SM_CXSCREEN) / 8;
rect.top = GetSystemMetrics(SM_CYSCREEN) / 4;
rect.right = GetSystemMetrics(SM_CXSCREEN) / 8 * 7 ;
rect.bottom = GetSystemMetrics(SM_CYSCREEN) / 4 * 3;
Create(0,L"Parent",WS_OVERLAPPEDWINDOW, rect);
Child = new ChildWindow (this);
SetClassLong(Child->GetSafeHwnd(), GCL_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(80,250,80)));
SetClassLong(Child->GetSafeHwnd(), GCL_HICON, (LONG)LoadIcon(0, IDI_SHIELD));
Child->ShowWindow(SW_SHOW);
Child->UpdateWindow();

}

int ChildWindow::PreCreateWindow(CREATESTRUCT& cs)
{


cs.cy = ::GetSystemMetrics(SM_CYSCREEN) /4;
cs.cx = ::GetSystemMetrics(SM_CXSCREEN) /8;
cs.x = 0;
cs.y = 0 ;
cs.style = WS_OVERLAPPED | WS_CAPTION | WS_CLIPSIBLINGS;
cs.lpszName = L"WS_OVERLAPPED | WS_CAPTION | WS_CLIPSIBLINGS";

return CFrameWnd::PreCreateWindow(cs);
}

void MainWindow::OnLButtonDown(UINT nFlags, CPoint point)
{
AfxMessageBox(L"Стиль основного окна:\n\nWS_OVERLAPPEDWINDOW", MB_OK);
}
void ChildWindow::OnLButtonDown1(UINT nFlags, CPoint point)
{
AfxMessageBox(L"Стиль дочернего окна:\n\nWS_OVERLAPPED", MB_OK);
}
void ChildWindow::OnMouseMove(UINT nFlags, CPoint point)
{
static HCURSOR cursor = LoadCursor(0, IDC_NO);
if( (DWORD)cursor != GetClassLong(this->GetSafeHwnd(), GCL_HCURSOR) )
{
SetClassLong(this->GetSafeHwnd(), GCL_HCURSOR, (LONG)cursor);
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2012, 22:30
Ответы с готовыми решениями:

поиск Handle окна, зная ControlId окна
вопрос по сабжу

Зависимость размера окна диалога от окна фрейма
Скажите, как на конкретном примере указать окну диалога, что оно должно быть в два раза меньше, чем...

Как присвоить переменную одного диалогового окна к переменной другого диалогового окна? (ООП)
Вот у меня есть результат вычисления и я его присваиваю переменной в первом диалоговом окне, но я...

Предотвратить сворачивание окна по нажатию кнопки Windows «Свернуть все окна»
Здравствуйте, пишу что то вроде гаджета на c# wpf, и возник вопрос: можно ли как нибудь...

2
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,519
20.11.2012, 08:20 2
Видимым кто делать будет?
я ни WS_VISIBLE ни ShowWindow не нашел

код обрамляй тегами С++ неудобно читать

Создавать окно в конструкторе плохая идея, как думаешь зачем разделили конструктор и метод Create?
0
0 / 0 / 0
Регистрация: 18.04.2012
Сообщений: 4
20.11.2012, 17:45  [ТС] 3
ShowWindow там есть. А WS_VISIBLE в данном случае не обязателен. Если скомпилировать, то в программе появляется два окна. И мы их видим) В конструкторе главного окна создается подчиненное окно, без этого как я понимаю, и как нам объясняли никак. А вв конструкторе подчиненного создается окно-точка, которое потом переопределяется.
0
20.11.2012, 17:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2012, 17:45
Помогаю со студенческими работами здесь

TChromium и onBeforePopup: как блокировать новые окна, но разрешать окна с сообщениями?
доброго времени суток я блокирую новые окна procedure MainThread.mainchromeBeforePopup(Sender:...

Удержание окна с текущими введенными значениями после диалогового окна (с предупреждением)
Здравствуйте, есть маленькая задачка. Форма добавления ТС, открывается с основной формы. Нужно...

Получить цвет пикселя из неактивного окна, перекрытого другими окнами окна
Можно ли получить цвет пикселя из неактивного или перекрытого другими окна? Какие есть способы?...

Узнать имя окна в фокусе (текущего окна) через X11lib
Пытаюсь узнать имя текущего окна в фокусе пользователя. Когда запускаю программу в IDE, то в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru