C++Builder相談室 Part13
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
05/02/15 20:58:38過去スレ・関連サイトは>>2-6あたり。
0611デフォルトの名無しさん
2005/04/30(土) 19:52:47それMFC?
C++BuilderならWideStringやstd::wstringで書きまくるべし
Win9xはごく一部のUnicode関数しか実装していないのよねぇ
0612610
2005/04/30(土) 20:02:59知りたいことだけを言えば、
『エントリポイント関数を、 WinMain から wWinMain にするには
どうすれば良いか?』ということです。
0613デフォルトの名無しさん
2005/04/30(土) 22:25:37プロジェクトオプション→ディレクトリ/条件タブ→条件定義に「_UNICODE」を追加。
又はオプションソースを開いて、コマンドラインオプションに「-WU」を追加。
#include <windows.h>
#include <tchar.h>
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
return 0;
}
0615デフォルトの名無しさん
2005/05/01(日) 00:29:48BCB上で書き換えても反映されないかもしれないから、BCB終了して適当なエディタで。
それでもできなければうpする。
0616610
2005/05/01(日) 00:46:25無理でした。
メイクファイルを作成して、そのc0w32.objを書き直した場合は成功しますが、
手間がかかるので、より簡単な方法があるなら知りたいです。
0617デフォルトの名無しさん
2005/05/01(日) 00:58:200618610
2005/05/01(日) 01:31:58開発環境から UNICODE モードでコンパイルできるようになりました。
thx
0619デフォルトの名無しさん
2005/05/01(日) 09:32:45aを√したい場合と aをcos場合どうすればいいでしょうか?
sqrt(a) cos(a) してもうまくできないです。
0620デフォルトの名無しさん
2005/05/01(日) 09:35:15a=float cos(float a);
でもやってみたのですが、ぜんぜんうまくいきませんでした。
0621デフォルトの名無しさん
2005/05/01(日) 09:54:52現在表示されてるページのURLをEditに表示するには
どうしたらいいのでしょうか。
0622デフォルトの名無しさん
2005/05/01(日) 10:18:54どうすればいいですか?
0623デフォルトの名無しさん
2005/05/01(日) 11:48:54ヘルプを読む。
それでも分からなかったら、
自分の書いたソース晒して何がどう上手くいかなかったのか具体的にかけ。
>>621
TCppWebBrowser::LocationURL
>>622
TMemo::Lines
ってか人に聞く前にヘルプちゃんと読め。
0624デフォルトの名無しさん
2005/05/01(日) 11:57:110625デフォルトの名無しさん
2005/05/01(日) 11:58:06ここで質問することとヘルプを参照することはイコールです。
0626デフォルトの名無しさん
2005/05/01(日) 12:09:22TMonitor::WorkareaRect
0627デフォルトの名無しさん
2005/05/01(日) 12:09:24TRect r;
SystemParametersInfo(SPI_GETWORKAREA, 0, &r, 0);//rにディスプレイのタスクバーを除く
//デスクトップ領域が代入される
int width = r.Right - r.Left; // Width
int height = r.Bottom - r.Top; // Height
0628624
2005/05/01(日) 12:55:540629デフォルトの名無しさん
2005/05/01(日) 13:21:050630デフォルトの名無しさん
2005/05/01(日) 15:03:05オブジェクトインスペクタでMemo1、Linesプロパティの右の...をクリック。
文字列リストの設定ダイアログで"Memo1"の文字列を削除。
0631デフォルトの名無しさん
2005/05/01(日) 15:53:18っ[BCB9]
0632デフォルトの名無しさん
2005/05/01(日) 17:13:000633デフォルトの名無しさん
2005/05/01(日) 19:30:15どうやるのですか?
0634デフォルトの名無しさん
2005/05/01(日) 21:29:17つけました。
buttonを押すとタブを自動的にひとつ追加することはできたのですが、
新しくできたタブ上にもともとあったコンポーネントと同じものを追加するにはどうすればいいのでしょうか。
(簡単に言うとTabControl上にEditがあり、buttonを押すとタブが1つ増えて、新しくできたそのタブ上にもEditが自動的にできるようにしたい、ということでです。)
0635デフォルトの名無しさん
2005/05/01(日) 21:51:05VCLリファレンスヘルプから引用
>TTabControl は異なるコントロールを格納する
>複数のページを持たない単一のオブジェクトです。
>現在のタブが変わると,タブコントロールは変更を
>反映するために OnChange イベントハンドラで
>直接コントロールの内容を更新しなければなりません。
引用終わり
>新しくできたタブ上にもともとあったコンポーネントと同じものを追加する
不可能。TPageControlのことか?
0636デフォルトの名無しさん
2005/05/01(日) 22:30:43あ、間違えました。ご指摘のとおりTPageです
0637デフォルトの名無しさん
2005/05/01(日) 23:43:04TPageなんてコンポーネントは存在しないぞ。
質問するときゃコンポーネント名くらい正確に書け。
複数のタブシートで同種のコンポーネントを使いたいなら
それこそTTabControlを使えばいい。
TPageControlは動的にページを追加するような使い方はあまりしない。
どうしてもやりたかったら追加したいコンポーネントをnewしてシート上に
配置するしかない。
複数のコンポーネントを扱うならフレームにまとめておけば一発で配置できる。
しかし、TTabControlを使うことを考えたほうが利口だとは思う。
0638デフォルトの名無しさん
2005/05/02(月) 05:26:200639デフォルトの名無しさん
2005/05/02(月) 06:49:08位置はてきとーに調整
0640デフォルトの名無しさん
2005/05/02(月) 06:50:26VisualC++でつくったのよりキビキビしてない気がするんですが
気のせいですか?
0641age
2005/05/02(月) 08:48:490642デフォルトの名無しさん
2005/05/02(月) 09:32:530643デフォルトの名無しさん
2005/05/02(月) 11:34:45パソコンをグレードアップしろ。2GHz未満のCPUなぞ使うな。
0644デフォルトの名無しさん
2005/05/02(月) 12:39:062GHzのCeleronは1.4GHzのCeleronより早いですか?
0645デフォルトの名無しさん
2005/05/02(月) 12:49:19CPU自体の速度はそんなに変わらないだろうが、メモリ周りが明らかに速い。
0646デフォルトの名無しさん
2005/05/02(月) 13:00:08GUIでC++BuilderとVCのスピードの差などない。
本当にC++Builderで作ったのか?
Javaじゃないのか?
0647デフォルトの名無しさん
2005/05/02(月) 13:26:23ワロタ
0648デフォルトの名無しさん
2005/05/02(月) 13:46:25Javaはおそいねぇ。個人的にはこれがクライアントアプリケーションで使われなくなった最大の原因だと思うのだが(言語仕様的には好きなんだけどね)
0649デフォルトの名無しさん
2005/05/02(月) 16:03:110650デフォルトの名無しさん
2005/05/02(月) 16:26:55マンドクセ
0651デフォルトの名無しさん
2005/05/02(月) 16:39:33TListViewを継承して作ったらいいんじゃない?
0652デフォルトの名無しさん
2005/05/02(月) 20:51:460653デフォルトの名無しさん
2005/05/02(月) 20:59:33ProgressBar1->Top = 1;
ProgressBar1->Left = 1;
0654デフォルトの名無しさん
2005/05/02(月) 21:06:09ProgressBar1->Top = 2;
ProgressBar1->Left = 2;
0655デフォルトの名無しさん
2005/05/02(月) 21:35:51はじめはフォームにButton1とMemo1がありますが、実行後に
Button1を押すとMemo2、Memo3・・・を表示することです
0656デフォルトの名無しさん
2005/05/02(月) 21:45:23C++ Builderで、実行時にTEditなどのコントロールを動的に作成するには、以下のようにします。
Parentを必ず設定する必要があります。
TEdit *DynamicEdit = new TEdit(Form1);
DynamicEdit->Parent = Form1;
DynamicEdit->Name = "DynamicCreateTEdit";
DynamicEdit->Left = 100;
DynamicEdit->Top = 100;
0657デフォルトの名無しさん
2005/05/02(月) 21:47:20コンポーネントを動的に作成するにはどうすればいいのでしょうか?
下記のように記述すれば可能です。
注意として必ず,Parentプロパティに親となるコンポーネント(Form,Panel等)を 指定するようにしてください。
これにより,不特定多数のコンポーネントを使用したり,配列でコンポーネントをコ ントロールできるようになります。
//ユニットのヘッダのprivateに以下の一行を記述
TLabel *labels[9];
//以下の記述をボタンのクリック時のイベントに記述
//また,Form1にPanel1というパネルを事前にはっておいてください
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for (int i=0;i<=9;i++)
{
labels[i]=new TLabel(Form1);
labels[i]->Top=i*20;
labels[i]->Caption="Label"+IntToStr(i);
labels[i]->Parent=Panel1;
}
}
0658デフォルトの名無しさん
2005/05/02(月) 21:49:12こういうヤツの作り方ってどうやるんですかね?
0659デフォルトの名無しさん
2005/05/02(月) 21:58:320660デフォルトの名無しさん
2005/05/02(月) 22:46:47動的に増やしたいのですが、TCppWebBrowserってしたらエラーがでたのですが・・
0661デフォルトの名無しさん
2005/05/02(月) 23:06:170662デフォルトの名無しさん
2005/05/02(月) 23:10:04TCppWebBrowser *CppWebBrowser = new TCppWebBrowser(this);
だったのを
TCppWebBrowser *CppWebBrowser = new TCppWebBrowser(Owner);
0663デフォルトの名無しさん
2005/05/03(火) 00:54:51TCppWebBrowserのParentの設定は、CppWebBrowser1->TOleControl::Parent = 〜
ってしないとだめ。
0664デフォルトの名無しさん
2005/05/03(火) 00:56:40エラーが出たら、最低限エラーメッセージを書こうぜ。
0665デフォルトの名無しさん
2005/05/03(火) 01:06:531のコンポーネントが前に出っ放し。
1のコンポーネントが邪魔で2のコンポーネントが
見えない・・・・・。
誰か助けて・・・・
0666デフォルトの名無しさん
2005/05/03(火) 01:28:50シートの切り替えはどうやってる?
0667デフォルトの名無しさん
2005/05/03(火) 08:18:53PageControl上にCppWebBrowserを乗っけて、実行後
新しいウィンドウで開くを選ぶと別のタブが自動的にできるように
してある。ただ、新しいタブ上のCppWebBrowserが隠れて見えない。
それに新しいタブ上のCppWebBrowserで新しいウィンドウで開くを選ぶと
IEが起動してしまいます・・・。
0668デフォルトの名無しさん
2005/05/03(火) 08:29:06CppWebBrowser1を表示用のブラウザ、
CppWebBrowser2を、
表示されないブラウザ用とします。(CppWebBrowser2の
Width, Height を0にしておきます。)
そして、CppWebBrowser1のOnNewWindow2で、
新しいページを一度CppWebBrowser2に表示させ、
そのURLを所得して、
CppWebBrowser1からNavigateすることで、
新しいウィンドウを開かずに、表示することが
できると思います。
コードだと
void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,
LPDISPATCH *ppDisp, TOLEBOOL *Cancel)
{
*ppDisp = CppWebBrowser2->Application;
}
//------------------------------------------------------------------------ - --
void __fastcall TForm1::CppWebBrowser2NavigateComplete2(TObject *Sender,
LPDISPATCH pDisp, TVariant *URL)
{
CppWebBrowser1->Navigate(CppWebBrowser2->LocationURL);
}
という感じになります。
他にも方法はいろいろあるのかも知れません。
0669デフォルトの名無しさん
2005/05/03(火) 11:36:36(´-`).。oO(ただ単にActivePageが切り替わってないだけじゃ…)
0670デフォルトの名無しさん
2005/05/03(火) 12:01:46>>669
ありがとうございます。しかしなぜかできませんでした。
たしかに、ActivePageを切り替えてるのですが・・・
タブブラウザ風にしたいのです。
void __fastcall TForm1::CppWebBrowser1NewWindow2(TObject *Sender,
LPDISPATCH *ppDisp, VARIANT_BOOL *Cancel)
{
TTabSheet *TabSheet = new TTabSheet( this );
TabSheet->PageControl = PageControl1;
TabSheet->Parent=PageControl1;
PageControl1->ActivePage = TabSheet;
TCppWebBrowser *CppWebBrowser=new TCppWebBrowser(this);
CppWebBrowser->TOleControl::Parent=TabSheet;
CppWebBrowser->Align=alClient;
*ppDisp = CppWebBrowser->Application;
としたのですが・・。
なぜかCppWebBrowser1が常に一番先頭に出てきてしまいます。
新しいタブ上のCppWebBrowserはCppWebBrowser1でほとんど
隠れてしまいますが、端っこだけ見れます。そこで
新しいウィンドウで開くを選ぶと IEが起動してしまうのですけども・・。
どうもCppWebBrowser1以外は新しいウィンドウで開くを選ぶと IEが起動
してしまいます。
0671デフォルトの名無しさん
2005/05/03(火) 12:28:49うちでは隠れなかったので、隠れるというのは分からないけど、
IEが起動するのは、単に新しく作ったCppWebBrowserのOnNewWindow2イベントを設定してないからでは?
0672デフォルトの名無しさん
2005/05/03(火) 13:17:45動的に作ったCppWebBrowserのOnNewWindow2イベントの設定ってどうやれば
いいのですか?CppWebBrowserは実行前は1つしかありません・・・
0673デフォルトの名無しさん
2005/05/03(火) 13:22:49CppWebBrowser->OnNewWindow2 = CppWebBrowser1NewWindow2;
ってすればいい。
0674デフォルトの名無しさん
2005/05/03(火) 13:33:40やっとできました。ありがとうございます!
0675デフォルトの名無しさん
2005/05/03(火) 14:04:06「フォーム作成中にエラーが発生しました。継承元の'TOKBottomDlg'がみつかりません」とのこと。
必要なダイアローグ、表示するにはどうすればいいのでしょう?
0676デフォルトの名無しさん
2005/05/03(火) 14:04:35「フォーム作成中にエラーが発生しました。継承元の'TOKBottomDlg'がみつかりません」とのこと。
必要なダイアローグ、表示するにはどうすればいいのでしょう?
0677デフォルトの名無しさん
2005/05/03(火) 14:44:16例えばパネルの大きさを100*100にしたいときに、メインフォームの大きさはどのように
して計算すればよいのでしょうか?
0678デフォルトの名無しさん
2005/05/03(火) 15:22:32GetDeviceCaps(Canvas->Handle, HORZRES);
0679デフォルトの名無しさん
2005/05/03(火) 15:24:05{
Memo1->Lines->Clear();
Memo1->Lines->Add(Format("物理画面の幅 = %d mm",
ARRAYOFCONST(((int)GetDeviceCaps(Canvas->Handle, HORZSIZE)))));
Memo1->Lines->Add(Format("物理画面の高さ = %d mm",
ARRAYOFCONST(((int)GetDeviceCaps(Canvas->Handle, VERTSIZE)))));
Memo1->Lines->Add(Format("ディスプレイの幅 = %d pixels",
ARRAYOFCONST(((int)GetDeviceCaps(Canvas->Handle, HORZRES)))));
Memo1->Lines->Add(Format("ディスプレイの高さ = %d pixels",
ARRAYOFCONST(((int)GetDeviceCaps(Canvas->Handle, VERTRES)))));
Memo1->Lines->Add(Format("各ピクセルのビットの数 = %d",
ARRAYOFCONST(((int)GetDeviceCaps(Canvas->Handle, BITSPIXEL)))));
}
0680デフォルトの名無しさん
2005/05/03(火) 16:40:19フォームのClientWidthとClientHeightを100にすれば勝手に必要な大きさになるけど、
そうじゃなくて、ClientWidthとかを設定しないで、計算で求めたいということ?
0681デフォルトの名無しさん
2005/05/03(火) 19:20:30ProgressBar1->Top = 2;
ProgressBar1->Left = 2;
0682デフォルトの名無しさん
2005/05/04(水) 04:09:570683デフォルトの名無しさん
2005/05/04(水) 11:35:26TMediaPlayerならMCIのラッパだから再生できるはずだぞ。
try
{
MediaPlayer1->FileName = "C:\\Music\\music.mp3";
MediaPlayer1->Open();
MediaPlayer1->Play();
}
catch(Exception &e)
{
ShowMessage(e.Message);
}
0684デフォルトの名無しさん
2005/05/04(水) 15:17:130685トラックバック ★
2005/05/04(水) 15:24:51[タイトル] ↓
[発ブログ] ニー速@2ch掲示板
http://ex10.2ch.net/test/read.cgi/neet4vip/1115187035/l50
( ref= http://ex10.2ch.net/test/read.cgi/neet4vip/1115187035/l50 )
[=要約=]
↓
0686デフォルトの名無しさん
2005/05/04(水) 18:24:20それやめたほうがいいんじゃね?
子の側のコントロールのサイズを固定にして、
親の側をサイズ自動にしたら?
あるいはそうやって表示した後で
こっそり切り替えるというのはどう?
思いつきだけど
0687デフォルトの名無しさん
2005/05/04(水) 19:20:14[]
上下、左右の空きの比 率を一定に保つ
コンポーネントのサイズ は変わらない
[akLeft, akTop, akRight, akBottom]
上下、左右の間隔を一 定に保つように、
コンポーネントのサイズ を変更する
0688デフォルトの名無しさん
2005/05/05(木) 04:21:43具体的には、メディアプレーヤーのように開かれるべきファイル名を渡したいのですが。
0689デフォルトの名無しさん
2005/05/05(木) 06:20:32http://www.borland.co.jp/qanda/cbuilder/c0003242.html
アプリケーションを 2 つ以上同時に起動しないようにしたい場合は?
0690デフォルトの名無しさん
2005/05/05(木) 07:04:33それだと、2つめが起動しないだけで、既存の方に情報を渡せないんです。
0691デフォルトの名無しさん
2005/05/05(木) 11:12:36すでにアプリが起動してたら適当なプロセス間通信手段を使って既存アプリにデータを渡す。
前者はWM_COPYDATAとかあるし後者はメモリマップドファイルとかがある。
0692デフォルトの名無しさん
2005/05/05(木) 11:13:450693デフォルトの名無しさん
2005/05/05(木) 20:40:180694デフォルトの名無しさん
2005/05/05(木) 22:31:200695デフォルトの名無しさん
2005/05/06(金) 03:09:430696デフォルトの名無しさん
2005/05/06(金) 04:08:30クラスによりけり。
http://www.meta-comm.com/engineering/boost-regression/cvs-head/developer/index.html
それぞれのborland- 5_6_4のとこを見る。
0697デフォルトの名無しさん
2005/05/06(金) 07:07:390698デフォルトの名無しさん
2005/05/06(金) 16:53:340699デフォルトの名無しさん
2005/05/06(金) 17:41:51他のスレッドにまで影響したら、Sleep() は使い物にならない。
0700デフォルトの名無しさん
2005/05/07(土) 02:52:380701デフォルトの名無しさん
2005/05/07(土) 03:00:250702デフォルトの名無しさん
2005/05/07(土) 13:29:35方法で伝えればよい
0703デフォルトの名無しさん
2005/05/07(土) 21:04:190704デフォルトの名無しさん
2005/05/07(土) 21:50:03記述できる
グローバル変数はいわば手抜き
0705デフォルトの名無しさん
2005/05/07(土) 22:34:02スレッドが一つなら正解だよ
0706デフォルトの名無しさん
2005/05/08(日) 10:29:270707デフォルトの名無しさん
2005/05/08(日) 12:32:23そいつは終了したかどうかの判定には全く使えない
0708デフォルトの名無しさん
2005/05/08(日) 16:30:28これで表示してるWebページのURL
をRichEditに表示するにはどうすればいいの?
0709デフォルトの名無しさん
2005/05/08(日) 16:35:06RichEdit1->Lines->Add(CppWebBrowser1->LocationURL);
0710デフォルトの名無しさん
2005/05/08(日) 17:14:30乙
サンクス
■ このスレッドは過去ログ倉庫に格納されています