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

くだすれC++Builder(超初心者用)その2

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2006/04/06(木) 16:33:24
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
C++Builder使いが優しくコメントを返しますが、
お礼はC++Builderの布教と初心者の救済をお願いします。

Borland Home Page
http://www.borland.co.jp/


<前スレ>
くだすれC++Builder(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1117225464/l50


<兄弟スレ>
くだすれDelphi(超初心者用)その31
http://pc8.2ch.net/test/read.cgi/tech/1142594051/l50
0809デフォルトの名無しさん2006/11/11(土) 21:40:48
>>801
で・・・できました。
ありがとうございます。
でも、LeftIndentって何のためにあるんでしょうか?
0810デフォルトの名無しさん2006/11/12(日) 22:17:30
>>809
同一パラグラフの2行目以降のインデント幅 FirstIndentに加算される
なのでパラグラフが1行しかないと反映されない
0811デフォルトの名無しさん2006/11/18(土) 00:51:08
>>805
いや、全部TPanelから派生させるべきだよ。
0812デフォルトの名無しさん2006/11/20(月) 03:17:24
WinAPIの質問(?)になってしまうかも知れないんですけど、
よろしくお願いします。

sndPlaySound関数を利用して二つのWAVファイルを時間差で再生するプログラム
を作りたかったのですが、sndPlaySoundでは複数のWAVファイルを重複して再生
することは出来ないようでした。

時間差と音量の組み合わせが1000種類程あるので、事前にミックスして一つの
WAVファイルにまとめるのは現実的ではありません。

というわけで、複数のWAVファイルを時間差で再生できる関数などありましたら
よろしくお願いします。
0813デフォルトの名無しさん2006/11/20(月) 03:25:24
MCIとか。

mciSendString("open A.wav type waveaudio alias A", NULL, 0, NULL);
mciSendString("open B.wav type waveaudio alias B", NULL, 0, NULL);
mciSendString("play A", NULL, 0, NULL); // ここからA.wavが鳴る
一定の時間後
mciSendString("play B", NULL, 0, NULL); // ここからB.wavが鳴る
・・・
鳴り終わったら後始末を忘れずに
mciSendString("close A", NULL, 0, NULL);
mciSendString("close B", NULL, 0, NULL);

多分こんなかんじだったと思う多分
0814デフォルトの名無しさん2006/11/20(月) 03:31:40
同時に複数のwavを鳴らしたいならDirectSoundでできる。
ファイルの読み込みがちょっと面倒だけどね。
08158122006/11/20(月) 03:42:09
ありがとうございます。調べてみます。
すばやい反応本当に感謝です。
08168122006/11/20(月) 05:10:19
度々、すいません。
MCIとDirectSoundってどっちが手軽にできますか?
色々調べてみたのですがまだ数回、builderをかじった程度の自分では
どちらも敷居が高すぎてなかなか手がつけられそうにありません。

こちらの都合で申し訳ないですが、期限が迫っており、ゆっくり勉強している時間がありません。
>>812に書いた二つのWAVファイルの時間差再生ができる最低限の機能さえ
実現できればいいのですが、どちらの方法が短時間でできるでしょうか?

あと、ベクターで
「C++Builder用 DirectSoundを(比較的)簡単に扱えるDLL(サンプル付)」
というのを発見したのですが、バージョンが違うせいか、うまく動作しませんでした。
他にこのようなライブラリをご存知でしたら、お願いします。
環境はWinXP Professional , PS2 C++Builder 5 , DirectX9.0cです。
何でも良いので、よろしくお願いします
0817デフォルトの名無しさん2006/11/20(月) 06:02:42
私の知る限り、MCIでは同時再生はできなかったはず。
0818デフォルトの名無しさん2006/11/20(月) 09:44:42
TTreeViewに於いて、TListBox::MultiSelectみたいなことって出来ないのでしょうか?
0819デフォルトの名無しさん2006/11/21(火) 04:28:27
よくパスワードを保存する□チェックがあって、チェックをすると
次から"*****"が表示されて、再入力しなくてもいいようなのあります。
あればどうすればよいのでしょうか。
テキストファイルか何かにパスワード保存しておいて、ただ読み込むだけ
ということではないですよね。
よろしくお願いします。
0820デフォルトの名無しさん2006/11/21(火) 04:40:36
SHAutoComplete()
0821デフォルトの名無しさん2006/11/21(火) 07:30:12
>>816
Delphi用のDirectSoundコンポーネントは、いくつかあると思うが・・・
DelphianWorldとか、Toryyとか探してみた?
あとは、Quadruple Dでもできたはず
0822デフォルトの名無しさん2006/11/21(火) 07:58:19
>>820
ありがとうございます。
ttp://www.runan.net/program/tips/API/shlwapi_SHAutoComplete.shtml
ttp://mist.clueup.org/blogs/1/archive/2006/09/29/_EA81D552DC888C5B92307F4F633066307F308B30_.aspx
こういうページ見つけて、使い方はわかったんですが、
****を表示させるのがわからないです。
SHAutoComplete関数のフラグとか****が表示されるようなのがあるんでしょうか。
自分でなにかプログラミングしないといけないんでしょうか。
難しいです。
0823デフォルトの名無しさん2006/11/21(火) 08:14:33
>>822
横から失礼します。
パスワードは基本的に別のエディットボックスですので、ユーザーID用の
ボックスにEnterが入力された時点でどこかに暗号化しておいたパスを
拾いに行くようにするしかないような気がします。

IEの場合は多分NTUSER.DAT当たりに記録されているのではないかと
思うのですが・・・外れていたらすみません。
0824デフォルトの名無しさん2006/11/21(火) 12:46:46
>>823
レスありがとうございます。
オートコンプリートってちょっと違うのでしょうか。
わかりませんでした。

えっと、保存する場合は、暗号化前の生のパスワードでいいんですよね?
暗号化したパスワードを保存すると、*の数変わってしまいますし。
md5でと思ってたんですが、復号化できる暗号ロジック使えば、
暗号化したパスワードを保存しても大丈夫なんでしょうか。
それで、EditのPasswordCharを*に。

初心者なので壁が多いです。><
0825デフォルトの名無しさん2006/11/21(火) 23:47:34
稀に今まで動いていたものを、忘れた頃に動かすと
クラスTBevelが見つかりませんとか言われてしまうんですが、
なんでしょうか。ブレークを無視するとエラーダイアログ連発になります。
んで、Bevelを一回剥がして貼りなおすと直ります。
面倒なんで、誰が原因を知っている人がいましたら教えてください。

BDS2006のBCBです。
0826デフォルトの名無しさん2006/11/24(金) 21:37:36
デバッグしながらコードを修正していくとブレークポイントがずれていくのですがこれをずれないようにする方法はありますか。
たとえばコードにブレークポイントを埋め込めるとか。
0827デフォルトの名無しさん2006/11/25(土) 07:04:33
日本語環境で作成したプログラムを英語版Windowsに持って行くと、エラーが発生したときのダイアログが
日本語(文字化けして読めない)になってしまいます。
エラーを英語にすることはできないでしょうか?
0828デフォルトの名無しさん2006/11/25(土) 09:44:21
できる
0829デフォルトの名無しさん2006/11/25(土) 10:43:34
やり方を教えてください
0830デフォルトの名無しさん2006/11/25(土) 10:49:40
>>827
俺以前bcb6の環境で同じ現象が出て、プロジェクトの言語設定を英語にしようが
言語リソースを使おうが直らなかった(MessageBoxを呼んだ後のVCL内の処理で
多言語対応がされてないっぽい)。
結局『CreateMessageDialog使って一度TFormオブジェクトを生成した後、その
キャプションを無理矢理英語に書き換えて表示する』という力業で切り抜けた
記憶がある。
個人的にはBCB(とういかVCL)のバグだったと思ってるんだけど、違うのかね?
6より後のバージョンは知らないけど。

>>828
俺も参考までに是非知りたい。教えてPlz。
0831デフォルトの名無しさん2006/11/25(土) 11:01:35
5あたりは各国語用のリソースDLLあったような‥‥
0832デフォルトの名無しさん2006/11/25(土) 13:50:19
C++Builderは使ってないんでよくわからんけど、多言語対応は入っているはず。
たとえば日本語のプロジェクトで生成したものを英語(ENU-ENglish/Us)ロケールで実行するときは
実行ファイル名の拡張子を.ENUにした言語リソースを探して見つかればそちらのリソースを使う。
言語リソースは新規作成のリソースDLLウィザードで作る(Pro以上)。ただしこのときに
SysConst.pasにあるresourcestringまでいちいち書き換えるのは不毛なのでCD-Rにある
英語版のライブラリに切り替えてからリソースDLLウィザードを使うのが吉(そのままだと
デフォルトで生成されるresourcestringの中身が日本語になってしまう)。
08338322006/11/25(土) 13:51:21
× CD-R
○ CD-ROM
0834デフォルトの名無しさん2006/11/25(土) 23:17:48
>>832
うーん・・・リソースDLLはもちろん使ったんだけど、
SysConst.pasって関係あるのかな?
例えばMessageBoxでMB_YESNOを指定した時のボタンのキャプションも
日本語で表示されてたけど(本来英語環境ではYes/No表示のところを
はい/いいえで表示しようとして化ける)、こんなところまでSysConstで
管理してないような。
英語版ライブラリの使い方も探したけど、見つからなかったんだよね。
少なくともインストールディスクには入ってなかった気がする。
全部BCB6の話ですが。
0835デフォルトの名無しさん2006/12/01(金) 17:38:23
ボタンをクリックしたら、スクロールバー(Visibleがfalse)に選択が移る
ようなことってできますか?

開始ボタンを押したら後は矢印押すだけで内部の変数が変わるようなプログラムを
作りたいのですが。プログラムを使っている人にはその変数の値がどの程度か知られたくないのです。
あと、できれば操作中はマウスを使わなくてすむようにしたいです。
0836デフォルトの名無しさん2006/12/03(日) 16:21:58
RitchEditでフォーカスが別のボタンなどが選ばれている時に
内容を自動スクロールしたいのですが
ScrollByメソッドを使っても上手くいかないみたいです
それ以外の方法はありますでしょうか?
0837デフォルトの名無しさん2006/12/04(月) 03:08:07
本当に基本的なことで申し訳ないのですが、
TEditから入力してもらった文字列をchar型の変数に代入するにはどうしたらよいのでしょうか?

char型の変数 = Edit1->Text;

では左辺値がありませんとエラーになってしまいます。

int型の変数 = StrToInt(Edit1->Text);

は通ったので大丈夫だとおもったのですが・・・

よろしくお願いします。
0838デフォルトの名無しさん2006/12/04(月) 07:02:12
>>837
『文字列をchar型の変数に代入する』という発想が既におかしい。
C言語の基礎から勉強しなおし。
0839デフォルトの名無しさん2006/12/04(月) 07:16:59
Edit1->TextはcharじゃなくてAnsiStringだろ。
AnsiStringで宣言すればイコールで代入できるよ。
0840デフォルトの名無しさん2006/12/04(月) 08:53:29
>>837
char* AnsiString::c_str() const;
0841デフォルトの名無しさん2006/12/04(月) 10:54:29
>835
不可視のコントロールにフォーカスを設定はできなかったはず
開始ボタンとか必要なコントロールでOnKeyDown/Upイベントを定義すればいいんじゃないかな
0842デフォルトの名無しさん2006/12/04(月) 14:02:19
>>840
char c[256];
strcpy(c, Edit1->Text.c_str());

この方が無難じゃない?
0843デフォルトの名無しさん2006/12/04(月) 20:15:27
>>837

char c = Edit1->Text[1];
0844デフォルトの名無しさん2006/12/06(水) 09:49:50
Variant型のExec内で使えるプロパティ、メソッド等のリストを見られる
HP等は無いでしょうか?
0845デフォルトの名無しさん2006/12/17(日) 21:52:38
本日、初めてVCLのTControl::WindowProcに自分関数を設定してみました。
このような具合にです。

TForm1::TForm1(略) {
WindowProc = MyWndProc;
}

TForm1::MyWndProc(Messages::TMessage &Message){
(処理)
}

それでWM_TIMERのwParamを拾おうとしてMessage.WParamを見ると
本来はタイムアウトになったタイマのIDが入っているはずなのですが、
常にゼロが入っています。(´;ω;`)

私の使い方が悪いのでしょうか?
08468452006/12/17(日) 22:09:11
ageちゃえ。
0847デフォルトの名無しさん2006/12/18(月) 09:43:29
>>845
自クラス内でウィンドウプロシージャ弄る場合はWndProcメソッドをオーバーライドしる

void __fastcall TForm1::WndProc(TMessage& message)
{
 if (message.Msg == WM_TIMER)
 {
  OutputDebugString(AnsiString().sprintf("Message: %08X WPARAM: %08X LPARAM: %08X", message.Msg, message.WParam, message.LParam).c_str());
  KillTimer(Handle, message.WParam);
 }
 TForm::WndProc( message);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 SetTimer(Handle, 0x2, 100, NULL);
}

普通に動いているが‥‥
0848デフォルトの名無しさん2006/12/18(月) 18:45:46
ブラウザのIEのツールバーに、戻る、中止、更新、ホーム
とかボタンありますが、マウスのカーソル上に置くと、
なんのボタンか表す文字が出てきます。

こういうのやりたいですがわかりません。
よろしくお願いします。
0849デフォルトの名無しさん2006/12/19(火) 14:35:57
TEditやTButtonコントロールがフォーム上にあるとして、
それのText(Caption)と縦座標のみ異なる複製を動的に作成したいのですが、
スマートなコーディング方法がないでしょうか

一応、newでコントロールを作成してプロパティやイベントを一個一個コピー
していくやりかたではできたのですが、数が多くてステップ数が馬鹿デカくなって困ってます。
0850デフォルトの名無しさん2006/12/19(火) 14:53:18
>>849
まさか、関数化せずに一個一個newしているわけじゃないだろうな。
0851デフォルトの名無しさん2006/12/19(火) 15:09:49
>>849
複製はTPersident::Assign()使えなかったっけ?
0852デフォルトの名無しさん2006/12/19(火) 18:39:50
848です。

やりましたよ!
オブジェクトインスペクタのHintで出来ました。
使ってるアプリいくつか見たら、同じように黄色のバックに黒文字だったので、
標準でなんかあるのかと思ったら。

HTMLでも同じ風に文字出てきますよね。
ありがとうございました。
0853デフォルトの名無しさん2006/12/19(火) 20:10:14
CBC6でソフトウェアキーボードを作りたいのですが、
その際にキーボード部分をクリックした時に、アクティブな部分が変わらないよう、
常に非アクティブになるようにしたいのですが、
どうすればよろしいでしょうか・・・?
0854デフォルトの名無しさん2006/12/20(水) 00:01:17
CBC6って何だ?
なんて突っ込みは小学生並みだな
BCB6だろっ
0855デフォルトの名無しさん2006/12/20(水) 00:28:27
>>847
レス、ありがとうございました。
どうやら自分のSetTimerの使い方が悪かったようです。orz

ところで、SetTimerは第二引数のタイマ識別子として既存のタイマと同じものを使うと
新しい設定でタイマをつくりなおしてしまうとMSDNにありました。
VCLのTTimerはタイマの識別子を指定する仕組みではなかったので不用意に
TTimerとSetTimerを混在させると同じ識別子を使ってしまわないか心配です。
VCLのソースではSetTimerの識別子としては0か1しか使われていないように見えるのですが
いまいち自信がありません。

>>847さんはコード上で識別子に2を使われていますが、2以上ならVCLのTTimerをいっしょに
使っても重複しないものなんでしょうか?
みなさんはどうされていますか?
0856デフォルトの名無しさん2006/12/20(水) 00:39:44
>>855
TTimerは専用の不可視ウィンドウをインスタンス毎に作成してるからID重複しても問題ない。
Classes.pasのAllocateHWnd参照。
0857デフォルトの名無しさん2006/12/20(水) 01:22:40
>>853
TButtonじゃなくてTSpeedButton使ったら?
08588552006/12/20(水) 01:37:22
>>856
なるほど。素人の取り越し苦労だったんですね…。(´ω`)
なにはともあれ感謝です。明日会社でご指摘の箇所を読んでみます。
VCLのソースは自分のプログラムのヒントになりそうなことがいっぱい書いてありそうですね。

それにしてもこんなにすぐ疑問を解決できるなんて、2chはすごいな。
0859デフォルトの名無しさん2006/12/20(水) 02:24:34
これからC言語を始めようと思ってるんですが、XPでフリーで使えるコンパイラありますか?
あとBorlandの一部が落ちてるような感じになってるのはいつものことなんですか?
0860デフォルトの名無しさん2006/12/20(水) 02:31:26
>>859
MinGW
とか
VisualC++ Express
とか
0861デフォルトの名無しさん2006/12/20(水) 02:34:05
ありがとうございます
C++Builde系はやっぱりないんですかね?
0862デフォルトの名無しさん2006/12/20(水) 02:46:23
>>859
Turbo C++
0863デフォルトの名無しさん2006/12/20(水) 02:59:06
ありがとうございました。この中から選んで頑張ろうと思います
0864デフォルトの名無しさん2006/12/21(木) 16:36:32
C++Builderの"SendInput"の使い方がよく分かりません。
文字をアクティブな部分に送るだけでよいので、
どなたかプログラムの例を挙げてもらえないでしょうか?
0865デフォルトの名無しさん2006/12/21(木) 16:51:03
フォームにボタンがButton1〜Button100まであって、
x番目のButtonのEnabledを変更するような場合、
if(x == 1)Button1->Enabled = false;
else if(x == 2)Button2->Enabeld =false;
else ・・・・・・・・・・・・・・・・・・
の、ようなことせずにxからボタンのアドレスを直接取得するような方法はないでしょうか?
とりあえず、TListにAdd(Button1);Add(Button2);・・・・・・Add(Button100);ってやっておいて、
TButton *btn=(TButton *)List->items[x]; btn->Enabeld = false; とやる方法を考えたのですが、
もっとかっこいい方法はないものでしょうか?
0866デフォルトの名無しさん2006/12/21(木) 17:32:59
>>865
FindComponent
0867デフォルトの名無しさん2006/12/22(金) 10:53:07
>>866
ピンポイントな解答、どもです。
やりたいことがあっても、その方法がなかなか見つけられない。
いつになったら超初心者を抜け出せるんだろうか。
0868デフォルトの名無しさん2006/12/22(金) 11:52:59
>>867
・Delphi向けのリソースを活用する
・気になることがあったらVCLのソースを覗く癖をつけておく(stdやperとかでソース無い場合は新TurboはExplorerでもソース付いてるからインスコ)
0869デフォルトの名無しさん2006/12/22(金) 21:21:09
基本的なアルゴリズムの本を最低3回は繰り返し読んで、手本となる見通しの良いソースを1本読みこなせば、相当レベルは上がる。
0870デフォルトの名無しさん2006/12/22(金) 23:34:21
ソース見るのは、いいよ。
Sourceforgeなんかで、Delphiのオープソースのソフトのソースとか漁るとか。
OpenJaneとかその辺。
0871デフォルトの名無しさん2006/12/23(土) 03:51:01
ソース見るのもいいけど多少敷居が高い場合もあるし、基本的にはググるのが最強じゃない?
同じようなこと考えてるヤツってのは他にも大抵はいる
0872デフォルトの名無しさん2006/12/23(土) 19:09:21
多少敷居が高いというか負荷があるくらいのソースを読めばレベルアップする。
ググってコピーしていたのでは、いつまで経っても低レベルのままだ。
0873デフォルトの名無しさん2006/12/25(月) 01:27:22
これをxpで使ってる香具師いる?
0874デフォルトの名無しさん2006/12/25(月) 01:36:03
AthlonXPで使ってますが
0875デフォルトの名無しさん2006/12/25(月) 12:05:18
FormやButton部分をクリックしたときに、それまでフォーカスされていた所から、
フォーカスを奪わないようにするにはどうすればよいのでしょうか?
0876デフォルトの名無しさん2006/12/27(水) 14:35:45
TStringGridで、選択している行のグリッド(一番左の列)をボタンがへこんだような状態に
描画する方法ってないでしょうか
0877自己レス2006/12/27(水) 15:45:58
ちょっと調べましたが、CellRect( 0, Row)で選択行の0列目のrectを取得して
DrawEdgeで直接描画する方法になるんですかね?
0878デフォルトの名無しさん2006/12/28(木) 01:35:31
>877
OnDrawCellイベントあたりを見てみたら?
0879デフォルトの名無しさん2006/12/28(木) 17:12:35
>878、どもです
OnDrawCellでこんな風にしました。
if( ACol == 0 && ARow == StringGrid1->Row ){
 DrawEdge(StringGrid1->Canvas->Handle,&Rect,BDR_SUNKEN,BF_RECT);
 StringGrid1->DefaultDrawing = false;
}else{
 StringGrid1->DefaultDrawing = true;
}
あと、選択行がわかったときに上記で描画した固定セルを元に戻す処理を
StringGridのMouseDownイベントで行う必要があるんですが、
CellRectで取得した固定セルのRectに対して、DefaultDrawingがtrueの時の描画を
再現しようとDrawEdgeを使っていろいろやったんですがうまくいきませんでした。
結局下のように自分で線を引いたりして再現させたのですが、他に方法がなかったのかな?と思ってます。
TRect R = StringGrid1->CellRect( 0, OldRow );
DrawEdge( StringGrid1->Canvas->Handle, &R, BDR_RAISEDINNER, BF_BOTTOMRIGHT);
DrawEdge( StringGrid1->Canvas->Handle, &R, BDR_RAISEDINNER, BF_TOPLEFT);
StringGrid1->Canvas->Pen->Color = clBtnFace;
StringGrid1->Canvas->MoveTo( R.Right-1, R.Top+1 );
StringGrid1->Canvas->LineTo( R.Left+1, R.Top+1 );
StringGrid1->Canvas->LineTo( R.Left+1, R.Bottom );
0880デフォルトの名無しさん2006/12/31(日) 01:23:04
VC6で作られたDLLを使いたいんですが、
わかりやすいHPなどがあれば教えてください
0881デフォルトの名無しさん2006/12/31(日) 14:48:32
>>880
implibでインポートライブラリ作成
0882デフォルトの名無しさん2007/01/03(水) 04:50:07
設定しておいたキー(F1等)が押されたときに(アクティブ、非アクティブに関わらず)
タイマーが動き時間になれば知らせてくれるソフトを作りたいのですが、
非アクティブ時にキーを判定→実行させる方法がわからず悩んでいます。

わかる方がいましたら教えていただけないでしょうか?
0883デフォルトの名無しさん2007/01/03(水) 10:53:44
>>882
RegisterHotKey()
SetWindowsHookEx(WH_KEYBOARD, ...)
0884デフォルトの名無しさん2007/01/03(水) 14:25:39
>>882
ラグナ厨かよ
0885デフォルトの名無しさん2007/01/07(日) 13:59:17
グローバルフックだからDLLからフック仕掛けるように。
0886デフォルトの名無しさん2007/01/09(火) 09:18:29
親フォームの中央に表示するメッセージボックスってないですか?
0887デフォルトの名無しさん2007/01/09(火) 10:41:49
親フォームのハンドル使えばよくね?
0888デフォルトの名無しさん2007/01/09(火) 11:31:45
ハンドルを渡すメッセージボックスっていうと、Win32APIのMessageBox?
引数にフォームのハンドル渡しても画面中央に表示されるんだけど、何か間違ってるかな。
0889デフォルトの名無しさん2007/01/09(火) 15:55:30
>>888
面倒だがWM_NCCREATEをフックしてサブクラス化する。
MFCはこの方法でオーナーウィンドウの中央に表示されるようになってる。
0890デフォルトの名無しさん2007/01/09(火) 18:04:57
新規フォーム使うのが楽だなw
0891デフォルトの名無しさん2007/01/09(火) 18:29:21
親フォームの位置を調べて、中央に移動させればいいだけじゃん。
0892デフォルトの名無しさん2007/01/09(火) 18:38:10
フォームを画面の中央に配置してから、MessageBoxを呼べば良い。
08938882007/01/10(水) 08:25:54
>890
はい。新規に共通で使うフォームを作ることになりました。
作ってて一つ問題。フォームのCaptionがメッセージより長くなる場合、
Captionの横幅によってフォームの横幅を合わせるようににしたいのですが、
どうすればいいですか?
0894デフォルトの名無しさん2007/01/10(水) 14:28:23
>>893
int Textlen = Canvas->TextWidth(Caption);
if(Textlen > Width) Width = Textlen;
0895デフォルトの名無しさん2007/01/10(水) 14:29:39
プロジェクトオプションで、RTLを使わない、実行時パッケージを使わないにしたのですが、
他のPCで実行しようとするとMIDAS.dllが無いと出ます。
Delphiだと、MidasLibをusesのところに書けばmidas.dllを配らなくても良いらしいのですが、
C++Builderでもmidas.dllを使わなくても良いようにするにはどうすればいいのですか?
0896デフォルトの名無しさん2007/01/10(水) 14:35:55
BCB6PersonalかProfessional購入で迷っています。
用途は趣味のゲーム製作なのですが、挫折する事も考えると安価なPersonalが
魅力的です。
DirectXを使うようなゲームを作る場合、Personalでも問題ありませんか? 両
者の大きな違いとは、単に商業的に使えないという事だけでしょうか?

ちなみにBCBを選んだのは仕事でDelphiを使っているので、VCよりもとっつき
易いかかもしれないと思ったからです。
08978882007/01/10(水) 14:43:14
>>894 どもです。
最初、TextWidthがCaptionの表示幅より小さい値になってたんですが、
FormのFontのSizeを大きくしたらうまくいきました。
これでいきます。
08988882007/01/10(水) 16:12:48
たびたび質問すみません。
自分で作ったメッセージボックスは、アプリケーション起動時にCreateFormしないで
動的にフォームを作成、削除するようにしたいのですが、どうやればよいのでしょうか?
0899デフォルトの名無しさん2007/01/10(水) 20:34:29
使い慣れたDelphiでゲームを作ればいいのに、と思うのは俺だけ?

まあリファレンスはCのが多いからどちみちCを読めなきゃならないけど。
0900デフォルトの名無しさん2007/01/10(水) 22:33:08
>>899
はげどう
0901デフォルトの名無しさん2007/01/10(水) 22:38:22
>>898
WinMainにあるApplication->CreateForm(__classid(Txxxx), &xxxx);を消して
必要な時にnewしたらどうだね

(xxxxはフォームのクラス名ね)
0902デフォルトの名無しさん2007/01/11(木) 00:07:22
VCLフォームアプリケーションで、Flexで生成したlex.yy.cをリンクさせ
られず困っています。
FormのButtonクリック・イベントでlex.yy.cで実装されたyylex()をコー
ルさせたいのですが、未解決の外部参照だとリンクエラーが発生します。

*.cから別の*.c内定義の関数コールはできているのですが、*.c内で定義
されたラベルを*.cppで参照するには何か特別な記述が必要なのでしょうか?
0903デフォルトの名無しさん2007/01/11(木) 00:15:25
>>895
.dcuをプロジェクトに放り込めばいけそうな気が‥‥

>>896
DirectGraphicsベースのアプリだとVCLフレームワークの大半が無意味になるからVC2005Expressでいいとおもうぞ。
取っつきやすいだけならVC#2005Express+XNA GameStudio Expressの選択肢も。
0904デフォルトの名無しさん2007/01/11(木) 00:17:32
>>902
extren "C"
0905デフォルトの名無しさん2007/01/11(木) 00:18:44
スペルミス
extern "C"
0906デフォルトの名無しさん2007/01/11(木) 00:29:22
>>905
ありがとうございます。
職場のPCにしか環境が無く、すぐに試せなくて申し訳ないのですが、
コードの意味を調べておいて、明日試してみます。
09078952007/01/11(木) 02:26:09
>>903
Midaslib.dcuをプロジェクトに追加しても駄目でした。
ソースに
#pragma link "Midaslib.dcu"
と書くと、
[リンカ エラー] Error: 'MIDASLIB.DCU' に無効な OMF レコード (タイプ 0x23) が含まれています
となります。
09088962007/01/11(木) 10:24:25
>>899、>>900
DirectXを使う場合、そのうち限界を感じるようになると知り合いに言われまし
て・・・。

>>903
なるほど。
では、VC2005Expressを試しに使ってみます。 ありがとうございました。

0909デフォルトの名無しさん2007/01/11(木) 17:56:48
CppWebBrowserを使用しているんですが
現在表示中のサイトのバックグラウンドカラーや表示中のテキストを取得することは
できませんでしょうか?
レス数が900を超えています。1000を超えると表示できなくなるよ。