トップページ⇒tech
1001コメント310KB

C++Builder相談室 Part13

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん05/02/15 20:58:38
C++Builderに関する質問・回答や議論等を行う相談室スレッド。

過去スレ・関連サイトは>>2-6あたり。
0413デフォルトの名無しさん2005/04/08(金) 19:02:55
 
0414デフォルトの名無しさん2005/04/08(金) 19:24:14
mov esi,p1 mov edi,p2 mov ebx,p3 mov edx,p4 mov ecx,len
L1700:
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
>>414
うざっ
0416デフォルトの名無しさん2005/04/08(金) 19:32:37
 
0417デフォルトの名無しさん2005/04/08(金) 20:18:16
ptr: 出力先
optr: 前景
bg: 背景
mptr: マスク画像

*ptr = (((*optr-*bg)*(*mptr+1))>>8)+*bg;


0418デフォルトの名無しさん2005/04/08(金) 20:24:46
417 :デフォルトの名無しさん :2005/04/08(金) 20:18:16

ptr: 出力先
optr: 前景
bg: 背景
mptr: マスク画像

*ptr = (((*optr-*bg)*(*mptr+1))>>8)+*bg;
0419デフォルトの名無しさん2005/04/08(金) 21:25:04
 
0420デフォルトの名無しさん2005/04/08(金) 22:08:11
 
0421デフォルトの名無しさん2005/04/08(金) 22:28:34
 
0422デフォルトの名無しさん2005/04/08(金) 23:26:16
 
0423デフォルトの名無しさん2005/04/09(土) 00:43:59
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpgdi/html/_win32_alphablend.asp
使いみち少なそう。
0424デフォルトの名無しさん2005/04/09(土) 10:06:22
 
0425デフォルトの名無しさん2005/04/09(土) 10:30:54
>>414はどうなるの?
0426デフォルトの名無しさん2005/04/09(土) 10:37:18
http://forum.nifty.com/fdelphi/samples/00827.html
//----------------------------------------
----------------------------------- //
ここから 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:47
 
0428デフォルトの名無しさん2005/04/09(土) 17:25:22
 
0429デフォルトの名無しさん2005/04/09(土) 18:14:03
 
0430デフォルトの名無しさん2005/04/09(土) 18:16:22
誰だよ空上げする奴は?キショなぁ
0431デフォルトの名無しさん2005/04/09(土) 18:58:45
http://www.interq.or.jp/moonstone/person/del/halfdraw03.htm
void 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:40
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);
0433デフォルトの名無しさん2005/04/09(土) 23:08:06
デバッグカーネルBORDBK61.DLLが存在しないか登録されていません

というエラーが出るのだけれど、再インストールしてみても解決しないのですが、どうしたらよいのでしょうか?
C++builder6 Update4 + WinXP Home SP2です。
04343962005/04/10(日) 02:17:41
>403
色々と調べなおしているうちにレスが遅くなってすみませんでしたm(_ _)m

