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

C++Builder相談室 Part15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/08/21(日) 17:48:30
C++Builderに関する質問・回答や議論等を行う相談室スレッド。


過去スレ・関連サイトは>>2-7あたり。
0002デフォルトの名無しさん2005/08/21(日) 17:49:03
<過去スレ>
C++Builder相談室
http://piza2.2ch.net/tech/kako/969/969458279.html
新C++Builder相談室(C++Builder相談室 Part2)
http://pc.2ch.net/tech/kako/997/997074601.html
C Builder相談室 Part3
http://pc3.2ch.net/tech/kako/1016/10160/1016065855.html
C++Builder相談室 Part4
http://pc5.2ch.net/tech/kako/1035/10355/1035596146.html
C++Builder相談室 Part5
http://pc5.2ch.net/tech/kako/1045/10455/1045542179.html
C++Builder相談室 Part6
http://pc5.2ch.net/tech/kako/1054/10542/1054280736.html
C++Builder相談室 Part7
http://pc5.2ch.net/tech/kako/1061/10615/1061594556.html
C++Builder相談室 Part8(html化待ち)
http://pc5.2ch.net/test/read.cgi/tech/1070222674/l50
C++Builder相談室 Part9(html化待ち)
http://pc5.2ch.net/test/read.cgi/tech/1080541814/l50
C++Builder相談室 Part10(html化待ち)
http://pc5.2ch.net/test/read.cgi/tech/1089299158/l50
C++Builder相談室 Part11(html化待ち)
http://pc5.2ch.net/test/read.cgi/tech/1094749339/l50
C++Builder相談室 Part12(html化待ち)
http://pc5.2ch.net/test/read.cgi/tech/1099238936/l50
C++Builder相談室 Part13(html化待ち)
http://pc8.2ch.net/test/read.cgi/tech/1108468718/l50
C++Builder相談室 Part14(前スレ)
http://pc8.2ch.net/test/read.cgi/tech/1116460578/l50
0003デフォルトの名無しさん2005/08/21(日) 17:49:35
<関連スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50
Borland C++ BuilderX
http://pc8.2ch.net/test/read.cgi/tech/1065260556/l50
タダで使えるBorland C++ Part4
http://pc8.2ch.net/test/read.cgi/tech/1091066805/l50
【Delphi】 Indyコンポーネント 【C++Builder】
http://pc8.2ch.net/test/read.cgi/tech/1093654251/l50

<VCL兄貴のDelphiスレ>
くだすれDelphi(超初心者用)その26
http://pc8.2ch.net/test/read.cgi/tech/1121249711/l50
ミ,,゚Д゚彡フサギコのフサフサDelphi談話室その24
http://pc8.2ch.net/test/read.cgi/tech/1120195090/l50
Delphi相談室(上級者用)その12
http://pc8.2ch.net/test/read.cgi/tech/1064766880/l50
【Delphi初心者】今から始めるDelphi Part01
http://pc8.2ch.net/test/read.cgi/tech/1062422335/l50
【大量・便利】Delphiコンポーネント【再利用】
http://pc8.2ch.net/test/read.cgi/tech/1051802300/l50
0004デフォルトの名無しさん2005/08/21(日) 17:50:11
<関連サイト>
公式サイト
http://www.borland.com/cbuilder/
http://www.borland.co.jp/cppbuilder/
builder-ML 過去ログブラウザ
http://leed.issp.u-tokyo.ac.jp/~takeuchi/builder/browse.cgi
http://www.sfdata.jp/ML/cbuilder/newlog.php?ml=cbuilder
C++Builder メーリングリスト
http://www.sfdata.jp/ML/menu.php?ml=cbuilder
C++Builder ML
http://www.jpdoc.com/cbuilder/
nifty/Delphi & Borland Users Forum
http://fdelphi.nifty.com/

