■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

VisualC++相談室 【7】
751 名前:730 :02/05/19 14:17
>750
やってみます。。
ありがとうございます。

752 名前:730 :02/05/19 15:42
すみません、やっぱりだめです。昨日からずっとやってます。
void CTestDlg::OnOK()
{
CListBox* c=(CListBox*)GetDlgItem(IDC_LIST2);
///////ファイルtestを開く/////////
if((RRdata = fopen("test.txt","r")) == NULL ){
c->InsertString(-1,"OPEN失敗");
}
else{ c->InsertString(-1,"OPEN成功");
}
}これでやはりNULLを返しているようで、OPEN失敗が出ます。( ´Д⊂ヽ
こんな単純なプログラムが動かなくて、というか、ファイルすら開けなくて、もう泣きそうです。しにたいです。
どうすればいいんでしょうか?fopenを使わないほうがいいんでしょうか?またそれはどんな方法がありますでしょうか?
なんでもいいので、アドバイスください。

753 名前:730 :02/05/19 15:43
↓あ、ちなみにこれは外で宣言しています。
FILE *RRdata;

754 名前:デフォルトの名無しさん :02/05/19 15:44
実はtest.txtが無いとか

755 名前:730 :02/05/19 15:47
debug
→〜〜.exe
→test.txt
と、exeとおなじフォルダに入れてあります。
リムーバブルディスク(E:)MO上でやってるんですが、それが原因でしょうか?
ちょっと移動させてやってみます。。


756 名前:デフォルトの名無しさん :02/05/19 15:48
test.txtが無いんでないの?
アクセスできる場所にファイルを置いてフルパスで指定することを試してみては。
fopen("C:\\test.txt","r")
みたく。

757 名前:デフォルトの名無しさん :02/05/19 15:48
実はリリースモードになっている罠
絶対パスで指定してみるべし。

758 名前:756 :02/05/19 15:49
激しくかぶたーよ

759 名前:デフォルトの名無しさん :02/05/19 15:49
>>755
exeと同じフォルダじゃなくて、
ソースファイルとかと同じフォルダにしてみそ。

760 名前:730@ティンカス :02/05/19 15:50
あっ!
今朝方、こうなったら一からやり直そうと思って、
あたらしくつくったんですが、そのときにtext.txtを移動させるのをわすれてますた。
で、コピーしてやってみたら
で・き・た!

それにしても、昨日までのプログラムと本質的には変わってないはずなのに、どうしてできなかったんだろ。
しまいには、コメント行にエラーがでるようなパルプンテぶりでした。
ともあれ、もうすこし修行をつみます。厨に付き合っていただき、ありがとうございました!×2

761 名前:730@ティンカス :02/05/19 15:52
>>756
フルパスの指定の仕方はこうやるんですね。
後学のためにメモっときます。(ほんとなにもわからんのですハイ)
>>759
これも覚えておきます。

とにかくありがとうございました!
ま、これから・・なんですが。藁

762 名前:デフォルトの名無しさん :02/05/19 15:56
カレントフォルダに期待するのはやめたほうが無難だーね。

763 名前:名無しさん@Emacs :02/05/19 23:52
Unix 使いが VC やらさせられとります。どなたか愛の手を・・・

ファイルを新規作成で追加してそれをコンパイルしようとすると
「プリコンパイルヘッダが無い」とか言って「不正なEOFを検出」とか言われるん
ですが、なんとかならんでしょうか。
# 今手元に環境が無いんでメッセージがウロ覚えです。スマソ。
一応今はファイルを追加するたんびにプロジェクトの設定か何かでプリコンパ
イルヘッダは使用しないようにすれば良い事は分かったのですが、追加のたび
にこんな事やらにゃいかんのですか?何か他に解決策があったら教えて下さい。
教えてクンでスマソ


764 名前:デフォルトの名無しさん :02/05/20 00:12
>>763
最初からプリコンパイルヘッダのない空のプロジェクト作成してファイルを付け加えていくか、
cppのファイルすべての先頭に、#include "stdafx.h"を付けるべし。


765 名前:デフォルトの名無しさん :02/05/20 00:15
>>763
プロジェクトごとプリコンパイル済みヘッダーを使用しない設定にすれ。
設定ダイアログの左のツリーで適用範囲を選んでからやってみれ。

それか、ソースファイルの頭に#include"stdafx.h"(デフォルトの場合)
を追加してみるといいことがあるかも。

766 名前:デフォルトの名無しさん :02/05/20 00:16
かぶった・・・

767 名前:763 :02/05/20 00:39
>>764,765
そーゆー事ですか。ありがとうございます。
stdafx.h をincludeする方で行かせて頂きます。

いやー統合環境って分かんないですわ・・・(汗)。
きっと慣れれば色々自動的にやってくれる便利な環境なんでしょうね。
とにかくありがとうございました。

768 名前:デフォルトの名無しさん :02/05/20 01:00
フォルダとかファイルとかのアイコンリソースをWindowsで使われてるやつを
そのままパクリたいんですけど、どこからインポートしたら良いんですか?
探してるんですけど、なかなか見つからない。

769 名前:デフォルトの名無しさん :02/05/20 01:02
適当になんかのショートカットアイコン作ってそのアイコン変更で
見たらええよ

770 名前:デフォルトの名無しさん :02/05/20 04:57
最近になってSTLを触りはじめたんですが、
std::auto_ptrや各種コンテナのiteratorでIntelliSenceのメンバ表示機能が働きません。
こういうものですか?

771 名前:デフォルトの名無しさん :02/05/20 05:15
そういうものです

772 名前:770 :02/05/20 05:23
>>771
ほ・・・本当は何かウマーイ方法があったりするんでしょう・・・?ドキドキ(・∀・)

773 名前:デフォルトの名無しさん :02/05/20 05:33
ありません、あきらめてください。
IntelliSenseにテンプレートを展開してくれる様な便利な機能は備わってません

774 名前:770 :02/05/20 05:43
ウワァァァァーーン(´Д⊂)











アキラメ マスタヽ(´∀`)ノ

775 名前:デフォルトの名無しさん :02/05/20 07:40
漏れはそれが原因でauto_ptr(やboost)使うのさけてる。

776 名前:デフォルトの名無しさん :02/05/20 12:13
>>775
そいつは本末転倒っぽい気が…

(VC.NET だとできたりするのかなぁ)

777 名前:デフォルトの名無しさん :02/05/20 17:21
>>776
俺もVC++.NETでの対応に期待してたんだけど、やっぱり駄目みたい。
クラスインスタンス生成時の例外によるクリーンアップは、スマートポインタを使わずに、
コンストラクタでヌル初期化、メンバ関数で実初期化って、ごまかしてる・・・。
デストラクタをいちいち書かないといけないのが面倒。

778 名前:708 :02/05/20 20:16
この間fopenに関する質問をした者です.
あれから,フルパスで指定するなどして,openはエラー無く出来るようになったんですが,その内容を確認するところでまた詰まっています.以下のプログラムで,
FILE *buff;
int RRdata[300];

void CMyadDlg::OnButton6()
{
CListBox* c=(CListBox*)GetDlgItem(IDC_LIST2);

if((dataall = fopen("C:\\test.txt","r")) == NULL)
c->InsertString(-1,"File opne error");

for (int i=0;i<3000;i++){
if (fscanf(buff,"%lf",&data[i]) == EOF )break;

CString datatext;
datatext.Format("%05d",data[i]);
c->InsertString(-1,datatext);
}
【test.txtの内容】{
671
673
638
}
【結果】リストボックスに
00000
00000
00000
と表示されてしまいます.なぜでしょうか.
671
673
638  ←と表示されることを期待しているのですが..
これもいろいろとためしてはみたのですが,
例えばアドレスを表示させようとしてみると,
フフフフ・とかわけのわからん文字が出力されます.これはこんなものですか?

779 名前:デフォルトの名無しさん :02/05/20 20:16
何か書くたびに裏で常にC++のソース解析が入ってるのかと思うと寒気がするぞ。
今の . -> :: 等が入力されるときにメンバーを列挙する仕様だけで十分

780 名前:708 :02/05/20 20:18
すみません,プログラムに間違いがありました.
FILE *buff;
int RRdata[300];

void CMyadDlg::OnButton6()
{
CListBox* c=(CListBox*)GetDlgItem(IDC_LIST2);

if((buff = fopen("C:\\test.txt","r")) == NULL)
c->InsertString(-1,"File open error");

for (int i=0;i<3000;i++){
if (fscanf(buff,"%lf",&data[i]) == EOF )break;

CString datatext;
datatext.Format("%05d",data[i]);
c->InsertString(-1,datatext);
}
↑これを使っています.

781 名前:デフォルトの名無しさん :02/05/20 20:25
data[i]の型がdoubleならFormat()の%05dが
intならfscan()の%lfが間違ってる。

782 名前:708 :02/05/20 20:27
FILE *buff;
int data[300];
また間違えてました.
int data[i];
なので,fscanfの%lfをかえてやってみます.

783 名前:708 :02/05/20 20:29
>>781
できました!
いろんなとこ換えていろんなこと試したのに,どうして気づかなかったんだろう..
ほんと,感謝です!
あっさり解決したので,感動しますた.(´д`)

これさえ出来れば,解析用のソースはあるので,
軌道にのりそうです.ありがとうございます!

784 名前:デフォルトの名無しさん :02/05/20 20:38
>>773
ん? 展開できないのはtempleteではなくてtypedefだと思うが。
まぁどっちにしろ使えないのは一緒だけど。

785 名前:デフォルトの名無しさん :02/05/20 21:02
コンソールアプリですが、コンパイル、ビルド、実行しても
結果がうまく表示されません。
というのは、表示されるんですが、一瞬でウィンドウが閉じてしまいます。
なんでですか?

786 名前:デフォルトの名無しさん :02/05/20 21:25
実行が終わったらすぐ閉じるのが普通。
出力結果が見たいならDOS窓から実行してあげなさい。
ちなみに、リダイレクトを使えば出力全部も見れるよ。

787 名前:デフォルトの名無しさん :02/05/20 21:27
終了する前にgetch()を呼ぶ

788 名前:デフォルトの名無しさん :02/05/20 21:31
hello worldアプリケーションでプロジェクト作成したら
最後に<Press any key to continue>でるけど、漏れのだけ?

789 名前:785 :02/05/20 21:39
>>786
学校でやってたんですが、周りの人はウィンドウ表示が継続されてましたよ?

790 名前:デフォルトの名無しさん :02/05/20 21:40
789
先生の言うことはよく聞きましょう。

791 名前:デフォルトの名無しさん :02/05/20 21:41
デバッグ実行は速攻消える
デバッグ無しで実行は消えない
もし消えるならどこか腐ってる

792 名前:デフォルトの名無しさん :02/05/20 23:30
c形式の関数の実装に
extern "C"
ってやらなかったらどうなるの?


793 名前:デフォルトの名無しさん :02/05/20 23:43
てめぇ、伝家の宝刀抜くぞ

794 名前:デフォルトの名無しさん :02/05/20 23:50
>>792
C++形式になる。
多分モジュールにしてCから呼ぼうとした時にリンカが困るかと。


795 名前:yamamoto :02/05/21 00:21
既出かもしれませんが(突っ込まないで〜)、WindowsXPでVC6入れてる人
いますか?
コンパイルとかは普通に通るんですけど、実行すると固まります。
ウインドウが出るまでF10、F11で、ステップ動作させると、後は
問題なく動くんです。
exeも2000とかで実行すると問題ないんです。
2000マシンでは一度もこういった事なかったんですが、XPプリインストール
マシンに変えてから、こうなってしまいました。
検索したら、やはり他の掲示板でも同じような状況の方いるようなのですが
解決方法がわかりません。
わかる方いましたら、ご伝授ください。

WindowsXP+VisualStudio6エンタ
です
よろしくお願いします。


796 名前:紅孔雀さん :02/05/21 05:06
今、日付を管理するクラス(DATE)を作ってい、「 << 」をオーバーロードして、
DATE date("2000/01/01 00:00:00"); //クラス内では年月日などをint型変数に入れている
cout << date;
とすると「 2000/01/01 00:00:00 」と出力されるようにしたいのですが、分からない事があ
るので、分かる方おりましたらお教え下さい。ソースは最小になるように変更しています。

#include <iostream>
using namespace std;
class PIYO {
int hoge;
public :
friend ostream &operator << (ostream &stream,PIYO &piyo);
};
ostream &operator << (ostream &stream,PIYO &piyo) {
stream << piyo.hoge; //←
return stream;
}

こうすると「 //← 」の位置で「privateメンバにアクセスできません」というエラーが
出てしまいます。「 friend 」を付けているのでプライベートメンバにアクセスできるはず
だと思うのですが。また次のようにクラス内で宣言と定義を同時に行ってしまえばなぜかエ
ラーは出ません。

class PIYO {
int hoge;
public :
friend ostream &operator << (ostream &stream,PIYO &piyo) {
stream << piyo.hoge;
return stream;
}
};

使用している開発環境は VisualC++6.0 Standard Edition で、サービスパックは入れてい
ません。質問したい内容をまとめると「最初のソースでなぜフレンドにしているのにプライ
ベートメンバにアクセスできないのか」、「最後のソースのようにするとなぜエラーが出な
くなるのか」ということです。C++については「独習C++」という本を読んだ程度で全
ての機能については知りません。

797 名前:デフォルトの名無しさん :02/05/21 05:19
>サービスパックは入れていません

とりあえずイレロ。話はそれからだ。

798 名前:デフォルトの名無しさん :02/05/21 05:24
サービスパック入れろ
家じゃそのソース通ったぞ

799 名前:紅孔雀さん :02/05/21 05:39
>デフォルトの名無しさん方
どうもお騒がせしました。早速サービスパックダウンロードしに行ってきます。
m(__)m

800 名前:カミーゆ :02/05/21 07:51
サービスパックってネカフェでダウンロードできるらか?

801 名前:808 :02/05/21 10:21
Pentiumバグ命令(FIST/FISTP)を使うかどうかを設定できるチェックボックス
がどこかにあったと思うのですが、いくら探しても見つかりません。
どなたか教えてください。

ちなみにSP5をあててます。

802 名前:808 :02/05/21 10:21
age

803 名前:808 :02/05/21 10:22
さげちゃった・・・。

804 名前:デフォルトの名無しさん :02/05/21 11:21
MSDNの

Pentium FDIV のチェック
Pentium プロセッサのバグ対策
Pentium FDIV のバグ チェック

を調べると割り算とかTANとかしか出て来ないから、コンパイラはFISTを回避した
コードしか吐かないようになってるんじゃないですか?(多分)

805 名前:808 :02/05/21 11:30
いや、確かにあったんです。
「Pentium〜なんとか〜を回避する」とかいう名前のチェックボックスでした。
しかし見つからない。思い違いなのかな・・・。

806 名前:デフォルトの名無しさん :02/05/21 11:37
すみません。技術力のないPGです。お願いします。

SDIプログラムからもう一つウインドウを開かなければならなくなりました。
ダイアログなら簡単ですが、お客さんの要望で、「ウインドウ」に
しなければなりません。

掲示板に書き込めるほど単純ではないと思うのですが、
流れとか使うAPIとか、あるいは書籍やWebサイトなど、
ヒントだけでも教えていただけないでしょうか?

VC++6.0/MFCを使っていますが、SDK式でもヒントになります。

よろしくお願いいたします。

807 名前:デフォルトの名無しさん :02/05/21 11:38
CreateWindowEx

808 名前:デフォルトの名無しさん :02/05/21 11:44
MFCなら、
CCreateContext
LoadFrame
あたりを参照。


809 名前:デフォルトの名無しさん :02/05/21 13:35
もーどれすだいやろーぐ では いかんのか?

810 名前:デフォルトの名無しさん :02/05/21 14:44
>>807 >>808
ありがとうございます。がんばって検索中です。

>>809
モードレスダイアログを普通のウインドウっぽく見せられるんでしょうか?
それならその方が...氏にそうす。

811 名前:デフォルトの名無しさん :02/05/21 15:01
810
素直にMDIにするか、もう1個アプリケーションを作った方が楽だと思われ

普通のウインド???
 →クライアント領域とタイトルバーシステム領域がある→CViewかその子分


812 名前:デフォルトの名無しさん :02/05/21 16:13
もう一つのウインドウがそのアプリケーションと同じ物なのか、
それとも、全く別のウインドウなのかによって答えがずいぶん変わる

813 名前:708 :02/05/21 16:30
コンパイル,ビルドが通り,実行すると
Debug assertion failed!という
エラーが出て,デバッグをしようとすると,
..\VC98\MFC\SRC\STREX.CPP
のウインドウが開き,
・・・
case 'p':
va_arg(argList, void*);
nItemLen = 32;
nItemLen = max(nItemLen, nWidth+nPrecision);
break;

// no output
case 'n':
va_arg(argList, int*);
break;

default:
→ ASSERT(FALSE); // unknown formatting option
}
}

