C++Builder相談室 Part13
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/15 20:58:38過去スレ・関連サイトは>>2-6あたり。
0413デフォルトの名無しさん
2005/04/08(金) 19:02:550414デフォルトの名無しさん
2005/04/08(金) 19:24:14L1700:
pxor mm1,mm1 pcmpeqb mm4,mm4 movq mm5,[esi] movq mm7,[edi] mov eax,[edx] or eax,[edx+4]
jnz @L1710 movq mm0,mm5 jmp L1720
L1710:
movq mm6,[edx] psubusb mm4,mm6 movq mm0,mm5 movq mm2,mm7 punpcklbw mm0,mm1 punpcklbw mm2,mm1
movq mm3,mm4 punpcklbw mm3,mm1 pmullw mm0,mm3 movq mm3,mm6 punpcklbw mm3,mm1 pmullw mm2,mm3
paddusb mm0,mm2 psrlw mm0,8 packuswb mm0,mm1 punpckhbw mm5,mm1 punpckhbw mm7,mm4
movq mm3,mm4 punpckhbw mm3,mm1 pmullw mm5,mm3 movq mm3,mm6 punpckhbw mm3,mm1 pmullw mm7,mm3
paddusb mm7,mm5 psrlw mm7,8 packuswb mm1,mm7 por mm0,mm1
L1720:
add edi,8 add esi,8 movq [ebx],mm0 add ebx,8 add edx,8 loop L1700
ってな感じ。
0415デフォルトの名無しさん
2005/04/08(金) 19:24:49うざっ
0416デフォルトの名無しさん
2005/04/08(金) 19:32:370417デフォルトの名無しさん
2005/04/08(金) 20:18:16optr: 前景
bg: 背景
mptr: マスク画像
*ptr = (((*optr-*bg)*(*mptr+1))>>8)+*bg;
0418デフォルトの名無しさん
2005/04/08(金) 20:24:46ptr: 出力先
optr: 前景
bg: 背景
mptr: マスク画像
*ptr = (((*optr-*bg)*(*mptr+1))>>8)+*bg;
0419デフォルトの名無しさん
2005/04/08(金) 21:25:040420デフォルトの名無しさん
2005/04/08(金) 22:08:110421デフォルトの名無しさん
2005/04/08(金) 22:28:340422デフォルトの名無しさん
2005/04/08(金) 23:26:160423デフォルトの名無しさん
2005/04/09(土) 00:43:59使いみち少なそう。
0424デフォルトの名無しさん
2005/04/09(土) 10:06:220425デフォルトの名無しさん
2005/04/09(土) 10:30:540426デフォルトの名無しさん
2005/04/09(土) 10:37:18//----------------------------------------
----------------------------------- //
ここから C++Builder ユーザー用です void DrawTranslucent(TCanvas *Canvas, int x, int y, Graphics::TGraphic *Graphic) { int w = Graphic->Width; int h = Graphic->Height;
0427デフォルトの名無しさん
2005/04/09(土) 14:16:470428デフォルトの名無しさん
2005/04/09(土) 17:25:220429デフォルトの名無しさん
2005/04/09(土) 18:14:030430デフォルトの名無しさん
2005/04/09(土) 18:16:220431デフォルトの名無しさん
2005/04/09(土) 18:58:45void DrawTrans(int x, int y,Graphics::TBitmap *HalfCanvas,Graphics::TBitmap *HalfBmp)
{
int ix,jy,Gw,Gh;
Graphics::TBitmap *CanVasBmp;
Graphics::TBitmap *PutBmp;
Gw = HalfBmp->Width;
Gh = HalfBmp->Height;
//Gw = 100;
//Gh = 100;
0432デフォルトの名無しさん
2005/04/09(土) 19:00:40void AlphaDraw(int X,int Y, //{描画先座標}
Graphics::TBitmap *Bmp1,
Graphics::TBitmap *Bmp2, //{ビットマップ}
float Alpha, //{透過度}
TColor TransParentColor) //{背景色(完全透過します)}
{
int i, j, k, v, z;
TRect Rect1, Rect2, Rect3;
//Pnt1, Pnt2 : PRGBArray;
Byte *Pnt1, *Pnt2; // scanlines
float Alp;
Bmp1->PixelFormat = pf24bit;
Bmp2->PixelFormat = pf24bit;
//半透明コピー開始
//コピー領域をキャッチ
Rect1 = Rect(0, 0, Bmp2->Width, Bmp2->Height);
OffsetRect(Rect1, X, Y);
0433デフォルトの名無しさん
2005/04/09(土) 23:08:06というエラーが出るのだけれど、再インストールしてみても解決しないのですが、どうしたらよいのでしょうか?
C++builder6 Update4 + WinXP Home SP2です。
0434396
2005/04/10(日) 02:17:41色々と調べなおしているうちにレスが遅くなってすみませんでしたm(_ _)m
>使い終わったインターフェースはReleaseしないといけない。
このへんが全く解っていませんでした。改めてBCBのヘルプを見ると>401さんの
ご指摘は参照カウンタの事を言っていると思うのですが、BCBのヘルプを見ても
微妙に解りませんでした(^^; COM関係の本を買って調べてみようと思います。
また質問させて頂くかもしれませんが、その時はよろしくお願い致します。
改めまして、>400さん、>401さん ありがとうございましたm(_ _)m
0435デフォルトの名無しさん
2005/04/10(日) 13:37:440436デフォルトの名無しさん
2005/04/10(日) 21:54:000437デフォルトの名無しさん
2005/04/10(日) 22:35:13BCB6+Update4+WinXP Pro SP2だけど、そんなファイルないぞ。
0438デフォルトの名無しさん
2005/04/10(日) 22:52:18CDのInstall.rtf (.txt) に解決方法らしきものが載っとる
0439デフォルトの名無しさん
2005/04/10(日) 22:53:270440デフォルトの名無しさん
2005/04/10(日) 22:56:150441デフォルトの名無しさん
2005/04/10(日) 23:03:470442デフォルトの名無しさん
2005/04/11(月) 13:43:350443デフォルトの名無しさん
2005/04/11(月) 14:34:580444デフォルトの名無しさん
2005/04/11(月) 14:58:24void AlphaDraw(int X,int Y, //{描画先座標}
Graphics::TBitmap *Bmp1,
Graphics::TBitmap *Bmp2, //{ビットマップ}
float Alpha, //{透過度}
TColor TransParentColor) //{背景色(完全透過します)}
{
int i, j, k, v, z;
TRect Rect1, Rect2, Rect3;
//Pnt1, Pnt2 : PRGBArray;
Byte *Pnt1, *Pnt2; // scanlines
float Alp;
Bmp1->PixelFormat = pf24bit;
Bmp2->PixelFormat = pf24bit;
//半透明コピー開始
//コピー領域をキャッチ
Rect1 = Rect(0, 0, Bmp2->Width, Bmp2->Height);
OffsetRect(Rect1, X, Y);
0446デフォルトの名無しさん
2005/04/11(月) 15:59:270447デフォルトの名無しさん
2005/04/11(月) 16:18:450448デフォルトの名無しさん
2005/04/11(月) 16:36:150449デフォルトの名無しさん
2005/04/11(月) 16:48:48池沼はレスしないで荒れるから
0450デフォルトの名無しさん
2005/04/11(月) 16:55:070451デフォルトの名無しさん
2005/04/11(月) 18:32:330452デフォルトの名無しさん
2005/04/11(月) 23:55:400453デフォルトの名無しさん
2005/04/12(火) 17:13:36char tmpbuf[255];
memcpy(&tmpbuf[0],"ABCD",4);
tmpbuf[4] = "1";
tmpbufをAnsiString型に換えた場合の添字の指定方法がわかりません。
どう書いたらいいのでしょうか?
0454デフォルトの名無しさん
2005/04/12(火) 17:18:340455デフォルトの名無しさん
2005/04/12(火) 17:27:08これ普通に
tmpbuf[4] = '1';
こうじゃないとエラーでそう
0456デフォルトの名無しさん
2005/04/12(火) 18:40:44AnsiString::operator[]は1始まりなので
AnsiString asbuf = "ABCD";
asbuf.SetLength( 256 );
asbuf[5] = '1';
ただ普通はこういう使い方はしないでしょ。
AnsiString str = "ABCD";
str += '1';
これで十分。
0457デフォルトの名無しさん
2005/04/12(火) 18:48:09> これで十分。
Dat's COOL.
0458デフォルトの名無しさん
2005/04/12(火) 19:06:11str += '1';
は、むしろ
str += "1";
0459デフォルトの名無しさん
2005/04/12(火) 23:58:21(1) TColorBoxで「カスタムカラー」を選択し色選択ダイアログを表示させる。
(2)「作成した色」において、作成していない色を選択し、OKボタンを押下する。
(3) エラーが表示される(リストのインデックスが範囲を超えました云々…)。
以上のエラーをどうやって回避したら良いか困っています。
どなたかアドバイスを下さい。
0460デフォルトの名無しさん
2005/04/13(水) 00:29:290461デフォルトの名無しさん
2005/04/13(水) 06:24:520462デフォルトの名無しさん
2005/04/13(水) 10:46:330463デフォルトの名無しさん
2005/04/13(水) 13:13:43VCLがバグっとるね。OnSelectに以下のように書いとけば回避できると思う。
void __fastcall TForm1::ColorBox1Select(TObject *Sender)
{
if (ColorBox1->Style.Contains(cbCustomColor))
{
int color = ::SendMessage(ColorBox1->Handle, CB_GETITEMDATA, 0, 0);
if (color == -1)
::SendMessage(ColorBox1->Handle, CB_SETITEMDATA, 0, 0);
}
}
0464459
2005/04/13(水) 14:53:21nasm使えません…。
>>462
OnSelectにtry〜catch文を仕込んでやってみましたが、ダメでした。
>>463
できました!
やはりVCLのバグだったんですね…。
ありがとう御座います。助かりました。
余談ですが、
TColorDialogならあらかじめCustomColorsを設定しておけば良いのですが
TColorBoxだとCustomColorsってプロパティ無いんですよね。
そういう場合、SendMessage()で予め設定しておけるんでしょうか?
SendMessage()ってほとんど知らないので、学習しなきゃなぁ。
0465デフォルトの名無しさん
2005/04/13(水) 15:11:48CustomColorsの設定は残念ながら�_。
TColorBoxの派生コンポを作って、PickCustomColorメソッドをオーバーライドすれば可能だけどね。
上のバグもこのメソッドをいじって根本的に解決できる。
(内部で作成してるColorDialogのColorが-1(未作成の色)を返したら、強制的に0(黒)にするとか無視するとか)
ソースがあるなら、TCustomColorBox.PickCustomColorのコードを見てみるといい。
0466デフォルトの名無しさん
2005/04/14(木) 01:57:190467デフォルトの名無しさん
2005/04/14(木) 17:08:080468デフォルトの名無しさん
2005/04/14(木) 17:35:58ExtractRelativePath
0469本田
2005/04/14(木) 22:21:49デバッグカーネル。
0470デフォルトの名無しさん
2005/04/15(金) 02:35:27FromCreateでレジストリから以前の状態をCheckedに読み込んだだけで、Check1Click(TObject *Sender)が実行されてしまうのだけど・・・
0471デフォルトの名無しさん
2005/04/15(金) 02:45:03ヘルプのTControl::OnClickを参照。
0472デフォルトの名無しさん
2005/04/15(金) 11:39:12ありがとう
チェックボックスの Checked プロパティの値が変更された場合
というわけですね。実行されるときとされないときがあったので、470を書き込んだ後さらに悩んでしまいました。
Checked プロパティがレジストリの値と同じ場合は=でbool値を代入してもonClickは実行されないということのようですね
0473デフォルトの名無しさん
2005/04/15(金) 13:55:160474デフォルトの名無しさん
2005/04/15(金) 14:01:00どう突っ込みたいのか書かないとわからん。
数字として入れたいならAnsiString::sprintf()とか
0475デフォルトの名無しさん
2005/04/15(金) 14:58:000476デフォルトの名無しさん
2005/04/15(金) 17:41:54文字列を扱うのにAnsiStringはとても便利ですが、気が付いた点を2つ。
(1)hoge[0]の扱い
C言語では
char hoge[] = "Nakajima";
と宣言したとき、hoge[1] には 'a' が入っています。
つまり0から始まっています。
しかし、
AnsiString hoge = "Nakajima";
と宣言したとき、hoge[1] には 'N' が入っています。
これはPascalと同じように1から始まっているのです。 Pascalで書かれたVCLを使っているからだ と思いますが、
C++Builderなんだからねぇ・・・
Cを使っていた人は注意して下さい。
0477デフォルトの名無しさん
2005/04/15(金) 20:09:59ObjectPascalの文字列型互換だからしょうがない
0478デフォルトの名無しさん
2005/04/16(土) 00:01:160479デフォルトの名無しさん
2005/04/16(土) 03:37:070480デフォルトの名無しさん
2005/04/16(土) 11:06:19いまBCBが手元にないので確かめられないのだが、
AnsiString hoge[5];
hoge[1]="Nakajima";
とした場合は、hoge[1][1]にNが入るってこと?
0481デフォルトの名無しさん
2005/04/16(土) 12:38:18その場合は
hoge[0][1]にNがはいるんじゃ
0482デフォルトの名無しさん
2005/04/16(土) 13:12:09何故?なにゆえ?
0483デフォルトの名無しさん
2005/04/16(土) 14:25:42ただし正確には
hoge[1][1]は
hoge[1].operator[](1)と等価で戻値はchar&
0484デフォルトの名無しさん
2005/04/16(土) 17:36:37{
AnsiString hoge[5];
hoge[1]="ABC";
Caption = hoge[1][1];//A
Application->Title = hoge[1][3];//C
}
0485デフォルトの名無しさん
2005/04/16(土) 18:15:23http://thunder.prohosting.com/~cbdn/k008.htm
http://thunder.prohosting.com/~cbdn/html.htm
Applies To: C++Builder 1 or higher
Category: Knowledge Base
1.
Start a new project using File | New Application.
2.
Edit the OnShow event:
void __fastcall TForm1::FormShow(TObject *Sender)
{
int result;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, true, &result,
0);
}
3.
Edit the OnClose event:
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction
&Action)
{
int result;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, false, &result,
0);
}
As you already know, when a screen saver is running, the special Windows keys are disabled in order to prevent security problems. You can trick Windows into thinking that a screen saver is running.
0486デフォルトの名無しさん
2005/04/16(土) 21:12:390487デフォルトの名無しさん
2005/04/16(土) 22:32:48Alpha が透過度になります(1.0 で100%コピー、0.5 で50%コピー)。
http://members3.jcom.home.ne.jp/jellyjam/pages/Del/graph.html
void AlphaDraw(int X,int Y, //{描画先座標}
Graphics::TBitmap *Bmp1,
Graphics::TBitmap *Bmp2, //{ビットマップ}
float Alpha, //{透過度}
TColor TransParentColor) //{背景色(完全透過します)}
{
int i, j, k, v, z;
TRect Rect1, Rect2, Rect3;
//Pnt1, Pnt2 : PRGBArray;
Byte *Pnt1, *Pnt2; // scanlines
float Alp;
Bmp1->PixelFormat = pf24bit;
Bmp2->PixelFormat = pf24bit;
//半透明コピー開始
//コピー領域をキャッチ
Rect1 = Rect(0, 0, Bmp2->Width, Bmp2->Height);
OffsetRect(Rect1, X, Y);
0488デフォルトの名無しさん
2005/04/17(日) 12:45:21たちあげたいのですが、うまくいきません。TServiceは、ハンドルをもってないからなんでしょうか?
0489デフォルトの名無しさん
2005/04/17(日) 12:52:200490デフォルトの名無しさん
2005/04/18(月) 02:42:360491デフォルトの名無しさん
2005/04/18(月) 02:44:03Windows NTのサービスを実装するアプリケーションを開発するために、
サー ビスアプリケーションを作成するウィザードが提供されます。
サービスアプリケ ーションのために、
TServiceApplicationクラスとTServiceクラスが用意され ており、
サービスの名前や種類、動作はオブジェクトインスペクタによって
定 義できます。
0492デフォルトの名無しさん
2005/04/18(月) 12:05:37これって左クリでポップアップする方法教えれ。オブジェクトインスペクタの設定でな
パネルのクリイベで自分で呼び出すってのはイラン
0493デフォルトの名無しさん
2005/04/18(月) 12:40:16そんな方法はない
0494デフォルトの名無しさん
2005/04/18(月) 13:23:31お前がBCB使うの止めればいいよw
0495デフォルトの名無しさん
2005/04/18(月) 18:52:480496デフォルトの名無しさん
2005/04/18(月) 19:07:250497デフォルトの名無しさん
2005/04/18(月) 19:54:19何か対処方法はありますでしょうか。
0498デフォルトの名無しさん
2005/04/18(月) 22:10:560499デフォルトの名無しさん
2005/04/18(月) 23:30:590500デフォルトの名無しさん
2005/04/19(火) 03:35:330501デフォルトの名無しさん
2005/04/19(火) 09:15:25知ってるがお前の態度が(ry
0502デフォルトの名無しさん
2005/04/19(火) 13:52:59マウスボタンを押した状態でカーソルを移動させ
て範囲内の項目を全て選択状態にするにはどう
やったらできますか?BCB6Proです。
0503デフォルトの名無しさん
2005/04/19(火) 14:47:230504デフォルトの名無しさん
2005/04/19(火) 14:59:49CtrlやSiftを押しながらではなくてマウスボタンを押しながら
カーソルを移動させるだけで破線の四角い枠が表示されて
範囲内の項目全てが選択状態になりますよね?
あれを実現したいのです。
0505デフォルトの名無しさん
2005/04/19(火) 15:25:140506デフォルトの名無しさん
2005/04/19(火) 19:41:57カーソル位置のファイルを開くで開いてみると、ちゃんとBCBがインストールされているディレクトリにあるみたいで、
インクルードのパスもMCFのディレクトリに通ってるみたいです。
何故エラーが出るのでしょうか。
FAQみたいな質問で申し訳ないです。
0507デフォルトの名無しさん
2005/04/19(火) 19:44:42宜しくお願いします。
0508本田
2005/04/19(火) 23:51:14そんなことよくあるんだけど、
私、BCB5PROを使ってるんだけど、
プロジェクトファイルをメイクファイルに変換して、
試行錯誤してメイクファイルを修正している。
0509デフォルトの名無しさん
2005/04/20(水) 01:45:500510& ◆FC4h7F/wV6
2005/04/20(水) 02:34:19#include "afxres.h"
を
#include <afxres.h>
にするとか。
0511本田
2005/04/20(水) 02:35:52>>509
BCB6では無理。
0512デフォルトの名無しさん
2005/04/20(水) 03:11:52Delphi2006またはDelphi2007をお待ちください。
■ このスレッドは過去ログ倉庫に格納されています