<Update>
BCB6/US SP1 は BCB6/JP 製品版に含まれています。
C++Builder 6 Update4 日本語版
ftp://ftp.borland.co.jp/pub/cbuilder/
C++Builder 6 Linker Update
http://www.borland.com/products/downloads/download_cbuilder.html
0005デフォルトの名無しさん2005/08/21(日) 17:50:58
<Tipsなど>
Borland C++Builder最新リンク2005(リンク集)
http://www2.famille.ne.jp/~akio1998/l_cpb.html
C++Builderのお部屋(Tips系)
http://www.ne.jp/asahi/nagoya/ahomaro/builder/
C++Builderによるプログラミング(Tips系)
http://www.geocities.co.jp/SiliconValley/7201/
BCB Tips(Tips系)
http://members.at.infoseek.co.jp/mchos/bcb_tips/
C++Builder Tips(Tips系)
http://www.geocities.co.jp/SiliconValley/4805/bcbtips/bcbtips000.htm
C++Builder/Windowsプログラミング(Tips系)
http://www.kh.rim.or.jp/~maruoka/Builder/index.shtml
C++Builderのお部屋(Tips系)
http://www.ne.jp/asahi/nagoya/ahomaro/builder/index.html
Wininet Programing(Tips系)
http://www.geocities.co.jp/SiliconValley-PaloAlto/1512/
Dr.Bob's C++Builder Gate(Tips系)
http://www.drbob42.com/cbuilder/index.htm
猫でもわかるプログラミング(一般)
http://www.kumei.ne.jp/c_lang/
norika-s Program Tips(一般Tips)
http://hawaii.naist.jp/~norika-s/program_tips/
Delphian World(コンポーネントライブラリ)
http://www6.airnet.ne.jp/~sone_san/delphi/
DelWiki
http://onigiri.s3.xrea.com:8080/delphi/
0006デフォルトの名無しさん2005/08/21(日) 17:51:40
<ツール/コンポーネント>
<<フリー>>
フリーカーソル無効化アドイン
http://homepage1.nifty.com/fuu/software/nonfreecursor.htm
GExperts−IDE拡張
http://www.gexperts.org/
BorCVS - IDEにCVSを統合
http://borcvs.sourceforge.net/
Indy
http://www.indyproject.org/
JCL
http://homepages.borland.com/jedi/jcl/
JVCL
http://homepages.borland.com/jedi/jvcl/
TurboPower
http://sourceforge.net/users/tpsfadmin/
<<有料>>
TMS Component Studio
http://www.tmssoftware.com/
0007デフォルトの名無しさん2005/08/21(日) 18:07:06
<参考図書>
C++Builder 6コンポーネント活用ガイド&実践プログラミング
Vol.1
http://www.amazon.co.jp/exec/obidos/ASIN/4877830618
Vol.2 実践テクニック編
http://www.amazon.co.jp/exec/obidos/ASIN/4877830626
Vol.3 データベーステクニック編
http://www.amazon.co.jp/exec/obidos/ASIN/4877830634
Vol.4 インターネット編1
http://www.amazon.co.jp/exec/obidos/ASIN/4877831061
Vol.5 インターネット編2
http://www.amazon.co.jp/exec/obidos/ASIN/4877831088
Vol.6 グラフィックス・画像処理編1
http://www.amazon.co.jp/exec/obidos/ASIN/4877831231
Vol.7 グラフィックス・画像処理編2
http://www.amazon.co.jp/exec/obidos/ASIN/487783124X
※BCBの定番解説書。BCBを購入したけど何から勉強したら良いか
 判らないという人は取り合えずVol2から読みましょう。
※データベースやインターネット関連はDelphiの解説書も役に立ちます。
0008デフォルトの名無しさん2005/08/21(日) 19:08:09
>>1
(・∀・)乙カレー
0009デフォルトの名無しさん2005/08/21(日) 19:24:02
C++ Builder 5 Professional 持ってるが、不遇だな。
ちまたには、version 4 や 6 の本は普通に出版されているが、5 の本はほとんど
見たことが無い。
6 の本を買うと仮定すると、本の解説で 5 と 6 の違いが気になるわけだが、どこ
ら辺に違いがあるか気になるもんだ。
6 の本でもほとんど支障なく学習できるんだったらいいけど。
0010デフォルトの名無しさん2005/08/21(日) 22:40:30
>>9
4→5のタイミングが短すぎたんだっけ?