// adjust nMaxLen for output nItemLen
nMaxLen += nItemLen;
default:
・・・
上記の→のところで,エラーを吐いている模様です.
こんなエラーにどなたか心当たりのある方いらっしゃいますか?

814 名前:デフォルトの名無しさん :02/05/21 16:37
自分で書いたコードのどこで発生したか特定しないと

815 名前:デフォルトの名無しさん :02/05/21 16:38
>>810
新しくウインドウを開くのは、LoadFrameに適切なパラメータを
与えればすぐできると思うけど、そのまえに仕様を深く考えてみたかい?
新しくウインドウを開くと言う事は、モーダルじゃないって事。新しい
ウインドウとは無関係に、元のウインドウのクローズボタンを押されると
言う事だよ。
一応MFCにはCanCloseFrameとか、色々なサービスは用意されているけど、
この点で矛盾が無いように、コーディングの前によく検討する事をお勧め
するよ。

816 名前:デフォルトの名無しさん :02/05/21 16:39
813
晒すべコードは、ちみの Format();の引数だと思われ。

817 名前:デフォルトの名無しさん :02/05/21 17:41
すいません。動的割り当てがうまくいかないので教えてください。
char *a;
if (a != 0) {
delete [] a;
}
a = new char[10];
と書いたのです。(MFC内で書いたのですが)
すると、コンパイルエラーは出ないのですが、deleteの部分で
実行中にエラーが出ます。
教えてください。

