<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3929181</guid>
        <pubDate>Fri, 26 Sep 2025 18:55:47 +0000</pubDate>
        <title>Почему не отображается дерево и неправильно отображается панель в MFC ?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3929181</link>
        <description><![CDATA[Lun2: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=466802&view=findpost&p=3929115'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sharky72 &#064; <time class="tag-quote__quoted-time" datetime="2025-09-25T20:08:11+00:00">25.09.25, 20:08</time></span><div class='quote '><br>
Junior<br>
*<br>
Профиль · PM<br>
Рейтинг (т): - [ 4 ] +<br>
	<br>
Если честно то нет. У меня ваш проект собрался как на скриншоте справа. Ну в другой теме он есть.</div></div><br>
<br>
<br>
sharky72, у Вас и у меня программа ведет себя по-разному... я понял в чем дело.<br>
<br>
По умолчанию шаблонный проект сохраняет состояние окон, это работало при создании проекта.<br>
Затем это мне надоело я отменил сохранение: m_bSaveState = FALSE;<br>
Однако это не отменило восстановление.<br>
После этого я перегрузил этот метод:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">BOOL CTestMFCEmptyApp::LoadState(LPCTSTR lpszSectionName,</div><div class="code_line">&nbsp;&nbsp; &nbsp;CFrameImpl* pFrameImpl) {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// в нашей версии ничего не делаем</div><div class="code_line">&nbsp;&nbsp; &nbsp;return TRUE;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
... и это отменило восстановление состояния. А версия, переданная Вам, изначально ничего сохраняла, поэтому и выглядело все, как задумано.<br>
<br>
Спасибо&#33;<br>
<br>
Оказалось, достаточно посмотреть, как программа работает в другой среде... <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-09-26T21:59:01+03:00">26.09.25, 18:59</time></span></span><br>
Вопрос решен.]]></description>
        <author>Lun2</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3929115</guid>
        <pubDate>Thu, 25 Sep 2025 20:08:11 +0000</pubDate>
        <title>Почему не отображается дерево и неправильно отображается панель в MFC ?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3929115</link>
        <description><![CDATA[sharky72: Если честно то нет. У меня ваш проект собрался как на скриншоте справа. Ну в другой теме он есть.<br><br>P.S. На будущее, пожалуйста заворачиваете код в тэг CODE, читать эти портянки не очень удобно]]></description>
        <author>sharky72</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3929024</guid>
        <pubDate>Wed, 24 Sep 2025 18:37:02 +0000</pubDate>
        <title>Почему не отображается дерево и неправильно отображается панель в MFC ?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3929024</link>
        <description><![CDATA[Lun2: Добрый вечер&#33;<br>
Ответов нет. Прошу подсказать - понятен ли вопрос, решаем ли ? Или не хватает какой-то глобальной информации ?<br>
<span class="b-attach" data-size="110240" data-hits="43" data-attach-id="67374" data-attach-post-id="0">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=0&amp;attach_id=67374' title='Скачать файл' target='_blank'>TestMFC_Empty.rar</a> (, : 43)
		</span><br>
Прилагаю проект к нему, чтобы можно было посмотреть весь код.<br>
<br>
Панель с деревом создается в файле - MainFrm_Empty.cpp -&gt; CMainFrame::OnCreate, практически вся инициализация панели в рамках фрейма - там.<br>
<br>
Код самой панели с деревом - TestMFC_MyTreeView.h/cpp]]></description>
        <author>Lun2</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3928799</guid>
        <pubDate>Sun, 21 Sep 2025 11:53:39 +0000</pubDate>
        <title>Почему не отображается дерево и неправильно отображается панель в MFC ?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3928799</link>
        <description><![CDATA[Lun2: <span class="b-attach" data-size="15543" data-hits="229" data-attach-id="67358" data-attach-post-id="3928799">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3928799&amp;attach_id=67358' title='Скачать файл' target='_blank'>BAD.PNG</a> (, : 229)
		</span><span class="b-attach" data-size="71505" data-hits="248" data-attach-id="67359" data-attach-post-id="3928799">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3928799&amp;attach_id=67359' title='Скачать файл' target='_blank'>VS.PNG</a> (, : 248)
		</span><br>
Прошу прощения, скриншоты забыл - вот они здесь.]]></description>
        <author>Lun2</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3928798</guid>
        <pubDate>Sun, 21 Sep 2025 11:42:18 +0000</pubDate>
        <title>Почему не отображается дерево и неправильно отображается панель в MFC ?</title>
        <link>https://forum.sources.ru/index.php?showtopic=466802&amp;view=findpost&amp;p=3928798</link>
        <description><![CDATA[Lun2: Добрый день&#33;<br>
Только начал изучать MFC.<br>
Решил создать почти пустой проект в VS 2019: тип приложения - несколько документов, стиль = MFC Standard.<br>
Он создает интерфейс, создающий пустые документы MFC (далее - проект EMPTY).<br>
В качестве пробы я решил добавить к нему слева панель с деревом.<br>
<br>
Как создается панель с деревом - для этого я создал проект со стилем - a&#39;la Visual Studio (далее - проект VS),<br>
подсмотрел в нем, как создается view для дерева я сделал то же в моем <br>
<br>
Я хотел, чтобы панель разместилась слева, как на скриншоте VS (слева отмечена галкой), т.е. слева панель, а справа все остальное.<br>
Однако получилось все плохо - см. скриншот BAD:<br>
<br>
1) панель вроде бы появилась, но она не подвинула вправо все остальное, на скриншоте я ее оттащил чуть правее, чтобы был виден документ TestMFCEmpty1. Начальнон положение панели - слева вверху, закрывала документ.<br>
Здесь <strong class='tag-b'>вопрос1</strong>: почему окошко с документами не сдвинулоась вправо (как на скриншоте VS, где дерево классов подвниуло все вправо) ?<br>
<br>
2) панель для дерева пустая, хотя ее наполнял по аналогии с проектом - см. процедуру FillMyTree<br>
<strong class='tag-b'>ВОПРОС2</strong>: почему дерево не прорисовывается.<br>
<br>
3) в CMainFrame::OnCreate я закомментировал вызов: _wndTreeView.AttachToTabWnd<br>
т.к. не очень понимаю, какие ему нужно дать параметры в моей версии...<br>
<strong class='tag-b'>ВОПРОС3</strong>: на что он повлияет на экране ? Он мне нужен ?<br>
Привожу участки кода (мои добавки отмечены &quot;@+++&quot;).<br>
<br>
---------------------- CMainFrame::OnCreate - все сгенерил VS + моя добавка ------------------<br>
<br>
В этот класс я добавил поле:<br>
MyTreeView mmm_wndTreeView;<br>
<br>
<br>
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)<br>
{<br>
	if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)<br>
		return -1;<br>