別に6本でも問題無いでしょ。VCLはあんま変わってないし。
0011デフォルトの名無しさん2005/08/22(月) 00:15:59
正直BCBの参考書は、Delphi用の方が、内容が充実してるし種類もずっと多い
と思う。
Delphi→BCBへの変換は、ほとんど一対一に対応しているので、一度Object
Pascalを読めるようになれば、Delphiの本で十分。
0012デフォルトの名無しさん2005/08/22(月) 17:34:01
リストビューでアイテムを選択しているときにCtrl+Cを押すとクリップボードに転送するようにしたいのですが、
ショートカットのイベントハンドラのようなものを実装するにはどうすればいいのでしょうか?
0013デフォルトの名無しさん2005/08/22(月) 21:58:45
Delphi用という選択肢もあるわけだな、確かにそうだ。いいことを言った。
Pascalは知ってる。一冊の本をよく読んで練習問題のプログラムを書いたりしてた。
正に、Delphiの基礎学力をつけるのが目的でPascalを学習してたからな。
Object Pascalの学習はまだこれからだけど。

そういえば、VCL相談室というスレであってもいいなあ。
でも、言語を区別しておかないと、Object Pascalの知識の無い人には困るか。
0014デフォルトの名無しさん2005/08/22(月) 22:41:49
Delphiのmessageキーワードがないばっかりに、BEGIN_MESSAGE_HANDLER〜
なんかの難解なマクロを使わないといけない。

あれ初心者には絶対理解不可能だと思った。逆にDelphiとBCBを両方使ってる
と、「なんでmessageが無いんじゃゴルァ!」という事ですぐに見つけるわけだ。

BCBはC++の延長線上にある自然な拡張がされてない。全部Delphiの動作を
エミュレートするようにされてしまってる。VCLがObject Pascal用にしか作られていな
いので仕方ないとは言え、手抜きだなぁ。でもそのお陰で、Delphi用に作られた
コンポーネントの有り難みを享受できるのも確かだが。
0015デフォルトの名無しさん2005/08/23(火) 00:10:00
>>14
>BEGIN_MESSAGE_HANDLER
別に難解とは思わないが、その辺のBCB独自の拡張を簡単簡潔に網羅した
マニュアルが用意してあればいいんだがなぁ。
0016デフォルトの名無しさん2005/08/23(火) 00:45:35
>>15
付属のあのごついマニュアルなんて、中身はHELPと全く同じだしな。
Open配列を真似るARRAYOFCONSTマクロなんか、ソース見てみると、
苦心の跡というよりはやっつけ仕事のように見える。
0017デフォルトの名無しさん2005/08/23(火) 00:52:32
一応VCLのサポートのために追加されたキーワードと説明が、ヘルプの"拡張キーワード"ってページにまとまってるけどね。辿り付き辛いか。
__classid, __closure, __declspec(の一部), __property, __publishedと。

messageはあれば便利って程度だから、追加されなかったんでない?必要最低限のだけ追加したって感じで。
BEGIN_MESSAGE_HANDLER〜のマクロは、なんかダサいから使わないで、ウィンドウプロシージャでディスパッチしてる。
関数にするまでもない短いコードもよくあるしね。
0018デフォルトの名無しさん2005/08/23(火) 00:58:31
>>17
プロパティはdefaultが使えないんだよね。もっともそれをやっちゃあ、
C++の名前照合規則をぶっ壊してしまうわけなんでやめたんだろうけど。
0019デフォルトの名無しさん2005/08/23(火) 01:11:58
>>18
え、使えない?
0020デフォルトの名無しさん2005/08/23(火) 01:16:41
>>19
ごめん。使えないというより、Delphiとの意味が違ってる。
Delphiだと、クラス変数名書いただけで、あるプロパティが使われたでしょ。
BCBは初期値設定の意味になってる。
0021デフォルトの名無しさん2005/08/23(火) 01:35:12
>>20
あ配列プロパティのdefaultか。普通のプロパティのは同じ意味だよね?
C++だとoperator[]があるからかな。ただBCBはVCLクラスがnewで作んなきゃいけないから、operator[]が定義されてても何か見た目がよくないね。

