{"id":1076,"date":"2000-12-13T17:12:13","date_gmt":"2000-12-13T08:12:13","guid":{"rendered":"http:\/\/terzeron.com\/?p=1076"},"modified":"2000-12-13T17:12:13","modified_gmt":"2000-12-13T08:12:13","slug":"x-window-top-level-widget%ec%9d%98-%ec%a2%85%ec%86%8d-%ea%b4%80%ea%b3%84-%ec%a7%80%ec%a0%95%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/terzeron.com\/?p=1076","title":{"rendered":"[X Window] Top-level widget\uc758 \uc885\uc18d \uad00\uacc4 \uc9c0\uc815\ud558\uae30"},"content":{"rendered":"<p>[ CnUnix ] in KIDS<br \/>\n\uae00 \uc4f4 \uc774(By): burp (spider)<br \/>\n\ub0a0 \uc9dc (Date): 2000\ub144 12\uc6d4 12\uc77c \ud654\uc694\uc77c \uc624\ud6c4 08\uc2dc 23\ubd84 41\ucd08<br \/>\n\uc81c \ubaa9(Title): [Q] Multiple Top-Level Windows<\/p>\n<p>\uc81c\uac00 \uc544\ub798\ucc98\ub7fc \ub3d9\uc2dc\uc5d0 \ucc3d\uc774 \ub450\uac1c \ub728\ub3c4\ub85d Motif\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud504\ub85c\uadf8\ub7a8\uc744 \uad6c\uc131\ud558\uc600\uc74d\ub2c8\ub2e4. create_window()\uacfc create_textShell()\ub294 \uac01\uac01 \uadf8\ub9bc\uc744 \uadf8\ub9ac\ub294 \ucc3d\uacfc \uba54\uc2dc\uc9c0\ub97c<br \/>\n\ubcf4\uc5ec\uc8fc\ub294 \ucc3d\uc744 \uad6c\ud604\ud558\ub294 \uc81c\uac00 \uc815\uc758\ud55c \ud568\uc218 \uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"brush: php\">Widget m_TopLevel, m_TextShell;\n\nint main()\n{\nm_TopLevel = XtVaAppInitialize(&app, \"XDWT\", (XrmOptionDescList) NULL,\n0, (int*) &argc, argv, fallbackResources, NULL, 0);\ncreate_window(m_TopLevel);\n\nm_TextShell = XtVaAppCreateShell(NULL, \"XDWT-MESSAGE\",\ntopLevelShellWidgetClass, XtDisplay(m_TopLevel),\nXmNallowResize, True, NULL);\ncreate_textShell(m_TextShell, \"output message\");\n\nXtRealizeWidget(m_TopLevel);\nXtRealizeWidget(m_TextShell);\n\nXtAppMainLoop(app);\n\nreturn 0; \/* ANSI C requires main to return int. *\/\n}<\/pre>\n<p>\uc774 \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\uba74 \ub450\uac1c\uc758 \ucc3d\uc774 \ub739\ub2c8\ub2e4. \uadf8\ub7f0\ub370 \ud14d\uc2a4\ud2b8 \ucd9c\ub825\uc744 \uc704\ud55c m_TextShell\uc744 \uc708\ub3c4\uc6b0 \ud0c0\uc774\ud2c0 \uc606\uc5d0\uc788\ub294 &#8216;X&#8217;\ud45c\ub97c \ub20c\ub7ec \uc8fd\uc774\uba74 &#8220;Warning: XtRemoveGrab asked to remove a widget not on the list&#8221;\ub77c\ub294 Warning\uc774 \ub098\uc635\ub2c8\ub2e4.<\/p>\n<p>\uc800\ub294 m_TextShell\uc5d0 pushbutton\uc744 \ub2ec\uc544\uc11c \uc774\uac78 \ub204\ub974\uba74 XtUnrealizeWidget(m_TextShell)\uc744 \uc2e4\ud589\ud558\uc5ec \ucc3d\uc744 \ubcf4\uc774\uac8c \ud588\ub2e4 \uc548\ubcf4\uc774\uac8c \ud588\ub2e4\ud558\ub294\ub370 \uc0ac\uc6a9\uc790\uac00 \uc55e\uc5d0\uc11c \uc5b8\uae09\ud55c \uac83 \ucc98\ub7fc &#8216;X&#8217;\ud45c\ub97c \ub20c\ub7ec\ubc84\ub9ac\uba74 XtRealizeWidget(m_TextShell) \uc2e4\ud589\uc2dc \ud504\ub85c\uadf8\ub7a8\uc774 \uc8fd\uac8c \ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uacbd\uc6b0\ub294 \uc5b4\ub5bb\uac8c \ud574\uc57c \ud569\ub2c8\uae4c?<\/p>\n<p>\uc81c\uac00 \uac00\uc9c0\uace0 \uc788\ub294 \ucc45\uc5d0\uc11c\ub294 \ub2f5\uc774 \ubcf4\uc774\uc9c0\ub97c \uc54a\ub294\uad70\uc694. \uc606\uc5d0 Motif\ub97c \ud558\ub294 \uc0ac\ub78c\ub3c4<br \/>\n\uc5c6\uace0 &#8230;TT&#8230;<\/p>\n<p>\uace0\uc218\ub2d8\ub4e4 \ub3c4\uc640\uc8fc\uc2ed\uc2dc\uc624..<br \/>\n\uc77d\uc5b4\uc8fc\uc2e0 \ubd84\ub4e4\uaed8 \uac10\uc0ac\ub97c \ub4dc\ub9ac\uba70.<\/p>\n<p>[ CnUnix ] in KIDS<br \/>\n\uae00 \uc4f4 \uc774(By): terzeron (microkid)<br \/>\n\ub0a0 \uc9dc (Date): 2000\ub144 12\uc6d4 13\uc77c \uc218\uc694\uc77c \uc624\ud6c4 04\uc2dc 47\ubd84 32\ucd08<br \/>\n\uc81c \ubaa9(Title): Re: [Q] Multiple Top-Level Windows<\/p>\n<p>\ucf54\ub4dc\uac00 \uc77c\ubd80\ub9cc \uc788\uc5b4\uc11c create_textShell\uc5d0\uc11c \uc5b4\ub5a4 API\ub97c \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c \uc218 \uc5c6\uc73c\ub098, \uc9c0\uae08 \uc788\ub294 \ucf54\ub4dc\ub9cc \uac00\uc9c0\uace0 \uc9d0\uc791\ud558\uae30\uc5d0\ub294 top level \uc704\uc9d3\uacfc text shell \uc704\uc9d3\uacfc\uc758 \uc885\uc18d\uad00\uacc4\uac00 \uba85\uc2dc\ub418\uc9c0 \uc54a\uc544\uc11c \uadf8\ub7f0 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud558\ub294 \uac83\uc774 \uc544\ub2d0\uae4c \uc9d0\uc791\ud574 \ubd05\ub2c8\ub2e4.<\/p>\n<p>\ub300\uac1c\ub294 top level \uc704\uc9d3\uacfc text shell \uc704\uc9d3\uc774 *CreateManagedWidget()\uc744 \uc774\uc6a9\ud558\uc5ec \uc885\uc18d\uad00\uacc4\ub97c \uba85\uc2dc\ud558\uac8c \ub418\ub294\ub370, \uc5ec\uae30\uc11c\ub294 top level \uc704\uc9d3\uc774 text shell\uc744 \ubaa8\ub974\uae30 \ub54c\ubb38\uc5d0 \uadf8\ub7f0 \uacbd\uace0\uba54\uc2dc\uc9c0\uac00 \ub728\ub294 \uac83 \uac19\uad70\uc694.<\/p>\n<p>\uadf8\ub7ec\ub098 \uc774 \uacbd\uace0 \uba54\uc2dc\uc9c0 \uc790\uccb4\ub294 \ud06c\ub9ac\ud2f0\uceec\ud55c \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4. \uc5ec\ub7ec \uc751\uc6a9 \ud504\ub85c\uadf8\ub7a8\uc5d0\uc11c \uc774\ub7f0 \uba54\uc2dc\uc9c0\uac00 \ub098\uc624\uae30\ub3c4 \ud558\uace0 \uc2ec\uc9c0\uc5b4\ub294 \ubaa8\ud2f0\ud504\uc758 \ud074\ub860\uc778 lesstif\uc5d0\uc11c\ub3c4 \uc774\ub7f0 \uacbd\uace0\uac00 \uc790\uc8fc \ub728\uae30\ub3c4 \ud569\ub2c8\ub2e4\ub9cc, \ubb34\uc2dc\ud574\ub3c4 \ub41c\ub2e4\uace0 \ud558\ub294\uad70\uc694. \ud31d\uc5c5\uacc4\uc5f4\uc758 \uc704\uc9d3\uc744 \uad00\ub9ac\ud558\ub294 \ucf54\ub4dc\uc5d0\uc11c \uc774\ub7f0 \uacbd\uace0 \uba54\uc2dc\uc9c0\uac00 \ub9ce\uc774 \ubc1c\uc0dd\ud558\ub294 \uac83\uc73c\ub85c \uc54c\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc644\uc804\ud55c \uc18c\uc2a4\ucf54\ub4dc\ub97c \uc62c\ub824\ubcf4\uc2dc\uba74 \ub2e4\ub978 \ubd84\ub4e4\ub3c4 \uc190\uc27d\uac8c \ud14c\uc2a4\ud2b8\ud558\uc2e4 \uc218 \uc788\uc9c0 \uc54a\uc744\uae4c\uc694?<\/p>\n<p>\ub9cc\uc57d, XtVaCreateManagedWidget()\ud568\uc218\ub97c \uc4f0\uc9c0 \uc54a\uc73c\uc2e0\ub2e4\uba74 XtVaCreateManagedWidget() \ud568\uc218\ub97c \uc368\ubcf4\uc2dc\ub294 \uac83\ub3c4 \uc88b\uc744 \ub4ef \uc2f6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>[ CnUnix ] in KIDS<br \/>\n\uae00 \uc4f4 \uc774(By): burp (spider)<br \/>\n\ub0a0 \uc9dc (Date): 2000\ub144 12\uc6d4 13\uc77c \uc218\uc694\uc77c \uc624\ud6c4 05\uc2dc 12\ubd84 11\ucd08<br \/>\n\uc81c \ubaa9(Title): Re: [Q] Multiple Top-Level Windows<\/p>\n<p>terzeron \ub2d8\uc774 \ub9d0\uc500\ud558\uc2e0\ub300\ub85c m_TopLevel\uacfc m_TextShell\uacfc\uc758 \uc885\uc18d\uad00\uacc4\uac00 \ucf54\ub4dc\uc5d0<br \/>\n\uba85\uc2dc\ub418\uc5b4\uc788\uc9c0 \uc54a\uc558\ub124\uc694.<\/p>\n<p>\ub450 \uc704\uc82f\uc0ac\uc774\uc758 \uad00\uacc4\ub77c\uace0\ub294 \ub2ec\ub791<\/p>\n<pre class=\"brush: php\">m_TextShell = XtVaAppCreateShell(NULL, \"XDWT-MESSAGE\",\ntopLevelShellWidgetClass, XtDisplay(m_TopLevel), XmNallowResize, True, NULL);<\/pre>\n<p>\uc5d0\uc11c m_TopLevel\uc758 display\ub9cc \uac00\uc838\uc624\ub294 \uac78\ub85c \ub418\uc5b4\uc788\uad70\uc694.<\/p>\n<p>\uc55e\uae00\uc5d0\uc11c \uc0dd\ub7b5\ud588\ub358 \ud568\uc218 \ub0b4\uc6a9\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"brush: php\">void create_textShell(Widget parent, char *app_class)\n{\nArg args[10];\nCardinal n;\nWidget pane, push;\n\n\/\/ Create paned window\nn = 0;\npane = XmCreatePanedWindow(parent, \"pane\", args, n);\n\/\/ Attach text window to paned window\nn = 0;\nXtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++;\nXtSetArg(args[n], XmNeditable, False); n++;\nXtSetArg(args[n], XmNcolumns, 80); n++;\nXtSetArg(args[n], XmNrows, 7); n++;\nm_textarea = XmCreateScrolledText(pane, app_class, args, n);\nXtManageChild(m_textarea);\n\/\/ Attach pushbutton to paned window.\nn = 0;\npush = XmCreatePushButton(pane, \"close\", args, n);\n\/\/ Add pushbutton callback function\nXtAddCallback(push, XmNactivateCallback, close_text, m_textarea);\n\/\/ Manage unmanaged child window\nXtManageChild(push);\nXtManageChild(pane);\n\/\/ Handle WM_DELETE_WINDOW message <- \uc81c\uac00 \ucd94\uac00\ud574 \ubc14\ub85c\uc7a1\uc740 \ubd80\ubd84\uc785\ub2c8\ub2e4\nhandle_WM_DELETE_WINDOW_message(parent, pane);\n}<\/pre>\n<p>\uac8c\ub2e4\uac00 \uc800\ub294 lesstif\ub97c \uc4f0\uace0 \uc788\uc73c\ub2c8.. ^^;;;; \uc5ec\uae30\uc800\uae30 \uc0bd\uc9c8\ud558\ub2c8 \ud574\uacb0\ucc45\uc774 \ub098\uc624\uae34 \ud588\uc74d\ub2c8\ub2e4. \uc544\ub798\uc758 \ud568\uc218\ub97c \ub9cc\ub4e4\uc5b4 \uc704\uc5d0\uc11c\ucc98\ub7fc \ud574\uc8fc\ub2c8 'X'\ud45c\ub97c \ub204\ub97c\ub54c \uc0dd\uc131\ub418\ub294 WM_DELETE_WINDOW \uba54\uc2dc\uc9c0\uac00 \ubc1c\uc0dd\ud558\uba74 \uc81c\uac00 \ub9cc\ub4e0 close_text() \ud568\uc218\ub97c \uc2e4\ud589\ud558\ub3c4\ub85d \ud560 \uc218 \uc788\uc5c8\uc74d\ub2c8\ub2e4.<\/p>\n<pre class=\"brush: php\">static Atom wm_delete_window = (Atom) None;\n\nvoid handle_WM_DELETE_WINDOW_message(Widget parent, Widget child)\n{\nXtVaSetValues(parent, XmNdeleteResponse, XmDO_NOTHING);\nset_WMProtocols(parent, (XtCallbackProc)close_text, (XtPointer)child);\n}\n\nvoid set_WMProtocols(Widget shell, XtCallbackProc callback, XtPointer\nclient_data)\n{\n\/\/ Intern atom if necessary\nif(wm_delete_window == (Atom) None) {\nwm_delete_window =\nXmInternAtom(XtDisplay(shell), \"WM_DELETE_WINDOW\", False);\n}\n\/\/ Check if interned\nif(wm_delete_window == (Atom) None)\nreturn;\n\/\/ Setup protocol\nXmAddWMProtocols(shell, &wm_delete_window, 1);\n\/\/ Setup protocol callback\nXmAddWMProtocolCallback(shell, wm_delete_window, callback, client_data);\n}<\/pre>\n<p>\ud639\uc2dc XtVaAppCreateShell\ub85c \uc0dd\uc131\ud55c \ud14d\uc2a4\ud2b8 \uc708\ub3c4\uc6b0\uc758 \uc704\uce58\ub97c (0,0)\uc774 \uc544\ub2cc \uacf3\uc5d0\uc11c<br \/>\n\uc2dc\uc791\ud558\ub824\uba74 \uc5b4\ucc0c\ud574\uc57c \ud558\ub294\uc9c0 \uc54c\uace0\uacc4\uc2e0 \ubd84 \uc788\ub098\uc694?<\/p>\n<p>\uc5d0\uad81 \uc9c8\ubb38\ub9cc \ud558\ub294\uad6c\ub098 .. \ub2f9\ubd84\uac04 \uc9c8\ubb38\uc744 \uc790\uc81c\ud574\uc57c \uaca0\ub124\uc694.. \uc81c\uac00 \ud558\ub294 \ubc29\ud5a5\uc774 \ub9de\ub294\uac74\uc9c0 \uc090\uafb8\ub85c \uac00\ub294\uac74\uc9c0 \ud63c\uc790 \uacf5\ubd80\ud558\ub294\uac70\ub77c \ud655\uc2e0\uc774 \uc548\uc11c\ub294\uad70\uc694.<\/p>\n<div class=\"fb-background-color\">\n\t\t\t  <div \n\t\t\t  \tclass = \"fb-comments\" \n\t\t\t  \tdata-href = \"https:\/\/terzeron.com\/?p=1076\"\n\t\t\t  \tdata-numposts = \"100\"\n\t\t\t  \tdata-lazy = \"true\"\n\t\t\t\tdata-colorscheme = \"light\"\n\t\t\t\tdata-order-by = \"time\"\n\t\t\t\tdata-mobile=true>\n\t\t\t  <\/div><\/div>\n\t\t  <style>\n\t\t    .fb-background-color {\n\t\t\t\tbackground: #ffffff !important;\n\t\t\t}\n\t\t\t.fb_iframe_widget_fluid_desktop iframe {\n\t\t\t    width: 100% !important;\n\t\t\t}\n\t\t  <\/style>\n\t\t  ","protected":false},"excerpt":{"rendered":"<p>[ CnUnix ] in KIDS \uae00 \uc4f4 \uc774(By): burp (spider) \ub0a0 \uc9dc (Date): 2000\ub144 12\uc6d4 12\uc77c \ud654\uc694\uc77c \uc624\ud6c4 08\uc2dc 23\ubd84 41\ucd08 \uc81c \ubaa9(Title): [Q] Multiple Top-Level Windows \uc81c\uac00 \uc544\ub798\ucc98\ub7fc \ub3d9\uc2dc\uc5d0 \ucc3d\uc774 \ub450\uac1c \ub728\ub3c4\ub85d Motif\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud504\ub85c\uadf8\ub7a8\uc744 \uad6c\uc131\ud558\uc600\uc74d\ub2c8\ub2e4. create_window()\uacfc create_textShell()\ub294 \uac01\uac01 &hellip; <a href=\"https:\/\/terzeron.com\/?p=1076\">\uacc4\uc18d \uc77d\uae30 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"categories":[13,14],"tags":[],"class_list":["post-1076","post","type-post","status-publish","format-standard","hentry","category-programming","category-unixlinux"],"_links":{"self":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts\/1076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1076"}],"version-history":[{"count":0,"href":"https:\/\/terzeron.com\/index.php?rest_route=\/wp\/v2\/posts\/1076\/revisions"}],"wp:attachment":[{"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/terzeron.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}