mirror of
https://github.com/wxWidgets/wxWidgets.git
synced 2026-08-17 17:02:51 +08:00
The primary documented way of using a .natvis, in the Microsoft documentation linked to, is to add it to one's project, not to copy it under %USERPROFILE%. Closes #26452.
88 lines
3.2 KiB
XML
88 lines
3.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!--
|
||
|
||
This file contains visualizers for Visual Studio debugger.
|
||
It should be added to your Visual Studio project that is using wxWidgets.
|
||
It can also be copied into the %USERPROFILE%\My Documents\Visual Studio 2015\Visualizers\
|
||
directory (or the corresponding location for newer versions, e.g. ...2017\Visualizers).
|
||
|
||
More information can be found at https://learn.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects
|
||
|
||
-->
|
||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||
<!-- We want to avoid showing 'L' before the string, this is useless and
|
||
makes the display less readable. But we still do want to put quotes
|
||
around the string to show that it is, in fact, a string. So we use
|
||
"sub" or "s8b" qualifier to get rid of L"..." around the string and
|
||
then add the quotes back. This also has a (nice) side effect of not
|
||
doubling the backslashes inside the string. -->
|
||
<Type Name="wxString">
|
||
<DisplayString Condition="sizeof(m_impl[0])==2">"{m_impl,sub}"</DisplayString> <!-- wxUSE_UNICODE_WCHAR -->
|
||
<DisplayString Condition="sizeof(m_impl[0])==1">"{m_impl,s8b}"</DisplayString> <!-- wxUSE_UNICODE_UTF8 -->
|
||
<StringView>m_impl</StringView>
|
||
</Type>
|
||
|
||
<Type Name="wxPoint">
|
||
<DisplayString>{x}, {y}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxSize">
|
||
<DisplayString>{x} × {y}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxRect">
|
||
<DisplayString>{x}, {y} {width} × {height}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxLongLong">
|
||
<DisplayString>{m_ll}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxULongLong">
|
||
<DisplayString>{m_ll}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxGridCellCoords">
|
||
<DisplayString>R{m_row + 1}C{m_col + 1}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxGridBlockCoords">
|
||
<DisplayString>R{m_topRow + 1}C{m_leftCol + 1}:R{m_bottomRow + 1}C{m_rightCol + 1}</DisplayString>
|
||
</Type>
|
||
|
||
<Type Name="wxArrayString">
|
||
<DisplayString Condition="m_nCount==0">empty</DisplayString>
|
||
<DisplayString Condition="m_nCount==1">{m_pItems[0]}</DisplayString>
|
||
<DisplayString Condition="m_nCount==2">{m_pItems[0]} and {m_pItems[1]}</DisplayString>
|
||
<DisplayString>size={m_nCount}: {m_pItems[0]}, {m_pItems[1]}, ...</DisplayString>
|
||
<Expand>
|
||
<ArrayItems>
|
||
<Size>m_nCount</Size>
|
||
<ValuePointer>m_pItems</ValuePointer>
|
||
</ArrayItems>
|
||
</Expand>
|
||
</Type>
|
||
|
||
<Type Name="wxWindow">
|
||
<DisplayString>$(Type) HWND={m_hWnd,x}</DisplayString>
|
||
</Type>
|
||
|
||
<!--
|
||
Defining visualizer for wxListBase is not really useful, so do it for
|
||
the most commonly used "concrete" list type.
|
||
-->
|
||
<Type Name="wxWindowList">
|
||
<DisplayString>size={m_count}</DisplayString>
|
||
<Expand>
|
||
<Item Name="[size]">m_count</Item>
|
||
<LinkedListItems>
|
||
<Size>m_count</Size>
|
||
<HeadPointer>m_nodeFirst</HeadPointer>
|
||
<NextPointer>m_next</NextPointer>
|
||
<ValueNode>(wxWindow*)m_data</ValueNode>
|
||
</LinkedListItems>
|
||
</Expand>
|
||
</Type>
|
||
|
||
</AutoVisualizer>
|