818 名前:デフォルトの名無しさん :02/05/21 17:55
char * a;
a = new char[10];
・・・
delete a;

char * b = new char[10];
・・・
delete b;

char (*c)[10] = new char[5][10];
・・・
delete[] c;
のどれかでしょう。

819 名前:デフォルトの名無しさん :02/05/21 18:01
a = NULL;
if(a != NULL)
 delete [] a;
a = new char[10];


820 名前:デフォルトの名無しさん :02/05/21 18:15
有難うございます。

821 名前:708 :02/05/21 18:34
>>816
どうしてわかるんですか!!ありがとうございます.
原因は,
一箇所,
〜〜.Format( %l , double );
となっていました.doubleを%lに格納しようとしたためのようです.
どうもありがとうございました.

822 名前:デフォルトの名無しさん :02/05/21 18:35
>>821
>>816はスーパーハカーだから。

823 名前:デフォルトの名無しさん :02/05/21 19:12
はじめまして、今日からVC++6.0を始めたものなのですが
質問させてください

ダイアログ型アプリケーションをAppWizardで作成して、そこに
ボタンを配置しました。
そのボタンをClassWizardでクラスを追加するところまで着ました。

そしてメンバ関数「OnButton1」のコード編集をすると言う状態です。

void CTestDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください

}

ここにボタンが押されたときのコードを追加したいのですが、よくわからないのです

やりたいことは、指定したエクセルなどのファイルをエクセルで開くということです
(ボタン一発でファイルを開きたいです)

c:\hoge\excel.exe \\fileserver\hoge\hoge.xls

このような感じのコマンドをボタン押したら実行できるコードはどのような関数を使
ったらよいのでしょう?

そのほかスマートなやり方などあれば御教授お願いします

824 名前:デフォルトの名無しさん :02/05/21 19:17
ふつー、xlsファイルに対してShellExecute。

825 名前:デフォルトの名無しさん :02/05/21 19:28
全部2chで質問してマスターするつもりなのかな・・・

826 名前:823 :02/05/21 19:48
>>824
ありがとう!!
ShellExecuteをキーワードにいろいろ探したら見つかりました

HINSTANCE hInst = ShellExecute(NULL,"open",
"ファイルの場所",NULL,NULL,SW_SHOWNORMAL);

感謝してます


>>825
そのつもりは無いんだけど、そう思われても仕方ないですね
これからもっと勉強します

827 名前:810 :02/05/21 21:09
>>815
ありがとうございます。
新しく開くウインドウそのものは、(今のところ)データ表示だけです。
(だからダイアログでもいいわけですが。;;)

おっしゃるようにCFrameWndオブジェクトをnewで生成し、LoadFrameやって、
ShowWindow、UpdataWindowで表示できました。

>ウインドウとは無関係に、元のウインドウのクローズボタンを押されると 言う事だよ。
ご指摘ありがとうございます。大モトのウインドウの終了時にdeleteしてやろうと思っています。

あんまり聞いてしまって申し訳ないと思ってますが、もし、上の方針がおかしければ、
教えてください。

今日は徹夜のようです。

828 名前:デフォルトの名無しさん :02/05/21 23:22
>>805
コンパイラオプションの /QI0f 、 /QIfdiv

829 名前:デフォルトの名無しさん :02/05/22 03:33
すいません、VC++初心者です。
初心者スレが埋もれているので、ここで質問させてください。

Debug版のバイナリはある程度安定して動くのですが、Release版のバイナリは
「不正な処理が」のエラーがでて動きません。

一般論としてどういう風にデバックすればよいでしょうか?

デバッガ上は下のようなメッセージが連発してます。
'xxx.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。

それからDebug版でも
 Warning: skipping non-radio button in group.
というようなエラーメッセージがでてます。

Release版が動かないことと、上の二つのメッセージは直接関係ないと思って
いるのですが、いかがでしょうか?


830 名前:デフォルトの名無しさん :02/05/22 06:49
直接関係はないが、そのうち不具合がでるかもね。

Releaseにしたら動かないのは、ほとんどが未初期化の変数を使っている場合。
コンパイラの警告メッセージで「未初期化の」ってでるはずだから、
それを無視せずにきちんと初期化してから使うようにしなさい。

たまーに、#pragma warningとかでその未初期化の警告を表示しないようにしてたりする
糞コードや、コンパイラの警告レベルをデフォルトよりも低く設定してるケースがあるので、
プロジェクトの共通インクルードファイル(stdafx.hみたいなの)やコンパイラの設定を
確認しなさい。

それでもダメなら、解放したメモリを再度アクセスしてないかとか、
配列のサイズを超えてアクセスしてないかとか見なければいけないが、
その前に、どういうエラーがでて止まるのかをきちんと調べなさい。

レアケースで、コンパイラの最適化バグというのもあるが、
それを疑うのは10年速い。


831 名前:デフォルトの名無しさん :02/05/22 10:39
VCでデータベース操作を試みて挫折した者です。
VBのデータコントロールなら分かります。
C#はデータベース操作に向いていますか?
C#買ったらWin98に対応していないことに気づき鬱になりました。
すれ違いですがマジレスしてください。


832 名前:デフォルトの名無しさん :02/05/22 10:48
なんでスレ違いでマジレスせにゃならんの?

833 名前:デフォルトの名無しさん :02/05/22 10:50
831
VC挫折する前にウィザード使わなかったのですか?
(VC6はもしかしてEnterpriseEditionでないと付いてないのかな?)
C#はWin9X不可なんですか。こりゃ使えん。

834 名前:デフォルトの名無しさん :02/05/22 10:52
>>831>>833
根も葉もない噂流すのやめてもらえるか?
VS.NETだけだよ。NT専用は。
Frameworkは98以降すべて対応。
SDKはしらん。

835 名前:デフォルトの名無しさん :02/05/22 10:57
>>834
横からなんだが、833には罪はないぞ

836 名前:デフォルトの名無しさん :02/05/22 10:58
>>834
実行環境、開発環境どっちのハナし?

837 名前:デフォルトの名無しさん :02/05/22 11:09
>>834
831にも罪は無い。よく読まないおまえが悪い。
831はOSを乗り換える事をお勧めする。

838 名前:デフォルトの名無しさん :02/05/22 11:33
かなり激しく過激な質問なんですけど、

VC++やってるんですよ今。
そんで秋には基本情報受けるんですよ。

まず基本のソースを覚えないといけないんですけど
Cって2タイプあるじゃん。
<stdio.h>→printf("猫好き");
<iostream.h>→cout<<"猫好き";

どっちをやるべき?、まあ両方やっとかないといけないだろうけど
まずはどっち?おレ的にprintの方だと思うんだけど。
基本情報の午後の試験でCを選らんだ場合、こっちがでるよね。
しかもVCやってると変数の表示とかでprintfは使うけどcoutなんか
使わないしさ。どっちがいいのだろうか?

839 名前:デフォルトの名無しさん :02/05/22 11:35
>>838
日本語か一般常識のどちらかだな

840 名前:デフォルトの名無しさん :02/05/22 11:40
streamを使うのは物好きかalgorithmと組み合わせるときだけ

841 名前:デフォルトの名無しさん :02/05/22 11:40
>>838
まずC入門書を一冊読んでください。

842 名前:デフォルトの名無しさん :02/05/22 11:45
>>840
さんきゅー
やっぱprintfだよね。
プログラムの勉強のHPいってもみんなprinfだしさ。

大学でcoutの方なんか教育してるんですよ。まあ一応覚えたけどさ。
もう見てらんない。VCやりだしたら全然使わないし。

843 名前:デフォルトの名無しさん :02/05/22 11:49
>>842
お前の発言が見て欄内。。。

844 名前:デフォルトの名無しさん :02/05/22 11:50
>>842
stream自体は結構使うが?
coutをcout << hogehoge;のように生で使うことがあまり無いだけ。
手で書いていくならprintfの方が体裁を整えやすいから。
とりあえず、<iostream.h>なんてやってるうちは覚えたウチに入らない

845 名前:デフォルトの名無しさん :02/05/22 12:50
>>842
あんたイタすぎるよ

