The Curious Engineer

All blogs / C++

Giovanni Dicanio's Blog

giodicanio.com

Giovanni Dicanio's Programming Corner on the Internet

C++Windows internals

Posts
91 from 20 Apr 2023 to 12 Oct 2026
Posting
monthly (9 in the last year)
Kind
personal blog
Feed
https://giodicanio.com/feed/

2026 6

  1. Where to Put [[nodiscard]]: A Silent Trap with MSVC!
  2. The C++20’s u8/char8_t Backward-Compatibility Fiasco
  3. What C++ Version Should You Target?
  4. Why We Should Double-Check the AI Output: Claude Lies (AKA AI Hallucinations)
  5. Why We Should Double-Check the AI Output: A Bug Which Wasn’t
  6. How to Declare a C++ Function that Takes a Blob of Memory?

2025 9

  1. The char-TCHAR-wchar_t Pendulum in Windows API Native C/C++ Programming
  2. The IsoCpp.org Process for Suggesting Articles Is Broken and Should Be Fixed
  3. Finding the Next Unicode Code Point in Strings: UTF-8 vs. UTF-16
  4. Converting Between Unicode UTF-16 and UTF-8 in Windows C++ Code
  5. Getting a Descriptive Error Message for a Windows System Error Code
  6. Axialis Developer Suite 82%-off Discount
  7. Linus Torvalds and the Supposedly “Garbage Code”
  8. How to Set the C++ Language Standard Version in VS Code
  9. VS Code with MS C/C++ Extension: A Confusing UI Design Choice

2024 32

  1. How To Pass a Custom Struct from C# to a C++ Native DLL?
  2. How To Fix an Unhandled System.DllNotFoundException in Mixed C++/C# Projects
  3. C++ Myth-Buster: UTF-8 Is a Simple Drop-in Replacement for ASCII char-based Strings in Existing Code
  4. Pluralsight Black Friday Deal: 50% Off Individual Plans
  5. How to Safely Pass a C++ String View as Input to a C-interface API
  6. Passing C++ STL Strings vs. String Views as Input Parameters at the Windows C API Boundary
  7. How To Convert Unicode Strings to Lower Case and Upper Case in C++
  8. C++ WinReg Library Updated with Contains Methods
  9. Three Pieces of Advice on Using Modern C++ at Win32 API Boundaries
  10. How to Enumerate the Modules Loaded in a Process
  11. Comparing STL vs. ATL/MFC String Usage at the Windows API Boundaries
  12. How to Use ATL/MFC CString at the Windows API Boundaries
  13. Comparing Different Methods for Accessing Raw Character Buffers in Strings vs. String Views
  14. Axialis Fluent System 2023 Icons Discount
  15. Why Don’t You Use String Views (as std::wstring_view) Instead of Passing std::wstring by const&?
  16. Happy Anniversary: One Year of Blogging
  17. Embedding (and Extracting) Binary Files like DLLs into an EXE as Resources
  18. Unicode Conversions with String Views as Input Parameters
  19. Simplifying Windows Registry Programming with the C++ WinReg Library
  20. Decoding Windows SDK Types: PSTR and PCSTR
  21. How Can You Pass STL Strings as PWSTR Parameters at the Windows API Boundaries?
  22. How Can You Pass STL Strings as PCWSTR Parameters at the Windows API Boundaries?
  23. Decoding Windows SDK Types: PWSTR
  24. Decoding Windows SDK Types: PCWSTR
  25. Pluralsight Limited-time Offer: Save Up to 50% on Individual Plans
  26. 50 Posts!
  27. Visual Studio 2019 and [[nodiscard]] in its Default C++14 Mode
  28. Where to Apply [[nodiscard]]?
  29. To [[nodiscard]] or Not [[nodiscard]] by Default?
  30. How to Set VC++ Warning Level 4 in Visual Studio
  31. How to Access std::vector’s Internal Array
  32. Subtle C++ Compiler Error with std::optional and the Conditional Operator

2023 44

  1. 50% Off Gift of Pluralsight
  2. How to Get the “Size” of a std::vector?
  3. How to Load CString from Resources
  4. How to Load std::wstring from Resources
  5. CString or std::string? That Is The Question (2023 Revisited)
  6. C++ String Benchmark: STL vs. ATL vs. Custom Pool Allocator
  7. How to Prevent Integer Overflows in C++?
  8. Pluralsight’s Black Friday – 50% OFF (11/21-12/5)
  9. C++ Mystery Revealed: Why Do I Get a Negative Integer When Adding Two Positive Integers?
  10. How to Make SafeInt Compatible with Windows Platform SDK Headers
  11. Protecting Your C++ Code Against Integer Overflow Made Easy by SafeInt
  12. Suggestion Box
  13. Protecting Your C++ Code Against Unsigned Integer “Overflow”
  14. Beware of Integer Overflows in Your C++ Code
  15. Safe Narrowing Conversion Support in the GSL
  16. Axialis Icons Limited-time Offer
  17. How to Convert from Japanese EUC (EUC-JP) to Unicode?
  18. How to Convert Between ATL/MFC’s CString and std::wstring
  19. Google C++ Style Guide on Unsigned Integers
  20. Converting Between Unicode UTF-16 CString and UTF-8 std::string
  21. Beware of Unsafe Conversions from size_t to int
  22. How Do I Convert Between Japanese Shift JIS and Unicode UTF-8/UTF-16?
  23. Converting Between Unicode UTF-16 and UTF-8 Using C++ Standard Library’s Strings and Direct Win32 API Calls
  24. Converting Between Unicode UTF-16 and UTF-8 Using ATL CString and Direct Win32 API Calls
  25. Converting Between Unicode UTF-16 and UTF-8 Using ATL Helpers
  26. Pluralsight 60% Off – Limited Time Offer (Until Sep 30th)
  27. Are wchar_t and std::wstring Really Portable in C++?
  28. Code Reviewing ChatGPT’s std::map C++ code
  29. Optimizing C++ Code with O(1) Operations
  30. Pluralsight 50% Off Sale – Limited Time Offer (6/6-6/12)
  31. Adventures with C++ string_view: Interop with ATL/MFC CString
  32. How to Print Unicode Text to the Windows Console in C++
  33. Introduction to Data Structures and Algorithms in C++
  34. The Windows Kernel-mode UNICODE_STRING Structure
  35. Pluralsight 50% Off Sale Extended Until 5/22
  36. Properly Passing a C++ Standard String as an Input BSTR String Parameter
  37. The Case of the Two Billion Characters Long String
  38. Platform-specific Strings: An Introduction to BSTR Strings
  39. The Case of string_view and the Magic String
  40. Keeping on Enumerating C++ String Options: The String Views
  41. How Many Strings Does C++ Have?
  42. The C++ Small String Optimization
  43. Pluralsight FREE Week!
  44. Hello World!