★初心者にVisual C++を教えるスレ★ Part15
エディットコントロールに文字を転送して表示してるのですが
なぜかアルファベットが2バイト文字のようにすこし大きくなります。
表示された文字を別のメモ帳にコピペするとふつうの1バイト文字になります。なぜでしょうか?
お願いします。教えてください。お願いします。お願いします。お願いします。
(・∀・)ニヤニヤ
8 :
デフォルトの名無しさん:04/10/17 15:05:01
初心者の諸君。
VCなんて辞めておけ。
今ならまだ引き返せる。
BCBマジお勧め。
11 :
デフォルトの名無しさん:04/10/17 15:41:31
>>6 お前いい加減荒らしすぎ。通報されたくなきゃさっさとカエレハゲ。
BCBってなんですか?
VCに比べてどこが良くて、どこが悪いんですか?
パチモノじゃね?
値段安いのかも
VCタダで手に入るしどうでもいい
15 :
デフォルトの名無しさん:04/10/18 13:07:03
ダイアログベース上に配置されているコントロールで、
ある特定のエディットコントロールの書体を変更したいのですが、
どのように記述すればよろしいのでしょうか?
宜しくお願いします。m(_ _)m
マルチウザイ
>>15 そんなことはできない。
わかったらあちらへどうぞ |出口|
|出口| λ...
19 :
デフォルトの名無しさん:04/10/18 19:09:07
初心者で申し訳ないです。
ダイアログ付きDLLなのですが、
ダイアログの背景色を変更したいのです。
検索してみたところOnCtlColorや
InitInstanceでSetDialogBkColorなどを
使用するみたいですが、DLLにはOnCtlColor
やInitInstanceが存在しないので、
その方法ではできませんでした。
ご教授願います。
あるよ
22 :
デフォルトの名無しさん:04/10/18 22:50:10
VS2002を使っています。(MFCアプリ)
あるベンダーが提供するActiveXコントロール、COM(両者の違いが良く分からん)
を利用する際、クラスの追加で
「ActiveXコントロールのMFCクラス」、「TypeLibからのMFCクラス」
のどちらで現プロジェクトに取り込むのでしょうか?
ActiveXコントロールのMFCクラス
25 :
デフォルトの名無しさん:04/10/18 23:50:38
>>23 TypeLibからのMFCクラスってのはどのようなときに
使うのですか?
26 :
デフォルトの名無しさん:04/10/19 00:31:41
超初心者的質問です。
CDocumentから派生したCHogeDocumentクラス内でstd::vectorを使おうと思っています。
そこで、質問です。
どこに、#include <vector>を書けばいいのですか?
CHogeDocument.hでも、stdafx.hのどちらに書いても問題なさそうなんですが
どっちがいいのですか?
>>26 よく使うもんだしstdafx.hの方に入れとけばいいなじゃないかな。
ホントカネー
ホントダヨー
30 :
デフォルトの名無しさん:04/10/19 01:24:24
stdafx.hに入れることでのデメリットを説明できないんだねw
↑よい子のみんなはこういう馬鹿に釣られないこと。
コンソールアプリについて質問です。
普通にプログラムを作った場合、実行終了直後にコンソール画面が閉じてしまいます。
今はsystem("PAUSE")を末尾に入れて対処していますが、
デフォルトでコンソール画面を閉じなくする(キー入力待機にする)ことはできないのでしょうか?
>>32 そういうでたらめなことはやめれ
実行終了して閉じないのはバグ
Windowsについてるコンソールアプリ使ってみろ
>>33 なるほど、確かにその通りですね。
結果確認のために毎回コマンドプロンプトから実行するのも億劫だったので・・・
以後気をつけます。ありがとうございました。
35 :
デフォルトの名無しさん:04/10/19 09:12:06
メニュークリック時のハンドラや、View上のイベントハンドラはどのクラスに
書きますか?
どれか一つのクラスにすべて書いたほうがあとあと保守し易いと思うのですが
間違っていますか?
>>35 そういう考えならクラスは使わない方がいい。
最適化云々でどういう変化があるのかをじかに確かめたいのですが
バイナリファイルから直で混合モードを表示するような方法はありますか?
もしくは、実行ファイルをアセンブリで表示してくれるような
お勧めソフトなどがあれば紹介お願いします
-FAでコンパイルすればいいのに
アセンブリで表示するのは簡単だけど
例
次のコマンドは、ソース コードとマシン語コードを含むリスティング ファイル HELLO.COD を作成します。
CL /FAcs HELLO.CPP
42 :
デフォルトの名無しさん:04/10/19 14:00:12
ご教授願います。
MFCで開発を行っております。
一つのスタティックテキストで
1行目と2行目のフォントを変える
みたいなことできますか?
お願いします。
できません
44 :
デフォルトの名無しさん:04/10/19 14:07:07
>>43 ありがとうございます。
フォントを変えたい場合は
テキストを幾つも並べるしか
方法はないのでしょうか?
そうです。
ってか、オーナードローって手もあるか。
46 :
デフォルトの名無しさん:04/10/19 23:50:35
>>35 普通はユーザからの応答ハンドラはCMainFrameに書くのが普通だよ
48 :
デフォルトの名無しさん:04/10/20 00:35:24
VC++でアウトプットウィンドウに文字列を出力する命令なんだっけ?
ど忘れしちゃった
SetOutputText
TRACE
51 :
デフォルトの名無しさん:04/10/20 00:44:01
thanx
#include <memory>
struct A { virtual ~A() {} };
class B : public A {};
class C : public A {};
int main(int argc, char* argv[]) {
int i = 0;
std::auto_ptr<A> p(i == 0 ? new B : new C);
return 0;
}
VC++6SP6
このコードをコンパイルすると
error C2446: ':' : 'class C *' 型から 'class B *' 型への変換ができません。指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2664: '__thiscall std::auto_ptr<struct A>::std::auto_ptr<struct A>(struct A *)' : 1 番目の引数を '' から 'struct A *' に変換できません。
と出ます。理由がわかりません。
もしかしてコンパイラのバグなのでしょうか?
それくらい判断できないアホはVC6使うな。
何か引っかかる所ががあるたびにコンパイラの所為にするだろ、おまえは。
VC6は実装も古くて満足にC++として使う事ができない場面も多々あるけど
おまえよりは馬鹿じゃない。
56 :
デフォルトの名無しさん:04/10/20 14:48:07
リソースビューで新規に.rcファイルを作成し
リソースを追加したいのにリソースビューを開いた所で「他のエディタで
使用中」という文が出ていて追加できないのですが
原因は何なんでしょうか。リソースを他のプログラムで使ってるわけでも
ないのですが。。。再起動して試したけどダメでした。
新規作成の
スケルトン作成時に設定した
拡張子、最大、最小化ボタン等の有無の変更は
後からできないのでしょうか。
拡張子⇒リソースのString Table
ボタン⇒PreCreateWindow
ありがとうございます
ダイアログベースプラグラムで、二つのエディットコントロールから数値データをそれぞれ一つずつ、
計二つ読み込み、加算、減算、乗算、除算などを行い、三つ目のエディットコントロールに出力する、
というプログラムを作りたいと思っています(ようは電卓を作りたい)。
一応ヘルプを読みながら頑張ってみたのですが、どうも上手くかけません。
こんなもんこうすりゃいいじゃないか、という点がありましたら突っ込みお願いします。
void CSumDlg::OnBnClickedButton1()
{
// TODO : ここにコントロール通知ハンドラ コードを追加します。
CString ss1,ss2,ss3;
int i;
double a,b;
char ch[30];
Edit1.GetWindowText(ss1);
Edit2.GetWindowText(ss2);
a = atof(ss1);
b = atof(ss2);
b = a+b;
_gcvt(b,10,ch);
ss3 = ch;
i = ss3.GetLength();
if(ss3.GetAt(i-1) == '.') ss3 = ss3.Trim('.');
Edit3.SetWindowText(ss3);
}
>>60に補足
プログラム自体は一応動いています。
ただもっと綺麗にかけるんじゃないだろうか?
という疑問があったので質問させてもらいました。
>>63 レスありがとうございます。
最初から数値で読み込むにはどんな関数などを使えばよいのでしょうか?
エディットコントロールの説明をヘルプで見てもGetWindowText()以外の関数が
見つからなかったので、最初は文字列で読むしかないのかと思っていました・・・
>>61 //関数内部のロジックを整理しただけ。
void CSumDlg::OnBnClickedButton1()
{
CString ss1,ss2,ss3;
Edit1.GetWindowText(ss1);
Edit2.GetWindowText(ss2);
ss3.Format("%g", atof(ss1) + atof(ss2));
Edit3.SetWindowText(ss3);
}
>>65 どうもありがとうございます!
自分のプログラムに置き換えたところ、ちゃんと動きました。
ヘルプで調べてみたのですがFormat()メソッドは
CStringオブジェクトにatof(ss1) + atof(ss2)というようなデータを書き込んでおくことができる
という解釈でよいのでしょうか?
ああ、なんかヘルプをあんまり使いこなせてないです・・・
>>66 printfみたいに書式付で整形できる。
68 :
デフォルトの名無しさん:04/10/20 23:29:32
>>61 なんでそんなプログラムを作成する必要があるの?
電卓使えばよくね?
>>67 ありがとうございます。
%g以外にも%dや%sなんかのフォーマット指定子を使って、
整数や文字列をオブジェクトに書き込める。
といように、printfと似たようなことをできるということでよいのでしょうか?
なんかこれだけでもすごい前進したような気がします。
>>68 確かに仰るとおりです(笑
まだ初めて1週間も経ってないので勉強の為と思って作ってみました。
すっかりお世話になりました、皆さんどうもありがとうございました。
70 :
デフォルトの名無しさん:04/10/20 23:59:17
VS2002で
コマンドラインからコンパイルしたくて
cl.exe hoge.cpp
とタイプしてもなにも出力されません。
どうすればいいのですか?
71 :
デフォルトの名無しさん:04/10/21 00:42:05
.netではコマンドラインからコンパイルはできないよ
72 :
デフォルトの名無しさん:04/10/21 13:10:54
初心者で申し訳ないです。
スタティックテキストで一番端にいったとき
折り返したいのですが、普通にダイアログに
スタティックテキストをはった状態ですと
折り返しが適用されていません。
なにかいい方法はありませんでしょうか?
読取専用のエディットボックス使うとか。
>>72 ウィンドウスタイルにSS_LEFTを付ける。
75 :
デフォルトの名無しさん:04/10/21 13:56:21
>>74 そのやり方もう少し詳しく教えていただいて
よろしいですか?
77 :
デフォルトの名無しさん:04/10/21 14:03:01
MFC Appwizard(EXE)のダイアログベースのアプリケーションです。
現在単純にダイアログにスタティックテキストを貼り付けている状態で、
このスタティックテキストを端にいったら折り返し表示したいのです。
VC7.1を使ってると勝手に仮定するけど、
スタティックコントロールのプロパティが下のようになってるか確認する。
"No Wrap"=False
"Simple"=False
79 :
デフォルトの名無しさん:04/10/21 14:13:22
すみません。
環境はVisual Studio6.0のVisual C++で開発を
行っています。なのでVC6.0かな?
今週VC始めたばかりで、見当外れなこといってたら
ごめんなさい。
いま手元にVC6が無いから答えられない w
"折り返し"みたいなプロパティがあったと思うけど・・・
81 :
デフォルトの名無しさん:04/10/21 14:20:45
>>80 色々とありがとうございました。
プロパティがないっぽいんです・・・。
82 :
デフォルトの名無しさん:04/10/21 14:25:57
コンボボックスにtextを表示させるのは、SetWindowTextを使うことは
なんとか分かったのですが、これだと一つしか表示されません。
いくつかを表示させるにはどうすればいいですか?
SendMessage(hcombo , CB_ADDSTRING , 0 , (LPARAM)str);
かな?
CComboBox::AddString()
85 :
デフォルトの名無しさん:04/10/21 14:44:39
AddStringを使ってみたものの、何も表示されません。
何か間違ってるでしょうか?
エスパーさん出番ですよ。
コンボボックスの高さが最小で、追加した文字列が見えない。
>>81 ダイアログエディタでスタティックを右クリックしてプロパティウィンドウを出す。
スタイルタブをクリックすると、「標準」と「ワードラップなし」がチェックされていたら外す。
>>82 >87の状況ならダイアログエディタでコンボボックスの▼をクリックしてポップアップ枠を出す。
枠の下側をドラッグで高さを調整する。
90 :
デフォルトの名無しさん:04/10/21 16:01:33
82です。どうもありがとうございました。皆さんのおかげで何とか解決することが
できました。本当に助かりました。
91 :
デフォルトの名無しさん:04/10/21 16:39:52
ご教授願います。
MFCで開発を行っているんですが
別のプロセス(EXE)が起動しているか
確認する方法ってありますでしょうか?
その別のEXEが起動した後に自分のEXEを
起動させないといけないんです。
よろしくお願いいたします。
>>91 psapiを使ってプロセス一覧を列挙して
該当するプロセスがあるかを調べる。
別プロセスのアプリがウインドウを出してたりするなら
そのウインドウが存在するかで判断してもいいかも。
93 :
デフォルトの名無しさん:04/10/21 16:56:34
>>92 ありがとうございます。
psapiの使い方もう少し詳しく
教えていただいてよろしいでしょうか?
いやです。
ググって下さい。
96 :
デフォルトの名無しさん:04/10/21 17:02:17
すみません。
楽しようとしてしまいました。
どうもすみませんでした。
97 :
デフォルトの名無しさん:04/10/21 17:30:53
コンボボックスでいくつかのデータを表示して、
その後に何を選らんだか分かるようにするには何を使えばいいですか?
すみません。
お前らなんかに尋ねるほどのことでもありませんでした。
99 :
デフォルトの名無しさん:04/10/21 18:08:58
↑こういうことやめてください。真剣に質問してるのに。
100 :
デフォルトの名無しさん:04/10/21 18:12:13
皆さんこんにちは。
弟が席を離れている間に弟のパソコンを覗いてみたら、
ここが表示されていました。
皆さん何やら難しい話をされているようですね。
弟は専門学校でパソコンを使ってるようです。
弟がこちらで質問させていただいてるかもしれませんが、
どうぞよろしくお願いいたします。
それでは。
101 :
97:04/10/21 18:12:16
ヘルプを見たらすぐに自己解決しました。
お騒がせしました。
102 :
デフォルトの名無しさん:04/10/21 18:16:08
101 kisama dareda
103 :
97:04/10/21 18:16:56
ore ore
うぎゃー!!!
席を離れてる間に・・・おまえら
>>100のことは忘れてくれ。
姉にはいたずらしないように言っておく。つーかPCから離れる前にブラウザ閉じておこう・・・
>>97 CBN_SELCHANGE
バカ、むしろ姉を出せ。紹介しろ。
おいおい
100がage、104がsageクキにしても2chブラウザにしても、釣りであることは疑う余地が無い
sageってクッキーに記録されたっけ?
100と104のようなやり取りもっとキボン。(違)
俺もエロ画像掲示板開いたまま寝ちまったことがあるな・・・
111 :
デフォルトの名無しさん:04/10/21 23:28:08
TypeLib(Type Library)ってなんですか?
ActiveXコントロールとどう違うの?
>>111 ActiveXコントロールインターフェースの詳細が書かれた物
と理解してるが俺もよくわからん。
113 :
デフォルトの名無しさん:04/10/21 23:36:37
キーボードから5つの数字を取り込み、それらのうち最大の数、最小の数を画面表示するプログラムって作れる人いますか?(Visual Basicです)
117 :
デフォルトの名無しさん:04/10/21 23:51:31
C***Viewのコンストラクタはどこから呼ばれてるの?
MFCのソース追っかけようとしてるがあまりにも巨大で
自分が何を探してるかわかなくなっちゃったw
>>117 答えてあげようとしたけどwがむかついたのでやめた
うはwwwおkwwwww
122 :
デフォルトの名無しさん:04/10/22 01:24:16
CMainFrame.cppにC*****View.hを
includeするとビルドできないの?
124 :
デフォルトの名無しさん:04/10/22 09:20:13
ダイアログベースでフラットツールバーの様なボタンを
表現するにはどうすれば良いでしょうか?
マウスカーソルがボタンの上にきた時、
ボタンの背景色を明るくさせたいのです。
このボタンは、バラバラに配置したいので、
ツールバーそのものを使用するのは避けたいのです。
>>124 プロパティでアイコンかビットマップにしてマウスオーバーで絵を差し替えれば
良いんじゃないの?
>>125 やはり独自で実装するしかなさそうですね。
MFCの場合だとマウスが上に来た時 CButton::OnMouseMove()
で差替えるとして、マウスがボタンから外れた時は、
どの関数(メッセージ)で差替えれば良いでしょうか?
CRect rct;
GetWindowRect(&rct);
CPoint ScrnPoint = rct.TopLeft() + point;
if(rct.PtInRect(ScrnPoint)){
SetCapture();
SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_RED));
}
else{
ReleaseCapture();
SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_BLUE));
}
点滅するのはフラグ判定入れたりして防げば良いかと思う
129 :
124:04/10/22 12:42:46
>>127 ありがとうございます。
ばっちりできました!
助かりました。
make について質問なのですが
一部のファイルだけオプティマイズしたく
(他は
.c.o:
${CC} -o $@ ${CFLAGS} $< )
OPTOBJS:
${CC} -o $@ -O ${CFLAGS} $<
のように書いているのですが
(OPTOBJSだけオプティマイズ)
うまくいきません
どのようにすればよいでしょうか
すみません
書き込む場所間違えました
132 :
デフォルトの名無しさん:04/10/22 13:20:18
スレッド関連が APC、CRTで
CreateThread, CreateThreadEx, _beginthread, _beginthreadex
と4系統ぐらいありますが
どれを使えばよいのか悩んでしまいます
それぞれの違いは何ですか?
また 外部よりスレッドをExitさせた時にメモリリークするとか聞きましたが
どうすればよいのでしょうか
エロい人 教えて下さい
知ってるがエロくないので答えない。
>>132 基本的に、外部からスレッドを終了させるのは得策ではない。
適当にメッセージでも投げて、終了して貰うのが一般的。
#つまり、スレッド側でメッセージを拾ったら自殺するってことね。
スレッドに練炭渡せば死んでくれるよ
135はエロい人
138 :
デフォルトの名無しさん:04/10/22 22:36:19
MFC AppウィザードでSDIを選んだんですが、MDIに変更することは出来ないの?
最初から作り直すしかないのかな?
>>138 知ってればできるけど知らないんじゃできない。
140 :
デフォルトの名無しさん:04/10/22 23:23:03
C***App内のメソッドからC***Docのポインタを取得したいのですが
どうすればいいですか?
>>140 CWinApp の m_pDocManager が CDocumentTemplate のリストを持っている。
CDocumentTemplate は自分が作成した CDocument のリストを持っている。
142 :
デフォルトの名無しさん:04/10/22 23:55:44
POSITION position;
position = theApp.GetFirstDocTemplatePosition();
CDocTemplate* DocTemplate = theApp.GetNextDocTemplate(position);
position = DocTemplate->GetFirstDocPosition();
C***Doc* doc = (C***Doc*)DocTemplate->GetNextDoc(position);
こんな感じに書いてみましたがOKでしょうか?
ううう、気持ち悪いから"C***Doc"なんて書き方やめようよ。
144 :
デフォルトの名無しさん:04/10/23 00:09:24
winmm.lib
をリンクしたいのですがどこで設定するのでしょうか?
VS2002を使っています。
もうそろそろ終電なんです。まじ助けて・・・
#pragma comment( lib, "winmm.lib" )
をコードの好きなところに書く
VS2002でC++って負け犬・・・
あ、ごめん、負け組みだ・・
150 :
デフォルトの名無しさん:04/10/23 00:24:54
2002←負け●
2003←勝ち●
●にお好きな言葉をどうぞ。
153 :
デフォルトの名無しさん:04/10/23 00:29:02
C++なんて時代遅れ
今時`ちょべりば'なんて言えないでしょ?
ここは、仕事などなどでVC++を使用せざる得ない奴が集まるスレだろ。
他の言語が優れているのはみんな良く知ってるからよそでやってくれ。
どの言語が優れているのか
ではなく
どの言語がその目的に相応しいか
だ。
>>153の言いたい事は
"新しい"か"古い"かの違いだろ
彼は新しい言語に触って、
自分は時代の流れに乗っている、とご満悦なんでしょうね^^
157 :
デフォルトの名無しさん:04/10/23 01:00:21
VC++ってBCBみたいな編集可能なグリッドコントロールってないの?
まさか、自作しなきゃいけないとか、そんなショボイ開発環境じゃないよね
残念ながら、そのしょぼい開発環境なんです。
デザインが開発だと思ってる馬鹿ハケーン
顧客が一番ケチつけやすいのも画面だけどな
161 :
デフォルトの名無しさん:04/10/23 01:49:26
>>159 UIがしょぼいとアプリケーション自体ショボイと思われても仕方ない
どんなにすごいアルゴリズムを実装しても客先には見えない
162 :
デフォルトの名無しさん:04/10/23 09:13:25
見た目は大事よ
裏を返せば優秀なデザイナーがいればいくらでも金騙し取れるってわけか('A`)
164 :
デフォルトの名無しさん:04/10/23 11:25:12
昨日からC++を勉強し始めたのですが、小林健一郎の、「これならわかるC++」に書かれている
#include <iostream>
#include <string>
using namespace std;
class Kneko
{
string name;
public:
void setname(string n){
name =n ;
}
void naku() const {
cout << "にゃー。俺様は" << name << "だ" <<endl;
}
};
int main()
{
Kneko x;
x.naku();
x.setname("タマ");
x.naku();
}
を打ち込んだのですがVisual C++でビルドしようとすると
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\cstdlib(19): error C2143: 構文エラー : '{' が ':' の前にありません。
というメッセージが出てきてエラーとなってしまいます。どこがおかしいのでしょうか?
悪いが、コピペしてやってみたがエラーはでなかったぞ
オリジナル(コンパイルした奴)と、ここに書いたソースと比較するべし
っと、その前にそのエラーメッセージをよく読んでおくように
>>164 #include "stdafx.h"
#include <iostream>
#include <string>
かも
>>164 次からC++スレ行け
お前はここに来なくていいよ
169 :
164:04/10/23 12:29:31
>>165 コピペしても同じエラーが出てしまいました。エラーメッセージを見ると" { "が" : "の前にないのが原因と思われるのですが
本に書かれているプログラムを見ても" { "の後ろに" : "がある箇所がなくて悩んでます
>>167 プログラムの文頭に#include "stdafx.h"を付け足しても
fatal error C1083: インクルード ファイルを開けません。'stdafx.h': No such file or directory
というメッセージがでてしまって駄目でした
>>168 スレ違いの質問だったらスマンです
>>169 ファイルの拡張子を .cpp にしてください。
そしたら氏ね。
172 :
164:04/10/23 12:41:37
>>170 .cppにしたら無事にできました。
お手数かけてすみません、氏んできます。
173 :
デフォルトの名無しさん:04/10/23 14:28:35
ゴガギーン
ドッカン
m ドッカン
=====) )) ☆
∧_∧ | | / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( )| |_____ ∧_∧ < おらっ!出てこい
>>164 「 ⌒ ̄ | | || (´Д` ) \___________
| /  ̄ | |/ 「 \
| | | | || || /\\
| | | | | へ//| | | |
| | | ロ|ロ |/,へ \| | | |
>>173 | ∧ | | | |/ \ / ( )
| | | |〈 | | | |
/ / / / | / | 〈| | |
/ / / / | | || | |
/ / / / =-----=-------- | |
175 :
デフォルトの名無しさん:04/10/23 19:51:39
>>175が言ってる「作る」はポトペタのことだろうな
というか「簡単に作れない」といいたいのでしょう。
それには同意する。
まぁ、私もGTK+でのGUI作りでもglade使ってるしなぁ…
180 :
デフォルトの名無しさん:04/10/23 22:04:32
VC++6.0を使っているのですが、template classを使うと
コンパイルエラーを吐かないのですが、なぜですか?
tempalte <class T>
class CHoge
{
T m_value;
public:
CHoge():m_valueeeeee(0);{}
};
なんてのでエラーが出ないんです。
>>180 テンプレートをインスタンス化して使うときに出るんでは?
VC6 の template は、宣言だけではエラー出さないことがあったと思う。
182 :
デフォルトの名無しさん:04/10/23 22:08:13
>>181 あっそうなんですか、アドバイスthanx
183 :
デフォルトの名無しさん:04/10/23 22:51:55
すいません。もう一つ質問です.
template class の SerializeのIMPLEMENT_SERIALはどう書けばいいのですか?
IMPLEMENT_SERIAL(CData, CObject, 1)
なんて書いたら怒られました。
CDataがtemplate classです。
>>180 さすがにそこまでひどいのはエラーになると思うが・・・
(エラーにしないほうが難しい)
>>183 MFCのマクロはほとんどtemplateに対応していない。
自分で作るか、template をインスタンス化(だっけ?言葉忘れた)した個別のクラスごとにIMPLEMENTするよろし。
CFileDialogでダイアログ出して関連ファイルを表示
する処理(例えばファイル名*.bmpだけ表示)
をCFileDialogダイアログ出さないでファイル名と
ファイルのパスを取得するにはどうすればいいですか?
>>186 ダイアログも出ないのにユーザーはどうやってファイルを指定すればいいのですか?
CFileDialogでダイアログを表示させないで
関係する拡張子のファイルの名前とパスを取得
するにはどうしたらいいのでしょうか?
189と189は重複。
CFileFindでいけそうです。さんくす
>188 ファイル名表示してキーボードで選択を考えてます。
>>188 エクスプローラからファイルをDrag&Drop
メモ帳とかって矢印を右に動かすと1文字ずつカーソルがずれていきますよね。
これを決まったバイト数ごとにずれるようにできませんか?
すいません、上の質問はもういいです。メモ帳って何も
表示されてないところはカーソルの操作ができませんよね。
あんな感じで特定の文字に対してだけ操作できなくしたいのですがどうすればいいでしょうか
>>194 それはエディタを作ろうとする上での話か?
どんなソフトを作ろうとしてるのか分からないと答えようがない
神様、出番ですよ
そうです、エディタです
そういうふうに作ればできる
つーか何がわらないのか具体的に説明しないと
>>198のような説明しか出来ないと思うけど。
>>199は偽者ですので。何がわからないというか
マウスカーソルとかメモ帳としての機能みたいなのは
エディットコントロールが処理してくれてるので具体的に
何がわからないのかもわかりません。ただエディットコントロールに
表示されてる特定の文字だけにマウスカーソルのポインターが移動しないようにしたいのです。
あんまり特殊な機能はEdit自体を自作するしかないかもめ
>>201 EN_SELCHANGEをキャッチして、特定の文字にキャレットが来たかどうかを判定する
>>193 だから、具体的に何がやりたいのか書いてみ。
場合によってはそれをEditで実現すると言う設計そのものが拙いかも知らんし。
( ´,_ゝ`)プッ、こんだけ説明してまだ説明求めるのかよ。もう自分で考えるからいいですよ(プゲラッチョ
自作すればできるよ
やっぱり、ここの人たちはレベル低いですね。
初心者の質問にも答えられないくせに偉そうにしているし。
もう来ません。
>>205 >>207 EN_SELCHANGEをキャッチして、特定の文字にキャレットが来たかどうかを判定する
EN_SELCHANGEがあるのはリッチ・エディットでは?
それをエディットでやるならKeyUpおよびLButtonUpで呼んで判定すればできるけど
>>207 初心者の質問の方が難しいだろ。
パソコン始めて使う人間に教えるとしたら、
電源の入れ方、マウスの使い方から始まって
延々と説明しなきゃならん。
EN_CHANGEだろ。
おまえらいい加減にレスしすぎ。
どっちみちCEditじゃ無理
盛り上がってまいりますた(`・ω・´)
215 :
デフォルトの名無しさん:04/10/24 19:00:09
自作自演乙
209から211は全部俺が書いた
219 :
デフォルトの名無しさん:04/10/24 23:15:56
ちょっと前にこちらか、別のC++初心者系スレで紹介されていたHPを探しています。
確か「本も出してるし、わかりやすそうじゃないの?」的な感じで紹介されていたと思います。
死ぬほどログ漁ってますが、さっぱり見つかりません。どなたかご存じの方
いらっしゃいましたら、教えてください。よろしくお願い致します。
>>219 もそっと具体的に。
#まさか猫じゃないだろうな。
221 :
デフォルトの名無しさん:04/10/24 23:25:47
VC++.net2002
でビルドすると出力ウィンドがアクティブになるじゃないですか
いちいちマウスでエディタ部分をクリックするのが面倒なんですが
キーボードできませんか?
>>193 決まったバイト数ごとにずれるようにするのは作ったらできた。
特定の文字に対してだけ操作できなくも作ればできる。
方法は教えない。
224 :
デフォルトの名無しさん:04/10/24 23:35:31
225 :
デフォルトの名無しさん:04/10/24 23:35:51
>>220 レスサンクスですm(._.)mペコ
猫の所じゃないです。もうちっとこぎれいな感じで(失礼>猫さん)、
最初ちらっと見たところでは、トップページの上半分に各ページへのリンク、
下に本の写真が載っていた気が。「○○出版から発売中」みたいな感じで。
227 :
デフォルトの名無しさん:04/10/25 01:46:54
親ウィンドウの下にコントロールを配置して、コントロール内で左クリックしたら
処理を実行するようにしたいのですが、コントロールと親ウィンドウを区別できないので
親ウィンドウ上でクリックした場合しか処理が実行されません。↓これ
case WM_LBUTTONDOWN:
〜処理〜
break;
これをコントロール内でクリックした場合のみ、処理を実行できるようにしてください。お願いします
230 :
デフォルトの名無しさん:04/10/25 09:27:57
WM_NOTIFY
を処理しましょう
231 :
デフォルトの名無しさん:04/10/25 10:24:41
初心者で申し訳ないです。
Visual C++6.0のMFCで開発を行っております。
サーバからローカルへファイルをコピーしたい
のですが、CopyFile関数を使用してもうまくいき
ません。ユーザ名やパスワードも必要になってくる
と思います。なにかいい方法はありませんでしょうか?
232 :
デフォルトの名無しさん:04/10/25 10:34:52
初心者で申し訳ないです。
Visual C++6.0のMFCで開発を行っております。
メニューをクリックした際のイベントハンドラはどのクラスに実装するのが
普通なのでしょうか?
どのクラスにも実装できるので迷っています。
おそらく状況によるなんて回答が来そうですが
であれば何を基準に判断するのでしょうか?
>>232 そのメニューコマンドの処理内容で。
例えばペイントソフトで「拡大表示」ならビューの仕事。
例えば「閉じる」ならダイアログクラスで。
235 :
デフォルトの名無しさん:04/10/25 11:21:56
>>233 確かに拡大表示自体はViewの仕事ですが、ユーザーからの拡大指示を受け付けるのは
AppもしくはFrameの仕事と言ってもいいのでは?
>>235 電話で注文受ける人と配達する人は別だろ
ひとりしかいなきゃしょうがないけど
237 :
デフォルトの名無しさん:04/10/25 12:24:54
VC++でインターネットに公開しても恥ずかしくない程度の
Windowsアプリケーションをかける人ってどの位いるの?
テキストエディタ一つにしたってインターネットに公開して
使ってもらう為には秀丸、QX、ViVi等の有力テキストエディタと
勝負するには相当の知識が必要だよね
この板やMLで偉そうにしてる人、そこんとこ
どうよ?
>勝負するには相当の知識が必要だよね
なんで?
相当の時間なら必要だけど
239 :
デフォルトの名無しさん:04/10/25 12:40:12
じゃ、おまいは時間さえあれば勝負できるようなものが
作れるのかと・・・
だったら、2chやってねーで、シェアウェア書いたほうが得だぞ
>>237 技術力があったらテキストエディタ作らんといかんのか?
そんなすでにあるものより他に役に立ちそうなもの作った方がいいと思う。
>>239 時間さえあればなんて言ってない。
『相当』の知識は必要は必要ない。
そうとう(サウタウ‥)【相当】
程度・度合がかなりであること。はなはだしいさま。
アア~ン、香ばしいわ
243 :
デフォルトの名無しさん:04/10/25 13:10:40
>>240 テキストエディタ一つにしたって
~~~~~~~~~~~~~~~~
244 :
デフォルトの名無しさん:04/10/25 13:11:53
>>240 こういう馬鹿って必ずいるよねw
テキストエディタは例で出しただけじゃないの?
245 :
デフォルトの名無しさん:04/10/25 13:12:52
>>241
じゃあ、結局は作れないんですねw
それなら偉そうにすんなよ
>>237 趣味で作るとしたら秀丸みたいに使いにくい代物じゃなくて自分にとって使いやすいものになる。
そうしてそれは、既にXyzzyで粗方実現されているので敢えて作る必然性が無い。
#残りはlispで書けば事が足りるしね。
仕事で作るとしたらPeggyProのように連携能力の高いものになる。
それを安定して販売できるような環境がないので敢えて作る必然性が無い。
テキストエディタに限定しないなら、バイナリエディタや簡単な画像加工ツールくらいは作ったよ。
#あ、前者はWindowsアプリではないや。
自分の必要や仕事上の目算があれば、それ相応のものを作れる自信はあるが、
相当の知識はもっていないと自覚している。
そんなものは、必要なときに必要なだけ得ればいい種類のものだという認識なので、
私にはそれをひけらかすようなことはできないししたくもない。
>>246 たしかに相当の知識はいらないと思う。
必要なのはむしろ別の、構成力とか管理能力とか、
当然やる気とか、モチベーションとか、そういう精神的な部分だと思うね。
要は
>>237は,「秀丸やviなどの有名なエディタを作った」という
ステータスのある人からじゃないと教えを請いたくないって言ってるんだろ
まぁ頑張って偉い人探せやw
249 :
デフォルトの名無しさん:04/10/25 13:44:07
言い訳ばっかだね
どのジャンルでもいいが、結局は現在公開されてる
ものと張り合えるようなものは作れないわけでしょ?
それなのに妙に偉そうだよね。
変てこなスレ立てられてるみたいだけどエピ氏は凄そうだから
イイとしても他は質問してる人と大して変わらないわけでしょw
250 :
!= 246:04/10/25 13:52:38
>>249 作れないと作らないは違うと思うよ。
プログラミングってさ、初心者が思っているほど頭使うものじゃないんだよね。
知識と呼べるような知識もたいしていらない。
だいたいね、プログラマには2種類いてね、
(1) モノ作りが好きな人 (2) 理論 (新しいもの) が好きな人
(1) のような人はとにかく作るのが好きで、テキストエディタみたいな
つまらないものでも楽しんで作ることができて、
ユーザーからの評価も高い。
翻って (2) は、あまり目に見えるものを作ることはない、
頭の中で「こうやってこうやれば作れるんだし、特に高いモチベがないし、
わざわざ手を動かして作るまでもない」ってな発想になる。
こういう人はあまりユーザーからの評価は得られないし、
「ふつう」の企業内でも評価はよくない。
できないわけじゃない、やるだけの知的興味が湧かないだけ。
偉人が発信した情報は全て正しく
凡人が発信した情報は全て間違ってる
誇張してみますた(`・ω・´)
#誰が発言しようが、正しい情報は正しく、間違ってる情報は間違ってる
#ブランド志向で、選り好みしてたら勿体無いぞ
ちなみに私も (2) のタイプ。
まぁいいじゃねぇか
一番損するのは
>>237って目に見えてるんだしw
254 :
デフォルトの名無しさん:04/10/25 14:25:57
>>250 コンピュータサイエンスを学んでるわけじゃないくせに偉そうに
何が(2)理論 (新しいもの) が好きな人
だよ笑わせんなよ
255 :
250:04/10/25 14:33:36
>>254 いや当然まなんでいるよ。
そんなのは基礎知識だよ。
>>237 使われるテキストエディタって作るのめちゃむずいよ。
まず、普段愛用しているエディタを代えるには相当な理由が無いといけない。
しかし、たいていのユーザーはすでに現状に満足しているので、すごいエディタが出ても乗り換えようとは思わない。
秀丸程度のものなら誰でも作れるけど、秀丸から乗り換えさせるようなものを作るのは至難の業。
まず、新しいソフトの名前を聞いても試用してもみないからね。
>>256 >秀丸程度のものなら誰でも作れるけど、秀丸から乗り換えさせるようなものを作るのは至難の業。
なるほど、それは説得力あるな。
258 :
デフォルトの名無しさん:04/10/25 14:43:53
>>256 >秀丸程度のものなら誰でも作れるけど、
なんですか?
C++を始めて3日程度経つが作れそうな気がしないんですけど・・・
>>258 力の差が分かるようになったとき、君はすでに相当な力をつけているのだ。
糞HSP中を見たまえ、無謀にも大作に挑んで自ら破滅していくよ・・・。
261 :
デフォルトの名無しさん:04/10/25 14:51:25
ここの人たち結局作れないのに随分大口叩くよね
だったらおまいらが作ったソフト見せてみろって話だよねw
漏れは
>>237が一番大口たたいてると思います(=゚ω゚)ノ
>>261 アマグラマの方でつか?
すみませんがプログラマはそうそう自分の作ったもの晒せないんでつよ。
漏れが仕事で作ったソフトなら多くの人が目にしてるよw
いや、正しくは「利用している」若しくは「目の当たりにしている」。
265 :
デフォルトの名無しさん:04/10/25 15:27:06
>>264 多くの人が目にしてるんですよね
だったら、見せて
乙
>>264 いたいなー。仕事だったら全部一人で作ったわけ無いんでしょ。
UI周りをちょっと触らせてもらっただけでも
「目の当たりにしている」
んでしょ。
268 :
デフォルトの名無しさん:04/10/25 15:39:14
[256]' から 'char [260]' に変換できません。
どうすればいいですか?
>>268 配列から配列へコピーしようとしてるの?
ならmemcpy
270 :
デフォルトの名無しさん:04/10/25 15:43:15
>>268 スタート→シャットダウン(&U)でシャットダウンを選択してOK(&O)をクリックしてください
>>267 ここの人がそうなのかどうかは分からないが、それでも十分いいとおもうが。
例えばグラツーの開発チームだって、「俺が作った!」と言い切っちゃうバカは
おそらくチームにはいない。みんなで協力して作り上げるもんだろ。特に大作は。
チームの一員として使ってもらえるようなコードを書けるのも立派な能力。
というか、それが相応のレベルでできるにはかなりのスキルがいる。
しかもそれを当然の行為として、さらにチームでの作業という状況で、
コンピュータ外の事まで気を配りながらできるんだから、大したもんだとおもうが。
一人よがりで8のレベルのものを作れるのも偉いが、
一人一人は5のスキルだがチームで10のレベルに達するならそれもまた偉い。
ただし、ユーザ側は一人で作った8よりも、チームで作った10を選ぶ。
これは真実。
と初心者の俺は思いますが。
マ板でやってね。
大量でしたねw
核心突かれてよほど痛かったみたいだね
(・∀・)ニヤニヤ
釣られる香具師大杉
277 :
デフォルトの名無しさん:04/10/25 17:02:52
まああれだ、時間があればとりあえず秀丸程度のものは作ってやるから
「時間をくれ」、と。
たぶん質問してもまともな答えが返ってこないから
このスレには自分よりレベルが低いやつしか思ってるとか?
でも馬鹿な回答にはつっこみが入るから
馬鹿が入り込む余地は少ないと思うぞ。
>>277 英語よめないのか?
説明書いてあるじゃん
281 :
デフォルトの名無しさん:04/10/25 17:19:42
>>280 よめねーからきいてんじゃん
ばかかおめー
283 :
デフォルトの名無しさん:04/10/25 17:22:42
今日はいろんなのが湧いて楽しいねヾ(´∇`)シ
>>277 それ入れる前にMFC Grid controlが使えないとだめだろ
286 :
デフォルトの名無しさん:04/10/25 17:30:22
英語版のXPにvisual C++をインストールしたいんですが、「16bit windows system」 エラーと表示され
、インストールできません。どなたかわかりますでしょうか?なぜXPで16bitと表示されるのかわかりません。
おまえのXPは16bit版だからな
>>286 正規品ならサポートに電話しる!
買う前にパッケージに書いてある動作条件確認したか?
289 :
デフォルトの名無しさん:04/10/25 17:44:26
>>288 はい。MSDNです。動作条件などは調べることができません。
サポートに電話すべきなのか・・
290 :
デフォルトの名無しさん:04/10/25 18:03:11
空のドキュメントの作成に失敗しました
291 :
デフォルトの名無しさん:04/10/25 18:35:44
wcharをchar*に入れるにはどうしたらいいですか?
>>291 char buf[256];
wchar_t wch = L'A';
((wchar_t*)(buf))[0] = wch;
294 :
デフォルトの名無しさん:04/10/25 18:46:54
ありがとうございます。
あと、一つ教えてください。
char*からwcharにするにはどうすればいいですか?
295 :
デフォルトの名無しさん:04/10/25 18:47:26
スタート→シャットダウン(&U)でシャットダウンを選択してOK(&O)をクリックしてください
>>294 まずは C の基本を勉強したほうがいいよ。
char buf[256];
wchar_t wch;
wch = ((wchar_t*)(buf))[0];
質問の意図がよくわからんが
単純にキャストすりゃいいという問題か?
299 :
デフォルトの名無しさん:04/10/25 19:11:41
3桁毎の区切りカンマを入れられないVCなんて糞
激しくDQNの香り
301 :
デフォルトの名無しさん:04/10/25 21:49:57
つか、VCは糞だよ
BCBならコード書かなくてもいいことがVCだと数百行書かなくてはいけない
まったく糞
糞の基準がDQN
>>301 たしかに同意するよ。
ある程度の実用的なライブラリを用意しておいてくれるのは
何かとありがたいよ。
MS が Borland 買収すればいいのに。
それは無理だ
独占禁止法とかひっかかったら面倒だろうし。
某ランドはアップルと同じく、
生かさず殺さずというところだろう
BCBって何?
>>307 Borland C++ Builder っていう、Windows 最強の開発環境だよ。
309 :
デフォルトの名無しさん:04/10/25 22:31:31
とっつき易いかどうかは別として
Windows 最強はVCだと思うよ
ボーランド?
でるふぁいなら名前は知ってるけどBCBは知らない。
312 :
デフォルトの名無しさん:04/10/25 23:28:55
数字を文字列に変換するのに、
sprintfを使っているのですが、
数字の型が__int64になると、sprintfでは対応できません
__int64型の数字を文字列に変換するには
どうしたら良いですか?
>>312 詳しく知らないけど、sprintfで出来るらしいよ?
316 :
デフォルトの名無しさん:04/10/26 00:13:29
自作コントロールってどうやって作るの?
よさげなHPない?
コードプロジェクトだとレベルが高すぎて・・・
visual c++で使えるgmpの様なライブラリをご存じの人いませんか?
gmpが使えるのならそれが一番なのですが、問題が多いようなので
>>316 MFC/WTLなら相応の親クラスを継承する。
Win32生ならウィンドウプロシージャを作ってウィンドウクラスを登録する。
319 :
デフォルトの名無しさん:04/10/26 02:03:21
>>318 それをどうやってダイアログに貼り付けるなり
CViewに配置するのですか?
>>319 Createするなりなんなりして勝手に貼り付けてください。
手元のVC7.1にはCustom Controlとか言うのがあってぽとっと落とせるようになってるのかもしれないが試したことない。
321 :
デフォルトの名無しさん:04/10/26 02:21:41
なんだつくったことないんだ
それなのにあたかも作ったことあるようなレスだねw
まだネバってるのか…w
324 :
デフォルトの名無しさん:04/10/26 10:28:45
Deleteキーの押下を検出したいんですけど、
PreTranslateMessage()
では検出できません・・・
どなたかご教授お願いします
325 :
デフォルトの名無しさん:04/10/26 10:49:03
Visual C++6.0 MFCで開発を行っています。
サーバからデータ(ファイルなど)を取得するEXEを作成しています。
それでVCでサーバにログインしたいのですがいい方法はありますでしょうか?
>>324 PreTranslateMessage()で検出できたぞ
>>325 ファイルにアクセスする関数名とかネットワークとか
適当なキーワードでぐぐればでてきそうなもんだが
>>324 他のキーは取れてるの?
取れるキーのコードとDeleteキーのコード晒してみ。
329 :
デフォルトの名無しさん:04/10/26 11:26:17
ご教授願います。VC6.0MFCです。
あるプロセス(他EXE)が起動している間
待ち状態にしたいのですが、待ち状態にする
いい方法はありますでしょうか?
WaitForSingleObject()
331 :
デフォルトの名無しさん:04/10/26 11:36:09
>>330 ありがとうございます。
MSDNで使用方法調べてみます。
他のキーは取れてます
if (pMsg->message == WM_CHAR)
もしかして、これがダメ?
333 :
デフォルトの名無しさん:04/10/26 12:45:05
VisualStudio.NET起動時にスタートページが
表示されなくなってしまいました。
起動時に自動的にスタートページを表示させるには
どうしたらいいでしょうか?
そのくらい自分で探さないといつまでたっても宝の持ち腐れだぞ
ちなみに探したら1分も掛からんかった
>>332=324
WM_KEYDOWNではどう?
それと、キーコード(wParam)は何と比較している?
>>335 wParamはVK_DELETEと比較してます
WM_KEYDOWNで捕まえたら取れました!
ありがとうございます
337 :
デフォルトの名無しさん:04/10/27 16:15:36
現在、VC6を使っています。
どこのスレだったかは失念しましたが、
上位バージョンはインテリセンスがかなり賢くなっていると聞きました。
具体的にはどの程度なのでしょうか?
…#defineやenumでもコード補完が使えるとか?
インテリ確かに賢くなってるけど、
WTLに対してはほとんど全滅orz
漢ならインテリセンスなんかに頼るな。
340 :
デフォルトの名無しさん:04/10/27 20:14:50
ロッキーのテーマをこんなに長く聞いたの初めてだ。
すまん。間違えました。
NeoPlanetのように、ウィンドウの枠にビットマップ貼り付ける
方法を教えてくだちい
WM_NCPAINT
ソースファイルは Source フォルダ
ヘッダーファイルは Header フォルダ
とプロジェクト内にフォルダを作り、各ファイルごとにまとめた後、
Source フォルダにあるソースファイルに Header フォルダにあるヘッダーファイルを
インクルードしようと #include "../Header/***.h" としたらインクルードファイル
がオープンできないとエラーを返されました。 #include "..\Header\***.h" でも同じ
結果でした。ヘッダーファイル内にはインクルード宣言はありません。
パスの指定の仕方に問題があると思うのですが。解決法を教えてください。
../Header/じゃなくて、Header/じゃね?
347 :
デフォルトの名無しさん:04/10/27 22:20:38
シリアライズ機能のみから作成します。
ってなに?
はぁ?って感じ
>>345 そういうふうにフォルダわけてみたけど
コンパイル通ったよ
>>345 VC++上でのフォルダは実際のファイルシステム上のフォルダじゃないよ
がーん、そういうレベルの質問が来ると言う可能性を忘れていた。
そう言えばパスに関係ないもんなぁ。
351 :
デフォルトの名無しさん:04/10/27 23:18:07
ファイルシステム上にフォルダなんて概念はありません
>>338 ちょっぴり気になってはいるんですが、
実際、それだけのために乗り換えるにはリスクが大きいですし…
うーむ。
>>339 分かりました! 俺も先生みたいな男になりますッ!
もう一度同じ様に作ったところコンパイル通りました。
御騒がわせして申し訳ありませんでした。
>>346
>>348
>>349
>>350
>>351
皆さんありがとうございました。_| ̄|○ ペコ
354 :
デフォルトの名無しさん:04/10/28 01:12:59
二次元配列をポインタで参照するスマートな方法はありませんか?
int** test[;
//10 * 10とかでメモリ確保(省略)
cout << *(*(test + 3) + 4) << endl; //test[3][4]が見たいとき
↑こんな感じだとちょっと見づらいので、
もっと素敵な表記方法ありませんか?
355 :
デフォルトの名無しさん:04/10/28 01:37:38
test[3][4]
>>339 ウワァッ 新機能についていけない哀れなロートル
357 :
デフォルトの名無しさん:04/10/28 02:21:42
VC++2002だけど、クラスビューのクラス階層にfriend関数が表示されません。
まっ、クラスの面罵関数じゃないから同然なのかしらん?
そうだね
359 :
デフォルトの名無しさん:04/10/28 02:31:49
360 :
デフォルトの名無しさん:04/10/28 03:11:26
なんで?
特に新潟県人なんて全滅してください
吐き気がする
visual studio .netでプロジェクトを
win32コンソールアプリケーションって設定して
ソースを新しい項目の追加で作って
アプリケーションの設定で空のプロジェクトにチェック入れて
#include <stdio.h>
void main() { printf("Hello World"); }
でビルドして開始すると一瞬だけ表示されて消える
ずっと表示させるにはどうすればいいの?
ずっと表示させるようにプログラム書けばいい
#include <stdio.h>
void main() { printf("Hello World"); while(1); }
364 :
デフォルトの名無しさん:04/10/28 05:52:46
最後に、scanf()でとめておいたらいいよ。
>>354 #include <vector>
#include <iterator>
using namespace std;
std::vector< vector > test;
test.resize(10);
for( i=0; i<10; i++)
test(i).resize(10);
・・・
test[3][4]
>>354 便乗して
int** test;
test = new int*[10]; //縦10行分のint*確保
for(int i=0;i<10;i++)
test[i]=new int[10]; //横10列分のint確保
と確保すれば普通の2次元配列の記述方法(test[3][4]とか)で使えるけど
それは既にやってるのかな?
C++を覚えたいと思ってます。知り合いに、テキストエディタを使うといいよと言われました。
ソースを書く上で必要になるとか・・・ 具体的にテキストエディタはどういう使い方をすればいいのですか?
>>369 釣りじゃないです。
真面目に覚えたいと思っているので 良ければ教えてもらえると嬉しいです。
>>370 マジレスすると、
テキストエディタでソースコードを書いて
コンパイラでコンパイルすると実行ファイルができる。
釣りじゃないことを証明するため 今のうちにトリップ付けます。
>>371 ありがとうございます。
テキストエディタで ソースを書く際に一度使ったコードを使いまわしたいときや
良く使うコードとかの登録は可能ですか?
自分で管理すれば可能
>>374 ここはC++スレじゃない。VisualC++スレ
377 :
デフォルトの名無しさん:04/10/28 19:37:59
ダイアログベースの新規プロジェクト立ち上げると
ダイアログにOKとキャンセルのボタンが出ますが
この2つを削除したい場合ボタンを削除するだけで
問題ないでしょうか?
ない
379 :
377:04/10/28 19:50:06
>>378 ボタン消してもIDOKとIDCANCELと書かれたコード
が残るんだよね。下のコードは残っても動作するんだけど
他に不具合あるかな?
if (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
}
else if (nResponse == IDCANCEL)
{
// TODO: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}
381 :
デフォルトの名無しさん:04/10/28 20:46:28
開発したプログラムで、アプリケーション例外が出て困っています。
頻度は、一日に一回程度なので、タイミングよく再現させることが困難です。
そこで、イベントビューアで不具合発生時のログを確認するのですが、
見方が分からなくて不具合個所の特定が出来ません。
イベントログから不具合個所を特定することはできるのでしょうか。
Releaseモードでコンパイルしたプログラムでは、場所の特定は出来ない
のでしょうか。
ちなみに、開発環境はVC++6.0SP5、WindowsNT4.0です。
ぬるぽが原因に一朝鮮人
値を入れる配列のサイズが小さくてそのサイズを超える
インデックスの要素を参照することがあるとか。
大抵はそんなことが原因に一在日
>>384 どちら様?
>>382,383
ありがとうございました。ご指摘の通り、リストのサイズが場合に
よっては足りなくなることがあり、これを直したら
良さそうです。
386 :
デフォルトの名無しさん:04/10/28 23:55:10
リソースビューで、いつの間にか「他のエディタで使用中」
という表示がでて、元に戻らなくなってしまいました・・・
実際に、他のアプリが該当ファイルを開いているという事はありません。
助けて下さい・・・
>>386 他のアプリじゃなくてVC自身のほかのエディタが開いてんだよ
VC6 MFC SDI で作成したスケルトンに
新規にダイアログを追加しました。
そのダイアログにはスライダーやエディットボックスを
追加してデータの更新をしていきたいと思っています。
(ちょうどペイントアプリなどのカラー調整ダイアログみたいな
感じです)
現在の状況ですが、モーダルで開いたときは、スライダーに伴って
エディットボックスの値を変更することが出来たのですが、
モードレスだと更新が出来ません。
OnHScroll() に UpdateData(FALSE) などを追加してみましたが、
解決できませんでした。
そこで質問なのですが、ビューの更新に使うInvalidate 関数のような
ダイアログを更新させる関数は何でしょうか?
アドバイスをお願いします。
Invalidate
>>389 レスありがとうございます。
確かにそのとおりでした。
そんなことも気がつかない初心者ですのでお許しください。
実際やってみましたが、できませんでした。
描画ちらつくカンジになってしまいます。
(描画が追いつかないみたいなカンジです。)
何とも、もっとスムーズな描画更新できないないものか
と思っています。
スライダーとその対応するエディットボックスのみの再描画
という感じですかね?
(続き)
各メンバ変数の初期化は終わっているとして、
OnHScroll()はこのようなカンジになっています。
(今作っているアプリのダイアログを"色変更ダイアログ"
に置き換えてみました。)
void CColorDialog::OnHScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar )
{
CString value;
switch( ((CSliderCtrl*)pScrollBar)->GetDlgCtrlID() )
{
case IDC_SLIDER_RED:
value.Format( "%d", m_pSliderRed->GetPos() );
m_pEditRed->SetWindowText( value );
break;
case IDC_SLIDER_GREEN:
...
case IDC_SLIDER_BLUE:
...
}
// ここにいれてみました。
//Invalidate();
CDialog::OnHScroll( nSBCode, nPos, pScrollBar );
}
そもそも、この関数には関係ないところで問題があるのでしょうか?
CString value;
if(((CSliderCtrl*)pScrollBar==&m_pSliderRed){
value.Format( "%d", m_pSliderRed->GetPos() );
m_pEditRed->SetWindowText( value );
break;
}
else if(...){
...
}
breakはいらないなorz
394 :
デフォルトの名無しさん:04/10/29 12:25:14
コンソールプログラムで、
変数の値を画面に表示しようとすると
int homerun = 38;
printf("ホームランは%d本", homerun);
ですが、
これをwinアプリでやろうとするにはどうしたらよいでしょうか。
なんか下のようなのをごちゃごちゃ書いているんですが、まったくだめです。
int homerunの値をstrの中に文字列として代入したいのです。
int homerun = 38;
LPCTSTR bunsyo = "ホームランはhomerun";
RECT rect = { 0, 0, 100, 100};
HDC hdc;
DrawText(hdc, bunsyo, -1, &rect, NULL);
>>394 予め、文字列を組み立てておけばいい。
int homerun = 38;
char buf[40]; // ↓が格納できる充分な長さ
sprintf(buf, "ホームランは%d本", homerun);
RECT rect = {0, 0, 100, 100};
HDC hdc;
DrawText(hdc, buf, -1, &rect, NULL);
どこに表示させたいんだ?
ダイアログ?ビュー?エディットボックス?
398 :
394:04/10/29 13:21:09
うまくいきました
今まで
class Mojiretsu{
LPCTSTR str
}:
void ShowHomerun(HDC hdc, Mojiretsu *Mojiretsu, int homerun)
{
RECT rect = {400, 500, 800, 600};
wsprintf(Mojiretsu->str, "ホームランは%d本",homerun);
DrawText(pdc, Mojiretsu->str, -1, &rect, NULL);
}
でエラーが出ていました。
これを
void ShowHomerun(HDC hdc, Mojiretsu *Mojiretsu, int homerun)
{
RECT rect = {400, 500, 800, 600};
char buf[40];
wsprintf(buf, "%s%d本",Mojiretsu->str, homerun);
DrawText(hdc, buf, -1, &rect, NULL);
}
で表示されました。とても助かりました。
上のコードにおかしい点などあれば、また指摘ください。
ワイド文字
stdio.hを使わない方が、容量が少なくなるからでは?
wsprintfは浮動小数点が使えなかったりするので注意
結局、sprintfをwsprintfに置き換える積極的な理由は無さそうですね。
405 :
デフォルトの名無しさん:04/10/30 02:54:23
mspaintでは表示倍率を変更できますよね
この表示倍率をどのクラスのメンバにするのが普通ですかね?
Document変更が無く見せ方を変えるだけなので、やはりViewの
メンバでしょうか?
そうね
そうよ
410 :
デフォルトの名無しさん:04/10/30 15:54:00
VC6で*.cと*.cppファイルの混在プロジェクトを作ってC++でコンパイルしたんだけど、
そのままだと*.cファイルはC言語でコンパイルされてしまいます。
*.cファイルを拡張子はそのままでC++でコンパイルする方法はないでしょうか?
412 :
マイク ◆yrBrqfF1Ew :04/10/30 16:45:45
>>404 CString::Formatを使用することで
ウザイ固定バッファを管理しなくて済む。
414 :
デフォルトの名無しさん:04/10/30 20:42:48
#pragmaってcommentとかhdrstopとかを付けて使うやつだよね。
#pragmaのところを見てるんだけどどのオプション(?)かわからないです・・・
>>410 ソースを右クリックして [設定] を押し、[常にカスタムビルド...] にチェックを入れると、
できんことはないと思う。だけど拡張子変えるのが無難だと思うよ。
>>413 #pragma でそんなことできたっけ?
リソースエディタでプロパティのウィンドウを表示した時
設定する項目が何も表示されなくなったのですが、バグなんでしょうか?
表示されるのはウィンドウのタイトル「プロパティ」のみです。。。
プロジェクトを新たに作成し、解決しました。。。
>>418 BCC にはあるけど、VC6 にはなさげですが。。。
>>410 コンパイラオプションに /TP 追加でどうか
>>422 それいいね。それがベスト解だね。たぶん。
BCCってなに?
>>424 Borland C++ Compiler だよ。
BCC に関することは BCB (Borland C++ Builder) にもたいていあてはまる。
426 :
デフォルトの名無しさん:04/10/31 00:36:32
>>426 え、そう?どこらへんがあてはまらないかな。
428 :
デフォルトの名無しさん:04/10/31 00:43:57
もまいらこんばんわ。
VCの例外で教えてほしいのですが、リリースビルドだと
ちゃんとキャッチされるのに、デバッグだと「ハンドルされていない云々」
のMSGが出るのですが、なにか考えられる原因はありまつか?
あるよ。
>>428 キャッチするコードがデバッグビルドで削除されるようになってるとか、
そういうことしか思いつかない。
コードみせてくれるのが早いと思う。
>>431 誰だYOw
>>429 簡単でいいので教えてくだちいm(__)m
>>430 すみません。関数のネストが深くて(10つぐらい)
そこから投げられてるのでコード掲載キツイでつ(TT
でも#ifdefとか全く使ってない何のへんてつもない
コードなのでつが。。。
>>432 とりあえず、投げてる部分のコード片と、
キャッチしている部分のコード片をみせて。
それと VC のバージョンも書いて。
434 :
デフォルトの名無しさん:04/10/31 01:06:21
>>433 30万行以上もあるのに見せれるかよ、ぼけ
>>432 最近VC++スレ付近に質問者を騙って勝手に礼を言ったり回答者を煽る奴がうろついてるよ
C#スレのほうにも足を伸ばしてるみたい
まあ騙られるのは大概くだらん質問者だからな。
まったく実害無しだな。
>>437 そんなことないよ。頼むからやめてくれ。
レスどうもありがとうございますm(__)m
なんか荒れてて申し訳ないでつ。
会社のコードで今は自宅なのでうろ覚えなのでつが
下のCOMポートに出力するWriteSerial()中から、
スローしています。
受けるのはCOMポートでつながっている測定機器
に命令を送るMeasureData()中です。
MeasureData()とWriteSerial()間には10個ほどの
関数がはさまっています。
みづらいコードで申し訳ないです。
環境はVC6 WinXPです。
// 例外をスローしている部分
void WriteSerial(UINT addr, BYTE data)
{
// COMポートが接続されているかのチェック
BYTE ret = ReadSerial(addr);
if (ret == 0xFFFF) {
CNonConnectException *p = new CNonConnectException();
throw p;
}
....省略
}
// 例外をキャッチしている部分
void MeasureData()
{
try
{
WriteData(data);
}
catch (CNonConnectException *p)
{
MessageBox(p->ErrorMessage, NULL, MB_OK | MB_ICONERROR);
return;
}
catch (...)
{
ASSERT(FALSE);
throw;
}
...省略
}
単にデバッグビルドとリリースビルドで例外に関するコンパイラオプションが違うだけと想像
デバッグビルドででる例外メッセージを一字一句正確に教えてくれる?
長くて無理っす
>>444 とにかくね、上記の C++ 例外のキャッチ忘れなのか、
上記のコードとはまったく別の例外なのか (たとえば SEH 例外)。
これは確認しておきたい。
>>444 いい加減にしてくだちい
>>443 >>デバッグビルドででる例外メッセージを一字一句正確に教えてくれる?
VCのアサーション画面(赤い×のやつです)が出て、そのあと
「ハンドルされていない例外は○○にあります」というよくみるMSGボックス
がでます。
と、今書いてて思ったのですが、アサーション画面が出るのはおかしい
んですかね。もしかしたらデバッグコード中のASSERT中で例外が
投入されたら、本来のハンドラでキャッチできないとか。。。
もしそうならリリースだとちゃんと動くのが説明がつくのですが。。。
>>446 ・・・VCのデバッガは例外のスローを捕捉してダイアログを出す機能があるけど、
それだったら殺すよ。
>>446 それは例外じゃなくって、ASSERT エラーじゃんか。
ASSERT は例外なんかスローしないよ。
ASSERT にひっかかったら、その場で強制終了したはず。
それから、ASSERT にひっかかってるんなら、
リリースモードでは正常に動作しているように「見えている」だけだから、
それをリリースするのは危険だよ。
>>447 >>VCのデバッガは例外のスローを捕捉してダイアログを出す機能があるけど
そうなのですが、ちゃんとハンドリングしているので本来出るはずがない
と思うのですが。。。
>>448 >>それは例外じゃなくって、ASSERT エラーじゃんか。
アサートならそのまま終了だと思うのですが、その後「ハンドルされていない例外は...」
が出ました。コールスタックを見てもスタックが巻き戻されていなかったと
記憶しているのですが、ちょっと記憶があやしくなってきたので
明日会社で確認してみまつ。何かわかったらまた報告しまつね。
夜分お騒がせしますた。みなさんどうもありがとう。。。
450 :
デフォルトの名無しさん:04/10/31 02:10:17
>>447 殺せるもんなら殺しえてみろよ、ぼけ
いくらオドレのチンケナ人生ゆうても棒に振るんは
痛いんちゃうんかい?
451 :
デフォルトの名無しさん:04/10/31 02:11:47
>>450 雑魚は黙ってろ!
己の人生棒に振ってまでも花道飾りてーっつってんだよ
素直に飾らせろや!
452 :
デフォルトの名無しさん:04/10/31 02:12:18
自作自演乙
...
454 :
デフォルトの名無しさん:04/10/31 02:23:25
なんかもう必死ですねw
450==451==452==453
456 :
デフォルトの名無しさん:04/10/31 02:53:00
VC++2002の環境設定をVC++2003にごっそり移行したいのですが
どうすればいいの?
またこの手の質問か。。。
>>456 環境設定をメモに取る
↓
VC++2002をアンインストール
↓
VC++2003をインストール
↓
(゚д゚)ウマー
459 :
デフォルトの名無しさん:04/10/31 04:34:01
( ´_ゝ`)フーン
460 :
デフォルトの名無しさん:04/10/31 04:41:24
>>457 ヘビーな質問だったら答えらんねーくせにw
( ´_ゝ`)フーン
>ヘビーな質問
素敵だ…
さてさて、次のおてがきいってみましょ!
↓
465 :
デフォルトの名無しさん:04/10/31 08:11:26
VC++2002の環境設定をVC++2003にごっそり移行したいのですが
どうすればいいの?
こっそりとフォルダ名を2002から2003へと変えてみる
MSDN:
Visual Studio .NET 2003 の新機能
・・・
Studio .NET をインストールすると、新しい方のバージョンを初めて起動
するときにダイアログ ボックスが表示され、既存の設定を移行するかどうかを
選択できます。・・・
入力した文字を逆転表示して表示させるにはどうしればいいのでしょうか・・・?
例
こんにちは
はちにんこ
と言った具合です。
<algorithm>のreverseあたりを。
>>468 自分で文字列を逆転させてからTextOut()すればよい。
MFCなら
CString ss = "こんにちは";
ss.MakeReverse();
>>469 ありがとうございます。
reverseを使うということですね。
サンプルソースなどお願いできませんでしょうか?
>>471 なるほど参考になります。
任意に逆転したい文字を選びたいのですがこの場合はどうすればよいのでしょうか?
宿題スレに回答が出ているよ
#include <locale.h>
#include <iostream>
#include <string>
#include <algorithm>
setlocale(LC_ALL, "Japanese");
using namespace std;
wstring wstr= L"あいうえお";
reverse( &wstr[1], &wstr[3] );
wcout << wstr<<endl;
//質問小出しはするな
win32 Consloe アプリか?(hellow world アプリとか)
MFCアプリならばwoutの代わりとしW2Aマクロ等を使う。
480 :
デフォルトの名無しさん:04/10/31 15:32:40
偉そうに回答してる連中の中で超有名ソフトの開発者っている?
例えばMayaの開発チームのメンバーだよみたいな。
MayaはVC++で作られているわけじゃないが・・・
>>480 いたとしても態々言うと思うか?
馬鹿かお前は。
>>480 いたとしても雑用コーダーみたいな奴じゃないか。
こんなところに来るのは
任意に入力した 文字を逆転させるプログラムが欲しい・・・・
AIUEO
∀I∩ヨO
こんな感じでつか?
>>484 「こういう感じ」と入力すると
じ感ういうこ
にするプログラムです。
金子はdown板だっけ
akasaka と入力すると結果が同じになってしまいます
ところで、唐突に出された質問にスパッと答えるかっこいいお前らに聞きたいんだが
何歳なんだ?
10歳さばよんで答えてくれ。
まだ分かりません・・・誰か教えてください。
497 :
デフォルトの名無しさん:04/10/31 19:45:24
>>494 さっくり作ってみたけど簡単すぎた。
この程度のが作れないなら、
逆にしないでそのままコピペすら作れないだろ(w
499 :
デフォルトの名無しさん:04/10/31 20:12:59
じゃあ、ブートローダを書いてみてください
さくらが書いたCマガの記事に出ていたような。
-9
504 :
デフォルトの名無しさん:04/11/01 01:17:13
Edit ControlでFocusを受け取ったときに文字列が選択されるように
するにはどうすればいいのですか?
>>504 m_edit.SetSel(0, -1)
マウスで選択した時は駄目なんだけどね・・・
506 :
デフォルトの名無しさん:04/11/01 01:43:15
EM_SETSELを::SendMessageでOKでは?
それをすると今度はマウスで範囲選択できなくなる
508 :
デフォルトの名無しさん:04/11/01 02:56:02
はぁ?
>>504 EN_SETFOCUSをキャッチしてEM_SETSELだな。
コンソールアプリケーションからクリップボードを使いたい(読み、書き)と思います。
調べたところ、ウィンドウハンドルが必要なのですが、コンソールアプリからはどうやって取得すればよいのでしょうか?
511 :
デフォルトの名無しさん:04/11/01 09:18:46
先輩方!助けて下さい。
ダイアログをFormViewベースで追加しました。
このタイトルバーの左端のアイコンを非表示に
したいのですが、どのようにすればよいのですか?
>>510 GetDesktopWindow()でもしとけば?
>>511 アイコンじゃなくてシステムメニューの表示をやめる
>>511 と思ったけど、アイコンを設定してるところをコメントにする。
ws.Style &= ~WS_SYSMENU;
516 :
デフォルトの名無しさん:04/11/01 12:41:08
>>514 ダイアログベースから呼び出してるダイアログ(FormView)でして、
どこでアイコンがセットされているのか隠れていて分かりません・・・
>>515 システムメニューを消してしまうと、
最大化や閉じるボタンもろとも無くなってしまうので、
できれば避けたいのです。
>>516 MFC?
ウインドウクラスのアイコンが表示されてるかもしれない。
どうやってウインドウ出してるとか肝心なことが書いてないから答えようがない。
>>517 失礼しました。MFCです。
親はダイアログベースで作成し、
これから表示したいウインドウは、
リソースでDialogを新規作成し、クラスの追加で
基本クラスをFormViewとしたものです。
親からはDoModal()で開いています。
520 :
デフォルトの名無しさん:04/11/01 20:23:48
すいません。
今日最近VC++.NETを使い始めた者ですが、ビルドの際に
LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
LINK : warning LNK4098: defaultlib 'LIBC' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
Debug/julian.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
ということでリンクプロパティ→特定のライブラリ無視で /NODEFAULT LIBCとMSVCRTDを
実行したところ今度は
「juliuslib.lib(rddfa.obj) : error LNK2019: 未解決の外部シンボル __imp__sscanf が関数 _rddfa_line で参照されました。」
と表示されました。何かこれらのエラーを回避する方法ありましたら
教えていただけますでしょうか。お願いします。
まさにシンボルが解決されていない。
ライブラリをリンクする必要がある。
>>520 ReleaseビルドのライブラリとDebugビルドのアプリケーションはリンクできない(事が多い)。
インターネットエクスプローラ上で右クリックしたときのメニューに独自コマンド組み込んで
それを選択するとIEで表示されてるページのURLとタイトルとかを得たいんです。
どうすれば実現できますか?
無理。MSからIEカスタマイズ用のライセンスを取得する
必要がある。
>>523 できるけど、ひとことじゃ説明できないし
ここで質問してるようじゃ無理
>>526 まぁそういわずいくつかキーワードだけでも教えてやってくれ。
漏れも知りたいし。
531 :
デフォルトの名無しさん:04/11/01 23:34:26
VC++でUSB接続のカメラからの画像を処理するようなソフト作成を目指しているのですが参考になる書籍サイトなどありましたら教えていただけませんでしょうか。
532 :
デフォルトの名無しさん:04/11/01 23:35:33
>531 VC++.netでしたすみませんがご教授くださいよろしく追い願いいたします。
動画?
>>531 トラ技に載ってたなぁ
トラ技のバックナンバーでも検索して図書館ででも借りれば?
535 :
デフォルトの名無しさん:04/11/02 00:41:34
Visual Studio.net にてvc++をやり始めているのですが、質問させてください。
// sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "開始\n";
double b = 0x0, c = 0x0;
while (b < 0xffffffff){
for(double a=0x0;a < b;a++){
c = a * b;
if (c == 0x99BA4A95){
cout << "10進数" << "a:" << a << "b:" << b << "c:" << c << "\n";
break;
}
}
b++;
if (c == 0x99BA4A95){
break;
}
}
cout << "終り\n";
return 0;
}
連貼り失礼します。
このようにaとbを掛けて0x99BA4A95になれば正解というちょっとした
総当りプログラムを書いたつもりなのですが、コンパイルしたものを実行すると
開始
10進数a:42197b:61121c:2.57912e+009
終り
こういう結果になってしまいます。望んでいる結果は
開始
10進数a:42197b:61121c:2579122837
終り
なのですが・・
手持ちの本にはdoubleは15桁までOKのようなことがかいてあるのですが
これは多倍長整数計算というものなのでしょうか?
巨大整数計算や多倍長整数計算などで検索したのですが
全て理解したわけではありませんがイマイチ違うようなきがします。
アドバイスなど頂ければ幸いです。よろしくお願いします。
doubleは浮動小数点数計算
多倍長整数計算がしたければ自分でライブラリ作れ
538 :
デフォルトの名無しさん:04/11/02 01:05:27
>>534 アドバイスできねーなら口出すなよ
本見ろなんて誰でも言えんじゃんw
>>537 レスありがとうございます。
longだと桁あふれしてしまうのでdoubleにしました。
私のやろうとしていることは多倍長整数計算になるのでしょうか?
>>535-536, 539
double じゃなくて int ですな。それで不十分なら__int64なんてのもある。
多倍長整数のライブラリならCodeGuru当たりにあったような希ガス。
>>538 がんがれ、若いの。
配列の要素数の限界ってあるの?
543 :
デフォルトの名無しさん:04/11/02 01:34:23
カスタムコントールってどうやって作るの?
とりあえず、CEditから派生させてCEditExを作りました。
(1)どうやってCEditViewに結びつけるの?
(2)どうやってダイアログに貼り付けるの?
>>540 __int64でばっちりイケました。ありがとうございます。
c++を勉強し始めたばかりでライブラリなどは未だ敷居が高く助かりました。
>>541 要素数の限界は決まっていないが、スタック領域の限界要領は決まっています。
それはコンパイラのオプションで変えられることができます。
(本当は実行中に変えることもできます)
参考までに、VC++でのスタック領域はデフォルトで1MBです。
× 要領
○ 容量
VusialC++と関係ないと思うのですが
InternetExpolorで、描写範囲外の部分の表示は
OSはどのような処理をしてるのでしょうか?
スクロールすつ毎に書き足してるのでしょうか?
それとも、描写されてない部分も一度、メモリーに
画像として作っておいて、それを描写してるのでしょうか?
1)スクロール毎に新しく描写する部分を書き足してる
2)一度、全部、画像としてメモリーに保持しといて
描写範囲だけ、VRAMに落として描写している
この二つぐらいしか思いつかないのですが
もし宜しかったらお願いします。
548 :
デフォルトの名無しさん:04/11/02 02:06:59
スクロール毎に新しく描写する部分を書き足してる
遅い機種で実行してみれば様子が分かる
javascriptで使用するオブジェクトについて考えると、
描画されてない部分でもオブジェクト自体は存在しなければならない。
つまり全部「オブジェクトとして」メモリーに展開されている。
550 :
520:04/11/02 04:15:38
>>522 レスありがとうございます。色々と試していたらエラーを残り1つまで解決できました。
特定のライブラリを無視にエラーで表示されていたlib以外をぶち込んだらどうにか。
で、最終的に下記ソースファイルを新たに追加したらエラーを残り1つまで漕ぎ着け
ました。
extern "C"
{
int __mb_cur_max;
int errno;
}
ところが、最後のエラーが・・
anew.c
c:\anew.c(2) : error C2059: 構文エラー : '文字列'
julian - エラー 1、警告 0
あまりの眠さにやっと書いてますが、どなたか分かる方いましたら
お願いします。
source だせー
-------------------------------
| Main Window |
-------------------------------
|ファイル 編集 表示_______________________ | --------------
|----------| ・デバッグウィンドウ表示| | | Debug Window |
| | ・・・ | | |-------------|
| | ・・・ | | | |
| ----------------- | | |
| | | |
| | --------------
-------------------------------
こんな風な、常に開いておけるデバッグ情報出力画面を作りたいのですが、
SDIでモードレスダイアログを使用せずに作れますか?
はい
>>550 それは自分で作ったのか?
本見てるとかどっかで拾ってきたんだろうか?
初歩の質問ですみませんがお願いします
クラスのメンバ変数は暗黙的に初期化されていると何かで読んだ気がするのですが
VC++では初期化されていないようです
これはコンパイラによって違うものなのでしょうか?
>>555 普通はコンストラクタで初期化すると思うけど
そういう学問的な話はC++スレ向きだと思う。
558 :
デフォルトの名無しさん:04/11/02 09:05:59
カスタムコントールってどうやって作るの?
とりあえず、CEditから派生させてCEditExを作りました。
(1)どうやってCEditViewに結びつけるの?
(2)どうやってダイアログに貼り付けるの?
>>558 Edit Controlを配置
コントロール変数を「変数の種類 : CEditEx」で作成
560 :
デフォルトの名無しさん:04/11/02 09:27:58
わからないひとは黙ってください
>>558 CEditの派生なら、カスタムコントロールではないよ。
567 :
デフォルトの名無しさん:04/11/02 21:38:21
>>565 無能な人に答えていただく必要はありません
568 :
デフォルトの名無しさん:04/11/02 22:52:06
569 :
デフォルトの名無しさん:04/11/02 22:54:57
( ゚Д゚)ハァ?
はぁ…
572 :
デフォルトの名無しさん:04/11/02 23:54:05
VC++2002
ダイアログボックスに配置されてたエディットコントロールから値を取得しようと
下記コードを書いたのですが、アサーションがでます。
どこがマズイのですか?
void CxxxView::OnMenu1Click()
{
CTestDlg TestDlg;
if(IDOK == TestDlg.DoModal())
{
CString buffer;
TestDlg.GetDlgItemText(IDC_EDIT1,buffer);
TRACE("%s\n",buffer);
}
}
>>572 DoModalから返ってきたときは
ダイアログ自体はすでに破棄されているので、
そのあとのGetDlgItemTextに失敗する。
例えばCTestDlgのOnOKとかで、
CTestDlgのメンバ変数にでも
エディットコントロールの値を記憶しておき、
それを取得するようにすればいい。
>>572 アサーションの内容を読もうともしない英語恐怖症のお前。
>>573 テメェに聞いてねーんだよリアル精神障害者が。
チンカスでも掃除してろw
(;´Д`)
578 :
デフォルトの名無しさん:04/11/03 00:46:34
少し前から変なのがいついてるな。
VCにイヤな思い出でもあるんだろ。
教えてもらってるのにあんな態度ってのは....
考えられないよな、普通
確かにVC++に相当なコンプレックスをお持ちのようですな。
言語仕様的にはJavaやC#と似たようなもんだし
コンソールアプリとかの基礎からコツコツやりましょうぜ > 若い人
583 :
デフォルトの名無しさん:04/11/03 02:01:46
VC++はソースとかぐっちゃぐちゃになってそう。
もう後から後からいろんなもの付け足してよく問題でないな。
感心するよ。
問題出す椰子はどの開発環境でも出すかと
VCは開発環境としては結構使い勝手いいと思うけどな
けど、問題出さないよう、手間かけてきちんとまとめたものより
問題出てでも、早くものを作り出したほうが評価されるのはなんとも…
ごめん、メモ帳にしちゃった(´・ω・`)
いやVisualStudioのファミリーのツール類だよ。
秋葉チックなVisual系がいっぱい居るStudioはここですか?
就職もせずにぷらぷらしてます。
> 就職もせずにぷらぷら
Visual 就++ ってことですね
ここはおもしろくないスレですね
就++だと讐になるぞ
591 :
デフォルトの名無しさん:04/11/03 03:16:07
>>573 CTestDlg にpublicなコントロール変数m_Editを定義して
下記のように書き直してみましたがまだアサーションが
でます。
void CxxxView::OnMenu1Click()
{
CTestDlg TestDlg;
if(IDOK == TestDlg.DoModal())
{
char buffer[100] = {0};
TestDlg.m_Edit.GetLine(0,buffer);
TRACE("%s\n",buffer);
}
}
醜++
594 :
デフォルトの名無しさん:04/11/03 03:34:51
もういいよ
おまえらに聞いてもなんも解決しねー
結局、質問者となんら変わらないんだね
その割には偉そうだが www
IDOK == TestDlg.DoModal()
だからIDOKに値が入る時にはもうダイアログが閉じてるんだろ
あ、代入じゃなくて比較だ
挿入
VC7.1 のカーソル操作を Emacs 風にすることって出来ないんですか?
>>600 自分でカスタマイズすればいいんじゃないの?
Visual C++でCのコンパイルってできるんですか?
>>602 できます。拡張子が'.c'ならCとしてコンパイルします。
>>603 房丸出しの質問なのに答えていただいてありがとうございます。
>>601 カーソル操作のカスタマイズなんか出来るんですか?
ググっても情報が出てこないんですが…
char *filename[14] = {"1.txt","2.txt","3.txt",〜"100.txt"};
こういうの100.txtまで書かずにfor文等で楽にする事出来ませんか?
608 :
デフォルトの名無しさん:04/11/04 20:33:00
for(i=1;i<=100;i++){
sprintf(filename, "%d.txt", i);
}
どうでもいいが、>607のfilename[14]の14ってのはどこから出てきた数字なんだ。
>609
char filename[100][10];
for(int i=0;i<100;i++){
sprintf(filename[i],"%d.txt",i+1);
}
の方が良くないか?
>>608 どっかに説明あるはずだけど、
それだとzipしか落ちてこないし、中はソースしか入ってない。
616 :
デフォルトの名無しさん:04/11/04 22:07:46
>>612さん、614さん
回答有難うございます。
このクラスを使って自分で新しい物を作りたいのですが、
どのように設定(MFCの雛形ファイルのどのファイルにインクルード)などすればいいのでしょうか?
619 :
デフォルトの名無しさん:04/11/05 01:57:42
初歩的な質問ですいません。
c:\hogehoge\libsent\src\util\j_printf.cpp(14) : fatal error C1083: include ファイルを開けません。
'sp/spKanji.h': No such file or directory
というエラーが表示されました。ちゃんとj_printf.cppのプロパティから
sp/spKanji.hをインクルードしているのですが何が問題でしょうか。
よろしくお願いします。
>619
>345-353
621 :
デフォルトの名無しさん:04/11/05 03:07:46
AfxMessageBox(IDS_*****);
のIDS_****というのが、定義されていない識別子としてエラーになるのですが・・・
622 :
619:04/11/05 03:12:52
>>620 早速の返答ありがとうございました。345-353を拝見させていただきました。
そこに記載されている間違い易い事例を参照にしながら継続していましたが
やはり間違いは無いようです。
j_printf.cppの冒頭のソースは
#include <sent/stddefs.h>
#include <stdarg.h>
#include <sp/spKanji.h>
#if (defined(_WIN32) && defined(USE_SPLIB))
#endif
となります。j_printf.cppのプロパティから「インクルードするディレクトリ」で
sp/spKanji.hを設定していますが問題はないと思うのですが・・。
他のcppのインクルードではエラーが出ないのですが。。
もし分かる方いましたらよろしくお願いします。
>>621 #include "resource.h"
>>622 どうでもいいけど、ディレクトリの指定にファイル名を入れたのか?
625 :
デフォルトの名無しさん:04/11/05 03:29:52
>>623 インクルードしてみたのですが、だめでした。
sp/spKanji.h
このファイルはどこにあるんだ?
627 :
619:04/11/05 03:46:32
>>624 有難うございます。ディレクトリ指定にファイル名入ってますが
他に重複していたらしく削除したら動きました。
本当に有難うございました!!
628 :
デフォルトの名無しさん:04/11/05 09:24:43
XP+VC6.0です。
ファイルを保存しようとすると
「保存できません。他のアプリケーションで使用中」
とのメッセージがたまに出ます。
翌日、プロジェクトに登録していたファイルも消えました。
Nortonが悪さしているようなんですが、どうすればいいのでしょうか?
祈りなさい
VBCommenter の C++ 版ってありますか?
もしあるのなら、どこにあるか教えてください。m(_ _)m
>>628 > Nortonが悪さしているようなんですが、どうすればいいのでしょうか?
そこまで分かってるんならとりあえずNorton停めてテストすれば?
632 :
コピペ推奨:04/11/05 10:14:56
633 :
コピペ推奨:04/11/05 10:23:27
634 :
デフォルトの名無しさん:04/11/05 10:40:08
VC++.net(MFC)で他のアプリケーションのテキストボックスなどに
文字を入力したりするアプリケーションをつくりたいのですが、
どのようにすれば他のアプリケーションへキー入力のメッセージを
送れるのかわかりません。
目的のテキストボックスへフォーカスを持って行くのは
手動でマウスで行う方法でもよいとおもっております。
是非助けて下さい。 よろしくお願いいたします。
635 :
デフォルトの名無しさん:04/11/05 11:10:26
636 :
628:04/11/05 11:12:52
無宗教です。
Xp+Vc6+Nortonで使われているかたおれないでしょうか
637 :
634:04/11/05 11:20:28
>>635 様
レスありがとうございます。
紹介していただいたSendKeyというのはQXエディタのマクロですか?
やりたいことはまさに紹介していただいたURL通り
(出来ればウィンドウ・コントロールをアプリケーションで指定したいが・・・)
なのですが、 VCやVBなどからそれをおこないたいのです。
WSH
639 :
syo:04/11/05 11:49:24
今年の夏からプログラマーになりましたsyoです。
現在派遣に出てeMbedded4.0、WindowsCEで開発しています。
NEC製Pocket@i用のSDKを探しているのですが、ダウンロード
できるところを誰かご存知ではないでしょうか?
>>636 ノートンをあぼーんさせるか、そのメッセージ出ても無視して再保存すれば保存できる
特に実害は無い
642 :
デフォルトの名無しさん:04/11/05 12:07:55
クラスAを用意し、メンバー関数(a,b,c)を3つほど作りました。
派生クラスはありません。
そのメンバ関数aの中で、動的変数を配列で定義したのですが、
b,cで認識してくれません。
これは常識なのでしょうか。
http://www.geocities.jp/chiakifujimon/text/text.html の↓ってどこにコーディングすればいいんでしょうか?
初心者なんで全く分かりません。
void CNotePadView::OnViewFont()
{
LOGFONTlf;// LOGFONT構造体の宣言
m_Font.GetLogFont(&lf);// 現在のフォント情報を取得
// コモンフォントダイアログの作成
CFontDialogdlg(&lf, CF_SCREENFONTS|CF_INITTOLOGFONTSTRUCT);
// ダイアログを開く
if (dlg.DoModal() == IDOK)
{
m_Font.DeleteObject();
if(m_Font.CreateFontIndirect(&lf))
SetFont(&m_Font);
}
}
650 :
デフォルトの名無しさん:04/11/05 15:52:51
>>648 うるさいんじゃ、カスが。死ねや。テメェのドタマ切り飛ばすぞ。糞が。死ねや。
自己解決しました。すいません。
652 :
デフォルトの名無しさん:04/11/05 17:15:24
ディレクトリを選択するダイアログボックスはどうやってつくればいいですが?
(ファイルは選択しない)
653 :
デフォルトの名無しさん:04/11/05 17:17:05
654 :
デフォルトの名無しさん:04/11/05 17:42:40
ツリーがでてくるあれです。
SHBrowseForFolder
656 :
デフォルトの名無しさん:04/11/05 18:13:22
ありがとうございます。
コンソールプログラムを作っているのですが
ある特定のフォルダにあるファイルの一覧を
配列なりに取得するにはどうしたらいいのでしょうか?
658 :
デフォルトの名無しさん:04/11/05 20:47:21
<<655
ルートからのパスを取得するにはどうしたらいいでしょうか?
>>657 FindFirstFileとか。
配列に入れたいなら結果をstd::vectorにpush_backしていけばいいんじゃない?
BROWSEINFO bi = { 0 };
//bi.lpszTitle = _T("必要ならタイトルを付ける");
LPITEMIDLIST pidl = SHBrowseForFolder ( &bi );
if ( pidl != 0 )
{
// get the name of the folder
TCHAR path[_MAX_PATH];
if ( SHGetPathFromIDList ( pidl, path ) )
{
//pathを使って処理
}
// free memory used
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
{
imalloc->Free ( pidl );
imalloc->Release ( );
}
}
>>659 ありがとうございます
試してみてなんとか取得できているのですが
WIN32_FIND_DATA tmp;
HANDLE Handle; BOOL h=1;
vector<string> filename(MAX_PATH); int i=0;
Handle = FindFirstFile("*", &tmp);
if (Handle==INVALID_HANDLE_VALUE){
cout << "can't" << endl;
} else{
while (h){
filename.push_back((string)tmp.cFileName);
h = FindNextFile(Handle, &tmp);
i++;
cout << i << tmp.cFileName << endl;
cout << filename[i] << endl;
}
}
としたところリストに追加できているようなんですが
データ型が違うのかリスト内では文字になってないみたいなんですが
何型にキャストすればいいでしょうか?
662 :
デフォルトの名無しさん:04/11/05 23:10:10
ありがとうございます。
無事にできました。
できたといっているが一応。
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[]) {
int i = 0;
WIN32_FIND_DATA FindData;
vector<string> FileName; //本当はvector<basic_string<TCHAR> > FileName;の方が良い。
HANDLE Handle = FindFirstFile(argv[1], &FindData);
if (Handle == INVALID_HANDLE_VALUE) {
cout << "can't" << endl;
} else {
do {
FileName.push_back(FindData.cFileName);
cout << Filename[i] << endl;
i++;
cout << i << FindData.cFileName << endl;
} while (FindNextFile(Handle, &FindData));
}
return 0;
}
664 :
デフォルトの名無しさん:04/11/05 23:30:33
PostMessage()で float型のデータを送るには、どうしたらよいのでしょうか?
void Sender()
{
float a;
PostMessage(aの値);
・・・
}
LRESULT CALLBACK WindowProc( ... , WPARAM wParam, LPARAM lParam)
{
float b = Sender()で送った値;
・・・
}
PostMessage( ... , a ) で送って b=(float)lParam; では整数に切り詰まるし、
かといって aのポインタ送るのもNGでしょうし...
>>664 void Sender()
{
float a;
PostMessage(..., *(LPARAM*)&a);
}
LRESULT CALLBACK WindowProc( ... , WPARAM wParam, LPARAM lParam)
{
float b = *(float*)&lParam;
}
>>663 助かりました
i++が先に来ていて普通に読み込めてないところ参照していたんですね
ずっと見当違いなところばっかり見てました
ありがとうございましたっ
floatならlongとサイズが同じだから、
typedef union {
float f;
long l;
} MockFloat_t;
MockFloat_t a;
a.f = 1.2;
PostMessage(..., a.l);
}
{
MockFloat_t b;
b.l = lParam;
printf("%g\n", b.f);
}
せめてFLOAT...
671 :
デフォルトの名無しさん:04/11/06 16:16:38
>>671 それは「CFormView 背景色 変更」でググった上での質問かね?
673 :
デフォルトの名無しさん:04/11/06 17:06:30
ググってみましたが、
上のアドレスの内容とほとんど同じものでした。
アプリがMDIなのですが、なにか関係があるのでしょうか?
ウィンドウを最大化するとタスクバーが隠れてしまう現象を直すには
どうしたらいいのでしょう?
>>674 タスクバーのプロパティから「常に手前に表示」や「自動的に隠す」をいじってみろ。
676 :
デフォルトの名無しさん:04/11/06 17:24:37
解決しました。
コンストラクタとデストラクタをまちがえてました。
>675
一応常に手前に表示になってます。競合の問題ですかね。
とりあえずSetWindowPosでNOTOPMOSTにしてみます
解決しました。WM_SIZE時に
GetClientRect(親ウィンドウハンドル, &rect);
SetWindowPos(親ウィンドウハンドル, NULL
NULL
NULL
rect.right,
rect.bottom-1,
SWP_NOMOVE );
というふうに、最大化時のクライアントの高さから1引けば
タスクバーが前に表示されるようです
と思ったら解決してないですね
こんどはタスクバーを非表示にしたり縦にすると問題が出てしまいます
タスクバーの位置と大きさを取得して計算でFAですかね
今度こそ解決しました。
ウィンドウが最大化の状態において、タスクバーのサイズが変更されたときに
SystemParametersInfoでタスクバー以外の矩形領域のサイズを得た後、
親ウィンドウをSetWindowPosでサイズ変更すれば、タスクバーが移動しまくったり
サイズ変更しまくっても、常にウィンドウがタスクバー以外の最大領域にサイズ変更されます。
というかWin32APIなんでスレ違いですね。
お騒がせしました。
初めまして、
以下の環境にてプログラムを製作し、実行したところ、値を入力してenterを入力
したところでプログラムが終了してしまいました。
値を入力し表示させて画面を保つにはどのようにすればよいのでしょうか。
御教授頂ければ幸いです。
[環境]WindowsXP home(SP2) Visual C++.net (ver 1.1.4322 SP1)
[コード]
#include <iostream>
using namespace std;
int main()
{
int num;
cin>>num;
cout<<num+2<<endl;
cin.ignore();
return 0;
}
>>681 ちょっと前にも同じ質問見た気がするなぁ
コンパイルオプションで、xeon 用に最適化することって出来ますか?
/G で良いのでしょうか?
685 :
デフォルトの名無しさん:04/11/07 12:39:13
再描画がうまくいきません
ファイルをダウンロードするhttpクライアントを作っています。
全体の何%ダウンロードしたかをリアルタイムで表示させたいの
ですが、再描画がうまくいかないのでできないです。
100%ダウンロードした後にのみ再描画が起きるだけです。
recv関数(サーバからデータを受け取る関数)を呼び出すたびに、
UpdateAllViews(NULL)を呼び出しているのですが、再描画ができないです。
プログラムが何か作業をしているときは、再描画はできないのでしょうか?
俺だったら通信部分を別スレッドに分けると思う。
メッセージが飛べない状況では描画はできない。
UpdateAllViewのあと
viewにWM_PAINTを送った?
>>688 おいおい、自分でWM_PAINTを送信したら駄目だろ。
InvalidateRect(NULL);
UpdateWindow();
とすべき。
690 :
685:04/11/07 13:36:16
>>689 試していますが、コンパイルが通らないです。
MFCを使って組んでて、documentクラスの関数内では使えないのかな?
691 :
685:04/11/07 13:43:13
>>689 VIEWクラスにontimer関数を作ってそこから、
InvalidateRect(NULL);
UpdateWindow();
を実行したけど、症状は変わらないです。
692 :
685:04/11/07 13:46:30
>>686 マルチスレッドって奴ですか?
なんか難しそうだな。
関数{
ループ{
recv();
UpdateAllViews();
}
}
こんな感じでやってるんでしょ?
694 :
685:04/11/07 13:57:58
>>693 そうです。
またそれとは別にVIEWクラスにsettimerを作って
一秒おきにontimerを実行させて
>>691のようなこともやってみましたが、無理でした。
>>694 うん、関数の中にいる間は更新されないよ。
通信を非同期にするとか別スレッドにするとかしないと。
696 :
685:04/11/07 14:04:03
>>695 ありがとうございます。スレッドについて勉強してみます。
出直しますわ。みなさん、どうもありがとね。
697 :
デフォルトの名無しさん:04/11/07 16:51:04
微妙にすれ違いかもしれない質問をさせてください。
VisualC++2003を買ってきてオンラインでユーザー登録をしようとしたんですが製品IDが違うって言われちゃうんですよ。
この製品IDというのは、VC++のバージョン情報を表示させて、「情報のコピー」ボタンでコピーしてから
数字と-だけを貼り付ければ良いんですよね。
もしかして、ぜんぜん違うことやっちゃってますかね。
平日は忙しいんだ…
土日もやってくれよ〜>電話サポート
休むのは火木にでもしろ。
つーか、昼休みとか取るんじゃねぇ、市役所かてめぇら。
703 :
デフォルトの名無しさん:04/11/07 18:11:56
ぜんぜん違うことやっちゃってます
704 :
681:04/11/07 23:48:57
大変失礼致しました。
注意力散漫になっていて、見落としていたようです。
>684様
参考にさせて頂きます。
有難う御座います。
705 :
685:04/11/08 02:36:53
AfxBeginThread()使ってみたが、症状は変わらないわ。
一体なんなんだ?
706 :
685:04/11/08 02:46:01
こんな感じで、マルチスレッドな感じに組んだつもりなのですが、ダメです。
int CHctestwin2View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: この位置に固有の作成用コードを追加してください
AfxBeginThread(Thread_byoga, this);
return 0;
}
UINT Thread_byoga(LPVOID pParm)
{
while(TRUE){
Sleep(1000);
my_pView->InvalidateRect(NULL);
my_pView->UpdateWindow();
}
return 0;
}
707 :
685:04/11/08 02:59:40
>>686 >>695 今、読み返してみたのだが描画を別スレッドにするのではなく、あくまで通信を別スレッドに
しろということなのか・・・
コンパイルエラーにはならない?
my_pViewというのは外部変数?
それと、無限ループを抜け出す条件が無いようだけど
カキコするために省略したの?
709 :
685:04/11/08 07:14:06
>>708 コンパイルエラーにはならないです。
my_pViewは外部変数です。
無限ループを抜け出す条件が無いですが、省略ではありません。
もし my_pView が MFC のクラスなら
スレッドを超えてのインスタンスの使用はできないはず。
ナマのウィンドウハンドルを持つべきだね。
711 :
デフォルトの名無しさん:04/11/08 13:03:02
すみません、質問させてください。
win2kで Visual Studio.NET を使っています。
// sample.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "開始\n";
__int64 b = 0x0;
char a[30];
cin >> a;
for(int c = 0;c < strlen(a);c++ ){
b = b + a[c];
b = b * b;
//printf("%I64d8",b);
cout << b << "\n";
//ここでbが9桁以上なら先頭から8桁までをbに入れたい。
//b が 1234567890 なら b に 12345678までを入れたい。
}
cout << "終り\n";
return 0;
}
dosから入力した文字を16進数として二乗し、9桁以上なら先頭から8桁を
残し、この結果と次の文字の16進数を足し合わせて二乗するというような
ものを作りたいのですが、ここからどうやればいいのか困っています。
入門書の最初に文字列の配列のことがかかれていましたので
bの__int64型をchar型配列に入れられれば配列の数から桁数を
操作できると考えてchar d[30] = (char) b;
などといろいろ他にもやってみたのですが色々なエラーがでて
頭がゴチャゴチャになって解決できません。
sample.cpp(15): warning C4018: '<' : signed と unsigned の数値を比較しようとしました。
等です。どのようにしたらよいかアドバイスいただけないでしょうか。お願いします。
>>711-712 それってVisualCなの?
DOSプロミングのスレがあったような
もしくはCか?
>>713 レスありがとうございます。
開発環境はVisual Studio.NETの中のVC++です。
本もVC++の入門書です。
perlとmysql、アセンブラの経験は少々あるのですが
c関係はまったくありません。
最初はまだコントロールボックスなどを作っていろいろしてみたりではなく
文法的なところから学びたいと思ってdosで動くような簡単なものから
やっています。
>>711 strlenを使ってるのならその数字が桁数だろうから
その
a = strlen(b);
a = a - 8;
c = 1;
for(i=0;i<a; i+){
c = c * 10;
}
bを数字に置き換えて
d = b / c;
で
d が8桁になるんじゃね
違ったらゴメン
while( b>=100000000 ) {
b /= 10;
}
a[8] = '\0';
int b = atoi(a);
719 :
デフォルトの名無しさん:04/11/08 14:39:48
if(name=="")って書くと、'const char [1]' から 'TCHAR [256]'
に変換できません。
と怒られます。nameがTCHARです。
charは == が使えないんでしたっけ?どうすればいいのか教えてください
_T("")
721 :
デフォルトの名無しさん:04/11/08 14:59:02
教えてください。
VC6++ windows2000で、
#include <fstream.h>
void main( void ){
ofstream fp;
fp.open( "test.txt", ios::out);
__int64 a;
a=9223372036854775807;
cout << a <<endl;
fp << a << endl;
}
とやると、
error C2593: 'operator <<' があいまいです。
とエラーになってしまいます。
cout << とか
fp << を使うにはどうすればよいかおしえてください。
>>721 お前は大学の数学の授業で小学校の算数の質問するか?
2ちゃんねる=大学
724 :
デフォルトの名無しさん:04/11/08 15:21:48
cout << (int)a <<endl;
fp << (int)a << endl;
727 :
デフォルトの名無しさん:04/11/08 15:38:18
cout << _i64toa(a,buf,10) <<endl;
fp << _i64toa(a,buf,10) << endl;
728 :
デフォルトの名無しさん:04/11/08 15:38:39
エディットコントロールに文字が入ってるかどうか、
もしくは何文字入ってるか調べる関数はありますか?
GetWindowTextLength
730 :
sage:04/11/08 15:43:59
ありますますます。
あります
732 :
デフォルトの名無しさん:04/11/08 16:29:05
VC7 です.
スレッド内の処理のところで
ブレークポイントを置いて,
そこにひっかけようとすると
VS ごと固まるんですが,これは仕様なんですか?
Visual C++6.0 にいきなり挑戦は大丈夫でしょうか?
今少しやってるんですけど意味が全然分かりましぇん。
734 :
デフォルトの名無しさん:04/11/08 17:23:51
初歩的なことですいません。テキストを読み上げるサンプルプログラムを
外部dllを利用してVC++.NETで作っています。
win関連はMSDNライブラリーを参照することで関数の書き方と意味が
分かりますが、外部dll内の関数の書き方と意味がわかりません。
(例:数字の読み上げを実行する関数)
それらの関数や定義は、どこかのリソースに記述されているもの
なのでしょうか。Cの基礎は学習しましたがVCは購入してから
マニュアル半分で使っているので・・。
先輩方すいませんが教えてください。
>>733 VisualC++はソフト名
VisualC++という言語はないが、VisualC++関連の書籍はある
その書籍は大体WindowsAPIに関しての話
WindowsAPIに触れるなら最低C言語、できればC++を理解していないと
まともにやりたいことはできん
>>734 dllが含まれてたものに*.hはなかった?
VC++向けの本でAPIやってるのは少数派だよ・・・・。
MFCか…^^;
まぁどっちにしろC/C++言語理解せんと無理
ビルド回数をバージョン情報用のダイアログに表示したいのですが
ビルド回数の取得はどうやったら良いのでしょうか?
今の所、リリースビルドする前に手動でビルド回数を書き換え
ています。面倒なので、それを自動化したいです。
>>735 そうですか。ありがとうございます。どれくらいCの勉強すればいいんでしょうか?C言語の入門書1冊読んだぐらいでは甘すぎますよね?
>>741 漏れは
C->C++->MFC->WinAPI
を薦める
C++の入れる場所はもう少し後でも構わんが
C言語の入門1冊がどの程度か知らないけど
完全に理解できたのなら進めなくもない
けど、実際「言語」の理解だけじゃ難しいと思うので、不十分だと思う
>>743 APIよりMFCの方が入門じゃねぇの?
745 :
685:04/11/08 19:32:27
>>710 こうやって見たけど、動作は変わらないです。なんか俺場違いな気がしてきた。
こういうのはネットワーク関連で聞くべきかな。
UINT CHctestwin2View::Thread_byoga(LPVOID pParm)
{
while(TRUE){
Sleep(1000);
((CHctestwin2View*)pParm)->InvalidateRect(NULL);
((CHctestwin2View*)pParm)->UpdateWindow();
}
return 0;
}
しかし、Visual C++6.0を始めたばかりですとか言う人多いけど、
販売されなくなってから結構経つのに何で?
オークションとかで買っているのか?
747 :
デフォルトの名無しさん:04/11/08 20:15:08
VC++6.0・SDKで質問です。
タブコントロールにツールチップをつけるとき、
TOOLINFO構造体のuIdメンバはどう設定すればいいのでしょうか。
ボタンのようにIDを指定するわけにもいかず、立往生しています。
ゴミとまでは言わないが、学習用途には向かない。
隠蔽されすぎて混乱するだけだろう。
俺的には
C -> C++ -> WinAPI -> ..... -> MFC
MFCはツール製作用に限定した方が無難かも知れない
そういう話ではなく
Visual Studio「6.0」がなぜいまさら出回ってるのか
という話なのでは?
ってか、
>激安で買えるVisual Stdio.NET theSpoke Disc.8
Stdio… 職業病ですか?w
752 :
デフォルトの名無しさん:04/11/08 20:54:10
一度あきらめたんだろうね。
ちょっと調べた限りじゃ2003のほうが容易に(ny
2003に乗り換えた人から貰ったとか
>>756 何かと思ったらシングルクォートが2つ続いているのね。
でもそれ、コンパイル通らないような…
>>719がやりたいのは name=='\0' かな?
758 :
685:04/11/09 00:32:14
別のスレで聞いてみるわ
if(strcmp(name,"")==0)
開発環境win2000,VC++5.0です。
早速ですが質問です。
TransparentBlt()関数が定義されていない識別子として認識されます。
関数名で検索したところ、「wingdi.hと、msimg32.libが必要」
ということが分かりました。
さらに「msimg32.lib」で検索し
プロジェクト→設定→リンク→オブジェクト/ライブラリモジュール
に追記すれば良いと分かりました。実際に
オブジェクト/ライブラリモジュールの欄の末尾に半角スペースを挟んでmsimg32.libと追記し、
#include <wingdi.h>
の一文を、
#include <windows.h>
の次に記述したのですがうまくいきません。
解決法が有りましたら教えてください。
そういうときはな、wingdi.hを開いてTransparentBltを検索するんじゃ。
するとその見つかった上のほうに、#if (WINVER >= 0x0400)
ってあるからWINVERを0x400以上にしてやればOKなんじゃ。
ご指摘の通り、wingdi.h内に以下のような部分がありました。
#if(WINVER >= 0x0500)
…
#define EMR_TRANSPARENTBLT 116
…
#endif /* WINVER >= 0x0500 */
MSDNを参照して
#define WINVER 0x500
という記述を先頭に加えることより、WINVERを0x0500以上にしたのですが
認識がされません。
そもそも、ヘッダ内で#if(WINVER >= 0x0500)
となっている時点でおかしいということでしょうか?
>>746 漏れは2年前にプログラムの練習しようとして二日ぐらいで挫折。
24歳無職で就職への足がかりのためになればと近日再開。
765 :
デフォルトの名無しさん:04/11/09 09:56:28
if( )の中に条件を二つ入れたいのですがどう書けばいいんでしょうか?
>>765 御免。ルール違反だが空行省略して書く。
formula
::= logical_and_expression logical_or_list
logical_or_list
::= logical_or *
logical_or
::= "||" logical_and_expression
logical_and_expression
::= logical_not_expression logical_and_list
logical_and_list
::= logical_and *
logical_and
::= "&&" logical_not_expression
logical_not_expression
::= primary_formula
||= logical_not
logical_not
::= "!" primary_formula
primary_formula
::= formula_element
||= "(" formula ")"
formula_element
::= relational_expression
||= "True"
||= "False"
馬鹿ばっかり
>>764 2年前ってすでに6.0は店に並んでなかったような・・・・。
>>768 そりゃ店によるだろ
今でもあるところにはあるよ
初歩的な質問ですいません。
VisualStudio.net2003(VisualC++,net)で作ったアプリをビルドして98/ME系マシーンで動かしたら
文字化けしてしまったのですが、どうやったら解決できますか?
マネージ拡張ってところは「いいえ」にして、98/MEでも動くようになったんですが・・・
文字化けが・・文字セットっての弄って直るかと思ったら、状況変わらず・・・
98/Meだと動かないと思って諦めたほうがいいんですか?
>>770 ・どういうアプリを作ったのか?
・それのどこの部分が化けているのか?
を具体的に
>>771 えっと、ダイアログベース?で、ダイアログのエディットボックスに数字を入力して、その合計を計算するアプリです。
早く言えば計算機ですね。
その計算ってボタンが文字化けしてるみたいです。
英語は問題なく表示されてるそうです。
日本語文字が、アラビア語みたいな文字になる言ってたかな・・
日本語対応のランタイムがない悪寒。
774 :
デフォルトの名無しさん:04/11/09 16:23:39
初歩的な質問で申し訳ありません。
データベース(Oracle)との連携アプリを作りたいのですが、
VC++でどのようにやればよいのかわからずにおります。
書籍などをあたるとUnix系のものは見かけるのですが、
VC++ではどうやるのかがわかりません。
開発環境は
OS:Windows XP Soft:VisualC++.NET
DataBase:Oracle9i
となります。
※実際に作るのは、C++ではなくCが中心となります。
やりたい処理は、
Oracleへの値の挿入と検索で
挿入、検索はプログラム内でFileから読み込んだものや
Oracleから検索した値をもとに実行します。
>>774 Oracleには優秀な教材が揃っているので是非教育を受けてください。
#つーか、個人なら検索し捲くれ、法人なら金を惜しむな。
>>772 1.リソースビューからそのダイアログを開く
2.ダイアログの外枠を選択してプロパティを開く
3.フォントの設定を確認する
or
必要なDLL等が実行環境にコピーされているか確認する
フォントは
Font(size) MS Shell Dlg(8)
UseSystemFont True
になってます。
必要DLLってなんだろ・・・
DLLが無かったら起動できない気もしますが。
>777
MFCのランタイムには日本語対応のものとそうでないものとがあったはず。
後者でも動くが文字化けする。
>>779 そこのoo4oの記事は古いような…
まぁいいか。
実はユニコードという落ちでは
782 :
デフォルトの名無しさん:04/11/09 18:08:59
VC6.0、MFCで開発を行っております。
レジストリでIMEをローマ字入力からかな入力に
書き換えたのですが有効になってくれません。
マシンを再起動すれば有効になります。
再起動しなくてもレジストリを有効にする
いい方法はありませんでしょうか?
>>782 >VC6.0、MFCで開発を行っております。
何の関係があるんだw
というよりスレ違い言うかなんでレジストリを弄る必要があるんだ?w
>>782 レジストリは有効なんだろ
プログラムが読みに行ってないだけ
IMEが必用もないのにレジストリ読んでたら遅すぎて使い物にならんだろ
785 :
デフォルトの名無しさん:04/11/09 18:35:26
>>783 >>784 VC始めて1ヶ月なので馬鹿な事いってたらすみません。
最初はImmSetConversionStatus関数でIME設定を行おうと
していたのですが、IME2000では不可能らしいのです。
ttp://forums.belution.com/ja/vc/000/170/31.shtml それでどうしようかと悩んでいたのですが、レジストリに
IMEを設定する個所がありました。
HKEY_CURRENT_USER\Software\Microsoft\Windows\
CurrentVersion\Ime\Japan\IMEJP\MSIME
(上記レジストリはWin2000Proの自分の環境です)
ここを変更するとIMEが変更されるのですが、有効に
するには再起動が必要になりました。
それでマシンを再起動しなくてもレジストリを
有効にする手段はないかと思い質問した次第です。
長文すみません。よくわかってないので馬鹿な質問で
気分を害されたのであれば重ねておわびします。
786 :
sage:04/11/09 19:14:43
ImmSetConversionStatusはIME2000で使える。
コードは猫でもを見てくれ。
787 :
デフォルトの名無しさん:04/11/09 19:24:33
IMEで設定したいのはひらがなや全角カタカナなどの
入力モードではなく、IMEプロパティの以下の項目なのです。
●IMEプロパティ→全般→キー/ローマ字/色設定→キー設定・色設定
MS-IME97⇔MS-IME2000⇔ATOK⇔VJE⇔WX
●IMEプロパティ→全般→入力設定→ローマ字入力/かな入力
ローマ字入力⇔かな入力
●IMEプロパティ→辞書/学習→学習
なし⇔最適⇔過剰
上記項目もImmSetConversionStatus関数から
設定できるのでしょうか?
自分で碌に調べもしないで質問する辺り、先ほどの謝罪も誠意のない逃げ口上に見えるな。
789 :
デフォルトの名無しさん:04/11/09 20:09:34
OnInitialUpdate()で
this->GetClientRect(&pRect);
int cright = pRect.right;
int cbottom = pRect.bottom;
pWnd.Create(_T("STATIC"), "Hello", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL,
CRect(cright / 4, 0, cright, cbottom), this, 1234);
として、OnSize()で
CView::OnSize(nType, cx, cy);
// Resize list to fill the whole view.
pWnd.MoveWindow (cx / 4, 0, cx, cy);
としているのですが、スクロールバーつきのpWndが
親ウインドウのサイズをかえてもサイズがかわりません。
他にもOnSizeをOnDrawにかえてみたりしてみたのですが、だめでした。
どうしたらいいでしょうか?
スクロールバーなんですが、
sitileh.cbSize = sizeof(SCROLLINFO);
sitileh.fMask = SIF_POS | SIF_RANGE | SIF_PAGE | SIF_DISABLENOSCROLL;
sitileh.nMin = 0;
sitileh.nMax = 27;
sitileh.nPage = 16;
sitileh.nPos = 0;
SetScrollInfo(hTEWnd, SB_HORZ, &sitileh, TRUE);
このようにセットして使ってるのですが、つまみの大きさと移動が
nMax - nPageとなってしまっているようなのです。
更にスクロールが終了してるように見えて更に下方にnMax分進めてしまえます。
普通にnMax分のスクロール量で、nPage飛ばせるようにしたいのですがどこかで記述を間違えているのでしょうか?
原因が分かる方いたら教えてください。
全部で27行で1ページに16行表示できるから
あと11行分スクロールできる。
>>791 なるほど、1ページの表示行数ってことだったんですか。
単なるスキップ量だと思ってました。
スクロールが終わる位置に来てもスクロールしてたのは後の判定でnMaxだけでやっていたため、
一番下にスクロールした後もカウントしてしまったようです。
判定部分もnMax-nPageと直した後は正常に動きました。
どうもありがとうございました。
793 :
しん:04/11/11 14:33:39
しんと申します。
VisualC++6.0を使っているのですが
エクセルみたいなコントロールの仕方を教えてください。
795 :
しん:04/11/11 14:50:54
ごめんなさい。
エクセルみたいなセルがたくさんあるコントロールを貼り付けたいのです。
エディットコントロールをたくさん貼り付けるとめんどくさいです。
>>795 コンポーネント一覧にFlexGridがあるはずだからそれでもはっつけてください。
いっそ、Excelコンポーネントをはっつけてもいいかもしれません。
CEdit::Createを使用し、エディットコントロール作成しようと思うのですが
どこのセクションのソースに記述するばいいのでしょうか?
VC++6を使ってます。
MFCのダイアログスタイルでまず画面作成し、
ソースでCEdit::Createでコントロールを作成したいのです。
左側(ソースツリー)にクラスやソースなどたくさんありますが
初期時にコントロールを作成するファイルはどれにあたるのでしょうか?
>>798 <プロジェクト名>Dlg.{cpp,h}
800 :
質問です:04/11/11 23:04:19
すいません、質問です。
計算した結果がvisualC++だど、exeで出力されるんですが、それを ○○.dat ファイルにしてPCに保存するにはどうすればよいでしょうか?
802 :
800:04/11/11 23:10:10
レスありがとうございます。
それはwindows上でmuleの環境を作らないといけないということでしょうか?
ん?exeで出力?
>>800 [プロジェクト]-[設定]-[リンク]-[出力名]
ん?計算した結果?
>>802 リダイレクトはWIN標準でおっけー。
だが、貴方の知りたい答えかどうかは極めて怪しい。
807 :
800:04/11/11 23:18:48
できました
ありがとうございます。
でも文字化けしてるんですが、何かいいファイル拡張子はないでしょうか?
windows2000です
コンパイラの出力は、テキストエディタでは読めないことが多いです。
申し訳ないですが、掲示板での説明でわかってもらえる自信がありません。
誰か身近な人に聞いてみる事をおすすめします。
c言語で関数を作っておいて、
コマンドボタンを押したらその関数を実行
こんな感じのことはできますよね?
cのコードをVCでデバッグってどうやったらできるんでしょうか?
コマンドラインからコンパイルはできるのですが、
デバッグの仕方が分からなくて困っています。
検索用語だけでもいいので教えていただけませんか?
811 :
デフォルトの名無しさん:04/11/11 23:25:53
>>808 そうですか、丁寧なレスありがとうございました。
助かります。
812 :
デフォルトの名無しさん:04/11/11 23:28:49
MDIの子ウインドウ(FormView)の***View.cppのOnInitialUpdate()で
TCHAR ChildName[] = TEXT("WavView");
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = AfxWndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = ChildName;
if (!RegisterClass(&wndclass))
{
MessageBox(NULL, TEXT("This Program reauires Windows NT!"),
MB_ICONERROR);
}
pWnd.Create(ChildName, "Hello", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL,
CRect(cright / 3, 0, cright, cbottom), this, 1234);
pWnd.ShowWindow(SW_SHOW);
としているのですが、フォームヴューの中に新しいウインドウが描写されません。
どこがまちがっているのでしょうか?
>812
レス来ませんね。申し訳ないけど、私も試してみる気になれないです。
MSDSでWNDCLASSとRegisterClass()を調べれば(もう一回じっくり読めば)
解決する問題だからスルーされてるのだと思います。
> MSDS
( ´д)ヒソ(´д`)ヒソ(д` )
815 :
デフォルトの名無しさん:04/11/12 05:01:28
>>815 ・よくそんなきもい配色で使えるな。
・キャプチャ画像を縮小したら見せたいものも見えないだろうが、ボケ。
・TabCtrlのプロパティで境界線か何かに余計なチェック入れただろ。判らなきゃ一度消して作り直せ。
Windowsはなぜキモイ配色が出来るようになっているのだろう?
世の中には色を正確に把握出来ない人もいる。そういう人たちには
色の違いでボタンの状態を示したり、テキストを強調したりしても
色の違いは認識出来ないので意味が無いことになる。そこで
マイクロソフト社はWindowsロゴを搭載するソフトウェア製品は、
キモイ配色が可能であることが必須にしており、また、これを
満たしていないものはWindowsロゴを取得することが出来ない。
そして色の変更だけで情報の変更を伝えるのではなく、それ以外の情報、
例えば、テキストならフォントの大きさを変えるなど、も併用して
色の認識を正確に出来ない人たちにもきちんと伝わるようにすることを
推奨しているのである。
820 :
デフォルトの名無しさん:04/11/12 15:00:15
ITEM name;
このときのITEMってなんですか?
821 :
デフォルトの名無しさん:04/11/12 15:00:54
型名
822 :
デフォルトの名無しさん:04/11/12 15:08:34
820です。
>>821さんありがとうございます。
int や char とはどう違うんですか?
>>822=820
マルチすなや。
ITEMという名前の型がどこかで定義されているはずだからマニュアルでもなんでも好きなもん検索しろ。
VisualStudio使っているなら簡単に定義が見つかるはずだ。
つまり、816=819は人間としての配慮が欠如しているということ
は?
826 :
デフォルトの名無しさん:04/11/12 18:55:20
%dと%fはどう違うのですか?
10進法と小数点だよ。
>>826 %dはint型(整数)。10進数での入出力。
%fはprintf系ではdouble型、scanf系ではfloat型(共に浮動小数点数)。
830 :
デフォルトの名無しさん:04/11/12 19:17:23
>>827 ありがとうございます。
>>828 なるほど、よくわかりました。
>>829 はい、そうです。大学で勉強してます。
まだ始めたばかりでよく分からないんです・・・
スレ違いでしたか。すいません。
大学でVisual C++使うのか・・・
うちの学科じゃLinux+gccだよ
しかも使いこなせてない。
832 :
デフォルトの名無しさん:04/11/12 21:25:28
>>823 ウルセー死ねや。テメェは消えてろ。ノータリンが。
VCは、そこそこの値段でまずまず速いからね。
理化学系で速度が要求される場合はVC多いんじゃないかな。
835 :
デフォルトの名無しさん:04/11/13 00:10:52
まずまず?
なんだそりゃ。
Vitamin C++
840 :
デフォルトの名無しさん:04/11/13 01:17:26
すいません。
つい最近VC++.NETを使い始めた者ですが、ビルドの際に
c:\VC++.NET\Chapter1\HelloWorld\HelloWorld.cpp(9): fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
蒸気のようなメッセージが出てコンパイルが通りません。なんともインすと^るしなおして衣類ので環境のもんぢとも思えないのですがどのような原因が考えられるでしょうか?
ご教授ください よろしくお願いいたします。
841 :
840:04/11/13 01:18:12
ソースは以下のとおりです
#include<iostram>
using namespace std;
int maint()
{
cout << "HelloWoeld" <<endl;
return0;
}
>>840 お前の書いた文から判断すると
誤字脱字だな
>>841 #include "stdafx.h"
844 :
デフォルトの名無しさん:04/11/13 01:23:13
#include<iostream> ←訂正いたしましたが結果は変わりませんでした
using namespace std;
int maint()
{
cout << "HelloWoeld!" <<endl;
return 0; ←左辺も訂正
}
845 :
デフォルトの名無しさん:04/11/13 01:28:53
#include<iostream>
#include "stdafx.h"
using namespace std;
int maint()
{
cout << "HelloWoeld!" <<endl;
return 0;
}
指摘していただいたとおりに上記の用にコードを区j見直すと
"stld" このの名前をもつ名前空間は存在しません c:\VC++.NET.Chapter\HelloWorld\HelloWorld.cpp
"cout" このの名前をもつ名前空間は存在しません c:\VC++.NET.Chapter\HelloWorld\HelloWorld.cpp
"endl" このの名前をもつ名前空間は存在しません c:\VC++.NET.Chapter\HelloWorld\HelloWorld.cpp
上記のようなエラーメッセージが出てきました 多少進展したと考えてよいのでしょうか
上起3点の指摘についてもアドバイスいただけたりと思えます
maint ?
847 :
デフォルトの名無しさん:04/11/13 01:33:17
#include<iostream>
#include "stdafx.h"
using namespace std;
int main()
{
cout << "HelloWorld!" <<endl;
return 0;
}
mainに変更いたしましたが結果は何も変わりませんでした。
848 :
デフォルトの名無しさん:04/11/13 01:34:27
846さんの環境ではこのコードで通りますでしょうか
その点についても教えていただけたらと思います。
849 :
840:04/11/13 01:44:16
関数が通らないということは何らかのincludeが足りないのでしょうか。
ご教授いただけら太思います。
>>845 > "stld" このの名前をもつ名前空間は存在しません c:\VC++.NET.Chapter\HelloWorld\HelloWorld.cpp
stld?
#include "stdafx.h"
#include <iostream>
>>847 お前向いてないからあきらめろ
話にならん
853 :
デフォルトの名無しさん:04/11/13 10:09:48
HelloWorld!すら作れないなんて初心者にもなれないよ
最低限のC++の基礎ぐらいは知らないとVisualC++は無理
>>847 Cの入門書の本買って1から勉強した方がいいよ。
858 :
デフォルトの名無しさん:04/11/13 11:18:11
>>813 ありがとうございます。
MSDNで調べて、AfxRegisterWndClassをつかうとうまくいきました。
エディットコントロールを利用して、スロットマシーンを作ったんですが
数字が、1発で表示されてします。ドラムが回ってるような、感じに1 5 6 4 2 6っとドラムが回ってるような
感じのパチンコの中央のスロットみたいなのを予定してるんですが
for ( i = 1; i < 10; j++) {
乱数処理(rand)
その乱数を表示(SetDlgItemInt)
}
こういう処理を書いたんですが、回ってるように見えないんですが、どうしたらいいですか?
for ( i = 1; i < 最大値; i++) {
i を表示(SetDlgItemInt)
}
乱数処理(rand)
for ( i = 1; i < その乱数; i++) {
iを表示(SetDlgItemInt)
}
あと、ループ内にSleepとかを置いてスピードを調整させた方がいいと思う。
dosのプログラムじゃないんだからさ
イベントが発生するまで更新されないよ
そいう自前のループで表示までやりたかったら
描画も自分でやらなきゃダメ
でもループの中で描画すると、ループ回してる間は他の操作受け付けなくなるな
>>865 プログラミング言語SCHEME エンジンによるマルチタスキング
を参照。
自分でマルチスレッド実装すれば?
>>866 あくまでループの中でできるか念のため確認してみただけ。
普通はそんなことやらない。
数字を切り替えただけじゃ「回転」にならないだろ?
1ピクセルごとにスクロールさせろや
嫌です
>>868 お前には聞いてないしwwwwwww
消えろやwwwwwwwwwwww
Shell_NotifyIconのバルーンチップにURLリンクとか画像とか表示することはできますか?
VC6です。
Visual C++ で、Windows API入門に書いてあることを勉強しています。
勉強をする上で困っています。ご助力お願いします。
根本的なのですが、Windows Message? でしたっけ
WM_LBUTTONUPとか、WM_QUITとかの一覧がある場所は、
MSDNライブラリ、あるいは、Visual Studioのどこなのでしょう?
1週間調べたのですが、いまだに一覧がどこにあるのかわかりません。
マウスイベントを捕らえたいのですが、メッセージの名前を知らないので、
どのようなメッセージがあるのか、知りたいのです。
c言語で作ったコードをvisual c++で流用することは可能でしょうか?
たとえば
int heikin(int a, int b)
{
return (a+b)/2;
}
こんな関数の引数をテキストボックスa,bからもらって
ラベルcに数値として表示する
↑こんな感じのことをcのコードをそのまま使ってしたいのです。
>>872 簡単にみつかるけど
どこ探したの?
ぜひ知りたい
>>872 VC5/6系で言えばClassWizardとか関数追加するダイアログの中で
適切なメッセージのリストが出るし、簡易説明も付いてくるんだけど
そういうのとは違うのかな?
ヽ(`Д´)ノ
金出せば買えるだろうけど豚に真珠、猫に小判だな
>>873ですが、MSDNでの検索ワードを教えていただけませんか?
↑cのコードをそのまま使ってこんな感じのことをしたいのです。
>>872 WM_LBUTTONUP
まぎらわしいな
>>873 わかるまでCかC++の入門書でも読んでろ
で・・・、検索ワードは教えてくれないんですか?
>>WM LBUTTONUP
WM_LBUTTONUP
アンダースコアが抜けている
MSDN Home > MSDN Library > Win32 and COM Development > User Interface > Windows User Interface > User Input > Mouse Input
お礼が遅くなりましたが、
みなさま、お答えいただいて、ありがとうございます。
891さん ありがとうございます。
891さんにご指摘いただいた場所は、ツリー表示で
MSDN Home > MSDN Library > Win32 and COM Development > User Interface >
Windows User Experience > Windows Management > Windows User Interface >
User Input > Mouse Input
にて、確認できました。 また、英語版でしたら、単純に調べることが出来るようですね。
日本語版しか調べていなかったのは浅はかでした。
これからは、本家のMSDNライブラリで調べるようにします。ありがとうございました。
>>875 「クラスビュー」「関数の追加」 のキーワードありがとうございました。
賢くなりました。
(私は C++/MFCではなく、C/W32API の方式で書いていたようです)
連続投稿しすぎで申し訳ありません。これで消えます。
卒業おめでとう
871ですが、Shell_NotifyIconのバルーンチップではテキスト以外は無理でしょうか?
このスレのみんな|||||||||||||||||||||||873||||||||||||||||||||||||||||このスレのみんな
破ることのできない厚い壁がある。
902 :
デフォルトの名無しさん:04/11/14 16:28:21
Xp+VC6で,Cのプログラムをデバックしています。
ある時から次のようなメッセージが出てDOS窓が閉じてしまいます。
なにがおこっているのでしょうか?
*** ここから ***
'ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'D:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
スレッド 0xC08 終了、終了コード 18 (0x12)。
プログラム hoge.exe' はコード 18 (0x12) で終了しました。
>>903 なんでやねん。
>>902 情報不足。
DOS窓が閉じなかった頃と閉じるようになってからで何が変わってるか調べてみ。
>1 :デフォルトの名無しさん :04/10/16 07:44:25
>Visual C++入門者・初心者からの質問を、
>お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
>>904 Windowsのプログラムを作ろうとしてなくても
Visual C++使い始めたら入門者・初心者なのか?
Visual C++でもコンソールアプリは作れるようになっているから
Windowsのプログラムを作ろうとしてなくても
Visual C++使い始めたら入門者・初心者で良いのでは?
Visual C++で作ったコンソールアプリは
DOSモード(≠DOS窓)で起動したときには動きません。
>>906 そういうのはC/C++のスレの方がにぎわってるから、
コンソールアプリ初心者ならそっちの方がいいだろう。
ここに来ても期待はずれだと思う。
>>908 32ビットのコンパイラはみんなそう。
Visual C++に限ったことじゃない
>>902は
DOS窓で動かしたいだけなんでしょ?
913 :
902:04/11/14 17:36:15
C言語の勉強で開発環境として、VC6を使っています。
main.c(){
printf("Hello\n");
}
をmain.cの名前で作成しそれをVC6で開き、コンパイル実行していました。
上手くいってたときは、
"Please Any key"
みたいなメッセージが出て、何かキーを押すとDOS窓が閉じていました。
それがあるときから、さっき書いたメッセージが出力されていきなり閉じるんです。
>>913 それってデバッグモードとリリースモードの動作の違いのことを言ってるだけじゃん
コード全部晒せ
918 :
902,913:04/11/14 17:51:20
>>915 そうです。黒い画面のことです。
てっきり、DOS窓だと思っていたんですが。
動きは正常
きみのエラーは
> 'ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
> 'D:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
> スレッド 0xC08 終了、終了コード 18 (0x12)。
> プログラム hoge.exe' はコード 18 (0x12) で終了しました。
なんだから、プログラム中にバグがあるだけ。
>>912さん
どうやったらできるんでしょうか?
MSDNの検索ワードを教えてください。
。・゚・(ノД`)ヽどっちを信じたらいいのかわからないよ
どっちも信じるな
どっちも信じろ
>>873 質問が曖昧だから、できるともできないともいえる。
何がしたいのかをもっとちゃんと説明できない限り、このまま玩具扱いだよ。
あんまいじめるな。w
heikinの引数a,bは整数型になっているが、これはテキストボックスから
取得した文字列を整数に直したものと見なして良いのか?
No->煎ってよし
Yes->ラベルcにセットする値はreturnの戻り値なんだな?
No->市ね
Yes->ラベルと言っているからにはVC++.NETでマネージドなんだな?
Yes->.NETの質問スレに行け
No->回答
char buf[20];
itoa(heikin(a,b),buf,10);
static->SetWindowText((LPCTSTR)buf);
のような感じ
>>929さん私のドッペルゲンガーですか?
質問したかったことは
>>928さんが上三行でおっしゃっていることであってます。
>>928さんのレスを見た感じでは
テキストボックスに入力された値を配列ssに渡す方法もありそうなので、
txbx_aに数字を入力->vcのなんらかの関数を使ってtxbx_aのasciiを配列ss_aに渡す
->num_a=atoi(ss);
Cコードで書いた色々な処理・・・
こんな風にすればCのコードをそのまま使えそうですね。
ありがとうございました。
これで心置きなくCの関数を作ることができます。
まあコンパイラは通るだろうから後はその関数までの道程をどうするかだよ。
>>930 テキストボックスと直接整数をやり取りするGet/SetDlgItemIntもよろしく。
934 :
デフォルトの名無しさん:04/11/15 09:21:21
質問させてください。VC++.netの_rotl、_rotl64、_rotr_rotr64のヘルプを見たのですが
例
/* ROT.C: This program shifts values
* to rotate an integer.
*/
#include <stdlib.h>
#include <stdio.h>
void main( void )
{
unsigned val = 0x0fd93;
__int64 val2 = 0x0101010101010101;
printf( "0x%4.4x rotated left three times is 0x%4.4x\n",
val, _rotl( val, 3 ) );
printf( "0x%4.4x rotated right four times is 0x%4.4x\n",
val, _rotr( val, 4 ) );
printf( "%I64x rotated left three times is %I64x\n",
val2, _rotl64( val2, 3 ) );
printf( "%I64x rotated right four times is %I64x\n",
val2, _rotr64( val2, 4 ) );
}
出力
0xfd93 rotated left three times is 0x7ec98
0xfd93 rotated right four times is 0x30000fd9
101010101010101 rotated left three times is 808080808080808
101010101010101 rotated right four times is 1010101010101010
こう書いています。
なんとかわからないながらも必死こいて
0xfd93 rotated left three times is 0x7ec98
は理解しました。
0xfd93が二進数で
1111110110010011 これに3回0を継ぎ足すと
1111110110010011000 で 16進数で0x7ec98になります。
ですが
0xfd93 rotated right four times is 0x30000fd9
について全然理解できません。
0x30000fd9 は 2進数で
110000000000000000111111011001
ですが、何処をどうしたらこんな2進数になるのかがわかりません。
どなたか教えていただけないでしょうか。よろしくお願いします。
>>935 shiftじゃなく、rotateだから
右へあふれた桁(キャリー)が左から現れる。
110000000000000000111111011001
↓
111000000000000000011111101100
↓
011100000000000000001111110110
そのうち shift のときの alithmetic と logical の違いも質問されそう
変なやつがいるな
アセンブラのスレにでも消えろよ
>>936 レスありがとうございます。
0xfd93 rotated right four times is 0x30000fd9
についてですがローテートライトだと
0xfd93 = 1111110110010011
これが
00001111110110010011
こうなるのではないかと考えたのです。
unsigned int型が0〜4294967295
ですから桁あふれしているようにもみえませんし・・
0xfd93 = 1111110110010011
を4ビットローテートして何故
0x30000fd9 = 110000000000000000111111011001
こんな桁外れというかわけわかんない2進数になるんでしょうか?
936さんがレスしてくださっている意味がわかんなくてもう一度細かく書いてみました。
・・何かとてつもなくバカな事かいてるような気が。
>>939 何か勘違いしてない?
確かに初期状態が32bitで
11111101100100110000000000000000
なら、RRで
00001111110110010011000000000000
になるけど、32bitで0xfd93は
00000000000000001111110110010011
だから、RRで
00110000000000000000111111011001
になるってだけの話
>>940 あ!そう言うことか。やっとわかりました。ありがとうございます。
頭に _ がついてる関数は環境依存で非推奨だろ。
使い方も知らない初心者が無理に使う必用ない。
もはや手段が目的
子供電話相談室ですよー
わかったかな
はい次のお友達どうぞ
大人にはくだらない質問でも優しく答えてあげてね。
すみません、子供ってどうやってうまれてくるの?
おしえてください
>>948 コウノトリが卵を運んでくるんだよー にゃんにゃん
教えて上げたので受講料**万円、いますぐ払い込んでください。
952 :
デフォルトの名無しさん:04/11/16 10:58:05
vc++.netにて入門書を片手に先ずは簡単なDOSプログラムなんかを
作って動かしているのですがデータ型でどうしても躓いてしまいます。
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
cout << "開始 ユーザー名を入力してください。\n";
char name[30];
int eax = 0,ecx = 0;
cin >> name;
for(int i = 0;name[i] != '\n';i++){
ecx = name[i] ^ 0x3dcb7c5b;
ecx = ecx + 0x6fd76ef5;
ecx = _lrotl(ecx,7);
eax = eax + ecx;
}
int pushEax = eax;
const char *seed = "S1AC4QM5EGOU8IKZRG6WXPD7NT9BV2HJ";
//char result;
for(i = 0;eax > 0;i++){
eax = eax + 0x0f;
char result = *(seed+eax);
*result++;
}
cout << "終り\n";
return 0;
}
よくもわからず、こんなものを書いたりするのですがコンパイルエラーで起こられてしまいます。
違うデータ型への変換というかキャストというんでしょうか、それがうまく理解できていないようです。
具体的には数字型を文字列型に代入したりその逆をしようとしたりするときにコンパイルエラーがでます。
他の人の全然違うプログラムのソースなんかを見ると型変換を意識することなく書かれていたりするのですが
インクルードするライブラリを変えるとうまくいったりするのでしょうか?
4をみて猫でもわかるプログラミングを見たのですが違うデータ型への変換のことがうまくわかりません。
perlを少しかじった事があるのですが変な勘違いや癖がついてしまっているのでしょうか・・
どなたか助言頂ければ幸いです。
どっから突っ込みいれたもんか。
またこいつか
頭おかしいからほっとけよ
いつもバグに困っていた会社に勤めている仲間がやって来ました。
以前、そこのプログラムを見たとき、「えっ、これがC!」というようなリストだったので、
「こんなもの、さっさと捨てれば、問題は解決するよ」
と忠告してあげたのですが、その親切な忠告を無視して、汚いCをいじり回していました。
当然、バグに悩まされ続けていたようでした。
よくもわからず、こんなものを書いたりするのですがコンパイルエラーで起こられてしまいます。
違うデータ型への変換というかキャストというんでしょうか、それがうまく理解できていないようです。
具体的には数字型を文字列型に代入したりその逆をしようとしたりするときにコンパイルエラーがでます。
他の人の全然違うプログラムのソースなんかを見ると型変換を意識することなく書かれていたりするのですが
インクルードするライブラリを変えるとうまくいったりするのでしょうか?
4をみて猫でもわかるプログラミングを見たのですが違うデータ型への変換のことがうまくわかりません。
perlを少しかじった事があるのですが変な勘違いや癖がついてしまっているのでしょうか・・
どなたか助言頂ければ幸いです。
当然のことですが、C言語のプログラムを書く以上、
C言語の作法から極度に逸脱してしまうと、
世のCプログラマから一切相手にされなくなります。
「村八分」になってしまいます。
自分の作ったプログラムは永久に自分しか見ないような場合には、
どんなコーディングをしようと勝手ですが、
仕事で作るプログラムでは、そんな身勝手は許されません。
みなさんレスありがとうござます。
これからは改めてさせて頂き、出直してきます。
なんで初心者質問スレを必死に荒らすんだ?
言語習得に挫折した恨みとか?
>>960 私のことでしょうか?申し訳ありません。荒らすつもりは無かったのですが心得違いをしていてようです。
今後このようなことのない様に気をつけます。
>>961 このスレに張り付いて一々レス監視しなくていいから基礎から勉強しなおしてこいや。
「よくもわからず」書くんじゃなくて、理解してから書くようにすればこんな頓珍漢なことしないだろ。
VC++6.0でWinsockを使ったソケット通信プログラム(クライアント/サーバ両方)を作成しようとしています。
TCPサーバの作成パターンをいくつか考えたのでどれが安定して動作しそうかなど意見を下さい。
▼条件と環境
・作成したTCPサーバ、TCPクライアントは24時間あげっぱなし
・TCPクライアントとコネクション確立しっぱなし
・接続、切断はボタンをダイアログに実装して行うかコマンドプロンプトから入力してできるようにする。
・非同期通信に対応する(selectかWSAAsyncSelectを使用する)
・実装形式は自由(COM、EXE、DLLなんでもOK)
・MFCを使用しなくてはならない
・Winsock2.0
・OSはWindows XP
▼選んでください
(1) TCPサーバをMFC AppWizardで作成する(起動はEXEダブクリ、インターフェースはダイアログ)
(2) TCPサーバをConsole Applicationで作成する(起動はEXEダブクリ、インターフェースもコマンドライン)
(3) TCPサーバをATLプロジェクトで作成する(サービスとして動作、OS起動時に自動実行)
(4) それ以外(作り方を教えてください)
>・MFCを使用しなくてはならない
じゃあ(1)しかないだろ。
>>965 テメェ馬鹿か。すべて他人にやってもらおうとスンナ糞が。
テメェで考えろボケ。そして二度とここにクンな。
テメェのドタマには脳みそがないんか?オッ?ワレ!
>>967 すみません間違いました。
MFCは使用しなくてOKです。
▼条件と環境
・MFCを使用しなくてもいい
じゃあ好きなの選んで。安定とかおまえの腕次第だから。
ID無いのをいいことに勝手に人の名前語って
マルチ捏造するなよ
>>972 だったら余計なコテハン名乗るなよ。
名乗るくらいならトリップつけろや。
で、お勧めは自分の馴れてる方法で開発。兎に角デバッグを済ませてしまうこと。
それから改めてモデルを決めても基本部分は無駄にはならないだろうから。
Visual C++ NETでWinsock使ってみたいのだが
参照の追加でWS2_32.dllを追加しようとしても
エラーが発生しましたとかいって、できない。
dllが違うのでしょうか?ちなみにXPです。
うそーん。そんな事無いと思う出。
今試しにVC++6.0 でやってみたら、
ビルド時にこんなこと言われました。
リンク中...
LINK : fatal error LNK1104: ファイル "ws2_32.dll" を開けません。
link.exe の実行エラー
なんかおかしいみたいです
ws2_32.dllのバージョンが古いのかも。
5.1.2600.0
でもどうやったら新しくできるのか・・
>>966 予告キタ──────────────
タイ────────────────ホ
ws2_32.libじゃ。
こっちかー。libで追加できました。。。ありがとうございました。
でもビルドすると相変わらずLNK1120 外部参照未解決が出てまう・・
ライブラリ使ったことないのか?
ちゃんとヘッダをインクルードせれ。
982 :
デフォルトの名無しさん:04/11/16 18:19:23
その例だったらm_MyEditをダイアログのメンバ変数として使ってる。
// TODO: 特別な初期化を行う時はこの場所に追加してください。
m_MyEdit.SubclassDlgItem(IDC_MY_EDIT,this);//この行を追加
Visual C++6.0で席の予約システムみたいなのを作っています。
プログラムを勉強し始めて7日目です。
ダイアログベースで作って、Staticをクリックすると氏名を入力する
ウインドを呼び出し、それに氏名を入力してOKを押すとStaticに氏名
が入るというものです。
DDX変数を使うのかな?というのは判るのですがそのデータの受け渡し
GetとかSetとか?どう書けばいいのでしょうか?