>使い終わったインターフェースはReleaseしないといけない。
このへんが全く解っていませんでした。改めてBCBのヘルプを見ると>401さんの
ご指摘は参照カウンタの事を言っていると思うのですが、BCBのヘルプを見ても
微妙に解りませんでした(^^;  COM関係の本を買って調べてみようと思います。

また質問させて頂くかもしれませんが、その時はよろしくお願い致します。

改めまして、>400さん、>401さん ありがとうございましたm(_ _)m
0435デフォルトの名無しさん2005/04/10(日) 13:37:44
 
0436デフォルトの名無しさん2005/04/10(日) 21:54:00
0437デフォルトの名無しさん2005/04/10(日) 22:35:13
>>433
BCB6+Update4+WinXP Pro SP2だけど、そんなファイルないぞ。
0438デフォルトの名無しさん2005/04/10(日) 22:52:18
>>433
CDのInstall.rtf (.txt) に解決方法らしきものが載っとる
0439デフォルトの名無しさん2005/04/10(日) 22:53:27
あいやBCBをインストールしたフォルダにもあるか
0440デフォルトの名無しさん2005/04/10(日) 22:56:15
BORDBK61.EXEならBINフォルダにあるね。
0441デフォルトの名無しさん2005/04/10(日) 23:03:47
regsvr32で登録するのか・・・
0442デフォルトの名無しさん2005/04/11(月) 13:43:35
いつBCB10でんだこのやろう
0443デフォルトの名無しさん2005/04/11(月) 14:34:58
一生待ってろハゲちゃびん
0444デフォルトの名無しさん2005/04/11(月) 14:58:24
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);
0445zaq3d2e7fc0.zaq.ne.jp2005/04/11(月) 15:37:20
えぇけっしとるのぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっwww??
0446デフォルトの名無しさん2005/04/11(月) 15:59:27
コピペだったり中途半端なコードだったり空行だったりの、変なageレスはマジで何なん?
0447デフォルトの名無しさん2005/04/11(月) 16:18:45
別に
0448デフォルトの名無しさん2005/04/11(月) 16:36:15
池沼が住み着いた
0449デフォルトの名無しさん2005/04/11(月) 16:48:48
>>448
池沼はレスしないで荒れるから
0450デフォルトの名無しさん2005/04/11(月) 16:55:07
(^^
0451デフォルトの名無しさん2005/04/11(月) 18:32:33
0452デフォルトの名無しさん2005/04/11(月) 23:55:40
BORDBK61.DLLは何かデータベースと関係ありそうですが
0453デフォルトの名無しさん2005/04/12(火) 17:13:36
このようなコードで、
char tmpbuf[255];
memcpy(&tmpbuf[0],"ABCD",4);
tmpbuf[4] = "1";

tmpbufをAnsiString型に換えた場合の添字の指定方法がわかりません。
どう書いたらいいのでしょうか?
0454デフォルトの名無しさん2005/04/12(火) 17:18:34
 
0455デフォルトの名無しさん2005/04/12(火) 17:27:08
tmpbuf[4] = "1";
これ普通に
tmpbuf[4] = '1';
こうじゃないとエラーでそう
0456デフォルトの名無しさん2005/04/12(火) 18:40:44
>>453
AnsiString::operator[]は1始まりなので
 AnsiString asbuf = "ABCD";
 asbuf.SetLength( 256 );
 asbuf[5] = '1';

ただ普通はこういう使い方はしないでしょ。
 AnsiString str = "ABCD";
 str += '1';
これで十分。
0457デフォルトの名無しさん2005/04/12(火) 18:48:09
>>456

> これで十分。

Dat's COOL.
0458デフォルトの名無しさん2005/04/12(火) 19:06:11
AnsiStringなら
str += '1';
は、むしろ
str += "1";
0459デフォルトの名無しさん2005/04/12(火) 23:58:21
以下の手順で実行するとエラーが出ます。

(1) TColorBoxで「カスタムカラー」を選択し色選択ダイアログを表示させる。
(2)「作成した色」において、作成していない色を選択し、OKボタンを押下する。
(3) エラーが表示される(リストのインデックスが範囲を超えました云々…)。

以上のエラーをどうやって回避したら良いか困っています。
どなたかアドバイスを下さい。
0460デフォルトの名無しさん2005/04/13(水) 00:29:29
 
0461デフォルトの名無しさん2005/04/13(水) 06:24:52
nasmは使えますか?
0462デフォルトの名無しさん2005/04/13(水) 10:46:33
try
0463デフォルトの名無しさん2005/04/13(水) 13:13:43
>>459
VCLがバグっとるね。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);
    }
}
04644592005/04/13(水) 14:53:21
>>461
nasm使えません…。

>>462
OnSelectにtry〜catch文を仕込んでやってみましたが、ダメでした。


>>463
できました!
やはりVCLのバグだったんですね…。
ありがとう御座います。助かりました。

余談ですが、
TColorDialogならあらかじめCustomColorsを設定しておけば良いのですが
TColorBoxだとCustomColorsってプロパティ無いんですよね。
そういう場合、SendMessage()で予め設定しておけるんでしょうか?
SendMessage()ってほとんど知らないので、学習しなきゃなぁ。
0465デフォルトの名無しさん2005/04/13(水) 15:11:48
>>464
CustomColorsの設定は残念ながら�_。
TColorBoxの派生コンポを作って、PickCustomColorメソッドをオーバーライドすれば可能だけどね。

