ウィンドウの位置を保存する

メモ:  Category:sdk_mfc

レジストリまたは .INI ファイルの指定のセクションにバイナリ データを書き込む、WriteProfileBinaryを使います。 OSのバージョンによって格納先が変わります。

  • Windows NT では、レジストリ キーに格納されます。
  • Windows 3.x では、WIN.INI ファイルに格納されます。
  • Windows 95 / 98 では、キャッシュされた WIN.INI ファイルに格納されます。
WINDOWPLACEMENT wp;
GetWindowPlacement(&wp);//ウィンドウの位置を取得
AfxGetApp()->WriteProfileBinary("セクション名","エントリ名",(LPBYTE)&wp,sizeof(wp));

復元する場合、OnInit***等で

WINDOWPLACEMENT *pwp;
UINT nl;

if(AfxGetApp()->GetProfileBinary("セクション名", "エントリ名", (LPBYTE*)&pwp, &nl)){
    SetWindowPlacement(pwp);
    delete [] pwp;
}

GetProfileBinaryは内部でnewしたメモリを返してくれるようです。 MSDNでは、呼び出し元でdelete[]するように書かれています。

bluenote by BBB