TStringList* pStrings = new TStringList();
:
(*pStrings)[0] = "hoge" は格好わるいから普通、pStrings->Strings[0] = "hoge" だろうね。

参照使えばDelphiぽくできるけど、いちいちちょっとね。

TStringList& strings = *pStrings;
strings[0] = "hoge";
0022デフォルトの名無しさん2005/08/23(火) 01:44:57
>>21
はい、そうですぅ。済みません。
じゃじゃ馬BCB6で遊んでます。コンパイル速度も、今時のCPUなら十分速いし、
ちょっとしたGUIツールを作るにはぴったりです。

でも新製品が出ませんねorz
0023デフォルトの名無しさん2005/08/23(火) 04:16:53
> BEGIN_MESSAGE_HANDLER
こんなんがあるせいで、理解が少し遅れた。
ひたすら無駄なマクロ。
0024デフォルトの名無しさん2005/08/23(火) 04:32:16
ま、確かに>>17さんみたいに、サブクラスで該当のメッセージだけ処理して、
後は次の所に放り投げれば済む話なんですよね。

Windowsのメッセージがチェイン構造になっているのは、初めて知った時は
ひたすら気持ち悪かった。
0025デフォルトの名無しさん2005/08/23(火) 12:33:10
勉強がたりんなあ。
皆が何言ってるかさっぱりワカランorz
0026デフォルトの名無しさん2005/08/23(火) 13:41:44
>>22
冬に出るだろ。


Delphi2006が‥‥
0027デフォルトの名無しさん2005/08/23(火) 16:17:12
フリーコンパイラのBorland C++ Compiler 5.5
を使って300行のCプログラムをコンパイルしました。
しかしコマンドプロンプトからEXEファイルを実行しても全く動作しません。
試しにそのEXEファイルのソースのmainの一番最初に、print("check..");とか入れてみましたが、
こちらも表示されませんでした。
Cのプログラムでこんな事ってあるのでしょうか?
コンパイラに原因は無いですよね・・・?
0028デフォルトの名無しさん2005/08/23(火) 16:18:27
フリーコンパイラのBorland C++ Compiler 5.5
を使って300行のCプログラムをコンパイルしました。
しかしコマンドプロンプトからEXEファイルを実行しても全く動作しません。
試しにそのEXEファイルのソースのmainの一番最初に、print("check..");とか入れてみましたが、
こちらも表示されませんでした。
Cのプログラムでこんな事ってあるのでしょうか?
コンパイラに原因は無いですよね・・・?
0029デフォルトの名無しさん2005/08/23(火) 16:22:58
>>27
よくあるのが、「DOS窓が一瞬開いてすぐ閉じるんですけど」って質問だけど、DOS窓も表示されない?

あとBCCはこっちのスレね↓

タダで使えるBorland C++ Part4
http://pc8.2ch.net/test/read.cgi/tech/1091066805/
0030デフォルトの名無しさん2005/08/23(火) 16:29:30
>>29
いえ、
test.cppを以下のようにコンパイル、実行しました

C:\ディレクトリ>bcc32 test.cpp
C:\ディレクトリ>省略(コンパイルが通ります)

そこで、text.exe(exeまで打たないと何故か実行できない)を実行します。