846 名前:デフォルトの名無しさん :02/05/22 13:59
>>845
吉野家コピペの見すぎと思われ(w

847 名前:デフォルトの名無しさん :02/05/22 20:37
使用しているとMsdevが原因でMFC42.DLLにエラーが発生しました。
Msdevは終了します。

問題が解決しない場合は、コンピュータを再起動してください。


となりました。再起動してもまたエラーが発生してしまいました。
どうすればいいのですか?

848 名前:デフォルトの名無しさん :02/05/22 20:38
マルチした責任を取って首を吊ればいいと思う

849 名前:デフォルトの名無しさん :02/05/22 20:39
>>847
format c:

850 名前:親切な人 :02/05/22 20:40

ヤフーオークションで、凄い人気商品、発見!!!

「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。

851 名前:デフォルトの名無しさん :02/05/22 20:40
>>838

そもそも「C」にstreamなどない。


852 名前:デフォルトの名無しさん :02/05/22 20:41
>>849
氏ね

853 名前:デフォルトの名無しさん :02/05/22 21:25
初心者な質問ですみませんが。

エディットボックスや、リストボックスに書き込みできる文字数を
VBのプロパティのマックスレンジのように指定したいのですが、
(指定したケタ以上は入力を受け付けない)

VBのようにコード以外で設定する方法はあるでしょうか?
いまは余剰桁が入力されたら、その直前の状態に戻すやり方で
やっているので、動きの見た目がわるくて・・








854 名前:デフォルトの名無しさん :02/05/22 21:42
@かAのどちらか
@
・クラスウィザード[変数]でダイアログクラスに変数の追加
・エディットボックスをCString 型にして変数名を入力
・最大文字数を指定


A
メンバを追加
CString m_strEdit1;

DoDataExchange()で
DDX_Text(pDX, IDC_EDIT1, m_strEdit1);
DDV_MaxChars(pDX, m_strEdit1, 256);
を実行


855 名前:デフォルトの名無しさん :02/05/22 21:57
>>854
御教授ありがとうございます!
どちらも今後に使えそうな知識なので、
参考にさせてもいただきます

856 名前:デフォルトの名無しさん :02/05/22 22:02
エディットボックスの行間ピッチを変えるのはどうやったらいいんでしょう?


857 名前:デフォルトの名無しさん :02/05/22 23:51
ディスプレイを斜め上から見ればピッチはちじまるぞ?

858 名前:デフォルトの名無しさん :02/05/23 00:08
行間のあるフォントを選んどきませう

859 名前:デフォルトの名無しさん :02/05/23 00:15
>>858 フォントはMS Pゴシック 12ポイントと決定しちゃってるんです・・

860 名前:デフォルトの名無しさん :02/05/23 00:26
試しに聞くけど、なんで行間のピッチを変えたいわけ?

861 名前:デフォルトの名無しさん :02/05/23 00:39
>>860 IEのピッチに合わせたいのです

862 名前:730 :02/05/23 02:54
質問内容はCなんですが、適当な(答えてくれそうな)Cの相談室が見当たらず、なおかつスレ立てるまでもない質問はここでのスレで相手にされなかったので、
こちらでおねがいしようと思います。
23┓
21┃→series一回目
24┃
22┃┓
23┃┃→series二回目
23┃┃  ・
22┃┃  ・


というようなintが改行で仕切られた3万行くらいの長〜いファイルがあり,それをalldataに開いています.
そこから100行くらいのデータを切り取って
itijidataに格納しseries(ポインタ)として解析にぶちこむ.ということをしたいのですが,解析プログラムはわけ分からないのでいじれず,
とにかくポインタで指定したseriesをいれればいいのですが,
どうやら関数の中でseriesをいじっているらしく,上記のように3つずらして次の解析に使用すると前回使用した部分のデータの内容が変ってしまっています.
どのようにする方法があるでしょうか?
いちおう考えてやって見ているのが下記のコードなんですが,

FILE *alldata;
int *series,*data;
int itijidata[200];
alldata = fopen("C:\\test.txt","r");
for(int count = 0 ; count <ファイルの最後まで; count++){
//解析を行うごとにループし・・
data = &alldata[0] + count*3*sizeof(double);
//ここで3つずらして次の解析に必要な頭出しをしてるつもり・・
  for (int i=0 ;i<200 ;i++){
  if (fscanf(data,"%lf",&itijidata[scandata]) == EOF )break;
//ijitidata配列に格納し・・  
}
series = &itijidata[0];
〜ここでseriesを用いた解析をはさむ〜
}
質問は3つです.
◆ファイルからずらして配列に格納するにはどのような方法がありますか?
◆ずらした位置を指定して配列に格納させるようなfscanfに代わるものはありますか?
◆ファイルポインタで指定したものが変更されてしまうのですが,どのようにすればよいでしょう.
なんか混乱してきたので,多分上のプログラムはめちゃめちゃです.鬱
もうわけがわかりません.どなたかアドバイスをおねがいいらします.

863 名前:デフォルトの名無しさん :02/05/23 03:09
>〜ここでseriesを用いた解析をはさむ〜

そこをルーチンとして独立させるのが先かなあ。

864 名前:デフォルトの名無しさん :02/05/23 03:11
>>862が何言ってんだかわかんないのは漏れだけ?

865 名前:デフォルトの名無しさん :02/05/23 03:15
誰かが書いた解析ルーチンがあって、
そこにデータを食わすところを改良するというのをやってるんじゃないかな

866 名前:730 :02/05/23 03:22
>>864
どこらへんがわけわからんでしょうか?たしかに自分でもわけわからんと思いますが。。
基本的な質問は、
◆intがなn行もつづく長いファイルから100行程度抽出し解析、次に何行かずらして配列に格納し解析、という風にするにはどのような方法がありますか?
◆ずらした位置を指定して配列に格納させる(上述のようなファイルの中の何行目かを指定して抽出する)ようなfscanfに代わるものはありますか?
主にこれら2つというか、似たような質問なんですが。。。
3つめは配列を二つつくって回避します。

867 名前:730 :02/05/23 03:27
>>865
そうです。そうなんです。
だれかがつくってるだけあって、*seriesを渡す、という以外にはとてもいじれそうになくて、
そこでこっちで解析用のseriesを用意して、毎回送り出してやろう、という寸法なんですが、
で、解析には100行程度のデータが必要なんです。
なおかつ、元ある長〜いファイルの全域に渡って解析を行いたいのですが、
その長いふぁいるから100行程度を抽出→seriesとして解析にまわす。ということができずにいるんです。。これが質問1、2になります。
ちなみにseriesはint *series;で宣言してあります。ので余計やっかい。でもないのかな。。

seriesでポイントさせて渡すと、解析が終わったあとに、seriesの中身は改変されています。なので、エリアがかぶったデータは次の解析にはまわせません。
という問題もあります。これが質問3になります。

868 名前:730 :02/05/23 03:31
ちなみに>>862のプログラムはめちゃめちゃだと思います。とくに
data = &alldata[0] + count*3*sizeof(double);
//ここで3つずらして次の解析に必要な頭出しをしてるつもり・・から、、
  if (fscanf(data,"%lf",&itijidata[scandata]) == EOF )break;
このへんが(゚Д゚)ハァ?というかんじかと思います。(;^_^A

869 名前:デフォルトの名無しさん :02/05/23 03:32
どんなプログラムか想像つかないから適当に答えるけど、
seriesを解析するAnalyzeSeries(series);があってそれに渡すんでしょ?
解析するには一度に全部のデータが必要なんじゃないのか?

870 名前:730 :02/05/23 03:36
>>869
はい。
とりあえず、ひとつだけseries(100行程度のデータ)をわたして解析するということは成功したんですけど、
少しずつずらしてseries(100行程度のデータ)を渡し、連続で解析するというのができずにいます。

871 名前:デフォルトの名無しさん :02/05/23 03:38
AnalyzeSeries(series)を
AnalyzeSeries(PartOfSeries)*いくつか
にしたいってことだろ?
そんなもん、AnalyzSerieseがストリーム処理を受け付けないと無理じゃん

872 名前:デフォルトの名無しさん :02/05/23 03:46
宿題スレに近いものがあるな

873 名前:730 :02/05/23 03:49
  if (fscanf(data,"%lf",&itijidata[scandata]) == EOF )break;

まちがえてました。
  if (fscanf(data,"%lf",&itijidata[i]) == EOF )break;
です。

874 名前:730 :02/05/23 03:59
PartOf〜〜っていうのが分からないですが、
今、書いてみましたが。これでうごくのかな。今、家なので、ちょっと動作確認できないんですが。。
もっとスマートなやり方はないんだろうか。。
FILE *alldata;
int *series,*data,data[300000],kaisekiyou[100];
alldata = fopen("C:\\test.txt","r");

while(1){
for(int j=0;;j++){
if( fscanf(alldata, "%lf" ,&data[j]) == EOF ) break;
}

for (k=0 ;k<100; K++){
kaisekiyou[k] = data[i+k];
series = &kaisekiyou[0]
//とにかくここまでにseriesに解析用のデータを耳を揃えて提出すれば解析はやってくれる模様
【ここでseriesを使用している】

i++;
}
ちょっと明日これでやってみます。できたかも??

875 名前:デフォルトの名無しさん :02/05/23 04:01
data[300000]
おいおい

876 名前:デフォルトの名無しさん :02/05/23 04:02
一人デスマーチなのか?そうなのか?

877 名前:730 :02/05/23 04:08
>>875
そのくらいあるのれす。
なので、なんとか軽いコーディングをめざしたいのですが、上のような例だと
わりと重いですよね。

>>876
オナーニです。

878 名前:デフォルトの名無しさん :02/05/23 04:16
デカい配列はスタック上では無くヒープ上に取りませう。

879 名前:730 :02/05/23 04:24
>>878
・・・。うぅ。
がんばってしらべますです。ありがとうございます。

880 名前:829 :02/05/23 05:14
レス遅れました。
>>830
どうも親切に産休です。

やはり基本的なメモリの問題ですね。
++初体験なので、どういう初期化がされているのかわからなくて。
文字列代入できるようになってたり、異文化コミュニケーションです。
もらったキーワードを参考につぶしていくです。


881 名前:デフォルトの名無しさん :02/05/23 11:45
FILE*  alldata;
int   dammy_data;
int*  data;
int   kaisekiyou[100];
int   data_max;
int   data_num;
int   i;
int   kaisekiyou_num;
int   inc_value;

data_max = 300*1000;             // data の最大登録数 (30万行)
data_num = 0;                 // data に登録した数
data   = malloc(data_max*sizeof(int));   // メモリの確保
alldata  = fopen("C:\\test.txt" , "r");
while(fscanf(alldata , "%d" , &dammy_data) != EOF)
{
   if(data_num < data_max)
   {
      data[ data_num ] = dammy_data;
   }
   data_num++;               // インクリメント
}
fclose(alldata);
if(data_num > data_max)
{
   printf("配列数が足りね〜ぞ! 可及的速やかに %d 個用意しろ!\n" , data_num);
   free(data);               // メモリの破棄
   exit();                 // プログラム終了
   // data_num = data_max;         // exit() を使わずに継続するなら data_num を調整する必要あり
}
kaisekiyou_num = 100;            // 解析に必要な数
inc_value    = 10;            // ずらすサイズ
for(i=0 ; i<=data_num-kaisekiyou_num ; i+=inc_value)
{
   memcpy(kaisekiyou , data+i , sizeof(int)*kaisekiyou_num);     // 解析用メモリにコピー

   // 解析用の関数に kaisekiyou を渡せば計算するんじゃない?
}
free(data);                  // メモリの破棄


---------------------------------------------------------


fscanf あたりは自信無し。
改行って自動的に処理される?
fscanf なんて原始的な関数は学生時代に使ったきりで以降使用していないので良く分からん。


882 名前:デフォルトの名無しさん :02/05/23 12:24
畳み込みか相関か?
fscanfは空白文字(改行)が現れると次の非空白文字まで読み飛ばす。

883 名前:初心茶 :02/05/23 12:55
VC(SDK)でTABSTOPを実装する場合って、サブクラス化するしかないんですか?
あまりにも面倒だと思うんですけど…

WindowsアプリでTabStopが付いてないソフトなんてあまり見ないですよね。
標準の機能だと思うんだけど、実装するのに面倒なのってどうよ?
もしかしたら簡単に実装する方法ってあるんですか?

884 名前:デフォルトの名無しさん :02/05/23 12:57
IsDialogMessage

885 名前:初心茶 :02/05/23 13:07
>>884
サンクス。
俺は何を検索してたんだろう。鬱氏。
物理的に逝って来ます。

886 名前:デフォルトの名無しさん :02/05/23 13:42
256色のDIBに対して、TextOut使って文字列を描画しています。
その際、パレットの中から最も白に近い色で描画したいのです。
しかし、SetTextColorでRGB(0xFF, 0xFF, 0xFF)を指定しても
文字が黒くなってしまい、
Red*0.30 + Green*0.59 + Blue*0.11 の値が最も大きくなった
パレットの番号を代わりに指定してもやはり文字が黒くなってしまいます。

しかしSetTextColorの色指定に0や1や2などを指定すると別の色が出るんです。
もしかして256色の場合はパレット番号を指定するのかと
有り得ない考えを起こして、
試しにn番目のパレットのRGB値を確認しながら
SetTextColorの色指定にnを当てて文字列を描画、
という作業を暫く試してみたんですが、
当然ながらパレット番号とは無関係なようでした。

どうやったらスマートに思った通りの色(もしくはそれに近い色)で
文字列を描画出来るでしょうか。
御存知の方いらっしゃいましたら御教授御願いします。

887 名前:デフォルトの名無しさん :02/05/23 13:44
> Red*0.30 + Green*0.59 + Blue*0.11 の値が最も大きくなった
> パレットの番号を代わりに指定してもやはり文字が黒くなってしまいます。

> もしかして256色の場合はパレット番号を指定するのかと
> 有り得ない考えを起こして、

な、なんか話の展開がおかしいですね。
分かり難くなってしまってすみません。

888 名前:デフォルトの名無しさん :02/05/23 13:45
RealizePaletteしてる?

889 名前:デフォルトの名無しさん :02/05/23 13:47
>888
はい。しています。
自前で256色のBMPファイルを読み込む処理も入れているんですが、
画像は綺麗に出ているんです。

890 名前:デフォルトの名無しさん :02/05/23 13:49
ソース貼るべし

891 名前:886=887=889=自分 :02/05/23 13:56
物理パレット変更後は、
以下のようにして最も白に近いRGB値を持つパレット番号を算出しています。

  for (i = 0x00; i <= 0xFF; i++) {
    color =
      hb->lpRGB[i].rgbRed * 0.30 +
      hb->lpRGB[i].rgbGreen * 0.59 +
      hb->lpRGB[i].rgbBlue * 0.11;
    if (color > nwcolor) {
      nearwhite = i;
      nwcolor = color;
    }
  }
  FontColor = nearwhite;

そして文字列描画関数をこのようにして呼び出しています。

  SetTextColor(hb->hdcMem, FontColor);
  TextOut(hb->hdcMem, x, y, str, strlen(str));

hbというのは画像処理に使うデータをまとめている構造体です。

892 名前:デフォルトの名無しさん :02/05/23 14:02
>>891
その操作方法違うぞ。
もっとも輝度が高いパレットが選ばれるだけ

893 名前:886 :02/05/23 14:05
あ……やっぱ論理パレット見ないで
GetSystemPaletteEntry()で取得してからそれ見ないと駄目なのかな……


894 名前:デフォルトの名無しさん :02/05/23 14:06
SetTextColorはエラーを返してないのか?
GetTextColorで帰ってくる色を確認した?

895 名前:886 :02/05/23 14:11
>892
ああっ。そうなんでか。よく判らずやっていました。御指摘ありがとうございます。

でも黒になるというのはおかしいですよね。
それに、実際に算出された最も硬度が高いパレットのRGB値を見ると、
0xFF 0xFF 0xFFになっていたんです。

今思い付いたのですが、テキスト用にバッファを用意して、
一度ZeroMemoryか何かでゼロクリアしてから文字列を描画して、
それを自分でメインのバッファに貼り付ける、という手がありますね。
というかこれをやれば済む話ではあるんですが、
やっぱりスマートな方法は無いのかと……。
もしも解決法が判らなければこのバッファを使った方法を採ります。
お世話になった方々、ありがとうございました。

896 名前:デフォルトの名無しさん :02/05/23 14:15
>894
ぐあっ。確認していませんでした。
今大急ぎで調べると、SetTextColorに関しては
エラーを示すCLR_INVALIDは返していませんでした。
GetTextColorの方も試してみます。

897 名前:デフォルトの名無しさん :02/05/23 14:16
>>895
RGB(255, 255, 255)がある時はそうなるが、
127 255 64 < グリーン
127 127 127 < グレー
の2色を比較したときグリーンが選択される。

で、>>894は?

898 名前:886 :02/05/23 14:23
GetTextColorも試してみました。
エラーは返さず、SetTextColorで指定した値がそのまま帰ってきています。
パレット番号を与えた場合はパレット番号がそのまま戻ってきて、
RGB(0xFF,0xFF,0xFF)を与えた場合は0xFFFFFFが戻ってきました。

899 名前:デフォルトの名無しさん :02/05/23 14:32
パレットの選択手順は?
ウインドウとメモリDCに同じパレットを選択してる?
もしくは、ウインドウに選択した後にCreateCompatibleDCやってる?

900 名前:886 :02/05/23 14:36
>899
はい。CreateCompatibleDCを行っています。
他のパレット操作はきちんと成功しているのですが、
SetTextColorだけはどうすればいいのかわからなくて……。

901 名前:デフォルトの名無しさん :02/05/23 14:39
色選択はGDIが勝手にやるからRGB指定で良いはずなんだけどね。

902 名前:708 :02/05/23 15:48
>>881
ありがとうございます!
今,これで入れてやってみようとしているところです.

で,
data   = malloc(data_max*sizeof(int));   // メモリの確保
↑ここで,'=' : 'void *' から 'double *' に変換することはできません。という
エラーを吐くのですが..

903 名前:デフォルトの名無しさん :02/05/23 16:04
>902
data = (double *)malloc(data_max*sizeof(int));
ってキャストしなされ。

904 名前:708 :02/05/23 16:10
あっ!ありがとうございます!
その*がわかりませんでした。..

905 名前:886 :02/05/23 18:09
やっぱり>895で言ったテキスト用のバッファを使うやり方で解決しました。
指摘してくれた方々、ありがとうございました。

906 名前:デフォルトの名無しさん :02/05/23 20:16
すみません、853の問題の続きなのですが。
クラスウィザードの
CString系で作ったメンバに
文字数を設定して、エディットボックスはうまく文字数制限
出来たのですが、
コンボボックスだけどうしても制限が働いてくれません。
コードでは

DoDataExchange()  

DDX_CBString(pDX, IDC_EDIT1, m_Edit1);
DDV_MaxChars(pDX, m_Edit1, 20);

という形になっているのですが・・
他の周りでの設定なども必要なのでしょうか。

907 名前:デフォルトの名無しさん :02/05/23 20:28
コンボボックスは
DDX_CBString(pDX, IDC_COMBO1, m_combo1);
DDV_MaxChars(pDX, m_combo1, 20);
だけどウィザード使ったほうが楽です。

908 名前:906 :02/05/23 20:42
あ、すみませんさっき例、エディットのときのとかぶってたw
907さんのとおりコードは
DDX_CBString(pDX, IDC_COMBO1, m_combo1);
DDV_MaxChars(pDX, m_combo1, 20);
になっていて、
ウイザードで設定も試してみたのですが、
なぜか稼動しなくて。

907さんお返事ありがとうございました!

909 名前:デフォルトの名無しさん :02/05/23 20:46

おい、WinXP で CPU 使用率とかちゃんと取れてるか?
なぜかアプリが終了しねーぞ。

910 名前:時刻・日付について :02/05/23 21:41
12345678秒などというのを
〜年〜日〜時〜分〜秒または
〜y〜d〜h〜m〜sと変換するようなうまい関数はないでしょうか?
なければ、modでちくちくやるしかないんでしょうかね?

911 名前:デフォルトの名無しさん :02/05/23 21:45
ジョイスティックからの入力クラスを作りました
しかしDirectInputの入力データ取得はその関数が呼び出された時の
キーのデーターを取得するものなので、60fpsの場合に15ms以下の速さで
入力した場合にキーのデーターを取得できないため
とりあえず一度キーのデーターを取得する関数を
別スレッドから呼び出そうとしたのですが
エラーが出ます、別スレッドを作らないで
ゲームループの中で使用した場合はエラーは出ません。
3週間悩んでいるのですが分かりません、どうかお願いします

http://kobe.cool.ne.jp/solo2000/CInput.h
http://kobe.cool.ne.jp/solo2000/CInput.cpp
http://kobe.cool.ne.jp/solo2000/CInputControl.h
http://kobe.cool.ne.jp/solo2000/CInputControl.cpp

912 名前:デフォルトの名無しさん :02/05/23 21:57
DirectInputはスレッドセーフかどうか調べました?
(ゲ制板で聞くほうが・・・)


913 名前:デフォルトの名無しさん :02/05/23 22:03
>910
strftime、ってこと?

914 名前:時刻・日付について :02/05/23 23:15
ありがとうございます。
少し調べましたところctime()でできました。
お騒がせしました。もう少し調べてから質問することにします。

915 名前:デフォルトの名無しさん :02/05/23 23:16
editボックス内のデフォルト値ってどうやって設定するんですか?
打たなくても最初から書き込んであるやつです。編集しようと思えばできるってかんじの。

916 名前:デフォルトの名無しさん :02/05/23 23:22
SetWindowText使えばぁ

917 名前:デフォルトの名無しさん :02/05/23 23:36
CString value = 000;
((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowText(value);
このようにしたけど、IDC_EDIT1の窓には何にも表示されませんが・・・
なお↓これでもだめでした。
((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowText(000);
なにがいけないんでほう?


918 名前:デフォルトの名無しさん :02/05/23 23:39
それ以前にコンパイルできた?

919 名前:デフォルトの名無しさん :02/05/23 23:42
コンパイルは通りました。
というか、エラーこそ出ませんけど、
警告のアラシです。
intだのcharだのとわめいています。

920 名前:デフォルトの名無しさん :02/05/23 23:48
>>919
エディットボックスの操作はそれで良いが、CStringあるいは charの使い方
が間違い。数字を表示させたかったら、Formatするなり、SetDlgItemInt使う
なりしる!

921 名前:デフォルトの名無しさん :02/05/23 23:54
へい。
ではFormat汁ます。
サンクスコです。

922 名前:デフォルトの名無しさん :02/05/24 00:04
CEdit *にキャストするのは不要。

923 名前:デフォルトの名無しさん :02/05/24 00:18
CString value;
nenn.Format("%d",200);
(GetDlgItem(IDC_EDIT1))->SetWindowText(value);
できないよう。くすん。

924 名前:デフォルトの名無しさん :02/05/24 00:26
おい、nennってなんだ?
小一時間、いや朝まで問いつめるぞ。

925 名前:デフォルトの名無しさん :02/05/24 00:27
nenn? ねんーーーーーって感じ?

926 名前:デフォルトの名無しさん :02/05/24 00:28
CString value;
value.Format("%d",200);
(GetDlgItem(IDC_EDIT1))->SetWindowText(value);
いやん。つっこまないDE
ちなみにこれでも200が表示されません。どぼちて?

927 名前:926 :02/05/24 00:29
         _
        /::::::\    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (´∀` )  < ねんねんねんnennVCむかつくねん!
    O--⊂ ×  )   \___________
  (∴) 彡(,,,(,,,(ξ⊃
という感じです。>>925

928 名前:デフォルトの名無しさん :02/05/24 00:34
このスレは
 「1000までに >>915が、エディットボックスに 200という数字を表示させることができるか?」
というスレに変更されました。

929 名前:915 :02/05/24 00:40
         _
        /::::::\    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       (´∀` )  < ねんねんねんnenn>>928むかつくねん!
    O--⊂ ×  )   \___________
  (∴) 彡(,,,(,,,(ξ⊃
おしえてよ けち。

930 名前:デフォルトの名無しさん :02/05/24 00:47
>>926
それをどこに書いてる?
コンストラクタの中とか言ったら12回ほど死なす。

931 名前:915@天才 :02/05/24 00:47
いやー、できたできた(^-^;A

なんやメンバ変数とかいうのをいじって、
m_edit2 = _T("");
こんなのができたところで、""内を変更して
m_edit2 = _T(-""-;) {…。
こうしたところ、無事「(・∀・)」が表示されますた。
やったー。

932 名前:915@天才 :02/05/24 00:48
>>930
コンストラクタってなに?てへっ

933 名前:デフォルトの名無しさん :02/05/24 05:07
ダイアログベースのアプリケーションのピクチャでもなんでもないところに、90度傾けた文字を出力したいです。
そこで、あらかじめひょうじしたい個所にピクチャを設け、表示させようとしたんですが、
下記のコードは、hogehogeDlg.cppのどこに配置すればいいんでしょうか?
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
CWnd* hgraph=GetDlgItem(IDC_PICT4);//ピクチャhに関すること
CDC* pgraphDC=hgraph->GetDC();
CRect rgraphpict; //ピクチャの領域サイズをrに取得
hgraph->GetClientRect(&rgraphpict);//ピクチャの領域サイズをrに取得
CFont NewFont;
TEXTMETRIC tm;
CString strText;

NewFont.CreateFont(
24 * 20, //高さ(論理単位)
20, //文字の平均幅(論理単位)
900, //傾斜角度
0, //ベースラインとx軸との角度(0.1度単位)
FW_NORMAL, //文字の太さ(1/1000ピクセル単位)
FALSE, //イタリック指定
FALSE, //下線指定
FALSE, //取消し線
ANSI_CHARSET, //フォントの文字セット
OUT_DEFAULT_PRECIS, //出力精度の指定
CLIP_DEFAULT_PRECIS, //クリッピング精度の指定
DEFAULT_QUALITY, //フォントの出力品質の指定
DEFAULT_PITCH|FF_ROMAN, //フォントのピッチとファミリを指定
"Times New Roman" //フォントのタイプフェイス名
);
CFont* pOldFont = dc.SelectObject(&NewFont);
dc.GetTextMetrics(&tm);
strText.Format("文字文字文字");
pgraphDC->TextOut(rgraphpict.left,rgraphpict.bottom-10,strText);
NewFont.DeleteObject();
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

934 名前:デフォルトの名無しさん :02/05/24 08:24
コード読まずに回答
ピクチャかダイアログのOnPaint

935 名前:デフォルトの名無しさん :02/05/24 09:43
Java Servlet + DBなんですが、

あれは問い合わせ1回ごとにコネクションを開始→問い合わせ→切断、するべきなんでしょうか。

936 名前:デフォルトの名無しさん :02/05/24 09:44
あまちがえた
すまそ

937 名前:デフォルトの名無しさん :02/05/24 10:03
サービス名の日本語使用について聞かせてください。

ATL COM AppWizardでサービスを作成します。
文字列リソースの IDS_SERVICENAME の
キャプションに日本語(2バイト文字)を使用します。
WindowsNTだと特に問題ないのですが、
Windows2000だと、作成したサービスの登録
(-Service)後にサービスのプロパティを見ようとすると
「構成マネージャ:一般内部エラーが発生しました」
と言うダイアログが出ます。エラーが出るだけで
ちゃんとプロパティの中身は出ますが、
これの回避方法はあるのでしょうか?

ちなみに、開発環境は
Windows2000 Server(SP2) + VC++6.0 SP5 です。
どなたか情報をご教示下さい。
よろしくお願いします。


938 名前:933 :02/05/24 17:05
>>933の質問ですが、
持っている本には、デバイスコンテキストに表示させるほうほうしか書いてないんですが、
わざわざピクチャを作って、そこに表示するっていう上のようなコードをOnpaint()内に追加したんですが、表示されないんです。
もっと簡単な方法はないんでしょうか?わざわざピクチャを作って表示っていうわずらわしい方法じゃないスマートな方法はないですか?

939 名前:デフォルトの名無しさん :02/05/24 18:42
>> 933

> NewFont.CreateFont(
> 24 * 20, //高さ(論理単位)

の部分のフォントサイズが大きすぎ!!


> pgraphDC->TextOut(rgraphpict.left,rgraphpict.bottom-10,strText);

底辺から10ピクセルの位置に描画してもフォントが大きすぎて余白部分くらいしか画面内に収まらない。(だから表示されない)


> NewFont.CreateFont(
> 20 , //高さ(論理単位)

これくらいのサイズが普通。


940 名前:デフォルトの名無しさん :02/05/24 20:26
ラジオボックスを使用して数字のエディットをさせたい(&その逆)のですが
例:
グループA
ラジオボックス1
ラジオボックス2
グループB
ラジオボックス3
ラジオボックス4
グループC
ラジオボックス5
ラジオボックス6
グループD
ラジオボックス7
ラジオボックス8
以下略
ラジオボックスが奇数ならば+0、
偶数ならば+2^(n/2-1)
といった感じです。
 この場合デフォルトではどのラジオボタンも押されていない状態なので
デフォルトでは奇数がONの状態にしたい、
そして数字のエディットボックスでも指定できるようにしたいのですが、その場合はラジオボタンを
ONChangeEdit()などから操作できないといけないと思うのです。
しかし、クラスウィザードではラジオボタンはメンバ変数を持たないようなので困っています。
こういう場合はチェックボックスを使わないとだめなんでしょうか?

941 名前:933 :02/05/24 21:20
>>939
ありがとうございました!
おかげさまでうまくいきました.
もうひとつの原因として,
OnPaint()内の
if (IsIconic() {
}
else {
}
で,if内に書いていたことが問題だったようです.else内に書くと旨く行きました.

942 名前:dis ◆NAfP6znE :02/05/24 22:32
CListCtrl::EditLabel()

を使うと、リストコントロールにEditが出るのですが、
Editを確定した場合、どのようにしてイベントを取ればいいのでしょうか。

おねがいいたします。

943 名前:ss :02/05/24 22:41
Visual C++ってフリーソフト?どこにあるの?

944 名前:デフォルトの名無しさん :02/05/24 22:46
否。このネットワークのどこにでも、遍在し、偏在している。

945 名前:ss :02/05/24 22:48
コンパイラのVisual C++ってある?

946 名前:デフォルトの名無しさん :02/05/24 22:49
>>945
取りあえずshine。

947 名前:dis ◆NAfP6znE :02/05/24 22:55
942 です。
ON_NOTIFY(LVN_ENDLABELEDIT , ***, ***)
で解決しました。

948 名前:デフォルトの名無しさん :02/05/25 07:45
再描画する方法について
Invalidate();
でOSに処理を渡すやりかたは解ります.
しかし,ボタンが押されたらON_BOTTON()を実行し
ON_BOTTON(){
 while(){
//何かの計算をする

  //その結果をグラフに書く
 }
}
をしたいんですが,
計算されてる間に再描画などができなくなります.(あたりまえですが)
どうすればいいのでしょうか?
ダイアログベースで作っているのでON_PAINT()でできないでしょうか?


949 名前:デフォルトの名無しさん :02/05/25 08:25
>>948
スレッドを作ってそっちで計算。

950 名前:デフォルトの名無しさん :02/05/25 11:01
940 > クラスウィザードではラジオボタンはメンバ変数を持たないようなので困っています。

ラジオボタンのプロパティで「グループ」にチェックを入れてるか?
まあどうしてもだめならCWnd::GetDlgItem(ラジオボタンのID)とかDDX_Checkとかいろいろやってみそ。

951 名前:デフォルトの名無しさん :02/05/25 11:47
>>948

ON_BOTTON(){
 while(){
//何かの計算をする

InvalidareRect(hdlg , NULL , FALSE);
UpdateWindow(hdlg);
  //その結果をグラフに書く
 }
}


952 名前:951 :02/05/25 11:55
訂正

-----------------------------------------------

方法1.

ON_BOTTON(){
 while(){
//何かの計算をする

InvalidareRect(hdlg , NULL , FALSE);
UpdateWindow(hdlg);
 }
}

WM_PAINT:
  //その結果をグラフに書く
 break;


UpdateWindow で WM_PAINT を呼び出し処理する


-------------------------------------------------


方法2.

ON_BOTTON(){
 while(){
//何かの計算をする

hdc = GetDC(hdlg);
  //その結果をグラフに書く
ReleaseDC(hdlg , hdc);
 }
}


GetDC で直接描画



953 名前:デフォルトの名無しさん :02/05/25 18:32
>>951,952
ありがとうございます.
今方法2でやってみましたが,できませんでした.
計算中に,そのアプリを移動しようとしても移動ができず,再描画もしてくれませんでした.

方法2しか駄目なのでしょうか?



954 名前:950,953です :02/05/25 18:43
On_Button()は一回押したら,10分くらい計算し続けてるんです.
それと同時に線を書く.
つまりwhileで10分くらい居続けます.
ということなのですが.

955 名前:デフォルトの名無しさん :02/05/25 19:05
こんばんわ、調べてもわからなかったので
教えてもらえないでしょうか。
リストビューで複数のイメージを使用してるんですが
選択中のアイテムのイメージのインデックス
が知りたいんですけど(LVITTEMを使ってセットした時のiImage)
GetItemStateを使用したらいいとまではわかったのですが
うまく情報取得できません。
ret=GetItemState(index,LVIF_IMAGE);
と書いてるんですがretが常に2になってしまい
困ってます。
なにか根本的に間違ってますか?
初心者的質問ですがよろしくお願いします。

956 名前:デフォルトの名無しさん :02/05/25 19:15
>955
LVIS_STATEIMAGEMASKでなくてはいけないかと思いますが。

957 名前:デフォルトの名無しさん :02/05/25 19:36
>>954
つーかスレッド作ったほうが楽だと思ふ・・・・・・・

958 名前:955 :02/05/25 19:38
>>956
ありがとうございます。
そうも思ったんですが
ret=GetItemState(index,LVIS_STATEIMAGEMASK);
とするとretがすべて0になっちゃいましたので。。
ret=GetItemState(index,LVIS_STATEIMAGEMASK);
イメージのインデックス取得するのに
この文のどこがおかしいんでしょうか。


959 名前:デフォルトの名無しさん :02/05/25 19:52
>958
GetItemの方でやってみるとかはダメかな?
MFCのその部分のソースも見てみるといいかも知れず。

960 名前:955 :02/05/25 20:02
>>959
実は始めそれも調べたのですが
ぜんぜんわからなくて挫折してしまいました。
MSDNでは
「リスト ビュー アイテムの属性のすべてまたは一部を取得します。」
って解説されてるんですが今回の選択中のアイテムの
indexをもとに情報を取得したい場合
どうしたらいいんでしょうか。
定義がBOOL GetItem(LVITEM* pItem) const;
なので引数がひとつしかないので
正直ぜんぜんこの関数の使い方がわからなかったです。
GetItemStateとGetItemどちらもうまく使えてませんが
今回みたいなアイテムのインデックスから
イメージのインデックスを得る場合
どちらを使えばいいでしょうか。


961 名前:デフォルトの名無しさん :02/05/25 20:08
>960
LVITEM構造体調べてくれ…てかそこら辺の説明はSDK使った事無いと
わからんかもw
猫でもわかる〜のサイトでも行ってお勉強してくださいな。

962 名前:951 :02/05/25 20:13
>今方法2でやってみましたが,できませんでした.

マジで?
ループ中に PeekMessage , TranslateMessage , DispatchMessage でメッセージループを作ればいけるかも。

>計算中に,そのアプリを移動しようとしても移動ができず,再描画もしてくれませんでした.

移動なども行いたいならマルチスレッドの方が良いかも。
移動を頻繁に行うならパフォーマンス的にもマルチスレッドが有利

いずれにしろ計算中にボタンを押されると多重に実行される可能性があるのでボタンの有効無効の切り替えが必要


963 名前:教えてほしいです! :02/05/25 20:15
HTMLのことなんですけど、
ページを開くと他にも次々にページがでるようにしたいんですけど
どうやるかわかる人いますか?
いたらおしえてほしいです!お願いします☆

964 名前:デフォルトの名無しさん :02/05/25 20:16
>>963
頭悪いなら氏ね。

965 名前:955 :02/05/25 20:17
GetItemStateを使うのだとしたら
LVITEM構造体のstateメンバとstateMask
あたりだと思って昨日調べてたんですが
結局挫折してしまいました。
ずばりret=GetItemState(index,LVIS_STATEIMAGEMASK);
のあとretからイメージのインデックスを
取得するにはどういった文が必要なんですか?
もしくはやはりGetItem()でしょうか。。

966 名前:デフォルトの名無しさん :02/05/25 20:19
http://pc.2ch.net/test/read.cgi/tech/1022045622/640
通報しました.

967 名前:いまいましいチビの女の子達 :02/05/25 22:04
テンプレートを使ったライブラリを作りたいのですが
ヘッダとソースファイルの分割はどうすればいいのでしょうか。

VC++はexportをサポートしていないので
リンクエラーがでてしまいました。

968 名前:デフォルトの名無しさん :02/05/25 22:12
VC++.NETを買えばよいのではないでしょうか。

969 名前:いまいましいチビの女の子達 :02/05/25 22:17
↑.NETはexportあるんですか?

970 名前:デフォルトの名無しさん :02/05/25 22:35
>>968-969
確か.NETにも無いと思ったけど。

971 名前:950,953,954です :02/05/25 22:39
>>949 >>957 >>962

スレッドってマルチスレッドのことだったんですね(^^A
質問一つのためにスレを立てて,糞スレ立てんなって言われちゃうじゃん!!
って思ってました〜!
やってみます!ありがとうございました!


972 名前:デフォルトの名無しさん :02/05/25 22:43
>>971
> スレッドってマルチスレッドのことだったんですね(^^A
も、盲点だった!
君以外はみんなスレッド=マルチスレッドだと思って
このスレ見てたと思うよ・・・

973 名前:デフォルトの名無しさん :02/05/25 23:02
ご教授願お願いします。
リストボックスの一行ごとに複数の変数(Char)を表示しているのですが

VBでいう   Tab(30) ; name ; Tab(50) ; year

といったようにそれぞれの始まる場所を指定したいのです。
どうしてもやり方が見つからなく、今はムリヤリ
スペースを調整して表示しているのですが、きれいにまとまりません、
Tabに近いような命令はあるのでしょうか?


974 名前:デフォルトの名無しさん :02/05/25 23:27
>>973
sprintf( buf, "%d\t%d", name, year );
とかでは駄目ですか?

975 名前:デフォルトの名無しさん :02/05/25 23:43
973
CListBox::SetTabStopsとLBS_USETABSTOPS
MSDN読もう・・・

976 名前:973 :02/05/26 00:49
>974,975
ありがとうございます、そのあたりを確認して
また挑戦してみます。

977 名前:デフォルトの名無しさん :02/05/26 01:32
VC++.NETにはC++言語リファレンスの日本語ヘルプって付いてないんでしょうか?

978 名前:デフォルトの名無しさん :02/05/26 02:56
>>955
iImageとStateImageは別物だよ。(GetItemStateで取れるのは
チェックボックスとか表示するのに使うやつ)
アイコンの方を調べるには、GetItemしてiImage見なくちゃダメ。
セットする時にLVITEM使ってるなら、同じ要領でできると思うがどうか。

979 名前:いまいましいチビの女の子達 :02/05/26 05:51
>>970
マイクロソフトの怠慢ですね.

素直にテンプレートをやめて書き直します.
うう、面倒くさい.

980 名前:デフォルトの名無しさん :02/05/26 21:39
卒論のためにVC++でプログラムを組むことになりました。
学校でCの演習はやってましたけど、初歩的なことしか
やってないしC++はやったことないです。
最初に読むのにお勧めの書籍教えてください。

981 名前:デフォルトの名無しさん :02/05/26 21:52
マニュアル

982 名前:デフォルトの名無しさん :02/05/26 22:10
>>980
MFCで組むなら林晴比古のVC++スーパービギナー編でも読んでみたら?
それでサパーリなら諦めなさい(w

983 名前:955 :02/05/26 22:33
>>978
ありがとうございます。
お蔭様でGetItemの使い方もわかり、
無事目的のアイテムのイメージのインデックスの取得
に成功しました。
感謝してます。
みなさん、アドバイスありがとうございました。

984 名前:デフォルトの名無しさん :02/05/27 01:09
>>982
レスありがとうございます。
でも、その人の本>>177-179
すごく不評なんですが大丈夫なんでしょうか?
また、なんで不評なんでしょうか?


985 名前:デフォルトの名無しさん :02/05/27 07:02
長年の経験と勘でが投げ捨てろと言っている。
長年の経験と勘でが投げ捨てろと言っている。
長年の経験と勘でが投げ捨てろと言っている。


986 名前:955 :02/05/27 08:52
982>>
私自身勉強中で参考になるかわかりませんが
その本自体は読んだことないですけど
その本の二巻(シニア編)はド忘れした時の辞書代わりになってます。
VCまったくやったことなくてC解るなら
山本信雄って人の書いた
「プログラミング学習シリーズ VisualC++」てのがいいと
思いますよ。
というか私はこれでした。
三巻構成で少々高くつきますがVC1からやるには
かなりよかったです。
1巻ではMFCよりAPIから入ってるのである程度仕組みが
理解できると思います。
2巻は、クラスの利用方法など、(C++やってないならいいかな
3巻がMFC全般。
上級の方からはどう思われるかわからないですけど
勉強中の身の私としてはかなり解りやすい本だと思いました。
参考までに。

987 名前:デフォルトの名無しさん :02/05/27 09:39
>>985
経験と勘ですか
確かに推薦図書スレでも不評でした。

>>986
レスどうもです。
ほんとにVC何もわからないので
わかりやすい本がいいです。
とりあえず>>982>>986さんが薦めてくれたのを
立ち読みしてみようと思います。

988 名前:デフォルトの名無しさん :02/05/27 14:27
次スレたてないの?

989 名前:デフォルトの名無しさん :02/05/27 14:40
終わりで良いじゃん

990 名前:デフォルトの名無しさん :02/05/27 14:53
>>989
終わりかよ!!

991 名前:デフォルトの名無しさん :02/05/27 14:54
だって必要ないじゃん

992 名前:デフォルトの名無しさん :02/05/27 14:58
>>984
今これのビギナー編でVC6.0の勉強中です。
内容は文字通り「VC++6.0」の使い方で
ウィザード使うとこういうことが出来ますよって感じ。
この本読んでプログラムが出来るようにはならないと思うけど
DOS窓しか開けなくて詰まってた私にはちょうど良かったかなとおもう。

でもこれ買った後、友達に>986のやつ薦められました。

993 名前:デフォルトの名無しさん :02/05/27 15:27
スーパービギナー編=
結論を再確認する。「投げ捨てろ」
ビギナー編=
開発環境操作本。これを見ながら勉強すれば、
2chへの「わかりません」系マルチポストを防止できる。
シニア編=
基本的なコントロールの使用法を、それなりにまとめてある。
これを見ながら勉強すれば、
2chへの「できません」系マルチポストを防止できる。

994 名前:デフォルトの名無しさん :02/05/27 20:06
このスレは教えて君の隔離に丁度いいと思う。
あと、まともな質問も結構ある訳だし、次スレ建ててもいいと思うよ。

でも俺はビビりなので自分では建てない罠。

995 名前:デフォルトの名無しさん :02/05/27 20:36
漏れは立てすぎ

996 名前:デフォルトの名無しさん :02/05/27 20:44
996

997 名前:デフォルトの名無しさん :02/05/27 20:46
次スレ
http://pc.2ch.net/test/read.cgi/tech/1022499000/

998 名前:デフォルトの名無しさん :02/05/27 20:48
次スレ立てた人
http://pc.2ch.net/test/read.cgi/tech/1021787032/262

999 名前:デフォルトの名無しさん :02/05/27 20:49
262 名前:いさましいおsageの女の子 [sage] 投稿日:02/05/27 20:31
ごめんね ++が付かなかったよ。

どうやるの?
http://pc.2ch.net/test/read.cgi/tech/1022499000/

1000 名前:デフォルトの名無しさん :02/05/27 20:50
VisualC 相談室【8】
http://pc.2ch.net/test/read.cgi/tech/1022499000/


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.