上のバグもこのメソッドをいじって根本的に解決できる。
(内部で作成してるColorDialogのColorが-1(未作成の色)を返したら、強制的に0(黒)にするとか無視するとか)

ソースがあるなら、TCustomColorBox.PickCustomColorのコードを見てみるといい。
0466デフォルトの名無しさん2005/04/14(木) 01:57:19
 
0467デフォルトの名無しさん2005/04/14(木) 17:08:08
あるファイルから別のファイルを見たときの相対的なディレクトリの位置はどのように取得すればよいのでしょうか?
0468デフォルトの名無しさん2005/04/14(木) 17:35:58
>>467
ExtractRelativePath
0469本田2005/04/14(木) 22:21:49
>>452
デバッグカーネル。
0470デフォルトの名無しさん2005/04/15(金) 02:35:27
Check1BoxのCheckedプロパティをいじっただけで、Check1Click(TObject *Sender)が実行されてしまうことはありうる?

FromCreateでレジストリから以前の状態をCheckedに読み込んだだけで、Check1Click(TObject *Sender)が実行されてしまうのだけど・・・
0471デフォルトの名無しさん2005/04/15(金) 02:45:03
>>470
ヘルプのTControl::OnClickを参照。
0472デフォルトの名無しさん2005/04/15(金) 11:39:12
>>471
ありがとう

チェックボックスの Checked プロパティの値が変更された場合
    
というわけですね。実行されるときとされないときがあったので、470を書き込んだ後さらに悩んでしまいました。
Checked プロパティがレジストリの値と同じ場合は=でbool値を代入してもonClickは実行されないということのようですね
0473デフォルトの名無しさん2005/04/15(金) 13:55:16
unsigned charをAnsiStringにつっこむにはどうキャストしたらいいですか?
0474デフォルトの名無しさん2005/04/15(金) 14:01:00
>>473
どう突っ込みたいのか書かないとわからん。
数字として入れたいならAnsiString::sprintf()とか
0475デフォルトの名無しさん2005/04/15(金) 14:58:00
うるせー
0476デフォルトの名無しさん2005/04/15(金) 17:41:54
AnsiStringに注意



文字列を扱うのに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:59
>>476
ObjectPascalの文字列型互換だからしょうがない
0478デフォルトの名無しさん2005/04/16(土) 00:01:16
ひょっとしてM$にもGKっているのか? w
0479デフォルトの名無しさん2005/04/16(土) 03:37:07
ゴールキーパー?
0480デフォルトの名無しさん2005/04/16(土) 11:06:19
AnsiStringはhoge[1]ってアクセスできるのか?
いまBCBが手元にないので確かめられないのだが、
AnsiString hoge[5];
hoge[1]="Nakajima";
とした場合は、hoge[1][1]にNが入るってこと?
0481デフォルトの名無しさん2005/04/16(土) 12:38:18
>>480
その場合は
hoge[0][1]にNがはいるんじゃ
0482デフォルトの名無しさん2005/04/16(土) 13:12:09
>>481
何故?なにゆえ?
0483デフォルトの名無しさん2005/04/16(土) 14:25:42
480が正しい。
ただし正確には
 hoge[1][1]は
 hoge[1].operator[](1)と等価で戻値はchar&
0484デフォルトの名無しさん2005/04/16(土) 17:36:37
void __fastcall TForm1::FormCreate(TObject *Sender)
{

AnsiString hoge[5];
hoge[1]="ABC";

Caption = hoge[1][1];//A
Application->Title = hoge[1][3];//C

}
0485デフォルトの名無しさん2005/04/16(土) 18:15:23
How can I disable Ctrl + Alt + Del or Alt + Tab?
http://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:39
 
0487デフォルトの名無しさん2005/04/16(土) 22:32:48
http://pc8.2ch.net/test/read.cgi/tech/1108468718/404-

