{"id":217,"date":"2010-01-12T23:07:39","date_gmt":"2010-01-12T17:37:39","guid":{"rendered":"http:\/\/techtwaddle.net\/?p=217"},"modified":"2011-04-12T23:08:23","modified_gmt":"2011-04-12T17:38:23","slug":"fun-with-menus-part-ii-radio-menu-items-and-checkmenuradioitem","status":"publish","type":"post","link":"https:\/\/techtwaddle.co.in\/blog\/2010\/01\/12\/fun-with-menus-part-ii-radio-menu-items-and-checkmenuradioitem\/","title":{"rendered":"Fun with menus Part II, Radio Menu Items and CheckMenuRadioItem()"},"content":{"rendered":"<p>Previously &#8211; <a href=\"http:\/\/geekswithblogs.net\/TechTwaddle\/archive\/2009\/07\/09\/fun-with-menus.aspx\">Fun with menus &#8211; Part I<\/a><\/p>\n<p style=\"text-align: justify;\">A few days back I set about trying to get radio items into menus. This is helpful if you want only one of the items in the menu to be active at a time, say, for e.g. a &quot;<strong><em>Select Level<\/em><\/strong>&quot; popup menu which has &quot;<strong><em>Level 1<\/em><\/strong>&quot;, &quot;<strong><em>Level 2<\/em><\/strong>&quot; and &quot;<strong><em>Level 3<\/em><\/strong>&quot; subitems and only one of them needs to be shown as active or currently selected. You get the idea. No? Here, this pic should help,<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" width=\"241\" height=\"194\" border=\"1\" src=\"\/images\/geekswithblogs_net\/TechTwaddle\/RadioMenuItem\/RadioMenu.jpg\" alt=\"Radio Menu Items\" \/>&nbsp;<\/p>\n<p style=\"text-align: justify;\">A bit of searching led me to the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa922587.aspx\">CheckMenuRadioItem()<\/a> API, and I thought, this is simple. I just need to get the handle to the popup menu, and pass the identifier of the subitem I want selected. And done. Turns out &#8216;<em>get the handle to the popup menu<\/em>&#8216; part isn&#8217;t very straight forward.<\/p>\n<p style=\"text-align: justify;\">For future references in this post, here is the menu bar and the popup menu that I used in the resource script (refer pic above)<\/p>\n<p>the menubar,<br \/>\n<span style=\"color: rgb(0, 0, 128);\">IDR_MENU SHMENUBAR DISCARDABLE<br \/>\nBEGIN<br \/>\n&nbsp;&nbsp;&nbsp; IDR_MENU_POPUP, <br \/>\n&nbsp;&nbsp;&nbsp; 2,<br \/>\n&nbsp;&nbsp;&nbsp; I_IMAGENONE, IDM_OK, TBSTATE_ENABLED, TBSTYLE_BUTTON | TBSTYLE_AUTOSIZE, IDS_OK, 0, NOMENU,<br \/>\n&nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; I_IMAGENONE, IDR_MENU_POPUP, TBSTATE_ENABLED, TBSTYLE_DROPDOWN | TBSTYLE_AUTOSIZE,<br \/>\n&nbsp;&nbsp;&nbsp; IDS_MENU, 0, 0,<br \/>\nEND<\/span><\/p>\n<p>the popup menu,<br \/>\n<span style=\"color: rgb(0, 0, 128);\">IDR_MENU_POPUP MENU DISCARDABLE <br \/>\nBEGIN<br \/>\n&nbsp;&nbsp;&nbsp; POPUP &quot;Menu&quot;<br \/>\n&nbsp;&nbsp;&nbsp; BEGIN<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEM &quot;Toolbox..&quot;,&nbsp;&nbsp;&nbsp; IDM_MENU_TOOLBOX<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; POPUP &quot;Speed&quot;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; BEGIN<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEM &quot;8x&quot;,&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IDM_MENU_8X<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEM &quot;16x&quot;,&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IDM_MENU_16X<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEM &quot;32x&quot;,&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IDM_MENU_32X<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; END<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEM &quot;Settings..&quot;,&nbsp;&nbsp;&nbsp; IDM_MENU_SETTINGS<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEM SEPARATOR<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MENUITEM &quot;Exit&quot;,&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; IDM_MENU_EXIT<br \/>\n&nbsp;&nbsp;&nbsp; END<br \/>\nEND<\/span><br \/>\n&nbsp;<\/p>\n<p><strong><span style=\"color: rgb(0, 51, 0);\">What I did wrong<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\">I looked up the functions available with menus and it seemed easy, <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa922542.aspx\">LoadMenu()<\/a>, <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa932749.aspx\">GetSubMenu()<\/a> and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa922587.aspx\">CheckMenuRadioItem()<\/a> should do the trick, so here is the handler for the menuitem &#8216;<span style=\"color: rgb(0, 0, 128);\">8x<\/span>&#8216;, under <span style=\"color: rgb(0, 0, 128);\">WM_COMMAND<\/span>; the handler tries to set &#8216;<span style=\"color: rgb(0, 0, 128);\">8x<\/span>&#8216; as the current selection,<\/p>\n<p><span style=\"color: rgb(0, 0, 128);\">case IDM_MENU_8X:<br \/>\n&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; HMENU hMenu = NULL, hSubMenu = NULL, hSubSubMenu = NULL;<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style=\"color: rgb(51, 153, 102);\">\/\/handle to the menu bar<\/span><br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hMenu = LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_MENU_POPUP));<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (hMenu)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; TCHAR szText[128] = TEXT(&quot;&quot;);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int i = -1;<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style=\"color: rgb(51, 153, 102);\">\/\/handle to the menu &quot;Menu&quot;<\/span><br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hSubMenu = GetSubMenu(hMenu, 0);<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; MENUITEMINFO mii;<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ZeroMemory(&amp;mii, sizeof(mii));<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.cbSize = sizeof(MENUITEMINFO);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.fMask = MIIM_TYPE;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.fType = MFT_STRING;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.dwTypeData = szText;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.cch = 127;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i = GetMenuItemInfo(hSubMenu, 1, TRUE, &amp;mii); <span style=\"color: rgb(51, 153, 102);\">\/\/ mii.dwTypeData = &quot;Speed&quot;<\/span><\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ZeroMemory(&amp;mii, sizeof(mii));<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.cbSize = sizeof(MENUITEMINFO);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.fMask = MIIM_TYPE;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.fType = MFT_STRING;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.dwTypeData = szText;<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mii.cch = 127;<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style=\"color: rgb(51, 153, 102);\">\/\/handle to the menu &quot;Speed&quot;<\/span><br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hSubSubMenu = GetSubMenu(hSubMenu, 1);<\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i = GetMenuItemInfo(hSubSubMenu, 1, TRUE, &amp;mii); <span style=\"color: rgb(51, 153, 102);\">\/\/mii.dwTypeData = &quot;16X&quot;<\/span><\/p>\n<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; i = CheckMenuRadioItem(hSubSubMenu, IDM_MENU_8X, IDM_MENU_32X, IDM_MENU_8X, MF_BYCOMMAND);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp; break;<\/span><br \/>\n&nbsp;<\/p>\n<p style=\"text-align: justify;\"><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa926165.aspx\">GetMenuItemInfo()<\/a> api and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa933001.aspx\">MENUITEMINFO<\/a> structure were used while debugging, just to make sure that the menu handles that I was getting were the right ones. All API calls <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa922542.aspx\">LoadMenu()<\/a>, <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa932749.aspx\">GetSubMenu()<\/a> and <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa922587.aspx\">CheckMenuRadioItem()<\/a> were successful, from the return values at least. There was one problem however, the radio item &#8216;dot&#8217; never showed up. Then I tried to experiment a bit with getting menu handles by position, the result still the same. When I ran out of tricks to pull, I tried to set the radio menu using <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa930764.aspx\">SetMenuItemInfo()<\/a>, and a few random variations of <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa932749.aspx\">GetSubMenu()<\/a> by menu identifier and by position etc. Darn thing never showed up! It all meant one thing only, there must be something wrong with the menu handles themselves, even though they were valid.<\/p>\n<p>\n<strong><span style=\"color: rgb(0, 51, 0);\">The right way<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\">So next I looked up the samples that ship with the SDK and found a <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb158743.aspx\">CECamera<\/a> sample that made use of radio menu items. From what I could tell, it looked like <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa922542.aspx\">LoadMenu()<\/a> isn&#8217;t the right way to get a handle to the main popup menu. Under <span style=\"color: rgb(0, 0, 128);\">WM_CREATE <\/span>message when you are setting up the application and creating the menu bar using <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa931828.aspx\">SHCreateMenuBar()<\/a>, you also do the following,<\/p>\n<p><span style=\"color: rgb(0, 0, 128);\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!SHCreateMenuBar(&amp;mbi)) <br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_hWndMenuBar = NULL;<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g_hWndMenuBar = mbi.hwndMB;<\/span><span style=\"color: rgb(0, 0, 128);\">&nbsp;<\/span><\/p>\n<p><span style=\"color: rgb(0, 0, 128);\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color: rgb(51, 153, 102);\">\/\/get a handle to the main popup menu<\/span><br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; g_hMainMenu = (HMENU)SendMessage(mbi.hwndMB, SHCMBM_GETSUBMENU, 0, IDR_MENU_POPUP);<\/span><\/p>\n<p><span style=\"color: rgb(0, 0, 128);\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color: rgb(51, 153, 102);\">\/\/set the default selection to 8x<\/span><br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; hSubMenu = GetSubMenu(g_hMainMenu, 1);<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; CheckMenuRadioItem(hSubMenu, IDM_MENU_8X, IDM_MENU_32X, IDM_MENU_8X, MF_BYCOMMAND);<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<\/span><br \/>\n&nbsp;<\/p>\n<p style=\"text-align: justify;\">So you send a message to the main menubar window, asking for the popup menu handle using <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/aa928121.aspx\">SHCMBM_GETSUBMENU<\/a>. <span style=\"color: rgb(0, 0, 128);\">g_hMainMenu<\/span> and <span style=\"color: rgb(0, 0, 128);\">hSubMenu<\/span> are both <span style=\"color: rgb(0, 0, 128);\">HMENU<\/span>&nbsp;types. When the application showed up &#8216;<span style=\"color: rgb(0, 0, 128);\">8x<\/span>&#8216; was selected by default. The handlers for <span style=\"color: rgb(0, 0, 128);\">16x<\/span> and <span style=\"color: rgb(0, 0, 128);\">32x<\/span> set themselves as the current selection, so under <span style=\"color: rgb(0, 0, 128);\">WM_COMMAND<\/span> we have,<\/p>\n<p><span style=\"color: rgb(0, 0, 128);\">case IDM_MENU_8X:&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br \/>\n&nbsp;&nbsp;&nbsp; hSubMenu = GetSubMenu(g_hMainMenu, 1);<br \/>\n&nbsp;&nbsp;&nbsp; CheckMenuRadioItem(hSubMenu, IDM_MENU_8X, IDM_MENU_32X, IDM_MENU_8X, MF_BYCOMMAND);<br \/>\n&nbsp;&nbsp;&nbsp; break;<\/p>\n<p>case IDM_MENU_16X:<br \/>\n&nbsp;&nbsp;&nbsp; hSubMenu = GetSubMenu(g_hMainMenu, 1);<br \/>\n&nbsp;&nbsp;&nbsp; CheckMenuRadioItem(hSubMenu, IDM_MENU_8X, IDM_MENU_32X, IDM_MENU_16X, MF_BYCOMMAND);<br \/>\n&nbsp;&nbsp;&nbsp; break;<\/p>\n<p>case IDM_MENU_32X:<br \/>\n&nbsp;&nbsp;&nbsp; hSubMenu = GetSubMenu(g_hMainMenu, 1);<br \/>\n&nbsp;&nbsp;&nbsp; CheckMenuRadioItem(hSubMenu, IDM_MENU_8X, IDM_MENU_32X, IDM_MENU_32X, MF_BYCOMMAND);<br \/>\n&nbsp;&nbsp;&nbsp; break;<\/span><br \/>\n&nbsp;<\/p>\n<p style=\"text-align: justify;\">It worked. Video follows,<\/p>\n<p><object width=\"425\" height=\"344\"><param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/ChtrcZOXJDA&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999\" \/><param name=\"allowFullScreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><\/object><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Previously &#8211; Fun with menus &#8211; Part I A few days back I set about trying to get radio items into menus. This is helpful if you want only one of the items in the menu to be active at a time, say, for e.g. a &quot;Select Level&quot; popup menu which has &quot;Level 1&quot;, &quot;Level &hellip; <a href=\"https:\/\/techtwaddle.co.in\/blog\/2010\/01\/12\/fun-with-menus-part-ii-radio-menu-items-and-checkmenuradioitem\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Fun with menus Part II, Radio Menu Items and CheckMenuRadioItem()<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[1],"tags":[],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p1ktFF-3v","_links":{"self":[{"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/posts\/217"}],"collection":[{"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":1,"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/posts\/217\/revisions\/218"}],"wp:attachment":[{"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techtwaddle.co.in\/blog\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}