How to show/hide an element using C++
Anonymous
Not applicable
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2015-06-16
01:18 PM
- last edited on
‎2023-07-13
04:18 PM
by
Doreena Deng
‎2015-06-16
01:18 PM
Hi
I want to show/hide an element using C++ code.
Is there a way to do that.
Thanks in advance.
I want to show/hide an element using C++ code.
Is there a way to do that.
Thanks in advance.
Labels:
- Labels:
-
Add-On (C++)
4 REPLIES 4

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2015-06-18 10:54 AM
‎2015-06-18
10:54 AM
Hi,
You can hide an element by moving that to a hidden layer.
Here is an example code for this:
Showing an element could be done the same way (move back to original layer for example).
I hope this is useful for you.
Regards,
Tibor
You can hide an element by moving that to a hidden layer.
Here is an example code for this:
short Create_HidddenLayer (void); // ----------------------------------------------------------------------------- // Hides an element with moving to a hidden layer // ----------------------------------------------------------------------------- GSErrCode Hide_Element (const API_Guid& guid) { API_Element element, mask; GSErrCode err = NoError; BNZeroMemory (&element, sizeof (API_Element)); element.header.guid = guid; err = ACAPI_Element_Get (&element); if (err != NoError) { WriteReport_Err ("ACAPI_Element_Get failed.", err); return err; } ACAPI_ELEMENT_MASK_CLEAR (mask); ACAPI_ELEMENT_MASK_SET (mask, API_Elem_Head, layer); element.header.layer = Create_HidddenLayer (); if (element.header.layer == -1) return Error; return ACAPI_Element_Change (&element, &mask, NULL, 0, true); } // ----------------------------------------------------------------------------- // Create a hidden layer // ----------------------------------------------------------------------------- short Create_HidddenLayer (void) { API_Attribute attrib; GSErrCode err = NoError; BNZeroMemory (&attrib, sizeof (API_Attribute)); attrib.header.typeID = API_LayerID; attrib.header.flags = APILay_Hidden; strcpy (attrib.header.name, "Example_HiddenLayer"); err = ACAPI_Attribute_Create (&attrib, NULL); if (err == APIERR_ATTREXIST) { WriteReport_Alert ("The layer already exists."); return attrib.header.index; } if (err != NoError) { WriteReport_Err ("Unable to create layer.", err); return -1; } return attrib.header.index; }
Showing an element could be done the same way (move back to original layer for example).
I hope this is useful for you.
Regards,
Tibor
Anonymous
Not applicable
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2015-06-19 09:42 AM
‎2015-06-19
09:42 AM
Tibor wrote:
Hi,
You can hide an element by moving that to a hidden layer.
Here is an example code for this:short Create_HidddenLayer (void); // ----------------------------------------------------------------------------- // Hides an element with moving to a hidden layer // ----------------------------------------------------------------------------- GSErrCode Hide_Element (const API_Guid& guid) { API_Element element, mask; GSErrCode err = NoError; BNZeroMemory (&element, sizeof (API_Element)); element.header.guid = guid; err = ACAPI_Element_Get (&element); if (err != NoError) { WriteReport_Err ("ACAPI_Element_Get failed.", err); return err; } ACAPI_ELEMENT_MASK_CLEAR (mask); ACAPI_ELEMENT_MASK_SET (mask, API_Elem_Head, layer); element.header.layer = Create_HidddenLayer (); if (element.header.layer == -1) return Error; return ACAPI_Element_Change (&element, &mask, NULL, 0, true); } // ----------------------------------------------------------------------------- // Create a hidden layer // ----------------------------------------------------------------------------- short Create_HidddenLayer (void) { API_Attribute attrib; GSErrCode err = NoError; BNZeroMemory (&attrib, sizeof (API_Attribute)); attrib.header.typeID = API_LayerID; attrib.header.flags = APILay_Hidden; strcpy (attrib.header.name, "Example_HiddenLayer"); err = ACAPI_Attribute_Create (&attrib, NULL); if (err == APIERR_ATTREXIST) { WriteReport_Alert ("The layer already exists."); return attrib.header.index; } if (err != NoError) { WriteReport_Err ("Unable to create layer.", err); return -1; } return attrib.header.index; }
Showing an element could be done the same way (move back to original layer for example).
I hope this is useful for you.
Regards,
Tibor
Thank you for the help.
It creates hidden layer and code goes without any errors but the element does not disappear.
I'm calling the function by the following way
API_Guid apiGuid; APIGuid2GSGuid (apiGuid).ConvertFromString("9C046988-FF12-406C-AFFF-DCDB0FAD4986"); Hide_Element(apiGuid);Please advice.

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2015-06-19 10:44 AM
‎2015-06-19
10:44 AM
ggiloyan wrote:
Thank you for the help.
It creates hidden layer and code goes without any errors but the element does not disappear.
I'm calling the function by the following way
API_Guid apiGuid; APIGuid2GSGuid (apiGuid).ConvertFromString("9C046988-FF12-406C-AFFF-DCDB0FAD4986"); Hide_Element(apiGuid);
Please advice.
Did you used ACAPI_CallUndoableCommand?
Are you sure that this Guid is valid?
I tested this way and it worked for me:
// ----------------------------------------------------------------------------- // Hides clicked element // ----------------------------------------------------------------------------- GSErrCode Hide_Clicked_Element (void) { API_Guid guid; if (!ClickAnElem ("Click an elem to hide", API_ZombieElemID, NULL, NULL, &guid)) { WriteReport_Alert ("No element was clicked"); return Error; } return ACAPI_CallUndoableCommand ("Hide element", [&] () -> GSErrCode { return Hide_Element (guid); }); }
ClickAnElem can be found in APICommon.c (so need to include APICommon.h).
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎2015-06-19 07:39 PM
‎2015-06-19
07:39 PM
Tibor wrote:Probably worth mentioning that
Did you used ACAPI_CallUndoableCommand?
Ralph Wessel BArch
Central Innovation
Central Innovation