くだすれC++Builder(超初心者用)その2
■ このスレッドは過去ログ倉庫に格納されています
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
0751デフォルトの名無しさん
2006/10/22(日) 21:12:52>>655>>657>>660
0752デフォルトの名無しさん
2006/10/22(日) 23:55:33あああ、ほんとだ。
すみませんでした。
でも、予想が当たって良かったです。
0753デフォルトの名無しさん
2006/10/24(火) 23:41:47"abc" → "000abc"
0754デフォルトの名無しさん
2006/10/25(水) 00:40:01AnsiString str = Edit1->Text;
Edit2->Text = str.StringOfChar('0', MaxLength - str.Length())+str;
0755デフォルトの名無しさん
2006/10/25(水) 20:45:15exampleの httpdemoがコンパイルできないんです。
0756デフォルトの名無しさん
2006/10/25(水) 21:25:13printfの書式?それとも文字列に出力?
http://ja.wikipedia.org/wiki/Printf
文字列バッファへの出力ならsprintf
0757デフォルトの名無しさん
2006/10/26(木) 15:19:38取得したいのですが、どうすればいいでしょう?
0758デフォルトの名無しさん
2006/10/26(木) 16:12:24CaretPos
0759デフォルトの名無しさん
2006/10/26(木) 18:07:11module.cppに、モジュールの関数を定義しました。
void __fastcall TDataModule::say_num(){
//数字を表示するだけです
printf("%d\n",n);
}
この関数を使う方のファイルjikko.cpp(ジッコウ)
でグローバル変数int nを定義しました。
グローバル変数なのでそのまま使えると思ったのですが、
コンパイルすると、[C++ エラー] module.cpp: E2451 未定義のシンボル n
と出てしまいます。確かにmodule.cppでは、定義してないんです。
どのようにすると、jikko.cppのnをモジュールmodule.cppのnに渡せるのでしょうか。
jikko.cppのコードですが、int nを定義して下記のように呼び出しているだけです。
DataModule->say_num();
よろしくお願いします。
0760デフォルトの名無しさん
2006/10/26(木) 18:16:05補足です。
say_num()関数にintの引数を取れるように
する以外で考えております。
よろしくお願いします。
0761デフォルトの名無しさん
2006/10/26(木) 19:00:15jikko.cppで、
extern int n=1;と定義
module.cppで、modu_ex.cppのnを参照するため
#include "modu_ex.cpp"
とすると、n=1が参照できるようになりました。
この処理で大丈夫でしょうか。
0762デフォルトの名無しさん
2006/10/26(木) 19:31:16基礎を書籍等で習得するべき。
掲示板の数行のやりとりで教えられる領域じゃないように見える。
0763デフォルトの名無しさん
2006/10/26(木) 20:27:02聞きたいのはメッセージフックに関してです。
通常のアプリケーションではWndProcのオーバーライトで
独自のメッセージのやり取りおよび、イベントの受け取り等は出来きたのですが、
それをコンポーネント化しようとすると、呼び出し元のWndProcを操作せねばならず
他で見かけたDelphiソースみたいに、親のWinProcアドレスを挿げ替える方法も
出来ないものかと色々ためしましたが上手く行きませんでした。
で、ローカルフック関係で色々調べて試して見たのですが、
MFC関連は結構引っかかって色々試しては見たのですが、
これもコンポーネントとして持たせようとすると上手く行かないのです。
理想は、プロパティに独自のメッセージを入れると、そのメッセージが親アプリに
送られてきた時にイベントを発生させてくれるものを作りたいのです。
お勧めのサンプルソースやHP等ありましたら宜しくお願いします。
0764763
2006/10/26(木) 20:32:01もう3日ほど試行錯誤でてんぱってるみたいです(^^;
短く書くと、ローカルフックコンポーネントを作りたいので
何処か参考になるソースやHPがありましたら宜しくお願いします。
……二行で済む話を長々書いてしまったorz
0765デフォルトの名無しさん
2006/10/26(木) 20:48:32お返事ありがとうございます。
>module.cppで、modu_ex.cppのnを参照するため
>#include "modu_ex.cpp"
すみません。ファイル名間違えてました。
>module.cppで、jikko.cppのnを参照するため
>#include "jikko.cpp"
でした。
ネットで「externで宣言したら、使いたいユニットで
その宣言したファイルをインクルードする。」
と書いてあったのでそのままインクルードしました。
手元の本見たら、ヘッダーファイルにextern宣言してました。
jikko.hを作ってそこで宣言したほうが良いってことでしょうか?
0766デフォルトの名無しさん
2006/10/27(金) 01:07:57//jikko.h
extern int n;
//jikko.cpp
int n;
//module.cpp
#include "jikko.h"
これでヲケ
ただし、ひじょ〜〜〜〜〜〜〜に不味い設計
BCBのフォーム周りは似た事してるけどさ
正解は
>say_num()関数にintの引数を取れるようにする
またはポインタないし参照をとるようにする
0767デフォルトの名無しさん
2006/10/27(金) 04:11:35詳しく解説ありがとうございます。
あんまり良く無い設計でしたか。
特別なときだけ使うようにしたいと思います。
0768デフォルトの名無しさん
2006/10/27(金) 17:15:33エクスプローラからファイルをドラッグアンドドロップして
ファイル名を取得してTEditに表示させたいのですが、
ドロップしたマウスカーソル位置がEdit1上ならファイル名はEdit1に、
同様にマウスカーソル位置がEdit2上ならファイル名はEdit2に表示させたいのです。
表示させるTEditのターゲットを切り替えたいのです。
DragAcceptFiles(Edit1->Handle, true);
DragAcceptFiles(Edit2->Handle, true);
とすべきなのでしょうか。またその場合のMESSAGE_MAPはどのように記述すべきでしょうか。
とりあえず
DragAcceptFiles(Handle, true);
とした上で、DragQueryPointで取得した座標値でターゲットの判断をしていますが、
こんなことしなくても出来るんじゃないかと思いまして。
0769デフォルトの名無しさん
2006/10/27(金) 19:52:32TEditから派生させてWindProcメソッドをオーバーライド
0770デフォルトの名無しさん
2006/10/27(金) 22:34:571つ目は、乱数の値を取得する際なんですが、どのサイトを見ても乱数の種でTime関数を
使うのを推奨してるのですが、分母が大きい場合(65536)に実行すると
時間の経過と共に徐々に取得してくる数値が大きくなってしまいます。
クリック時に乱数取得するように組んでみると…
クリック→100代 クリック→200代 クリック→300代
という風に徐々に徐々に増えていってしまいます。
逆にSRAND関数を使わない場合はちゃんとバラけた乱数を拾ってきます。
プログラムを起動しなおしても、同じ数値は拾ってきません。
これはC++BuilderのRand関数はC++などとは違い、種をリセットしない方が
良いという事なのでしょうか?
もう一つは、先ほどの分母に関してなのですが
Rand関数で返ってくる値は32768が最大なのでしょうか?
65536個の乱数を取得したいと考えているのですが、それは無理なのでしょうか?
ぜひ教えて頂ければと思います。
よろしくお願いします。
0771デフォルトの名無しさん
2006/10/27(金) 22:46:17通常、乱数ジェネレータの初期化(srand)は1回だけやればいい。
あと、0x7FFF以上の値が欲しければ_lrandを使えば0x7FFFFFFFまで取れる。
0772デフォルトの名無しさん
2006/10/27(金) 23:01:33ありがとうございました!!
_lrandで無事解決しました。
2番目の質問の方は、どうやらsrand関数にばかり目が行ってて
randomize関数を毎回呼び出していたために変な取得の仕方を
してたような感じでした。
多分これで大丈夫だと思います。助かりました!
ありがとうざいます。
0773デフォルトの名無しさん
2006/10/27(金) 23:24:56int a,b;
float c;
で宣言しておき
c = a / b;
とする場合に小数点1桁までをLabelで表示したい場合が分かりません。
ceil関数なども調べてみたのですが、小数点1桁までの切り上げが出来ませんでした。
質問ばかりで申し訳ありませんが、よろしくお願いします。
0774デフォルトの名無しさん
2006/10/28(土) 00:08:06書式付の編集で四捨五入をしてくれる
char str[100];
sprintf(str, "%5.1f", (double)a/b);
0775デフォルトの名無しさん
2006/10/28(土) 01:18:42//---
曰 void ...
│ {
│ ...;
└ }
//---
こんな感じが普通だと思うんですが、
曰 //--- //--- //---
│ void ... void ... 曰 void...
│ { 曰 { │ {
└ ...; . │ ...; . └ ...;
} │ } }
//--- . └ //--- . //---
このような風になってしまいます。
文法的には間違ってないですし、もちろんコンパイルもできます。
書き方が悪いのでしょうか。
0776デフォルトの名無しさん
2006/10/28(土) 13:16:00例えばdouble型の数値a,b,cがあって a/bの結果をcに代入してLabelで小数点1桁まで表示したい場合
double a,b,c;
c = a / b;
Label1->Caption = c;
とすると小数点以下が延々と表示されます。これを小数点1桁までの表示としたいのですが
>>774でお答え頂いたような編集式で記述するのでしょうか?
それともLabelのプロパティなどで設定出来るのでしょうか?
0777デフォルトの名無しさん
2006/10/28(土) 13:35:01Label1->Caption = str;
すればいいんでねーの?
0778デフォルトの名無しさん
2006/10/28(土) 14:53:19Label1->Caption = FormatFloat("0.0", c);
しっかし、Label1->Caption = c;が、なんでエラーにならんのだ。
AnsiStringは、数値を代入してもOKだったなんて。
今まで、Float(Int)ToStr(***)と無駄な事をしていた・・・
0779デフォルトの名無しさん
2006/10/28(土) 17:05:54っ[ AnsiStringのコンストラクタ ]
0780デフォルトの名無しさん
2006/10/29(日) 07:49:070781デフォルトの名無しさん
2006/10/30(月) 13:44:57どういう方法があるでしょうか?
0782デフォルトの名無しさん
2006/10/30(月) 14:01:16RFC嫁
0784デフォルトの名無しさん
2006/11/02(木) 14:33:46typedef void __fastcall (__closure *TDropFileEvent)(System::TObject *Sender, std::vector<AnsiString> Files);
class TMyEdit : public TEdit
{
public:
__fastcall TMyEdit(HWND ParentWindow) : TEdit(ParentWindow) { DragAcceptFiles(Handle, TRUE); }
__published:
__property OnDropFile = { read=FDropFileEvent, write=FDropFileEvent };
private:
TDropFileEvent FDropFileEvent;
protected:
virtual void __fastcall WndProc(Messages::TMessage &Message) {
if (Message.Msg == WM_DROPFILES)
{
std::vector<AnsiString> files;
// filesにファイル名格納
FDropFileEvent(this, files);
}
TEdit::WndProc(Message);
}
};
0785デフォルトの名無しさん
2006/11/02(木) 15:06:08これをどうやって使えばいいでyそうか?
0786デフォルトの名無しさん
2006/11/02(木) 21:26:10( ゚ Д゚)
( つ旦O
と_)_)
_, ._
( ゚ Д゚) ガシャ
( つ O. __
と_)_) (__()、;.o:。
゚*・:.。
0787デフォルトの名無しさん
2006/11/03(金) 00:51:04まんま>>769
これの意味が分からんと言われたら
C++の入門書を読みましょうとしか答えようがないな
0788デフォルトの名無しさん
2006/11/03(金) 00:52:17↓こっちが正解
>>784
まんま>>769
これの意味が分からんと言われたら
C++の入門書を読みましょうとしか答えようがないな
0789デフォルトの名無しさん
2006/11/03(金) 07:58:19というかただ単にTApplicationEvents::OnMessageでメッセージ拾って
Edit1、Edit2とHanlde比較すればすむんじゃね?
0790デフォルトの名無しさん
2006/11/06(月) 18:12:33'-'を検索し、'-'を全て無くしても同じ結果でした。
BCB5で新規プロジェクトを作成し何も変更せずに保存したものは、BCB6でも開けます。
何かわかりますか?
0791デフォルトの名無しさん
2006/11/06(月) 19:04:23makeファイルの-オプションのところとか。
0792デフォルトの名無しさん
2006/11/06(月) 19:31:06>>791
「makeファイルの-オプションのところ」とはどこで確認するのでしょう??
なにぶん初心者なもので・・・。
メイクファイルの作成で出来た「***.mak」はテキストで開いてみたのですが、
BCB6でも開ける新規プロジェクトの「***.mak」と比較しても特にめぼしいとこはありませんでした。
また、ツール→環境オプション、プロジェクト→オプションも見たのですが特にめぼしいとこは
ありませんでした。
0793デフォルトの名無しさん
2006/11/06(月) 21:48:02解決しました。
BCB5で、プロジェクト→オプション→Pascal→構造体を境界配置 にチェックをつけたら
BCB6で開けました。理由は不明。
0794デフォルトの名無しさん
2006/11/07(火) 02:36:26int color;
};
//1番
Color* c = new Color;
//2番
Color* c2 = new Color();
1番と2番の書き方って何か意味の違いはあるのでしょうか
0795デフォルトの名無しさん
2006/11/07(火) 11:44:16BCB5→BCB6 移行の続きなのですが、今度はリンクの所で下記エラーになります。
[リンカ致命的エラー]Fatal:ファイル VCLE50.LIBが開けません。
検索するとBCB5のフォルダ((BCB)\Lib\Debug/Release)には有り、BCB6のフォルダには無し。
コピーしたら、リンクは出来たのですがVCLE50.LIBはBCB5のファイルですよね?
VCLE.LIBがBCB6のフォルダにはあるのですが・・・。
プロジェクトファイルの下記部分を確認するような事が書いてあったので、確認してみましたが
VCLE50.LIB は書いてませんでした。
<SPARELIBS value="rtl.lib vcl.lib"/>
<PACKAGES value="vcl.bpi rtl.bpi"/>
なぜ、VCLE50.LIB を見ようとしてしまうのでしょう??
0796デフォルトの名無しさん
2006/11/07(火) 15:57:21クライアント WindowsXP
DB SQL Server2005
開発環境 Borland C++Builder6.0 Pro
上記環境でアプリを作成するのですが、SQL Serverへのアクセスは何が一番最適でしょうか?
SQL Server2005の文献を読む限り、「.NET Framework Data Provider for SQL Server」の利用が
推奨と書いてあり調査したがどうもBorland C++ は.NETに対応していない?ようで、SQL Native Clientを使用する?ようなのですが、
どのコンポーネントを使えば良いか分かりません。(TADO***,TSQL***,TDatabase・・・)
アドバイスお願いします。
(接続→更新→終了までの簡単なサンプルコードを教えて頂けると助かります。
参考サイトでも構いません。)
0797デフォルトの名無しさん
2006/11/07(火) 22:38:41RichEdit1->Paragraph->LeftIndent=xx; として
RichEdit1->Lines->Add("xxxxx");
としても変化がありませぬでした。
0798デフォルトの名無しさん
2006/11/09(木) 00:42:20さらにトラックバーに対応して回転する線を描画するプログラムを
作成するってゆう宿題をやってるんですがまったくわかりません…
長さを調整することはできるのですが角度がどうすればよいのかわかりません。
プログラム自体に線の長さや位置の初期値を組み込んだのがおかしいのかな。
誰か教えてください。
0799デフォルトの名無しさん
2006/11/09(木) 15:40:17×LeftIndent
○TopIndent
0800デフォルトの名無しさん
2006/11/09(木) 23:03:53エラーになります。
あと、ヘルプのどこを探しても、TopIndent が見つかりません。
0801デフォルトの名無しさん
2006/11/10(金) 03:42:150802デフォルトの名無しさん
2006/11/10(金) 04:05:45ここのアプレットで、原点(0,0)を始点として渦巻きを外に向かってグルグルと描いていくかんじ?
トラックバーのPositionが増えるに従って渦巻きを大きくしていくかんじというか。
0803デフォルトの名無しさん
2006/11/10(金) 04:06:17http://www.sm.rim.or.jp/~shishido/sheeta.html
0805デフォルトの名無しさん
2006/11/11(土) 01:12:52Delphiのように、クラスを作る際は、TObjectから派生させるべきですか?
0806デフォルトの名無しさん
2006/11/11(土) 13:12:08ObjectPascal型クラス特有の機能(基底クラスのポインタから派生クラスの型取ってきたいとか)使うんでなければC++型クラス使うのが一般的。
0807デフォルトの名無しさん
2006/11/11(土) 16:27:020808デフォルトの名無しさん
2006/11/11(土) 17:03:090809デフォルトの名無しさん
2006/11/11(土) 21:40:48で・・・できました。
ありがとうございます。
でも、LeftIndentって何のためにあるんでしょうか?
0810デフォルトの名無しさん
2006/11/12(日) 22:17:30同一パラグラフの2行目以降のインデント幅 FirstIndentに加算される
なのでパラグラフが1行しかないと反映されない
0811デフォルトの名無しさん
2006/11/18(土) 00:51:08いや、全部TPanelから派生させるべきだよ。
0812デフォルトの名無しさん
2006/11/20(月) 03:17:24よろしくお願いします。
sndPlaySound関数を利用して二つのWAVファイルを時間差で再生するプログラム
を作りたかったのですが、sndPlaySoundでは複数のWAVファイルを重複して再生
することは出来ないようでした。
時間差と音量の組み合わせが1000種類程あるので、事前にミックスして一つの
WAVファイルにまとめるのは現実的ではありません。
というわけで、複数のWAVファイルを時間差で再生できる関数などありましたら
よろしくお願いします。
0813デフォルトの名無しさん
2006/11/20(月) 03:25:24mciSendString("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ファイルの読み込みがちょっと面倒だけどね。
0815812
2006/11/20(月) 03:42:09すばやい反応本当に感謝です。
0816812
2006/11/20(月) 05:10:19MCIとDirectSoundってどっちが手軽にできますか?
色々調べてみたのですがまだ数回、builderをかじった程度の自分では
どちらも敷居が高すぎてなかなか手がつけられそうにありません。
こちらの都合で申し訳ないですが、期限が迫っており、ゆっくり勉強している時間がありません。
>>812に書いた二つのWAVファイルの時間差再生ができる最低限の機能さえ
実現できればいいのですが、どちらの方法が短時間でできるでしょうか?
あと、ベクターで
「C++Builder用 DirectSoundを(比較的)簡単に扱えるDLL(サンプル付)」
というのを発見したのですが、バージョンが違うせいか、うまく動作しませんでした。
他にこのようなライブラリをご存知でしたら、お願いします。
環境はWinXP Professional , PS2 C++Builder 5 , DirectX9.0cです。
何でも良いので、よろしくお願いします
0817デフォルトの名無しさん
2006/11/20(月) 06:02:420818デフォルトの名無しさん
2006/11/20(月) 09:44:420819デフォルトの名無しさん
2006/11/21(火) 04:28:27次から"*****"が表示されて、再入力しなくてもいいようなのあります。
あればどうすればよいのでしょうか。
テキストファイルか何かにパスワード保存しておいて、ただ読み込むだけ
ということではないですよね。
よろしくお願いします。
0820デフォルトの名無しさん
2006/11/21(火) 04:40:360821デフォルトの名無しさん
2006/11/21(火) 07:30:12Delphi用のDirectSoundコンポーネントは、いくつかあると思うが・・・
DelphianWorldとか、Toryyとか探してみた?
あとは、Quadruple Dでもできたはず
0822デフォルトの名無しさん
2006/11/21(火) 07:58:19ありがとうございます。
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横から失礼します。
パスワードは基本的に別のエディットボックスですので、ユーザーID用の
ボックスにEnterが入力された時点でどこかに暗号化しておいたパスを
拾いに行くようにするしかないような気がします。
IEの場合は多分NTUSER.DAT当たりに記録されているのではないかと
思うのですが・・・外れていたらすみません。
0824デフォルトの名無しさん
2006/11/21(火) 12:46:46レスありがとうございます。
オートコンプリートってちょっと違うのでしょうか。
わかりませんでした。
えっと、保存する場合は、暗号化前の生のパスワードでいいんですよね?
暗号化したパスワードを保存すると、*の数変わってしまいますし。
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日本語(文字化けして読めない)になってしまいます。
エラーを英語にすることはできないでしょうか?
0828デフォルトの名無しさん
2006/11/25(土) 09:44:210829デフォルトの名無しさん
2006/11/25(土) 10:43:340830デフォルトの名無しさん
2006/11/25(土) 10:49:40俺以前bcb6の環境で同じ現象が出て、プロジェクトの言語設定を英語にしようが
言語リソースを使おうが直らなかった(MessageBoxを呼んだ後のVCL内の処理で
多言語対応がされてないっぽい)。
結局『CreateMessageDialog使って一度TFormオブジェクトを生成した後、その
キャプションを無理矢理英語に書き換えて表示する』という力業で切り抜けた
記憶がある。
個人的にはBCB(とういかVCL)のバグだったと思ってるんだけど、違うのかね?
6より後のバージョンは知らないけど。
>>828
俺も参考までに是非知りたい。教えてPlz。
0831デフォルトの名無しさん
2006/11/25(土) 11:01:350832デフォルトの名無しさん
2006/11/25(土) 13:50:19たとえば日本語のプロジェクトで生成したものを英語(ENU-ENglish/Us)ロケールで実行するときは
実行ファイル名の拡張子を.ENUにした言語リソースを探して見つかればそちらのリソースを使う。
言語リソースは新規作成のリソースDLLウィザードで作る(Pro以上)。ただしこのときに
SysConst.pasにあるresourcestringまでいちいち書き換えるのは不毛なのでCD-Rにある
英語版のライブラリに切り替えてからリソースDLLウィザードを使うのが吉(そのままだと
デフォルトで生成されるresourcestringの中身が日本語になってしまう)。
0833832
2006/11/25(土) 13:51:21○ CD-ROM
0834デフォルトの名無しさん
2006/11/25(土) 23:17:48うーん・・・リソースDLLはもちろん使ったんだけど、
SysConst.pasって関係あるのかな?
例えばMessageBoxでMB_YESNOを指定した時のボタンのキャプションも
日本語で表示されてたけど(本来英語環境ではYes/No表示のところを
はい/いいえで表示しようとして化ける)、こんなところまでSysConstで
管理してないような。
英語版ライブラリの使い方も探したけど、見つからなかったんだよね。
少なくともインストールディスクには入ってなかった気がする。
全部BCB6の話ですが。
0835デフォルトの名無しさん
2006/12/01(金) 17:38:23ようなことってできますか?
開始ボタンを押したら後は矢印押すだけで内部の変数が変わるようなプログラムを
作りたいのですが。プログラムを使っている人にはその変数の値がどの程度か知られたくないのです。
あと、できれば操作中はマウスを使わなくてすむようにしたいです。
0836デフォルトの名無しさん
2006/12/03(日) 16:21:58内容を自動スクロールしたいのですが
ScrollByメソッドを使っても上手くいかないみたいです
それ以外の方法はありますでしょうか?
0837デフォルトの名無しさん
2006/12/04(月) 03:08:07TEditから入力してもらった文字列をchar型の変数に代入するにはどうしたらよいのでしょうか?
char型の変数 = Edit1->Text;
では左辺値がありませんとエラーになってしまいます。
int型の変数 = StrToInt(Edit1->Text);
は通ったので大丈夫だとおもったのですが・・・
よろしくお願いします。
0838デフォルトの名無しさん
2006/12/04(月) 07:02:12『文字列をchar型の変数に代入する』という発想が既におかしい。
C言語の基礎から勉強しなおし。
0839デフォルトの名無しさん
2006/12/04(月) 07:16:59AnsiStringで宣言すればイコールで代入できるよ。
0840デフォルトの名無しさん
2006/12/04(月) 08:53:29char* AnsiString::c_str() const;
0841デフォルトの名無しさん
2006/12/04(月) 10:54:29不可視のコントロールにフォーカスを設定はできなかったはず
開始ボタンとか必要なコントロールでOnKeyDown/Upイベントを定義すればいいんじゃないかな
0842デフォルトの名無しさん
2006/12/04(月) 14:02:19char c[256];
strcpy(c, Edit1->Text.c_str());
この方が無難じゃない?
0843デフォルトの名無しさん
2006/12/04(月) 20:15:27char c = Edit1->Text[1];
0844デフォルトの名無しさん
2006/12/06(水) 09:49:50HP等は無いでしょうか?
0845デフォルトの名無しさん
2006/12/17(日) 21:52:38このような具合にです。
TForm1::TForm1(略) {
WindowProc = MyWndProc;
}
TForm1::MyWndProc(Messages::TMessage &Message){
(処理)
}
それでWM_TIMERのwParamを拾おうとしてMessage.WParamを見ると
本来はタイムアウトになったタイマのIDが入っているはずなのですが、
常にゼロが入っています。(´;ω;`)
私の使い方が悪いのでしょうか?
0846845
2006/12/17(日) 22:09:110847デフォルトの名無しさん
2006/12/18(月) 09:43:29自クラス内でウィンドウプロシージャ弄る場合は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とかボタンありますが、マウスのカーソル上に置くと、
なんのボタンか表す文字が出てきます。
こういうのやりたいですがわかりません。
よろしくお願いします。
0849デフォルトの名無しさん
2006/12/19(火) 14:35:57それのText(Caption)と縦座標のみ異なる複製を動的に作成したいのですが、
スマートなコーディング方法がないでしょうか
一応、newでコントロールを作成してプロパティやイベントを一個一個コピー
していくやりかたではできたのですが、数が多くてステップ数が馬鹿デカくなって困ってます。
0850デフォルトの名無しさん
2006/12/19(火) 14:53:18まさか、関数化せずに一個一個newしているわけじゃないだろうな。
■ このスレッドは過去ログ倉庫に格納されています