<br>
	CMDITabInfo mdiTabParams;<br>
	mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D_ONENOTE; // другие доступные стили...<br>
	mdiTabParams.m_bActiveTabCloseButton = TRUE;      // установите значение FALSE, чтобы расположить кнопку &#092;&quot;Закрыть&#092;&quot; в правой части области вкладки<br>
	mdiTabParams.m_bTabIcons = FALSE;    // установите значение TRUE, чтобы включить значки документов на вкладках MDI<br>
	mdiTabParams.m_bAutoColor = TRUE;    // установите значение FALSE, чтобы отключить автоматическое выделение цветом вкладок MDI<br>
	mdiTabParams.m_bDocumentMenu = TRUE; // включить меню документа на правой границе области вкладки<br>
	EnableMDITabbedGroups(TRUE, mdiTabParams);<br>
<br>
	if (&#33;m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||<br>
		&#33;m_wndToolBar.LoadToolBar(IDR_MAINFRAME))<br>
	{<br>
		TRACE0(&quot;Не удалось создать панель инструментов&#092;n&quot;);<br>
		return -1;      // не удалось создать<br>
	}<br>
<br>
	if (&#33;m_wndStatusBar.Create(this))<br>
	{<br>
		TRACE0(&quot;Не удалось создать строку состояния&#092;n&quot;);<br>
		return -1;      // не удалось создать<br>
	}<br>
	m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));<br>
<br>
	// TODO: Удалите эти три строки, если не собираетесь закреплять панель инструментов<br>
	//m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);<br>
	//EnableDocking(CBRS_ALIGN_ANY);<br>
	//DockControlBar(&amp;m_wndToolBar);<br>
<br>
	// @+++++++++++++++ ДОБАВЛЕНО ДЛЯ ОТОБРАЖЕНИЯ ДЕРЕВА +++++++++++++++++++++++++<br>
	// Создать представление для дерева == mmm_wndTreeView<br>
	//BOOL bNameValid;<br>
	CString strTreeClassView = _T(&quot;TreeWinName&quot;);<br>
	//bNameValid = strClassView.LoadString(IDS_CLASS_VIEW);<br>
	//ASSERT(bNameValid);<br>
	if (&#33;mmm_wndTreeView.Create(strTreeClassView, this, CRect(0, 0, 200, 200), TRUE, ID_VIEW_MYTREEVIEW, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))<br>
	{<br>
		TRACE0(&quot;Не удалось создать окно &#092;&quot;Представление классов&#092;&quot;&#092;n&quot;);<br>
		return FALSE; // не удалось создать<br>
	}<br>
<br>
	mmm_wndTreeView.EnableDocking(CBRS_ALIGN_ANY);<br>
	CDockablePane* pTabbedBar = nullptr;<br>
	// склеивает окна ?:<br>
	// @+++ Эта строка работала в проекте, созданном VS a&#39;la Visual Studio<br>
	// (см. скриншот VS)<br>
	//m_wndTreeView.AttachToTabWnd(&amp;m_wndFileView, DM_SHOW, TRUE, &amp;pTabbedBar);<br>
	// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br>
<br>
<br>
	// Переключите порядок имени документа и имени приложения в заголовке окна. Это<br>
	// повышает удобство использования панели задач, так как на эскизе отображается имя документа.<br>
	ModifyStyle(0, FWS_PREFIXTITLE);<br>
<br>
	return 0;<br>
}<br>
<br>
<br>
Далее определение и реализация MyTreeView <br>
<br>
// @++++++++++++++++++ TestMFC_MyTreeView.h ++++++++++++++++++++++<br>
<br>
#pragma once<br>
#include &lt;afxwin.h&gt;			// Макросы<br>
//#include &lt;afxrich.h&gt;<br>
#include &lt;afxDockablePane.h&gt;<br>
#include &lt;afxcview.h&gt;		// treeview<br>
<br>
class MyTreeView : public CDockablePane<br>
{<br>
public:<br>
	MyTreeView() noexcept;<br>
	virtual ~MyTreeView();<br>
<br>
	// переопределения<br>
	virtual BOOL PreTranslateMessage(MSG* pMsg) override;<br>
<br>
	// переопределения<br>
protected:<br>
	CTreeCtrl MyTree;		// дерево на экране, было - CViewTree<br>
	//процедура заполнения дерева:<br>
	void FillMyTree();<br>
<br>
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);<br>
	afx_msg void OnSize(UINT nType, int cx, int cy);<br>
	afx_msg void OnPaint();<br>
	afx_msg void OnSetFocus(CWnd* pOldWnd);<br>
<br>
	// карта обрабатываемых нами сообщений<br>
	DECLARE_MESSAGE_MAP()<br>
};<br>
<br>
<br>
// ++++++++++++++++++ TestMFC_MyTreeView.cpp +++++++++++++++++<br>
<br>
#pragma once<br>
#include &quot;pch.h&quot;<br>
#include &quot;TestMFC_MyTreeView.h&quot;<br>
<br>
MyTreeView::MyTreeView() noexcept<br>
{<br>
}<br>
<br>
MyTreeView::~MyTreeView()<br>
{<br>
}<br>
<br>
BOOL MyTreeView::PreTranslateMessage(MSG* pMsg)<br>
{<br>
	// здесь можем перехватить сообщение и обработать его самостоятельно<br>
	const bool ProcessHere = false;<br>
	if (ProcessHere) {<br>
		return TRUE;		// стандартная обработка не нужна<br>
	}<br>
<br>
	return CDockablePane::PreTranslateMessage(pMsg);<br>
}<br>
<br>
int MyTreeView::OnCreate(LPCREATESTRUCT lpCreateStruct)<br>
{<br>
	if (CDockablePane::OnCreate(lpCreateStruct) == -1)<br>
		return -1;<br>
<br>
	CRect rectDummy;<br>
	rectDummy.SetRectEmpty();<br>
<br>
	// Создание представлений:<br>
	const DWORD dwViewStyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;<br>
<br>
	if (&#33;MyTree.Create(dwViewStyle, rectDummy, this, 2))<br>
	{<br>
		TRACE0(&quot;Не удалось создать представление для MyTree&#092;n&quot;);<br>
		return -1;      // не удалось создать<br>
	}<br>
<br>
	// заполнение дерева<br>
	FillMyTree();<br>
<br>
	return 0;<br>
}<br>
<br>
void MyTreeView::OnSize(UINT nType, int cx, int cy)<br>
{<br>
	CDockablePane::OnSize(nType, cx, cy);<br>
	//-- осталось-от-VS  --  AdjustLayout();<br>
}<br>
<br>
void MyTreeView::OnPaint()<br>
{<br>
	CDockablePane::OnPaint();<br>
	<br>
	CPaintDC dc(this); // контекст устройства для рисования<br>
<br>
	CRect rectTree;<br>
	MyTree.GetWindowRect(rectTree);<br>
	ScreenToClient(rectTree);<br>
<br>
	rectTree.InflateRect(1, 1);<br>
	dc.Draw3dRect(rectTree, ::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DSHADOW));<br>
	<br>
}<br>
<br>
void MyTreeView::OnSetFocus(CWnd* pOldWnd)<br>
{<br>
	CDockablePane::OnSetFocus(pOldWnd);<br>
<br>
	MyTree.SetFocus();<br>
}<br>
<br>
// Заполнение дерева _CViewTree MyTree_ - сдедано, как в проекте VS<br>
<br>
void MyTreeView::FillMyTree()<br>
{<br>
	HTREEITEM hRoot = MyTree.InsertItem(_T(&quot;Корень1&quot;), 0, 0);<br>
	MyTree.SetItemState(hRoot, TVIS_BOLD, TVIS_BOLD);<br>
<br>
	HTREEITEM hClass = MyTree.InsertItem(_T(&quot;Листья 1&quot;), 1, 1, hRoot);<br>
	MyTree.InsertItem(_T(&quot;Лист 1&quot;), 3, 3, hClass);<br>
	MyTree.InsertItem(_T(&quot;Лист 2&quot;), 3, 3, hClass);<br>
<br>
	MyTree.Expand(hRoot, TVE_EXPAND);<br>
<br>
}<br>
<br>
<br>
// ------ карта сообщений нашего класса _MyTreeView_	------<br>
// ------ должна определяться ВНЕ ЛЮБОГО КЛАССА			------<br>
BEGIN_MESSAGE_MAP(MyTreeView, CDockablePane)<br>
	ON_WM_CREATE()<br>
	ON_WM_SIZE()<br>
	//ON_WM_CONTEXTMENU()<br>
	//ON_COMMAND(ID_CLASS_ADD_MEMBER_FUNCTION, OnClassAddMemberFunction)<br>
	//ON_COMMAND(ID_CLASS_ADD_MEMBER_VARIABLE, OnClassAddMemberVariable)<br>
	//ON_COMMAND(ID_CLASS_DEFINITION, OnClassDefinition)<br>
	//ON_COMMAND(ID_CLASS_PROPERTIES, OnClassProperties)<br>
	//ON_COMMAND(ID_NEW_FOLDER, OnNewFolder)<br>
	ON_WM_PAINT()<br>
	ON_WM_SETFOCUS()<br>
	//ON_COMMAND_RANGE(ID_SORTING_GROUPBYTYPE, ID_SORTING_SORTBYACCESS, OnSort)<br>
	//ON_UPDATE_COMMAND_UI_RANGE(ID_SORTING_GROUPBYTYPE, ID_SORTING_SORTBYACCESS, OnUpdateSort)<br>
END_MESSAGE_MAP()]]></description>
        <author>Lun2</author>
        <category>Visual C++ / MFC / WTL</category>
      </item>
	
      </channel>
      </rss>
	