hmLoadTopic({
hmKeywords:"Deleted this pointers,Examples,Examples deleted this pointers,Examples null this pointers,Functions,Functions using null this pointer,Null this pointer,this (deletion)",
hmTitle:"Deleted \"this\" Pointer",
hmDescription:"The Deleted \"this\" Pointer tab provides controls for determining how some deleted object hooks are installed relating to track functions called for deleted, NULL, or invalid...",
hmPrevLink:"uninitialiseddata.html",
hmNextLink:"memorycorruptiondetection.html",
hmParentLink:"instrumentation.html",
hmBreadCrumbs:"<a href=\"theuserinterface.html\">The User Interface<\/a> &gt; <a href=\"displaysettings.html\">Settings<\/a> &gt; <a href=\"globalsettings.html\">Global Settings Dialog<\/a> &gt; Advanced &gt; <a href=\"instrumentation.html\">Instrumentation<\/a>",
hmTitlePath:"The User Interface > Settings > Global Settings Dialog > Advanced > Instrumentation > Deleted \"this\" Pointer",
hmHeader:"<p class=\"p_Normal\"><span class=\"f_Heading1\">Deleted &quot;this&quot; Pointer<\/span><\/p>\n\r",
hmBody:"<p class=\"p_Normal\">The <span style=\"font-weight: bold;\">Deleted &quot;this&quot; Pointer<\/span> tab provides controls for determining how some deleted object hooks are installed relating to track functions called for deleted, NULL, or invalid \'this\' pointers.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<h1 class=\"p_Heading1\"><img alt=\"seeAlso\" style=\"margin:0;width:1.0000rem;height:0.6250rem;border:none\" src=\".\/images\/seealso.png\"\/>The default setting is <span style=\"font-weight: bold;\">not<\/span> to detect such errors. <\/h1>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">The default settings are shown below:<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 3.0000rem;\"><img alt=\"deleted-this-settings\" style=\"margin:0;width:32.1250rem;height:23.2500rem;border:none\" src=\".\/images\/deleted-this-settings.png\"\/><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">Tracking the \'this\' pointer <\/span><\/h1>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Calling functions that belong to a deleted object is a common error, especially if different parts of the application are holding the object pointer.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Memory Validator can check the <span class=\"f_CodeExample\">this<\/span> pointer of every C++ class member function to ensure that it is:<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span>not a pointer to a deallocated object<span style=\"color: #3489b5;\"> <\/span><\/p><p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span>not NULL<\/p><p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span>does not point to a memory address that is not accessible <\/p><p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">These checks are not enabled by default because it can significantly affect performance speed and memory usage.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><img alt=\"note\" style=\"margin:0;width:1.5000rem;height:1.0000rem;border:none\" src=\".\/images\/note.png\"\/> Note that uninitialised data detection is disabled when this feature is enabled<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span style=\"font-weight: bold;\">Detect calling of functions for deleted C++ objects on the CRT heap<\/span> <img alt=\"instructionStep\" style=\"margin:0;width:0.6250rem;height:0.6250rem;border:none\" src=\".\/images\/instructionstep.png\"\/> enables detection of functions being called for deleted C++ objects<span style=\"color: #3489b5;\"> <\/span><\/p><p class=\"p_Normal\" style=\"margin: 0 0 0 2.1875rem;\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 3.0000rem;\">When enabled you can additionally check for the following:<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 2.1250rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span style=\"font-weight: bold;\">Report NULL this pointers and Invalid this pointers<\/span> <img alt=\"instructionStep\" style=\"margin:0;width:0.6250rem;height:0.6250rem;border:none\" src=\".\/images\/instructionstep.png\"\/> enables detection of functions being called for NULL and invalid <span class=\"f_CodeExample\">this<\/span> pointers<span style=\"color: #3489b5;\"> <\/span><\/p><p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 4.5000rem;\">An Invalid <span class=\"f_CodeExample\">this<\/span> pointer is defined as one that does not point at the stack, memory in any DLL, or any other allocated memory.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 3.0000rem;\">You may want to see NULL <span class=\"f_CodeExample\">this<\/span> pointers for the specific MFC functions <span style=\"font-style: italic;\">designed <\/span>to receive NULL pointers ( <a href=\"deletedthispointer.html#mfcfunctionstakingnullpointers\" class=\"topiclink\">see list below<\/a> ): <\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 0.6875rem;\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 2.1250rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span style=\"font-weight: bold;\">Report NULL this pointers for MFC functions designed to receive NULL this pointers<\/span> <img alt=\"instructionStep\" style=\"margin:0;width:0.6250rem;height:0.6250rem;border:none\" src=\".\/images\/instructionstep.png\"\/> enables the relevant reporting (disabled by default)<span style=\"color: #3489b5;\"> <\/span><\/p><p class=\"p_Normal\" style=\"margin: 0 0 0 0.6875rem;\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 3.0000rem;\">This option is not generally recommended as you will typically see many such reports. However, there may be uses for this in specific cases, and we like to give you the option!<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 3.0000rem;\">&nbsp;<\/p>\n\r<h1 class=\"p_Heading1\"><img alt=\"seeAlso\" style=\"margin:0;width:1.0000rem;height:0.6250rem;border:none\" src=\".\/images\/seealso.png\"\/>Some example error scenarios can be found at the <a href=\"deletedthispointer.html#mfcfunctionstakingnullpointers\" class=\"topiclink\">end of this section<\/a>.<\/h1>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">Displaying reported errors<\/span><\/h1>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">&nbsp;<\/span><\/h1>\n\r<p class=\"p_Normal\">When a deleted object has a function called and has been detected, the display in the <a href=\"memoryandhandleleaks.html\" class=\"topiclink\">Memory tab<\/a> shows an entry to indicate where the error occurred.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">The trace can be expanded to show the callstack and the source code. <\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">In the example shown here, the <span class=\"f_CodeExample\">ex-&gt;exampleMethod()<\/span> has just been called, which has triggered the error report.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\" style=\"margin: 0 0 0 3.0000rem;\"><img alt=\"deleted-this-settings-example\" style=\"margin:0;width:51.1875rem;height:42.7500rem;border:none\" src=\".\/images\/deleted-this-settings-example.png\"\/><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<hr style=\"height:1px; color:#0080C0; border-width:0; background-color:#0080c0;\" \/><p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Some examples follow, and a list of MFC functions that are designed to be called with NULL <span class=\"f_CodeExample\">this<\/span> pointers.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">Examples<\/span><\/h1>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Two examples are illustrated below which demonstrate common scenarios in which these errors occur.<\/p>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">&nbsp;<\/span><\/h1>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">&nbsp;<\/span><\/h1>\n\r<p class=\"p_Normal\"><span style=\"font-weight: bold;\">Example 1 - calling a function for a deleted object:<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Consider the following much simplified example code:<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace;\">myObj &nbsp; &nbsp; &nbsp; &nbsp;*obj;<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-style: italic; color: #000080;\">\/\/ create an object, do some work and then destroy the object<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace;\">obj = <\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-weight: bold;\">new<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace;\"> myObj();<\/span><\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace;\">obj-&gt;doWork();<\/span><\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-weight: bold;\">delete<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace;\"> obj;<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-style: italic; color: #000080;\">\/\/ at this point \'obj\' is no longer valid, <\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-style: italic; color: #000080;\">... application does some more work<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-style: italic; color: #000080;\">\/\/ another part of the application incorrectly uses the object that was deleted earlier on (because<\/span><\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace; font-style: italic; color: #000080;\">\/\/ the pointer wasn\'t reset to NULL, or more than one copy of the pointer existed).<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span style=\"font-size: 0.80rem; font-family: \'Courier New\',Courier,monospace;\">obj-&gt;doSomeMoreWork();<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">There is no guarantee that the call to <span class=\"f_CodeExample\">doSomeMoreWork()<\/span> will actually crash, which would otherwise alert you to the error. <\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">If the memory pointed to by <span class=\"f_CodeExample\">obj<\/span> is still a valid memory address, then: <\/p>\n\r<p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6250rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span>reads of data will read undefined values<span style=\"color: #3489b5;\"> <\/span><\/p><p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6250rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span>writes may corrupt existing data, or<\/p><p class=\"p_Normal\" style=\"text-indent: 0; padding-left: 0.8125rem; margin: 0 0 0 0.6250rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';color:#3489B5;display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span>writes may write to memory locations that will never be accessed by the application again, or that may be overwritten by any following memory allocation.<\/p><p class=\"p_Normal\" style=\"margin: 0 0 0 0.6250rem;\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Enabling the features outlined above will help detect these errors.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span style=\"font-weight: bold;\">Example 2 - MFC functions designed for NULL this pointers:<\/span><\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">Consider the following snippet of example code that demonstrates an error:<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_CodeExample\" style=\"page-break-inside: avoid;\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span class=\"f_CodeExample\">CWnd&nbsp;*wnd;<\/span><\/p>\n\r<p class=\"p_CodeExample\" style=\"page-break-inside: avoid;\"><span class=\"f_CodeExample\">&nbsp;<\/span><\/p>\n\r<p class=\"p_CodeExample\" style=\"page-break-inside: avoid;\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span class=\"f_CodeExample\">wnd&nbsp;=&nbsp;getMyWindow(); &nbsp; &nbsp; &nbsp; &nbsp;\/\/&nbsp;function&nbsp;that&nbsp;should&nbsp;return&nbsp;a&nbsp;valid&nbsp;window,&nbsp;but&nbsp;sometimes&nbsp;returns&nbsp;NULL;<\/span><\/p>\n\r<p class=\"p_CodeExample\" style=\"page-break-inside: avoid;\"><span style=\"width:3.0000rem;display:inline-block\">&nbsp;<\/span><span class=\"f_CodeExample\">wnd-&gt;GetSafeHwnd();<\/span><\/p>\n\r<p class=\"p_CodeExample\" style=\"page-break-inside: avoid;\"><span class=\"f_CodeExample\">&nbsp;<\/span><\/p>\n\r<p class=\"p_Normal\">The above code <span style=\"font-style: italic;\">looks<\/span> unsafe, as there is the potential to call GetSafeHwnd() with a NULL <span class=\"f_CodeExample\">this<\/span> pointer. <\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">However, if you examine the MFC source or documentation for <span class=\"f_CodeExample\">CWnd::GetSafeHwnd()<\/span> you will see that this function is designed to <span style=\"font-style: italic;\">allow <\/span>it to be called with a NULL this pointer. See just below for a list of such functions.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">As described above, Memory Validator allows you to detect functions being called with NULL <span class=\"f_CodeExample\">this<\/span> pointers, whilst also allowing you to ignore the selected MFC functions that are designed to be called with NULL <span class=\"f_CodeExample\">this<\/span> pointers.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<h1 class=\"p_Heading1\"><a id=\"mfcfunctionstakingnullpointers\" class=\"hmanchor\"><\/a><span class=\"f_Heading1\">MFC functions designed to be called with a NULL \'this\' pointer<\/span><\/h1>\n\r<h1 class=\"p_Heading1\"><span class=\"f_Heading1\">&nbsp;<\/span><\/h1>\n\r<h1 class=\"p_Heading1\">The list below details those MFC functions are designed to be called with NULL this pointers.<\/h1>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CHandleMap::DeleteTemp<\/span>&nbsp;<\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CImageList::GetSafeHandle<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CGdiObject::operator&nbsp;HGDIOBJ<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CGdiObject::GetSafeHandle<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CPen::operator&nbsp;HPEN<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CBrush::operator&nbsp;HBRUSH<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CFont::operator&nbsp;HFONT<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CBitmap::operator&nbsp;HBITMAP<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CPalette::operator&nbsp;HPALETTE<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CRgn::operator&nbsp;HRGN<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CDC::operator&nbsp;HDC<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CDC::GetSafeHdc<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CMenu::operator&nbsp;HMENU<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CMenu::GetSafeHmenu<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::operator&nbsp;HWND<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::GetSafeHwnd<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWinThread::operator&nbsp;HANDLE<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWinApp::DoMessageBox<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CDC::DPtoHIMETRIC<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CDC::HIMETRICtoDP<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::AttachControlSite<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::GetParentFrame<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::GetTopLevelParent<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::GetTopLevelOwner<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::GetParentOwner<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CWnd::GetTopLevelFrame<\/span><\/p><p class=\"p_CodeExample\" style=\"text-indent: 0; page-break-inside: avoid; padding-left: 0.8125rem; margin: 0 0 0 0.6875rem;\"><span class=\"f_Normal\" style=\"font-family: Arial,\'Lucida Sans Unicode\',\'Lucida Grande\',\'Lucida Sans\';display:inline-block;width:0.8125rem;margin-left:-0.8125rem\">&#8226;<\/span><span class=\"f_CodeExample\">CPlex::FreeDataChain<\/span><\/p><p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span class=\"f_Heading1\">Reset All - <\/span>Resets <span style=\"font-weight: bold;\">all<\/span> global settings, not just those on the current page.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\"><span class=\"f_Heading1\">Reset - <\/span>Resets the settings on the current page.<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r<p class=\"p_Normal\">&nbsp;<\/p>\n\r"
})
