<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[GUI-Entwicklung unter der WinAPI]]></title><description><![CDATA[<p>Hallo,</p>
<p>und zwar wollte ich mal fragen, welche Nachteile ihr in der WinAPI speziell bei der GUI-Entwicklung seht. Gerad was Aufwand, optische Darstellungsmöglichkeiten, UserAbility, Abhängigkeiten angeht.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/177213/gui-entwicklung-unter-der-winapi</link><generator>RSS for Node</generator><lastBuildDate>Thu, 25 Jun 2026 23:25:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177213.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 29 Mar 2007 09:51:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 09:51:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>und zwar wollte ich mal fragen, welche Nachteile ihr in der WinAPI speziell bei der GUI-Entwicklung seht. Gerad was Aufwand, optische Darstellungsmöglichkeiten, UserAbility, Abhängigkeiten angeht.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255187</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255187</guid><dc:creator><![CDATA[ArgV04]]></dc:creator><pubDate>Thu, 29 Mar 2007 09:51:23 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 13:17:38 GMT]]></title><description><![CDATA[<p>Nachteile gegenüber was oder wen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255329</guid><dc:creator><![CDATA[keksekekse]]></dc:creator><pubDate>Thu, 29 Mar 2007 13:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 17:48:30 GMT]]></title><description><![CDATA[<p>Der Aufwand für ein GUI ist, wenn du es ausschließlich mit WinAPI machst, unverhältnismäßig groß. Du bist damit von Windows abhängig - was aber bei den gängigsten Frameworks wie MFC und VCL, WinForms etc. genauso der Fall ist. Dafür hast du die exakte Kontrolle über alles. Da sich Details aber auch in Frameworks i.d.R. problemlos durch direkten WinAPI-Einsatz regeln lassen, sollte das ebenfalls kein Grund sein, auf ein anständiges Framework zu verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255537</guid><dc:creator><![CDATA[audacia]]></dc:creator><pubDate>Thu, 29 Mar 2007 17:48:30 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 18:30:20 GMT]]></title><description><![CDATA[<p>ArgV04 schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>und zwar wollte ich mal fragen, welche Nachteile ihr in der WinAPI speziell bei der GUI-Entwicklung seht. Gerad was Aufwand, optische Darstellungsmöglichkeiten, UserAbility, Abhängigkeiten angeht.</p>
<p>Danke</p>
</blockquote>
<p>- schlechte Tool Unterstützung (z. B. Designer)<br />
- wichtige Layouts fehlen (du musst erst mal Code schreiben der die Steuerelemente mit skaliert und positioniert)<br />
- schlechte Unterstützung für C++ (du musst dir erst selber Wrapper klassen schreiben - der Code ist zwar schon Objektorientiert, aber es gibt keien Fertigen C++ Klassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255559</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Thu, 29 Mar 2007 18:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 19:14:01 GMT]]></title><description><![CDATA[<p>Vertexwahn schrieb:</p>
<blockquote>
<p>- schlechte Tool Unterstützung (z. B. Designer)</p>
</blockquote>
<p>wer braucht sowas ?</p>
<p>Vertexwahn schrieb:</p>
<blockquote>
<p>- wichtige Layouts fehlen (du musst erst mal Code schreiben der die Steuerelemente mit skaliert und positioniert)</p>
</blockquote>
<p>das macht mana uch nur einmal, dann copy &amp; paste wenn nicht sogar eine eigene lib</p>
<p>Vertexwahn schrieb:</p>
<blockquote>
<p>- schlechte Unterstützung für C++ (du musst dir erst selber Wrapper klassen schreiben - der Code ist zwar schon Objektorientiert, aber es gibt keien Fertigen C++ Klassen)</p>
</blockquote>
<p>wie ich vorher sagte, man schreibt nur einmal einen eigenen wrapper, danach ist alles kinderleicht, dann hat man den vorteil der winapi alles direkt unter kontrolle zu haben + den vorteil den man in den eigenen wrapper mit zusammenbastelt</p>
<p>ich selber bin von der MFC zur pure WinAPI gewechselt, und nachdem mein wrapper fuer alle windows gui elemente fertig ist - ist das zusammenbauen kinderleicht - und colle kontrolle</p>
<p>ich hab mich auch absichtlich gegen alle diversen lib's entschieden - mein wrapper {welcher komplett c++ orientiert ist} und mein liebes cpp - alles praechtig {=</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255579</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Thu, 29 Mar 2007 19:14:01 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 19:19:33 GMT]]></title><description><![CDATA[<p>audacia schrieb:</p>
<blockquote>
<p>Der Aufwand für ein GUI ist, wenn du es ausschließlich mit WinAPI machst, unverhältnismäßig groß. Du bist damit von Windows abhängig - was aber bei den gängigsten Frameworks wie MFC und VCL, WinForms etc. genauso der Fall ist. Dafür hast du die exakte Kontrolle über alles. Da sich Details aber auch in Frameworks i.d.R. problemlos durch direkten WinAPI-Einsatz regeln lassen, sollte das ebenfalls kein Grund sein, auf ein anständiges Framework zu verzichten.</p>
</blockquote>
<p>Wobei man sagen muss das es eine Menge plattformunabhängige GUI Libs für C++ mittelerweile gibt.<br />
wxWidgets, GTKmm und QT sind nur 3 davon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255582</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Thu, 29 Mar 2007 19:19:33 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Thu, 29 Mar 2007 19:53:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20441">@Mr</a> Evil</p>
<p>könnte ich deinen Wrapper mal sehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255598</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Thu, 29 Mar 2007 19:53:13 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Fri, 30 Mar 2007 06:22:05 GMT]]></title><description><![CDATA[<p>wozu ?</p>
<p>im grunde besteht es daraus das man nur die klasse zb eine Buttonklasse subclasst {kann man auch erben} und dann die methoden benutzt</p>
<p>mal ein beispiel</p>
<p>ich habe</p>
<pre><code class="language-cpp">class CButtons{
private:
    HWND m_Handle;
    ELEMPOS m_Size;
public:
    CButtons(void);

    void Create(const _tstring&amp; strName, const ELEMPOS&amp; pos, HWND hwndMain, const unsigned int&amp; uiId);

    bool Destroy();
    bool SetPos(const ELEMPOS&amp; pos);
    bool SetText(const _tstring&amp; strName);
    bool SetFont(const unsigned int&amp; uiFont);
    bool SetFont(const HFONT&amp; Font);
    bool Enable();
    bool Disable();
    bool Show();
    bool Hide();
    bool SetFocus();

    _tstring Gettext() const;
    const HWND&amp; GetHandle() const;
    unsigned int GetID() const;
    HFONT GetFont() const;
    const ELEMPOS&amp; GetPos() const;
    unsigned int GetTextLen() const;
};
</code></pre>
<p>ELEMPOS ist dem RECT sehr aehnlich, nur das man links, oben, breite und hoehe angibt<br />
und _tstring ist ein typedef von std::string btw str::wstring</p>
<p>der einzigste aufruf ist dann in der main klasse<br />
CButtons m_ButtonA;</p>
<p>und dann in der OnCrate Prozedur</p>
<p>m_ButtonA.Create(_T(&quot;Main Button&quot;), ELEMPOS(10, 10, 70, 20), m_hWnd, ID_BUTTON);</p>
<p>dann ist der button an der position mit angegebener breite, verschieben oder groesse veraendern mit SetPos, oder andere font zuweisen mit SetFont usw<br />
standardmaessig wird der button immer mit der standard dialog font erstellt</p>
<p>alle methoden returniern bool oder string usw - wenn man das handle braucht reicht das *.GetHandle() usw</p>
<p>hier als beispiel ist nur der button, ich hatte mich mal mit jemanden von hier ueber meinen wrapper unterhalten per mail, war recht interessant</p>
<p>alle anderen windows elemente sind auch so aehnlich gepackt, evtl ein bool mehr oder weniger bei create und noch diverse funktionen das ich spaeter beim entwickeln nur noch minimalstes winapi brauch {zb hab ich fuer checkboxen &quot;OnClick()&quot; methoden wo ich in der main klass nur diese einmal aufrufen lassen muss usw}</p>
<p>fuer meine main klasse hab ich meine schablone - copy&amp;paste schon kann ich mich um die eigentlichen funktionen kuemmern</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1255738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1255738</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Fri, 30 Mar 2007 06:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to GUI-Entwicklung unter der WinAPI on Sat, 31 Mar 2007 08:01:11 GMT]]></title><description><![CDATA[<p>Hab mir auch mal ein GUI Framework gebastelt:</p>
<pre><code class="language-cpp">#include &quot;VertexwahnLib.h&quot;
using namespace Vertexwahn::GUI;

#define ORTHOGONAL_CAMERA_DISTANCE   900.0
#define ORTHOGONAL_CAMERA_NEAR_CLIP   300.0
#define ORTHOGONAL_CAMERA_FAR_CLIP   5000.0

class MyApplication : public Vertexwahn::Application::EventDriven
{
public:
	MyApplication() : MyWindow(L&quot;World Editor&quot;), 
		m_Ogre3DWidget1(10,10,200,200), m_Ogre3DWidget2(340,10,200,200), 
		m_Ogre3DWidget3(10,220,200,200), m_Ogre3DWidget4(340,220,200,200),
		tableLayout(0,0,400,400,2,2)
	{
		MyWindow.setDefaultCloseOperation(Vertexwahn::GUI::Window::EXIT_ON_CLOSE);

		tableLayout.add(&amp;m_Ogre3DWidget1,0,0);
		tableLayout.add(&amp;m_Ogre3DWidget2,0,1);
		tableLayout.add(&amp;m_Ogre3DWidget3,1,0);
		tableLayout.add(&amp;m_Ogre3DWidget4,1,1);
		tableLayout.m_ColumnWidthInPercentage.push_back(50);
		tableLayout.m_ColumnWidthInPercentage.push_back(50);
		tableLayout.m_RowHeightInPercentage.push_back(50);
		tableLayout.m_RowHeightInPercentage.push_back(50);
		tableLayout.setAnchor(RIGHT | LEFT | TOP |BOTTOM);

		MyWindow.setSize(600, 600);
		MyWindow.add(&amp;tableLayout);

		// Position and orient the cameras
		m_Ogre3DWidget1.getCamera()-&gt;setProjectionType(Ogre::PT_ORTHOGRAPHIC);
		m_Ogre3DWidget1.getCamera()-&gt;setFixedYawAxis(false);
		m_Ogre3DWidget1.getCamera()-&gt;setPosition(ORTHOGONAL_CAMERA_DISTANCE * Ogre::Vector3::UNIT_Y);
		m_Ogre3DWidget1.getCamera()-&gt;setDirection(Ogre::Vector3::NEGATIVE_UNIT_Y);
		m_Ogre3DWidget1.getCamera()-&gt;setNearClipDistance(ORTHOGONAL_CAMERA_NEAR_CLIP);
		m_Ogre3DWidget1.getCamera()-&gt;setFarClipDistance(ORTHOGONAL_CAMERA_FAR_CLIP);
		m_Ogre3DWidget1.getCamera()-&gt;setPolygonMode(Ogre::PM_WIREFRAME);
		m_Ogre3DWidget1.getCamera()-&gt;setAutoAspectRatio(true);

		m_Ogre3DWidget2.getCamera()-&gt;setProjectionType(Ogre::PT_ORTHOGRAPHIC);
		m_Ogre3DWidget2.getCamera()-&gt;setFixedYawAxis(false);
		m_Ogre3DWidget2.getCamera()-&gt;setPosition(ORTHOGONAL_CAMERA_DISTANCE * Ogre::Vector3::NEGATIVE_UNIT_X);
		m_Ogre3DWidget2.getCamera()-&gt;setDirection(Ogre::Vector3::UNIT_X);
		m_Ogre3DWidget2.getCamera()-&gt;setNearClipDistance(ORTHOGONAL_CAMERA_NEAR_CLIP);
		m_Ogre3DWidget2.getCamera()-&gt;setFarClipDistance(ORTHOGONAL_CAMERA_FAR_CLIP);
		m_Ogre3DWidget2.getCamera()-&gt;setPolygonMode(Ogre::PM_WIREFRAME);

		m_Ogre3DWidget3.getCamera()-&gt;setProjectionType(Ogre::PT_ORTHOGRAPHIC);
		m_Ogre3DWidget3.getCamera()-&gt;setFixedYawAxis(false);
		m_Ogre3DWidget3.getCamera()-&gt;setPosition(ORTHOGONAL_CAMERA_DISTANCE * Ogre::Vector3::UNIT_Z);
		m_Ogre3DWidget3.getCamera()-&gt;setDirection(Ogre::Vector3::NEGATIVE_UNIT_Z);
		m_Ogre3DWidget3.getCamera()-&gt;setNearClipDistance(ORTHOGONAL_CAMERA_NEAR_CLIP);
		m_Ogre3DWidget3.getCamera()-&gt;setFarClipDistance(ORTHOGONAL_CAMERA_FAR_CLIP);
		m_Ogre3DWidget3.getCamera()-&gt;setPolygonMode(Ogre::PM_WIREFRAME);

		m_Ogre3DWidget4.getCamera()-&gt;setPosition(-55.0, 40.0, 140.0);
		m_Ogre3DWidget4.getCamera()-&gt;lookAt(-10.0, 20.0, 5.0);
		m_Ogre3DWidget4.getCamera()-&gt;setNearClipDistance(5.0);
		m_Ogre3DWidget4.getCamera()-&gt;setFarClipDistance(5000.0);
		m_Ogre3DWidget4.getCamera()-&gt;setAutoAspectRatio(true);

		MyWindow.show();
	}

private:
	Window								MyWindow;
	Vertexwahn::GUI::TableLayout		tableLayout;
	Ogre3DWidget						m_Ogre3DWidget1;
	Ogre3DWidget						m_Ogre3DWidget2;
	Ogre3DWidget						m_Ogre3DWidget3;
	Ogre3DWidget						m_Ogre3DWidget4;
};
</code></pre>
<p>Hier ein Screenshot<br />
<a href="http://loop.servehttp.com/~vertexwahn/uploads/editor3.PNG" rel="nofollow">http://loop.servehttp.com/~vertexwahn/uploads/editor3.PNG</a></p>
<p>Problem hierbei ist halt das ich ein eigenes Framework entwickelt habe, das nur ich kenne - hätte ich jetzt z. B. Qt verwendet oder GTK++ oder ein bekanntes anderes GUI Framework, dann hätten es andere Entwickler nicht so schwer sich in meinem Code zurecht zu finden. Außerdem stecken bestimmt noch einige Bugs im Framework, die Größtenteils nur durch mich gefixt werden können, da ich das Detailwissen habe - das lenkt mich von meinem eigentlichen Vorhaben noch weiter ab und es kostet mich Stunden ein Steuerelement wie eine TreeView Control zu integrieren. Naja - die WinAPI zu wrappern ist nicht immer die beste Lösung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1256414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1256414</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Sat, 31 Mar 2007 08:01:11 GMT</pubDate></item></channel></rss>