2009年10月30日

RAD Studio/Delphi/C++Builder 2010 Help Update 1

RAD Studio/Delphi/C++Builder 2010のHelp Update 1がリリースされています(予定よりも1ヶ月遅れのような気がしますが)。

27420 Help Update 1 for RAD Studio, Delphi & C++Builder 2010
Delphi 2010 および C++Builder 2010 Help Update 1
Known Problems in the Help - RAD Studio

2009年10月22日

C++Builder 2009ファーストガイド完結

2009/07から10回に分けて公開されてきたC++Builder 2009ファーストガイドが無事に完結しました。執筆者の皆さん、おつかれさまでした。

2009年10月21日

MDIアプリケーションにおけるリボンコントロールの不具合の回避

リボンコントロールをメインフォームに使用したMDIアプリケーションでは、MDI子フォームを最大化すると子フォームのリストア/クローズボタンがメインフォーム上の不正な位置に描画されてしまう、という不具合があり、QualityCentralにも報告されています(QC67835QC70321QC73386)。この問題を修正するコンポーネントをJED Softwareさんが公開しています(近日中にCodeCentralにも投稿予定とのこと)。

jed-software.com » Blog Archive » VCL Ribbon MDI Fix

2009年10月15日

第14回エンバカデロ・デベロッパーキャンプ セッションビデオ

2009年09月02日に大阪で開催された第14回エンバカデロ・デベロッパーキャンプのミガロの吉原さんのテクニカルセッション(T6)のビデオが公開されています。

セッションビデオ「知って得する!現役ヘルプデスクが答えるDelphiテクニカルエッセンス4.0」

2009年10月14日

C++処理系のC++0xサポート状況

主要なC++処理系のC++0xサポート状況をまとめたページが2ちゃんねるのC++0xスレッドで紹介されていました(結構前の話ですが)。

C++0xCompilerSupport - Stdcxx Wiki

これを見るとC++Builder 2009の対応状況はまあまあといったところでしょうか。最もアグレッシブなのはgccで、次がIntel C++、VC++とC++Builderはどっちもどっちな感じです。

アプリケーションの多重起動を禁止するのにglobal atomを使用するのは適切ではない

アプリケーションの多重起動を禁止するでは多重起動禁止にmutexを利用しましたが、別解としてatomの一種であるglobal atomを利用する、という方法も(あまり主流ではないにしても)出回っているようです。しかしGlobalAddAtom(ja)で追加したglobal atomは明示的にGlobalDeleteAtom(ja)で削除しなければ自動的に消滅することはありません。このためアプリケーションが何らかの理由で異常終了してしまうと再実行することができなくなってしまいます。実際にプロジェクトソースを
program Project2;

uses
  Windows,
  SysUtils,
  Messages,
  Forms,
  Unit2 in 'Unit2.pas' {Form2};

{$R *.RES}

const
  { Atom name }
  CAtomName: String = '{7B0C8E12-F168-4DA4-89C9-E4C86BE404FE}';

var
  AppAtom: ATOM;
  Wnd: HWnd;
  AppWnd: HWnd;
begin

  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  if GlobalFindAtom(PChar(CAtomName)) <> 0 then
  begin
    { Search main form }
    Wnd := FindWindow(PChar('TForm2'),nil);  // Class name of the main form
    if Wnd = 0 then
    begin
      Exit;
    end;

    { Bring foreground and activate }
    SetForegroundWindow(Wnd);

    { Get window handle of TApplication }
    AppWnd := GetWindowLong(Wnd,GWL_HWNDPARENT);
    if AppWnd <> 0 then
    begin
      Wnd := AppWnd;
    end;

    { Restore if iconized }
    if IsIconic(Wnd) then
    begin
      SendMessage(Wnd,WM_SYSCOMMAND,SC_RESTORE,-1);
    end;

    Exit;
  end;

  AppAtom := GlobalAddAtom(PChar(CAtomName));
  try
    Application.CreateForm(TForm2, Form2);
    Application.Run;

  finally
    GlobalDeleteAtom(AppAtom);
  end;

end.

として一つ目のインスタンスを実行し、強制的に終了してから二つ目のインスタンスを実行してみましたが、GlobalFindAtom(ja)で有効なglobal atomが取得できてしまい、ログオフ/再起動を行うまでプログラムは有効に起動できません。ということでアプリケーションの多重実行を禁止するのにglobal atomを使用するのは不適切である(global atomの用途として適切ではない)、という結論に達しました。

元ねたはTrial Delphi Programs: Allow Only One Application Execution Per Windows Session

Microsoft Monthly Update 2009/10

今日はMicrosoftのセキュリティアップデートの日です。
MS09-050
MS09-051
MS09-052
MS09-053
MS09-054
MS09-055
MS09-056
MS09-057
MS09-058
MS09-059
MS09-060
MS09-061
MS09-062

2009年10月8日

Firebird 1.5.6リリース

Firebird 1.5系列の最終版となる(予定の)Firebird 1.5.6がリリースされています。

Firebird File Repositories(download)
Firebird 1.5.6 Release Notes

タッチアプリケーションのデモ

Cris Bensenさんが先日のCodeRage 4で使用したタッチアプリケーションのデモについて説明しています。

Touch Demo Part IではまずフォームにDirect2Dサーフェースを用意します。WM_ERASEBKGNDメッセージハンドラではバックグラウンドの消去をしないようにして、オーバライドしたPaintでダミーの描画を、同じくオーバライドしたResizeでDirect2Dサーフェースのリサイズを行うようにします。

Touch Demo Part IIでは1秒あたりの描画フレーム数を計測、描画する処理を追加して、10msec毎に再描画を発生させます。

Touch Demo Part IIIではタッチした位置をグラフィカルに表示するためのTGlowSpotとそのリストを用意して、これらをPaintで描画するようにします。WM_TOUCHメッセージハンドラでタッチしたポイント(複数)に対応したTGlowSpotを生成するようにして、最後にRegisterTouchWindowUnregisterTouchWindowでこのフォームでWM_TOUCHメッセージが発生するようにします。

Touch Demo Part IVではイナーシャ(inertia/慣性)をサポートするためにTGlowSpotに_IManipulationsEvents COMインタフェースを追加してその処理を行わせ、最後にマウス動作をタッチ動作に統合します。

デモはこれで完成、ということでソースコードがCodeCentralで公開されています。

27469 Touch Demo

2009/11/20追記: Part IVの内容を追加しました。

2009年10月1日

RAD Studio 2009対応 TeeChart Standard 8.05アップデート

RAD Studio 2009対応 TeeChart Standard 8.05アップデートがリリースされています。RAD Studio 2010に含まれるものと同等になるようです。

RAD Studio 2009対応 TeeChart Standard 8.05アップデート
27339 TeeChart Standard 8.05 for RAD Studio 2009
Release Notes

Asphyre Sphinx

Delphi/C++Builderで2D/3Dグラフィックを扱うためのライブラリとしてはOpenGLのラッパであるGLSceneがメジャーどころですが、Stack Overflowを眺めていたらAsphyre Sphinxというフレームワークを見つけました(ライセンスはMPL 1.1)。Delphi 2006/Turbo Delphi/Delphi 2007対応(Delphi 2009/2010対応はまだ)で、DirectX 7/DirectX 9/OpenGLをサポートしているとのことです。

元ねたはStack Overflow3D graphics in Delphi/Native TForm GUIs