[C++Builder,Delphi] デバッグウインドウにメッセージを表示する
OutputDebugString 関数を使うとIDEのデバッグ画面にメッセージを表示することができます。スレッドのデバッグなどに有効です。
OutputDebugString 関数を使うとIDEのデバッグ画面にメッセージを表示することができます。スレッドのデバッグなどに有効です。
再描画に関連するメソッド
・Invalidate
再描画が必要であることを宣言します。実際の再描画は適当なタイミングで実施されます。
・Update
Invalidateなどで保留中の再描画を強制的に実施します。
・Repaint
Invalidateを呼び出した後、Updateを呼び出します。強制的に再描画します。
・Refresh
Repaintと同じです。
#include <GraphUtil.hpp>
void __fastcall ColorRGBToHLS(unsigned clrRGB, Word &Hue, Word &Luminance, Word &Saturation);
unsigned __fastcall ColorHLSToRGB(Word Hue, Word Luminance, Word Saturation);
「デスクトップの表示」や「Windows+D」でも最小化されないウインドウの作り方
constructor TForm1.Create(AOwner: TComponent);
var
ProgmanHwnd: THandle;
begin
inherited;
ProgmanHwnd:=FindWindow('Progman','Program Manager');
if ProgmanHwnd<>0 then
begin
ParentWindow:= ProgmanHwnd;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//前面に表示する
SetZOrder( True);
end;
rcファイルを使ってアイコンリソースをEXEファイルに埋め込んだときに、アプリケーションのメインアイコンが変わってしまうことがあります。これは、Delphi,BCBはリソース名でリソースを並び替えてしまうためにおきる問題です。
解決策としては、Delphi,BCBではメインアイコンをMAINICONの名前で保持していますので、ソートした時に、これよりも後に来るような名前を付けます。例えば、
OREICON ICON "aaa.ico"
のような感じです。MよりもOの方がアルファベット順が後になります。
type
TForm1 = class(TForm)
private
procedure WMMousewheel(var Msg: TMessage); message WM_MOUSEWHEEL;
:
implemetation
procedure TForm1.WMMousewheel(var Msg: TMessage);
begin
if (Msg.WParam > 0) then begin
//奥の方向にホイール
Sendmessage(○○.Handle, WM_VSCROLL, SB_LINEUP, 0); //or SB_PAGEUP
end
else
begin
//手前の方向にホイール
Sendmessage(○○.Handle, WM_VSCROLL, SB_LINEDOWN, 0); //or SB_PAGEDOWN
end;
end;
StrToIntは文字列を数字に変換するための関数ですが、引数に数字として不正な文字列(例えば「125a」とか)を渡すと例外が発生してしまいます。これをきちんと処理するのが面倒だったり、単純に不正な文字列が渡された場合は-1を返してほしいと思う場合があったりします。そういう時に便利なのがStrToIntDefという関数です。
i:=StrToIntDef(Edit1.Text,-1);
というようにデフォルト値を指定して変換ができます。変換に失敗した場合はデフォルト値が返される仕組みです。例外は発生しません。場合によっては非常に便利な関数です。
manifestファイルの書き方はこちらを参照してください。
作成したmanifestファイルをexeファイルにリソースとして埋め込む方法です。
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define CONTROL_PANEL_RESOURCE_ID 123
#define RT_MANIFEST 24
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "○○.exe.manifest"
これをmanifest.rcというようなファイル名で保存します。なお上記の○○の部分には実行ファイルの名前を書きます。「プロジェクト」-「プロジェクトに追加」で作成したrcファイルをプロジェクトに追加します。
これでコンパイルすればOKです。
リソースをテキストエディタなど作成して「tmp.rc」というような名前で保存します。そのファイルをプロジェクトに追加してコンパイルします。rcファイルをBRCC32でコンパイルしてresファイルに変換しなくてもOKです。
リソースファイル(*.rc)の中身は
リソース名 リソースタイプ "ファイル名"
のように書きます。例えば、
MYICON ICON "MyIcon.ico"
MYBMP BITMAP "MyBmp.bmp"
のようです。
procedure TScreenSaverForm.FormCreate(Sender: TObject);
var
dc:hdc;
begin
//キャプチャ
Image1.Picture.Bitmap.width:=screen.Width;
Image1.Picture.Bitmap.height:=screen.Height;
dc:=GetDC(0);
BitBlt(Image1.Picture.Bitmap.Canvas.Handle,0,0,
Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height,
dc,0,0,SRCCOPY);
ReleaseDC(0,dc);
end;
ActiveX | C++Builder | C++言語・Pascal言語 | Delphi | TActionList | TColor | TEdit | TeX | TForm | TIniFile | TLabel | TListBox | TListView | TMemo | TProgressBar | TSplitter | TStatusBar | TStringGrid | TTrackBar | TWebBrowser | Windows | その他 | アルゴリズム | システム関連 | ネットワーク関連 | ファイル、フォルダの処理 | フォント関連 | フォーム・ダイアログ関連 | フリーソフト | プログラミング全般 | マウス、キーボードの処理 | 技術文書 | 文字列の処理 | 日付時刻の処理 | 画像関連 | 開発環境(IDE)関連