プリンタ関係で定型外用紙を追加する機能をC++/CLIでちょっと作ってみました。P/Invoke書くのがめんどいので、C++/CLIで書いてみるとちょっと謎。仕様を読んでみたつもりなのですが、うーむ…。windows.hはstdafx.hでインクルードしています。
//ヘッダファイル using namespace System; using namespace System::Runtime::InteropServices; namespace CliTest1 { public ref class Class1 { HANDLE hHandle; public: void Test(String^ name); }; } // cpp #include "stdafx.h" #include "CliTest1.h" namespace CliTest1 { void Class1::Test(String^ name) { //文字列のマーシャリングは省略しています。lpszNameに入っていると思ってください。 OpenPrinter(lpszName, &hHandle, nullptr); } }
これだと、OpenPrinter()のところで、このエラー。逆にこのcppソース内でHANDLEを宣言するとOK。こういうものでしたっけ?VS2010でもVS2008SP1でも同じです。
エラー error C2664: 'OpenPrinterW' : 2 番目の引数を 'cli::interior_ptr
' から 'LPHANDLE' に変換できません。
それから、C++/CLI使ってみて…デフォルトではほとんどカラーハイライトされない(?)悲しい。