(C# & C++/CLI) C++のスタティックライブラリをC#から使う

επιστημηさんの記事

Vista到来。既存C/C++資産の.NET化を始めよう! − @IT

と同じことをVS2012でやろうとしたらちょっとハマったのでメモ。

 

C++/CLIのラッパーライブラリのリンカ設定で、

追加の依存ファイルを設定しないと、リンクエラーになる。

具体的には、C++(ネイティブ)の.libを明示的に指定しないとダメみたい。

 

(C#)フォームを背景色で透過し、透過PNGを表示する

WMPLibを使ってシコシコとプログラム書いてるわけですが。

再生中の動画の上に、任意のタイミングで透過PNGを重ねたいという要望が出まして。

「透過PNGを表示したFormのOpacity下げたらいけるんじゃね?」と軽く考えていたらハマったのでメモ。

「透過PNGを表示したFormのOpacity下げる」と、透過PNGの透過していない部分まで透けちゃうというお粗末なことになりやした。

以下、解決したコード。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace Hoge {
    public partial class SukesukeForm : Form {
        public SukesukeForm() {
            InitializeComponent();
        }

        private void
SukesukeForm_Load(object sender, EventArgs e) {
            //背景画像設定
            Bitmap img = new Bitmap("../../img/sukesuke.png");
            img.MakeTransparent();
            this.BackgroundImage = img;

            //フォームを背景色で透過させる
            this.TransparencyKey = BackColor;
            
        }
    }
}

このフォームを動画を再生しているフォームの上に重ねることで達成しました。

めでたしめでたし。

Win8とWebsocket

C#でWebsocketサーバを作りたいんですが、

開発に使っているWin8マシンではどうも上手くいかない。

WCFWebsocketとかSuperWebsocketとか試してみたけど、

クライアントがサーバにメッセージを送ると、サーバが即切断してた。

 

この記事によると、Win8からはWebsocketの扱いが変わった(?)ようで。

結局、C# on Win8でWebsocketサーバを作るときはSystem.Net.WebSocketで。

クライアントはWebsocket4Netがいいみたい。

 

弥生の青色申告で家事按分

とりあえず今年の収支はどうなってんのか気になったので、申告書を出してみた。

家事按分したはずの水道光熱費が100%書き出されていたので「ヤバい」と思い調べてみた。

http://tax.f-blog.org/yayoi/kaji-anbun.html

によると、「家事按分振替」の画面で仕分け書出しボタンを押さないといけないそうな。

ATMega168 20PU使ってみた

環境はWin8、Atmel Studio6.1。

単なるLEDチカチカしかやってないけど、備忘録。

 

・内臓オシレータのデフォルト周波数は8MHz

 なので、プロジェクトのプロパティから、

 AVR/GNU C Compiler→SymbolsでF_CPU=8000000ULと定義。

 プログラム書き込み時にSUT_CKSELは触らないのが吉。

 F_CPUを16MHzに設定したため、_delay_ms()がおかしくなってた。

 

・CKDIVはチェックを外すべし

 デフォルトではチェックがついていて、8分周してしまう。

 なんか省電力になるらしいけど。

 やっぱり_delay_ms()やシリアル通信などに影響を与えそうなので。