C;\ディレクトリ>text.exe  (enter押します
test
C:\ディレクトリ>

このように出て、main関数が実行されません。

上のURLのところ行ってみます。       
0031デフォルトの名無しさん2005/08/23(火) 17:00:27
testとtextの2通りあるのは打ち間違いとして、
exeまで打たないと実行できないってヒジョーにアヤしげだなぁ
0032デフォルトの名無しさん2005/08/23(火) 17:04:58
>>31
testの間違いです。。。
怪しげって何が怪しいんでしょうKA。
0033デフォルトの名無しさん2005/08/23(火) 17:10:10
>>32
いや、何かそこに理由がありそうだなぁ、と。全然わかんないんだけどね。役立たずで申し訳ない
0034デフォルトの名無しさん2005/08/23(火) 17:25:14
>>31
分からないのにスレ違いのネタ引っ張るなよ。
0035デフォルトの名無しさん2005/08/23(火) 17:28:07
^^;
0036デフォルトの名無しさん2005/08/23(火) 17:31:05
print("check..");
って何( ´∀`)?

ってか、本当にコンパイル通ってるのかYO!

#include <stdio.h>
int main()
{
  print("check");
  return 0;
}

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
test.cpp:
エラー E2268 test.cpp 5: 未定義の関数 'print' を呼び出した(関数 main() )
*** 1 errors in Compile ***
0037デフォルトの名無しさん2005/08/23(火) 22:23:27
>>36
タイプミスですた・・・ww
0038デフォルトの名無しさん2005/08/23(火) 22:55:34
だからおまいらスレ違いの話題をひっぱるなっつうの。
0039デフォルトの名無しさん2005/08/24(水) 00:16:42
全然別の test.exeを実行していたりしたら笑うぞ。ホントに、そこにある test.exeを
実行しているのか? つーか、test をtextと書いたり、printとか何とか、
実際にやった内容と違うことばっかり書いて質問されてもなぁ・・・

問題の切り分けをするなら、300行のナントカは、ともかく、最低限、
printfが1行だけある main() をコンパイルしてみて、できた実行ファイルを、
ルートからフルパスで指定して動かしてみること。
変なパスが通っていて、ヨソにあるexeを実行していたりしないか?

あと、"check.." って、もしかして、改行マークなし? バッファのフラッシュを
しないなら、\nがいるんじゃないかな。

いずれにせよ、完全にスレ違いなので、続きは誘導先でやってくれ。
0040デフォルトの名無しさん2005/08/24(水) 00:47:59
こういうときには,症状が再現する最小限のソースコードをアップするのが常識だと思うがなぁ
0041402005/08/24(水) 00:48:42
おっと,>39と少しかぶっちまったか
0042デフォルトの名無しさん2005/08/24(水) 08:42:39
HelloWrld 表示するだけに不具合がでるコンパイラ
なんてあるわけないし。 100%間違いなく、操作間違ってる。
0043デフォルトの名無しさん2005/08/24(水) 11:35:30
TImageのCanvasに折れ線グラフを描画しているのですが
Transparentをtrueにするとたまにグラフが描画されなくなります。
なんとなく、Canvasからはみ出たときに起こるのですが
これの対処法を教えてください。
0044デフォルトの名無しさん2005/08/24(水) 12:19:18
>>43
まずは「なんとなく」の部分をはっきりさせるべし
0045デフォルトの名無しさん2005/08/24(水) 12:22:03
>>43
Transparentをtrueにしたとき透明表示される色は特に指定しなければ
確か一番左下のドットの色だっけか?

まずはsageようか。
0046デフォルトの名無しさん2005/08/24(水) 13:20:48
質問するのに下げる理由はないよ。
sage厨はスルーで
0047デフォルトの名無しさん2005/08/24(水) 13:44:48
>>45
ありがとうございます。
「一番左下のドットの色」で全ての謎がとけました。
グラフを描画する時にCanvasからはみだしてもちゃんと描画されるときと
されない時で描画されない時は左下のドットに描画してる時でした。
予めTransparentColorに色を与えておいて見事に解決しました。
0048デフォルトの名無しさん2005/08/24(水) 17:32:45
>>44
新党日本
0049デフォルトの名無しさん2005/08/24(水) 18:08:29
フォームに乗ってる全てのコントロールを列挙する方法を教えてください
0050デフォルトの名無しさん2005/08/24(水) 18:14:30
Componentsだった
0051デフォルトの名無しさん2005/08/24(水) 22:05:15
自動作成の対象にしなかったフォームの表示方法を教えてください
0052デフォルトの名無しさん2005/08/24(水) 22:16:57
TForm2 *form = new TForm2(this);
form->Show();
0053デフォルトの名無しさん2005/08/27(土) 10:05:22
すいません、C++Builder6のBDEもしくはdbExpressでMySQLとのSSL通信は可能でしょうか?

MySQLのSSL通信機能はver4.1から正式にサポートされたものなんですが…。
0054302005/08/30(火) 00:02:36
解決しました。
あるグローバル変数を配列を数千×数千で定義していたので出来ませんでした。
百×百位にしてコンパイルしたら実行できました。
しかし実行には.EXEつけないと無理ですが・・・。

0055デフォルトの名無しさん2005/08/30(火) 00:50:31
>>54
うーん、まだまだあやしい。。。 けど、このスレで続けるのは変だから、
うだうだ書くのはやめておくね。
0056デフォルトの名無しさん2005/08/31(水) 14:08:58
>>30=54
『グローバル変数』なら配列の要素が大きくてもそこまで問題じゃないんじゃね?
仮にintで2000x2000だとしたら約15MBくらい
『オート変数』の間違いでは・・・

あと、exeつけないと実行できないんだったら、コマンドプロンプトで『notepad』は起動するんか?
0057デフォルトの名無しさん2005/08/31(水) 22:03:56
>>56
>>38を声に出して百回読め、このあきめくら。

0058デフォルトの名無しさん2005/08/31(水) 22:53:55
馬鹿だなぁ。そんなレス構っちゃないんだよ。
0059デフォルトの名無しさん2005/08/31(水) 23:16:09
Builder5です。
ファイル(F)-新規作成(N)のフォームタブに
自作のフォームを追加したいのですが、方法がよくわかりません。
プロジェクト(P)-リポジトリに追加(T)で追加できそうなのはわかったのですが、
フォームを新規作成した状態では、リポジトリに追加(T)は無効になっています。
どのようにすれば、自作フォームを追加できるでしょうか。
よろしくお願いします。
0060デフォルトの名無しさん2005/09/01(木) 00:05:04
>>59
フォーム右クリックで「リポジトリに追加」
0061デフォルトの名無しさん2005/09/01(木) 00:52:43
>>60
さんくすです。出来ました。
右クリックにあったんですね。気づきませんですた。
0062デフォルトの名無しさん2005/09/03(土) 18:16:43
他のアプリのGUIをのっとって操作する事は可能ですか?
0063デフォルトの名無しさん2005/09/03(土) 18:23:00
可能です
0064デフォルトの名無しさん2005/09/03(土) 20:02:33
フックフック
0065デフォルトの名無しさん2005/09/04(日) 00:36:16
How can I send keys to another application?
http://thunder.prohosting.com/~cbdn/k009.htm
0066デフォルトの名無しさん2005/09/04(日) 05:06:55
アプリケーションのアイコンをImage1に描画
サイズは48×48

DrawIconEx(Image1->Canvas->Handle, 0, 0, Application->Icon->Handle, 48, 48, 0, 0, DI_NORMAL);
0067デフォルトの名無しさん2005/09/04(日) 12:28:10
次バージョンがでるまで、あと何回枕を濡らせばいいのですか?
0068デフォルトの名無しさん2005/09/04(日) 12:31:17
死ぬまで
0069デフォルトの名無しさん2005/09/04(日) 12:55:46
ヘルプ参照しても見つけられないので質問を投げてみます。
double 型の変数から Currency 型の変数に値を変換して設定するための
標準的な関数がありそうな気がします(いや、きっとあるはず)が、見つけ
られません・・・
おしえてくださいませ。m(_._)m

ちなみに・・・
文字列⇔Currency は、StrToCurr, CurrToStr
Currency → double は operator double()
など、その周辺はすぐ見つけられますね。

こういった逆引きって結構時間かかりまっすねぇ・・・
#Variant 型を経由しなきゃダメなんて落ちじゃないですよねー。
0070デフォルトの名無しさん2005/09/04(日) 13:02:52
コンストラクタ
__fastcall Currency(double val);
0071デフォルトの名無しさん2005/09/04(日) 13:04:08
Currency& __fastcall operator =(double rhs);
0072デフォルトの名無しさん2005/09/04(日) 13:05:32
初期化&代入できるんじゃん
0073デフォルトの名無しさん2005/09/05(月) 17:06:17
なにか普通のメンバで行うしかないと思っているとこんな盲点に嵌まってしまう罠。
0074デフォルトの名無しさん2005/09/07(水) 13:22:45
質問です。
メインフォームから動的に作成した子フォームを
MDI親フォームとする方法を教えてください。
0075デフォルトの名無しさん2005/09/08(木) 01:08:11
>>74
TFormはfsMDIChildeのとき、問答無用でメインフォームを親フォームにするみたいだな。
つうわけで無理っぽい。
0076デフォルトの名無しさん2005/09/08(木) 01:48:16
VSS2005みたいにDelphi2006ベータ版配布するのか??
しないだろう。
ユーザは減っていくだけ!!


もし、DELPHI2006無償配布を多くしたら復活の道あるのに。。
0077デフォルトの名無しさん2005/09/08(木) 06:13:33
画像処理・エフェクト( 24ビットのビットマップのみ対応しています )      
http://www.geocities.jp/octbery/program.html
・画像処理・エフェクトの準備

・グレースケール : 画像を白黒画像に変換
・2値化 : 特定のレベルをしきい値として、しきい値より明るいピクセルは白に、暗いピクセルは黒に変換
・階調の反転 : 画像の階調を反転
・ポスタリゼーション : 画像の階調を変える

・wipein : 画像をワイプイン
・wipeout : 画像をワイプアウト
・fadein : 画像をフェードインする
・fadeout : 画像をフェードアウトする

タイマー関連

・プログラムの実行時間を計測

その他

・コントロールの再描画時のちらつきを減らす
・midi音源から音を鳴らす
0078デフォルトの名無しさん2005/09/08(木) 08:42:26
>>75
やっぱりorz
ありがとうございました
0079デフォルトの名無しさん2005/09/08(木) 09:33:19
タスクバーを除いたデスクトップの領域を取得するには?

Windows API SystemParametersInfo()を使用します。


Example:


void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRect r ;

SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0);
Form1->Top = r.Top;
Form1->Left = r.Left;
Form1->Width = r.Right - r.Left;
Form1->Height = r.Bottom - r.Top;
}
0080デフォルトの名無しさん2005/09/08(木) 10:04:59
Screen->WorkAreaRect
0081デフォルトの名無しさん2005/09/08(木) 10:55:02
>>75
CreateParamsがオーバーライド出きる様に変更されてて、
生成処理差し替え出きると思ったが。
0082質問者2005/09/08(木) 11:33:29
>>81
MDIChildのフォームの親フォーム(MDIForm)はメインフォームの子フォーム
である事が絶対でありメインフォーム自体を変更するのは無しです。

この方法は可能ですか?

0083Image2005/09/08(木) 11:44:47
配列に読み込んだ画像データをImageに直接描画することを考えています。
その際ScanLineを使いたいと思っています。
Delphiではできたのですが、C++Bulderではよくわかりません。
変数の宣言等等含め教えていただけたらと思います。
0084デフォルトの名無しさん2005/09/08(木) 11:51:51
>>83
たとえば24bit幅100pixelなビットマップの12行目を黒に塗りつぶす場合
int line = 12;
char* ptr = static_cast<char*>(Bitmap->Scanline[line]);
for(int i =0; i<100; i++)
{
  *ptr = 0; ptr++; //青
  *ptr = 0; ptr++; //赤
  *ptr = 0; ptr++; //緑
}

あとは考えれ。
0085Image2005/09/08(木) 12:34:43
>>84
回答ありがとうございます。
ごめんなさい。理解が追いつかないです。
配列に読み込んだデータImage[100][100]があるとすると
それはどのように扱うのですか?
0086デフォルトの名無しさん2005/09/08(木) 13:07:36
Delphiでできたのに何でこれの理解が追いつかないのか
ちょっとわからん
0087デフォルトの名無しさん2005/09/08(木) 13:38:34
>>85
Scanlineの返す値が何なのか理解してるか?
0088Image2005/09/08(木) 13:44:09
わからないから質問してみました。すみません
ちなみにDelphiでは以下のように書きました。
for y:=0 to ysize-1 do
begin
p:=bmp.ScanLine[y];
{y列めのデータのアドレスにポインタをセット}
for x:=0 to xsize-1 do
begin
c:=xy[y,x]-(wl-(ww div 2));
c:=(c*256) div ww;
if c > 255 then c:=255;
if c < 0 then c:=0;
p^[x].r:=c ;
p^[x].g:=c ;
p^[x].b:=c ;
end;
end;
form1.image1.Canvas.Draw(0,0,bmp);
end;
0089Image2005/09/08(木) 14:22:23
>>87
Bitmap->Scanline[line]
Bitmapの一列分のデータを返すものだとなんとなくですが
理解しています。
ただ、
BitMap.LoadFromFile('C:\Program Files\Common Files\Borland Shared\
Images\Splash\256color\factory.bmp');
みたいな感じに、先にBitmapに画像を読み込んでいるわけではないので
そのあたりがどのようになるか知りたかったわけです。
説明が悪くすみません。
0090デフォルトの名無しさん2005/09/08(木) 17:40:38
Delphiユーザです。
予め読み込んでいない Bitmap は真っ白なビットマップです。
Scanline[y] が返すポインタは型なしですが、その内容は PixelFormat に依存します。
pf32bit ---- PRGBQuad
pf24bit ---- PRGBTriple
pf8bit 以下 ---- PByte
ですから適切にキャストすると色データにアクセスできます。

逆にいうと ScanLine を使う前に PixelFormat が確定している必要があります。
0091デフォルトの名無しさん2005/09/08(木) 21:26:17
タスクバーを除いたデスクトップの領域を取得するには?

void __fastcall TForm1::Button1Click(TObject *Sender)
{

TRect r ;

SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0);

Form1->Top = r.Top;
Form1->Left = r.Left;
Form1->Width = r.Right - r.Left;
Form1->Height = r.Bottom - r.Top;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{

Form1->Top = Screen->WorkAreaRect.Top;
Form1->Left = Screen->WorkAreaRect.Left;
Form1->Width = Screen->WorkAreaRect.Right - Screen->WorkAreaRect.Left;
Form1->Height = Screen->WorkAreaRect.Bottom - Screen->WorkAreaRect.Top;

}
0092デフォルトの名無しさん2005/09/08(木) 21:37:37
void __fastcall TForm1::Button1Click(TObject *Sender)
{

TRect r ;

r = Screen->WorkAreaRect;

Form1->Top = r.Top;
Form1->Left = r.Left;
Form1->Width = r.Right - r.Left;
Form1->Height = r.Bottom - r.Top;

}
0093デフォルトの名無しさん2005/09/08(木) 21:56:56
Form1->BoundsRect = Screen->WorkAreaRect;
0094デフォルトの名無しさん2005/09/09(金) 00:52:13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Caption = Screen->DefaultIme;
}
0095デフォルトの名無しさん2005/09/09(金) 00:59:30
Form1->BoundsRect = Screen->WorkAreaRect;
Form1->BoundsRect = Monitor->WorkareaRect;
0096デフォルトの名無しさん2005/09/09(金) 10:09:23
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Caption = "C++Builder";
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Button1->Perform(BM_CLICK, 0, 0);
}
0097デフォルトの名無しさん2005/09/10(土) 06:01:33
http://sapporo.cool.ne.jp/tanomi/qanda/a047.html
OnIdleイベントはTApplicationのイベントなのです。
なので、Applicationに割り当てます。
場所はコンストラクタが良いでしょう。
//Formのコンストラクタで
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Application->OnIdle = IdleHandler;
}
0098デフォルトの名無しさん2005/09/10(土) 10:13:25
ちょっと思ったんですが
.exe内の関数を.dllに入れて呼び出す場合は実行速度は
大して変わりないのでしょうか?
0099デフォルトの名無しさん2005/09/10(土) 10:15:25
>>98
変わらない
0100デフォルトの名無しさん2005/09/10(土) 10:18:41
起動が遅くなるよ
0101982005/09/10(土) 10:38:42
>>99-100
なるほど、処理速度自体は変わらないけど起動時読み込みにより
遅くなるって事ですね。

起動が遅くなる度合いは関数の数に関係なく.dllの数によるものですか?
■ このスレッドは過去ログ倉庫に格納されています