2015-01-01から1年間の記事一覧

Dispatcher

スレッドは常時3つあります。1 呼び出し側のスレッド 2 呼び出される側のスレッド 3 2の結果を返すスレッド 1のスレッドを起こす呼び出し側は大抵WindowMessageと同じGUIスレッド。 2はGUIと異なるスレッド。独自のスタックを持ち重い関数を処理します…

方法1: Direct2Dで色を塗るとこうなります。ブラシというリソース(作成時にRenderTargetを必要とする)を作成して、描画後に開放します。 GDI32のSelectObjectに似た感じですが、リソースを描画単位で作成する方法はメモリリークの点で確実ですが、動作が…

HWNDレスを目的にしたWindowsコントロール フレームワークを作成しました。*コントロール類をDirect2Dだけで描画しています。 *C関数として呼び出せるようにDLLにまとめました。少なくとも最低これだけは作っておかないとマズイと思われるコントロールを…

一時的な文字バッファにstd::stringクラスは使わない、ただそれだけで速くなった。 #pragma oncenamespace V4 {class SplitString { public : SplitString(){} ~SplitString(){ clear(); } USHORT Split( LPCWSTR str, WCHAR ch ) { USHORT s = 0, e=0; std:…

C++には文字の分割で気の利いた方法がない。vectorで結果を受け取る方法は、その過程でメモリの やり取りに無駄が多い。 そこで、SplitStringというクラスを作成して、試してみるとなんと3倍も速くなった。 #include "stdafx.h" #include #include #include…

結局、NodeJS+V8に押された形で、JavaScript(Chakrart)のネイティブアプリ採用を公に認めた。 今までは煮え切らない態度で、IActiveScriptを作ったもののそれ以上何もしてこなかった。 セキュリティの問題が発生しやすいので、本当はあまりプッシュしたくな…

Metro, ユニバーサルアプリ, HWND

ユニバーサルアプリでHWNDを必要とする例は滅多にないだろうけど、こんな方法で取得できるらしい。 extern "C" int __stdcall GetWindowTextW(HWND hwnd, PWSTR text, int count); #pragma comment (lib, "user32.lib")struct __declspec(uuid("45D64A29-A63…

Windowsコントロールで一番難関のTextboxを作成、アップしました。ここです。 Direct2Dですべてを実装しているためHWNDレスです。TSFによる漢字変換に対応しています。 SingleLineのみですが、一見すると普通のTextboxと見分けが使いないはずです。なお、TSF…

BSTRは::SysFreeString(x); を実行しても直ぐには消えない。 デバッグの時ににこれが厄介になる場合がある。 下の関数を一度実行するとキャッシュを切ることができる。 #ifdef _DEBUG typedef int (*SETOANOCACHE)(void); // 昔は非公開関数だった?// BSTR…

bmp,gif,jpg,pngの画像ファイルをID2D1Bitmapへ変換するサンプルです。 LoadImage内でファイルをbinaryで取得しStreamへ変換しID2D1Bitmapを作成します。 なお、ID2D1RenderTargetを再構築するとID2D1Bitmapも作り直しが必要なので、StreamかFileNameは どこ…

ID2D1HwndRenderTargetとID2D1DeviceContext比較してみました。 以下はID2D1DeviceContextを使用した例です。 USE_DEVICECONTEXTをコメントにするとID2D1HwndRenderTargetになります。 #include "stdafx.h" #include "Win32Project.h" #define MAX_LOADSTRIN…

最新のxml paserはmsxml6。でもリリースからだいぶ時間もたち忘れられそうでメモしておく。使い方に癖があって、 #includeではなく、#importでライブラリ情報を動的に取得しなければならない。 しかも、COMは自動的にスマートポインタになる。 #include "std…

HWNDを必要としない入力コントールをDirect2Dで作成しました。C++で作成されるアプリはやがてこの方式へ移行すると思われます。 従来、Windowsコントロール(button,textbox,listbox,...)は以下のようにParent Windowのchild windowとして作成しなければ、な…