Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Daniel Franklin <joshuadfranklin@yahoo.com>2003-04-26 18:10:59 +0400
committerJoshua Daniel Franklin <joshuadfranklin@yahoo.com>2003-04-26 18:10:59 +0400
commit3c7197b104440217b34e36d7366ff8ebd299ca99 (patch)
treef347ac821c10938426132b4c3f2344ffa7cbcb5a /winsup/doc
parenta5035abfac1e155a4d15cbca22966ff0b8331081 (diff)
* gcc.sgml: Remove outdated "WinMainCRTStartup" references. Add a hellogui.c example
Diffstat (limited to 'winsup/doc')
-rw-r--r--winsup/doc/ChangeLog5
-rw-r--r--winsup/doc/gcc.sgml98
2 files changed, 92 insertions, 11 deletions
diff --git a/winsup/doc/ChangeLog b/winsup/doc/ChangeLog
index fad87057b..2a957d5f8 100644
--- a/winsup/doc/ChangeLog
+++ b/winsup/doc/ChangeLog
@@ -1,3 +1,8 @@
+2003-04-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
+
+ * gcc.sgml: Remove outdated "WinMainCRTStartup" references. Add a
+ hellogui.c example.
+
2003-03-26 Joshua Daniel Franklin <joshuadfranklin@yahoo.com>
* setup-net.sgml: Make suggested additions to setup.exe documentation
diff --git a/winsup/doc/gcc.sgml b/winsup/doc/gcc.sgml
index 238babfa3..a67865de3 100644
--- a/winsup/doc/gcc.sgml
+++ b/winsup/doc/gcc.sgml
@@ -38,17 +38,6 @@ int
foo (int i)
</screen>
-<para>For most cases, you can just remove the __export and leave it at
-that. For convenience sake, you might want to include the following
-code snippet when compiling GUI programs. If you don't, you will want
-to add "-e _mainCRTStartup" to your link line in your Makefile.</para>
-
-<screen>
-#ifdef __CYGWIN__
-WinMainCRTStartup() { mainCRTStartup(); }
-#endif
-</screen>
-
<para>The Makefile is similar to any other UNIX-like Makefile,
and like any other Cygwin makefile. The only difference is that you use
<command>gcc -mwindows</command> to link your program into a GUI
@@ -74,5 +63,92 @@ handle Windows resource files directly, we maintain the
<filename>.res</filename> naming convention. For more information on
<filename>windres</filename>, consult the Binutils manual. </para>
+<para>
+The following is a simple GUI-mode "Hello, World!" program to help
+get you started:
+<screen>
+/*-------------------------------------------------*/
+/* hellogui.c - gui hello world */
+/* build: gcc -mwindows hellogui.c -o hellogui.exe */
+/*-------------------------------------------------*/
+#include &lt;windows.h&gt;
+
+char glpszText[1024];
+
+LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
+
+int APIENTRY WinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPSTR lpCmdLine,
+ int nCmdShow)
+{
+ sprintf(glpszText,
+ "Hello World\nGetCommandLine(): [%s]\n"
+ "WinMain lpCmdLine: [%s]\n",
+ lpCmdLine, GetCommandLine() );
+
+ WNDCLASSEX wcex;
+
+ wcex.cbSize = sizeof(wcex);
+ wcex.style = CS_HREDRAW | CS_VREDRAW;
+ wcex.lpfnWndProc = WndProc;
+ wcex.cbClsExtra = 0;
+ wcex.cbWndExtra = 0;
+ wcex.hInstance = hInstance;
+ wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
+ wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
+ wcex.lpszMenuName = NULL;
+ wcex.lpszClassName = "HELLO";
+ wcex.hIconSm = NULL;
+
+ if (!RegisterClassEx(&amp;wcex))
+ return FALSE;
+
+ HWND hWnd;
+ hWnd = CreateWindow("HELLO", "Hello", WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);
+
+ if (!hWnd)
+ return FALSE;
+
+ ShowWindow(hWnd, nCmdShow);
+ UpdateWindow(hWnd);
+
+ MSG msg;
+ while (GetMessage(&amp;msg, NULL, 0, 0))
+ {
+ TranslateMessage(&amp;msg);
+ DispatchMessage(&amp;msg);
+ }
+
+ return msg.wParam;
+}
+
+LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ PAINTSTRUCT ps;
+ HDC hdc;
+
+ switch (message)
+ {
+ case WM_PAINT:
+ hdc = BeginPaint(hWnd, &amp;ps);
+ RECT rt;
+ GetClientRect(hWnd, &amp;rt);
+ DrawText(hdc, glpszText, strlen(glpszText), &amp;rt, DT_TOP | DT_LEFT);
+ EndPaint(hWnd, &amp;ps);
+ break;
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ break;
+ default:
+ return DefWindowProc(hWnd, message, wParam, lParam);
+ }
+ return 0;
+}
+</screen>
+</para>
+
</sect2>
</sect1>