Alpha が透過度になります(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を使ったサービスアプリケーションからShellExecute()などで他のプロセスを
たちあげたいのですが、うまくいきません。TServiceは、ハンドルをもってないからなんでしょうか?
0489デフォルトの名無しさん2005/04/17(日) 12:52:20
意味不明
0490デフォルトの名無しさん2005/04/18(月) 02:42:36
TServiceApplication
0491デフォルトの名無しさん2005/04/18(月) 02:44:03
サービスアプリケーションウィザード
Windows NTのサービスを実装するアプリケーションを開発するために、
サー ビスアプリケーションを作成するウィザードが提供されます。
サービスアプリケ ーションのために、
TServiceApplicationクラスとTServiceクラスが用意され ており、
サービスの名前や種類、動作はオブジェクトインスペクタによって
定 義できます。
0492デフォルトの名無しさん2005/04/18(月) 12:05:37
TPanelのPopupMenuプロパティーにPopupMenu1を割り当ててんだけど
これって左クリでポップアップする方法教えれ。オブジェクトインスペクタの設定でな
パネルのクリイベで自分で呼び出すってのはイラン
0493デフォルトの名無しさん2005/04/18(月) 12:40:16
>>492
そんな方法はない
0494デフォルトの名無しさん2005/04/18(月) 13:23:31
>>492
お前がBCB使うの止めればいいよw
0495デフォルトの名無しさん2005/04/18(月) 18:52:48
なんだおまえらしらねーのかよ、つかえねーやつらだなおまえらって
0496デフォルトの名無しさん2005/04/18(月) 19:07:25
マウスの設定でボタンの左右を入れ替えたら完璧にできるお。
0497デフォルトの名無しさん2005/04/18(月) 19:54:19
BCB5ですが、リンクが5回に一回は失敗しフリーズしてしまいます。
何か対処方法はありますでしょうか。
0498デフォルトの名無しさん2005/04/18(月) 22:10:56
 
0499デフォルトの名無しさん2005/04/18(月) 23:30:59
 
0500デフォルトの名無しさん2005/04/19(火) 03:35:33
 
0501デフォルトの名無しさん2005/04/19(火) 09:15:25
>>495
知ってるがお前の態度が(ry
0502デフォルトの名無しさん2005/04/19(火) 13:52:59
ShareやnyのファイルリストみたいにListViewで
マウスボタンを押した状態でカーソルを移動させ
て範囲内の項目を全て選択状態にするにはどう
やったらできますか?BCB6Proです。
0503デフォルトの名無しさん2005/04/19(火) 14:47:23
MultiSelect じゃなくて?
0504デフォルトの名無しさん2005/04/19(火) 14:59:49
>>503
CtrlやSiftを押しながらではなくてマウスボタンを押しながら
カーソルを移動させるだけで破線の四角い枠が表示されて
範囲内の項目全てが選択状態になりますよね?
あれを実現したいのです。
0505デフォルトの名無しさん2005/04/19(火) 15:25:14
RowSelect
0506デフォルトの名無しさん2005/04/19(火) 19:41:57
VC6で作ったMFCのアプリケーションをBCB6でコンパイルするとafxres.hを開くことが出来ないと怒られます。
カーソル位置のファイルを開くで開いてみると、ちゃんとBCBがインストールされているディレクトリにあるみたいで、
インクルードのパスもMCFのディレクトリに通ってるみたいです。
何故エラーが出るのでしょうか。
FAQみたいな質問で申し訳ないです。
0507デフォルトの名無しさん2005/04/19(火) 19:44:42
上記で書き忘れたのですが、VC++プロジェクト変換ユーティリティで変換してMFC互換モードでコンパイルtしました。
宜しくお願いします。
0508本田2005/04/19(火) 23:51:14
>>507
そんなことよくあるんだけど、
私、BCB5PROを使ってるんだけど、
プロジェクトファイルをメイクファイルに変換して、
試行錯誤してメイクファイルを修正している。
0509デフォルトの名無しさん2005/04/20(水) 01:45:50
64ビットWindows対応のプログラムは作れるのでしょうか?
0510& ◆FC4h7F/wV6 2005/04/20(水) 02:34:19
>>506
#include "afxres.h"
を
#include <afxres.h>
にするとか。
0511本田2005/04/20(水) 02:35:52
510は私です。
>>509
BCB6では無理。
0512デフォルトの名無しさん2005/04/20(水) 03:11:52
>>509
Delphi2006またはDelphi2007をお待ちください。
■ このスレッドは過去ログ倉庫に格納されています