Author Archives: admin

Windowsデスクトップアプリの座標関係覚書

.NETアプリ

Location

トップレベルのFormのLocationはスクリーン座標でフォームの左上の座標を表す。

ControlのLocationはコンテナからの相対座標の左上を表す。コントロールのスクリーン座標を知りたいときは、コンテナのPointToScreenにコントロールの相対座標を渡す。

最大化しているとき

フォームが最大化あるいは最小化しているときは、最大化する前のフォームの座標をRestoreBoundsから取得できる。

座標の保存

最大化しているときはRestoreBoundsを保存する。

座標の復元

このコードでは保存された座標がスクリーン上にあるかどうかは確認していない。

Win32アプリ

最大化しているとき

ウインドウが最小化されていてリストアしたとき最大化するかどうかはGetWindowPlacement()で調べることができる。WPF_RESTORETOMAXIMIZEDが立っていれば、リストアしたとき最大化する。

.NETではフォームが最小化されていて、リストアしたとき最大化するのかどうかを調べる方法はないと思われるので、Resizeイベントでその状態かどうかのフラグを用意する。

マルチスクリーン

マルチスクリーンのスクリーン座標はモニタをつなげて1つのスクリーンとみなせるような座標になる。

あるスクリーン座標がモニタ内にあるかは以下のように調べられる。(コードはC++/CLI)

VMWareでゲストで仮想モニタ2つにする

1,ゲストにVMWare toolsをインストールする

2,ゲストで以下のコマンドを実行するとモニタが2つになる

3,ゲストで以下のコマンドを実行するとモニタが3つになる

1つに戻す

C++で2つの値を関数から戻す

std::pairstd::tiestd::make_pairを使う。

Base64エンコード覚書

Base64とは

バイナリーデータをテキストデータに変換するもの、テキストしか扱えない時に使う。Eメールとかで使われる。

アルゴリズム

  1. バイト列を3バイトごとに区切る(24ビット)
  2. この24ビットを6ビットごとに区切る(6ビットが4つ)
  3. この6ビットを64個の文字にマップする。
  4. 最後のうまく区切れないところは=でパディングする

具体例、helloをBASE64エンコード

文字列helloを16進バイトストリームにすると、68 65 6C 6C 6F、
2進だと01101000 01100101 01101100 01101100 01101111
これを6ビットごとに区切ると、

これを10進、16進に直すと、

これをマップされた文字にすると

最後に2ビットの0を足したので=を足して
aGVsbG8=
が完成。

UbuntuにQt開発環境をインストールする

Ubuntuのバージョン確認

ここからインストーラーをダウンロード。ここではqt-unified-linux-x64-4.6.0-online.runをダウンロードした。

実行権限を与えて実行

なんかエラーが出たので不足しているであろうライブラリをインストール。

インストーラーが起動した。

適当にチェックしてインストール。自分の場合は5.15.2をインストールする。

インストールが終わると、指定したディレクトリにインストールされる。再びインストーラーを起動したい場合は、MaintenanceToolを実行する。Qt CreatorTools/QtCreator/bin/qtcreatorにある。

しかしビルドするとエラーが出る。g++やmakeをインストールする。

さらにldで-lGlでエラーなどが出る。これはglライブラリがないためリンクエラーになるので、インストールする。

AndroidのchromeのコンソールをAndroid Studioを使って見る

AndroidのchromeではConsole.logなどの出力は見れない。Android studio付属のエミュレータを使ってデスクトップのchromeから見ることができる。

Android Studioからエミュレータを起動

Launch Emulator

エミュレータのchromeで対象のページを開く

Chrome on Emulator

デスクトップのchromeで chrome://inspect/#devices を開く

chrome://inspect/#devices を開いて暫く待つと以下のように接続されるので、URLを確認して inspect をクリックする。

Desktop Chrome


DevToolsが開く。スクリプトのデバッグなどもできる。