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


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

★初心者にVisual C++を教えるスレ★ Part21
751 名前:デフォルトの名無しさん :2005/10/20(木) 21:11:33
キャッシュ

752 名前:デフォルトの名無しさん :2005/10/20(木) 21:33:55
>>745,746,748

お返事ありがとうございます。
745さんのおっしゃるもので、sln,vcprojファイルを変換したのですが、ビルド時にエラーをはいてしまいました。
後、勘違いしていたのですが、コンパイルではなくビルド(?)したいという事でした。
説明不足ですみませんでした。

このファイル群は友達に貰ったものなのですが、VisualStudioが必要という事なのでしょうかね・・・。
ご親切にアドバイスありがとうございましたm(_ _)m

753 名前:デフォルトの名無しさん :2005/10/20(木) 21:46:01
学生時代にc++5.0を買ってそのまま眠ってたのですが、
最近仕事を辞めて時間できました。
もう一度勉強してみようと思うのですが、楽しくC++勉強できる本などありますか?

754 名前:デフォルトの名無しさん :2005/10/20(木) 21:53:03
>>753
すれ違いだわな

755 名前:デフォルトの名無しさん :2005/10/20(木) 21:53:12
>>キャッシュなんですか・・・
キャッシュを使ってコピーするっていう方法は
VCで、どうやるのでしょうか?

DiskMirroringToolは単体でも早いのに、自作ツールの方は
上のツールと一緒に動かさないと早くならないなんて・・・
DiskMirroringToolのソースみてもどこが該当するのか分からんTT

756 名前:デフォルトの名無しさん :2005/10/20(木) 21:58:43
学生だったら4000円もあればVisualStudioを買えるんだけどな

757 名前:デフォルトの名無しさん :2005/10/20(木) 22:08:19
VC++とC++は別物だから

758 名前:デフォルトの名無しさん :2005/10/20(木) 22:12:23
>>753 >>757
そういうことでしたか。知らずとはいえご迷惑おかけしました。

759 名前:デフォルトの名無しさん :2005/10/20(木) 22:23:54
>>752
sln、vcprojはVC7のソリューションファイルとプロジェクトファイルで、
VC6ではそれぞれdswとdspに対応する。
それ自体はテキストファイルだから必要ならテキストエディタで見るとして、
VC6で空のプロジェクトを作ってそれにmain.cppを追加してビルドすればいいだろう。

760 名前:デフォルトの名無しさん :2005/10/21(金) 04:08:04
VC7のファイルだけじゃねぇよ

761 名前:717 :2005/10/21(金) 13:52:29
別のConTextコントロールを作成して
任意のHWND上にConTextコントロールを表示する方法で
解決いたしました。

762 名前:デフォルトの名無しさん :2005/10/21(金) 13:53:34
Windowsの画面の右下の時刻の所にマウスカーソルを持っていくと、
黄色の背景に年月日がポップアップ表示されます。
VC++のTextBoxコントロールで、上記と同じ様にポップアップを
表示させる機能を付けたいのですが方法がわかりません。
どなたか知っている方、教えていただけないでしょうか?
よろしくお願いします。

763 名前:デフォルトの名無しさん :2005/10/21(金) 13:57:51
タイトルバーを持たない、2Dボーダーのポップアップウィンドウ作って表示すれば?

764 名前:デフォルトの名無しさん :2005/10/21(金) 14:00:51
CToolTipCtrl?

765 名前:762 :2005/10/21(金) 14:26:01
>>763-764
ToolTipの存在を初めて知りました。
ToolTipコントロールを使って
即行解決しました。
ありがとうございます。

766 名前:デフォルトの名無しさん :2005/10/21(金) 21:24:18
課題レポート1
 VC6sp6XPhomeでSDIでCstudentを作成しました。
プロジェクト内の*.hと*.cppをセットで全てソースコードを
印刷せよ。2段組8pとすること。
 いままでは、寺パットでtmp.txtに貼りつけてましたが
いい加減疲れました。世の中にそんなeditorが存在したら教えてください。
秒殺で仕上げられるのなら、方法をご教授ください。

767 名前:デフォルトの名無しさん :2005/10/21(金) 21:26:02
貼り付けで我慢しる

768 名前:デフォルトの名無しさん :2005/10/21(金) 21:27:49
そういうプログラムを作る。これ最強。

769 名前:デフォルトの名無しさん :2005/10/21(金) 21:39:56
766です
>貼り付けで我慢しる
>そういうプログラムを作る。これ最強。
そんなこと言わないで教えてください。
とりあえず、こんな漢字で始めようと思います。
最後尾にキャットしていけば、できようですが、*.cppで
改ページしたいです。
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
ifstream in_file( "C:\\My Documents\\*.txt" );
if ( ! in_file )
{ cerr << "ぼけ\n"; return -1; }
ofstream out_file("C:\\My Documents\\PjAll.txt" );
if ( ! out_file )
{ cerr << "はげ\n"; return -2; }
ifstream in_file2( "C:\\My Documents\\*.txt" );
if ( ! in_file )
{ cerr << "ぼけ\n"; return -1;

string word;
vector< string > text;
while ( in_file >> word )
text.push_back( word );


770 名前:デフォルトの名無しさん :2005/10/21(金) 21:41:26
>>766
Perlでも使ってtmp.txtを作ってエディタに開かせて,
そこからゴニョゴニョ

771 名前:デフォルトの名無しさん :2005/10/21(金) 22:43:47
>>766
つ[cygwin]

772 名前:デフォルトの名無しさん :2005/10/22(土) 00:26:41
766です。
>つ[cygwin]
ウニわかりません。かんべんしてください。
>そういうプログラムを作る。これ最強。
大分完成に近づいてきました。力を御菓子ください。
■WS内の*.hto or *.cppをワイルドカードで検索し、fname_fileに出力
■fname_file内のファイルを順番に読み取りPjAll.txtの後部に連結
■PjAll.txtを直印刷。
■オプション //改ページ の文字を見つけたら次ページ
       予約語 青、コメント 緑
■週末に疲れた死似そう、横にならしてください。 
/次のコードで現在のディレクトリにあるすべてのファイルを列挙できます。
//各ファイルの名前が出力されます。
#include <afx.h>
CFileFind finder;      //ここ↓がワカリマセン
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
fname_file << (LPCTSTR) finder.GetFileName() << endl;
}


773 名前:デフォルトの名無しさん :2005/10/22(土) 00:29:04
VisualStudioとMSWORDですぐ出来るけどな。

774 名前:デフォルトの名無しさん :2005/10/22(土) 00:32:22
>VisualStudioとMSWORDですぐ出来るけどな。
スイマセン教えてください。お願いします。
もしかしてマクロで秒殺ですか?






775 名前:デフォルトの名無しさん :2005/10/22(土) 00:40:13
>>774
やりたいことが今ひとつよくわからないんだけど、Ctrl+Aでソースの全範囲選択して
コピペするだけで予約語は青いしもそのまま出るしコメントアウトは緑。
やや横が足りないから適宜改行してやる必要があるけどね。

776 名前:デフォルトの名無しさん :2005/10/22(土) 00:41:36
×青いしもそのまま
○青いしインデントもそのまま

777 名前:デフォルトの名無しさん :2005/10/22(土) 00:57:47
766です
説明が下手ですいません。以下を全自動で印刷処理したいです。
だだし、DO(2段組(1段は97行)、 MSゴシック8p);
任意のプロジェクトでやりたい。
最終的には、VisualStudioのツールメニューのボタンから実行したいです。
StdAfx.h+StdAfx.cpp印刷
Student.h+Student.cpp印刷
StuDoc.h+StuDoc.cpp印刷
StuView.h+StuView.cpp印刷



クラスの数だけ

778 名前:デフォルトの名無しさん :2005/10/22(土) 01:01:45
2段組ってのがよくわからないんだけど?
俺が無知なだけな気がするが

779 名前:デフォルトの名無しさん :2005/10/22(土) 01:04:53
紙1枚に2ページ印刷するやつかと
なんていえばいいんかな、2分割とか4分割とかして印刷ってオプションあるじゃん、プリンタに

コマンドラインから印刷する方法調べて、バッチファイルでも作ったらだめ?

780 名前:デフォルトの名無しさん :2005/10/22(土) 01:14:02
>2段組ってのがよくわからないんだけど?
A4縦の紙を縦に2つに折ります。左が1段、右が2段です。
有名なテキストエディターの寺Padの印刷の中に段組と言う設定があります。
有名なテキストエディターのxyzzyの印刷の中に段組と言う設定があります。
こだわるか理由はA4の紙で190行のコードが印刷でき、約3枚位で電車の中、
トイレの中でコード解析ができます。
わたしに言わせれば、Cmagaのコード印刷は超人的に微細です。

781 名前:デフォルトの名無しさん :2005/10/22(土) 01:18:09
MSWORDの印刷オプションに一枚当りのページ数って言うのがあるけど
これじゃまずいの?

782 名前:デフォルトの名無しさん :2005/10/22(土) 01:24:32
766 あなたの小規模のプロジェクト内のファイルを全て
有名なテキストエディターのxyzzyで2段組で印刷してみてください。
 それを全自動でやりたいです。LISPもわからないですし、秀丸マクロもなしでお願いします。

783 名前:デフォルトの名無しさん :2005/10/22(土) 01:30:54
>MSWORDの印刷オプションに一枚当りのページ数って言うのがあるけど
>これじゃまずいの?
まずいです。やってみてください。
書式>段組>2段です。
それよりも全ファイルをWORDに書き込むやり方を教えてください。


784 名前:デフォルトの名無しさん :2005/10/22(土) 02:08:52
つ[cmd.exe]

785 名前:デフォルトの名無しさん :2005/10/22(土) 02:25:10
>784 名前:デフォルトの名無しさん :2005/10/22(土) 02:08:52
>つ[cmd.exe]
いろいろお世話になりますが、引数は全て手打ちするのでしょうか?
サンプルコードをご教示していただきたく深く強く激しくお願いします。

 ファイルを結合するには、以下のように入力します。
 a.txtとb.txtの内容を結合して、c.txtにします。
//hage.bat
copy a.txt+b.txt c.txt/append
copy c.txt+d.txt f.txt/append
copy h.txt+i.txt j.txt/append







786 名前:デフォルトの名無しさん :2005/10/22(土) 02:38:03
>>766
この辺のはどう? 予約語色付けはなさそうだけど。
ttp://www.vector.co.jp/soft/win95/writing/se252056.html
ttp://www.vector.co.jp/soft/win95/util/se292423.html

787 名前:デフォルトの名無しさん :2005/10/22(土) 03:59:32
教えてください。

 フリーで使えるカスタムコントロールって
 無いでしょうか? 出来ればソースが公開
 されているものが良いのですが・・・


788 名前:デフォルトの名無しさん :2005/10/22(土) 08:13:58
そういうの、2段組って言うんじゃなくて、2カラムって言うんですよ

789 名前:デフォルトの名無しさん :2005/10/22(土) 09:49:20
ttp://www.vector.co.jp/soft/win95/util/se292423.html
機能 できないこと: ヘッダ・フッタの編集、段組印刷、1枚に複数ページ印刷等々
 よくよめよ、ボケ!
しかし、かなりイイ。
>そういうの、2段組って言うんじゃなくて、2カラムって言うんですよ
 ひとりだけで言っててね。

790 名前:デフォルトの名無しさん :2005/10/22(土) 09:55:41
(´,_ゝ`)<専門用語は分かりませんか?

791 名前:       :2005/10/22(土) 10:34:48
>>>(´,_ゝ`)<<<専門用語は分かりませんか?
大衆用語を使えよ。ボケ

792 名前:デフォルトの名無しさん :2005/10/22(土) 10:54:37
おしえてください。

class A {
func1()...
};
class B {
func1()...
};
class C : public A {
func1()...{
func();
}
};
この場合に、Cと実装が同じでBを継承したDを作りたい場合、
どのようにすればいいでしょうか?
class C : public Aと書いた時点でAを継承するのですが、
C自体の実装は全く同じで、Aの替わりにBを継承したDを
作りたいのですが。。。 class D : public C , public B
だとCはBを継承していないのでダメだと思うので。。。


793 名前:デフォルトの名無しさん :2005/10/22(土) 10:55:53
は?

794 名前:792 :2005/10/22(土) 11:03:52
ごめんなさい。
よく理解していないので、説明が悪いのだと思います。

やりたい事は下記のようなことです。

いぬ、ねこ、たぬき
調教師
ここで、
いぬ  の調教師
ねこ  の調教師
たぬきの調教師

を作りたいのですが、いぬ・ねこ・たぬきが調教師
を継承するのではなく、調教師がいぬ、ねこ、たぬき
を継承するようにしたいです。




795 名前:デフォルトの名無しさん :2005/10/22(土) 11:05:32
設計を見直す。

796 名前:デフォルトの名無しさん :2005/10/22(土) 11:06:03
エスパーを呼ぶ。

797 名前:デフォルトの名無しさん :2005/10/22(土) 11:07:16
調教師 is a たぬき

798 名前:792 :2005/10/22(土) 11:30:21
すいません。

 例えば、ファイルシステムにFATというのが有りますが、
 FATは主にデータ構造としての実装になるかと思いますが、
 具体的な実装では、HDDやSDやFlashというような感じで
 媒体が異なる場合などに、FATというクラスを作って、
 このクラスFATから、HDDやSDやFlashへの読み書きを
 行うためのクラスを使いたいという場合が多々あると思うの
 ですが、この場合、実装上はHDDやSDやFlashへの
 読み書きを基底クラスとして、FATを派生クラスとできる
 方が理想的だと思うのですが、このような実装を行いたい
 場合、どうすればいいのでしょうか?

799 名前:デフォルトの名無しさん :2005/10/22(土) 11:31:38
>>792
よくわからんが

template<class Base> class C : public Base
{ /* ・・・ */ };

ということ?

800 名前:デフォルトの名無しさん :2005/10/22(土) 11:33:49
>>798
よくわからんが、主語はどれで述語はどれ?

801 名前:デフォルトの名無しさん :2005/10/22(土) 11:37:58
>>799
ありがとうございます。

 こういう場合には template を用いるのが最適な
 方法でしょうか?

 仮想基底クラスというのが関係あるのかなーと、
 勉強しているのですが、templateそのものは
 オブジェクト指向とは別物だと思っていましたので、
 出来ればクラス構造だけで実装できればスッキリ
 するかな・・・と思ったのですが・・・
 根本的に勘違いしてますでしょうか?

802 名前:デフォルトの名無しさん :2005/10/22(土) 11:46:20
>>798
そういう場合は、デバイスを操作する抽象基本クラス(Device)とFATクラスに分ける。
FATクラスはDeviceクラスを操作する方法さえ知っていればいい。
実際の物理デバイスへの操作は、Deviceを継承・実装した
HddDevice、SdDevice、FlashDeviceクラスに任せればいい。


803 名前:デフォルトの名無しさん :2005/10/22(土) 11:49:24
>798
FAT is HDD?
理想的も何も、is-a関係の成り立たない、そいつらを
継承関係にもっていくのは無理だろ。

804 名前:798 :2005/10/22(土) 15:01:18
>>802
>>803
ありがとうございます。

 構成手法として、
 FATclassとHDDclass を多重継承した、HDDFATclassを
 作って、このHDDFATclassでFATclassとHDDclassを操作
 するという構成にするのが正規の手法という考え方で良い
 でしょうか?


805 名前:798 :2005/10/22(土) 15:02:39
すいません。
抽象基本クラスに実際の動作を反映させる
手法の具体例を教えて頂けないでしょうか?

806 名前:デフォルトの名無しさん :2005/10/22(土) 15:14:02
初心者スレ荒らすなよ
よそへ行ってやってくれ

807 名前:798 :2005/10/22(土) 15:15:34
すいません。
class Device {
 public:
  virtual char Read(int)=0;
  virtual void Write(char)=0;
virtual void Seek(int)=0;
}
class FAT : public Device
{
 ...
}
class HDDFAT : public FAT
{
 public:
  char Read(int){...}
  void Write(char){...}
  void Seek(int){...}
}
という感じで、Deviceにある純粋仮想関数
の実体をHDDFATで定義するという形で良い
のでしょうか?

808 名前:デフォルトの名無しさん :2005/10/22(土) 15:18:16
C++の話はよそでやれ

809 名前:デフォルトの名無しさん :2005/10/22(土) 15:22:56
>>807
// デバイスに対する抽象的な操作を定義する(インターフェース)
struct Device { virtual void read() = 0; };
// 実際の動作を実装
class HddDevice : public Device { void read() { /* HDDを操作するコード */ } };
class SdDevice : public Device { void read() { /* SDを操作するコード */ } };
class FlashDevice : public Device { void read() { /* Flashを操作するコード */ } };

// 外から与えられたデバイスに対して操作する。
// 実際のデバイスの種類は知る必要は無い。
class FAT {
public:
FAT(Device* dev) : dev_(dev) {}
void hage() { dev_->read(); }
private:
Device* dev_;
};


HddDevice dev;
FAT fat(&dev);

fat.hage();

810 名前:デフォルトの名無しさん :2005/10/22(土) 15:27:16
C++相談室 part44
http://pc8.2ch.net/test/read.cgi/tech/1128512737/

【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/

はきだめC/C++下級者の質問箱
http://pc8.2ch.net/test/read.cgi/tech/1124256027/

C++初心者に救いの手を(゚ロ゚)
http://pc8.2ch.net/test/read.cgi/tech/1118674839/


811 名前:デフォルトの名無しさん :2005/10/22(土) 15:32:53
横レスするが、テンプレートつかうとこうなる
template<typename T>
class FAT{
public:
FAT(T& dev) : dev_(dev){}
...
...
private:
T& dev_;
};

継承(’A`)マンドクセ、

812 名前:デフォルトの名無しさん :2005/10/22(土) 15:37:07
>>810


813 名前:798 :2005/10/22(土) 15:37:38
>>809
>>811
的確なアドバイスありがとうございました。
実際にVC++でコンパイルしましたら、
うまく動きました。 ありがとうございます。

お騒がせ致しました・・・


814 名前:初心者の僕 :2005/10/22(土) 15:39:42
行列の積を求めるプログラムをC言語で書きのように作ってみたのですが、
どうしても「c3: エラーE2040 宣言が正しくありません」って出てきます。
どこがおかしいのでしょうか。教えていただけませんか?
#include <stdio.h>
int main();
{
int a[3][3];
int b[3][3];
int c[3][3]={{0,0,0}{0,0,0}{0,0,0}};
int i;
int i;
int k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("A:%d 行 %d 列",i+1,j+1);
scanf("%d",&a[i][j]);}}
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("B:%d 行 %d 列",i+1,j+1);
scanf("%d",&b[i][j]);}}
for(i=0;i<3;i++){
for(j=0;i<3;j++){
for(k=0;k<3;k++){
c[i][j]=c[i][j]+a[i][k]*b[k][j];}}}
return 0;
}

815 名前:デフォルトの名無しさん :2005/10/22(土) 15:45:50
iが二つねーか

816 名前:デフォルトの名無しさん :2005/10/22(土) 15:46:08
int c[3][3]={{0,0,0},{0,0,0},{0,0,0}};


817 名前:デフォルトの名無しさん :2005/10/22(土) 15:46:30
>>814
エラー個所くらい書けよ。

818 名前:初心者の僕 :2005/10/22(土) 15:54:58
単純なミスで申し訳ないです!
jがiになっている箇所がありました!
修正したところコンパイルすることができました!
ありがとうございました!

819 名前:デフォルトの名無しさん :2005/10/22(土) 16:03:22
自ら初心者を名乗る奴はどうしようもないな。

820 名前:デフォルトの名無しさん :2005/10/22(土) 16:08:06
>>818
いやぁ、嘘だろ。
エラーメッセージは3行目で宣言エラーといっているが、実際2行目のmain()の後にセミコロンがあるから
そこで3行目でエラーが起きているんだから。

821 名前:デフォルトの名無しさん :2005/10/22(土) 16:15:53
ネタに決まってるだろ

822 名前:デフォルトの名無しさん :2005/10/22(土) 16:38:40
計算結果は使わないのか

823 名前:デフォルトの名無しさん :2005/10/22(土) 17:01:18
>>814の脳みそをコンパイルしようとしたのですが
数え切れないほどのエラーがでました
どうすればよろしいでしょうか

824 名前:オレモナー :2005/10/22(土) 17:31:20
>>823 の脳みそを修正して、スルーすることができるようにする。

825 名前:デフォルトの名無しさん :2005/10/22(土) 17:45:00
/* コメントアウトされた脳みそ */

826 名前:デフォルトの名無しさん :2005/10/23(日) 11:05:21
static textの背景を白くするか
ダイアログウィンドウの背景を白くするには
どうすればよいのでしょうか。

827 名前:デフォルトの名無しさん :2005/10/23(日) 14:43:13
質問なんですけど
main.cppをVisual C++ 2005 Express Edition Beta 2でコンパイルしようとすると
------ ビルド開始: プロジェクト: Otamesi, 構成: Debug Win32 ------
コンパイルしています...
main.cpp
c:\documents and settings\1234\my documents\visual studio 2005\projects\Otamesi\stdafx.h(6) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
ビルドログは "file://c:\Documents and Settings\1234\My Documents\Visual Studio 2005\Projects\Otamesi\Debug\BuildLog.htm" に保存されました。
Otamesi - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

とでるんですけど、windows.hファイルがなくどうすればいいかわからなくて困っています
どうすればいいでしょうか


828 名前:デフォルトの名無しさん :2005/10/23(日) 15:31:15
インストールしたらならwindows.hあるはず
でもwindows.hがあってもどこにあるか教えてやらないと見つけられない。

829 名前:デフォルトの名無しさん :2005/10/23(日) 15:31:36
>>827

830 名前:デフォルトの名無しさん :2005/10/23(日) 15:35:22
>>828
レスありがとうございます。
どこでそれを教えてあげればいいんでしょうか度々すみません。

831 名前:デフォルトの名無しさん :2005/10/23(日) 15:35:39
教えて下さい。
マウス操作で、右クリックしたまま、マウスをムーブした時に、
プログラム内で処理を行いたいんですが、どうやれば良いのでしょうか?
下の書き方ですと、右クリックしないでマウスを動かすと、対象処理を
行います。(当然だと思います)
皆様、ご教授御願いします。m(_ _)m

// ウィンドウプロシージャ関数
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM lParam)
{
switch(iMsg)
{
case WM_LBUTTONDOWN:
やりたい処理;
break;
case WM_MOUSEMOVE:
やりたい処理;
break;


832 名前:デフォルトの名無しさん :2005/10/23(日) 15:41:35
WM_MOUSEMOVEの中でマウスボタンが押されてるか見る

833 名前:デフォルトの名無しさん :2005/10/23(日) 16:43:20
>>827
Express Edition Beta だと、
プラットフォームSDK まではインストールされなかったような。

834 名前:デフォルトの名無しさん :2005/10/23(日) 23:04:10
VCではなくCの範囲かもしれませんが、
文字列を返す関数ってどうやって作るのでしょうか?

char moji(){
return "にちようび";
}
とやると、char[10]はchar*と間接操作のレベルが異なります、とエラーになってしまいます。

switch(youbi){
case 0:
return ("にちようび")
bresk;
case 1:
return ("げつようび")
bresk;
case 2:
return ("かようび")
bresk;
}

のように返り値(文字列)の長さが一定でなくてもOKにしたいです。

835 名前:デフォルトの名無しさん :2005/10/23(日) 23:08:53
returnで返そうと思うな
その考えは捨てろ

836 名前:デフォルトの名無しさん :2005/10/23(日) 23:12:49
>>834
つ[std::string]

837 名前:デフォルトの名無しさん :2005/10/23(日) 23:29:41
"にちようび" って何型だ?

838 名前:デフォルトの名無しさん :2005/10/23(日) 23:34:16
bresk;で吹いた

839 名前:デフォルトの名無しさん :2005/10/23(日) 23:57:11
char *moji(){
return "にちようび";
}

これでいける絶対いける
やってみ、*(アスタリスク)がポイント。

840 名前:デフォルトの名無しさん :2005/10/24(月) 00:00:53
バイナリファイルを読み込みたいのですがわからないことが多く困っています。
ファイルの先頭から64バイト移動してint型の変数measParamsOffsetにデータをひとつ
読み込むとき、コンソールプログラムの場合はmain関数の中に下記のように記述すると
うまく動いてくれました。
CString InputFileName = "test"

int measParamsOffset;

FILE *pfi;
pfi = fopen((LPCTSTR)InputFileName, "rb");

fseek(pfi, 64, SEEK_SET);
fread(&measParamsOffset, sizeof(measParamsOffset), 1, pfi);
つづく


841 名前:デフォルトの名無しさん :2005/10/24(月) 00:02:33
つづき
これと同様の内容ををWindowsプログラミングでMFCのシリアライズ関数に
下記のように書くとコンパイルは出来るのですが、プログラムを起動してファイルを
開こうとするとエラーが発生してしまいます。どこをどう直せばいいのでしょうか?

void CTest8Doc::Serialize(CArchive& ar)
{
void *buf = NULL;
CFile *fp = ar.GetFile();
if (ar.IsStoring())
{
// TODO: この位置に保存用のコードを追加してください。
ar << measParamsOffset;
}
else
{
// TODO: この位置に読み込み用のコードを追加してください。
fp->Seek(64, CFile::begin);
ar.Read(buf, 4);
measParamsOffset = *(int*)buf;
}
}

Windows XP、Visual C++ 6.0です。

842 名前:デフォルトの名無しさん :2005/10/24(月) 00:06:36
> 開こうとするとエラーが発生してしまいます。

それで、そのエラーの内容は国家機密なのかい?

843 名前:デフォルトの名無しさん :2005/10/24(月) 00:11:37
void CTest8Doc::Serialize(CArchive& ar)
void CTest8Doc::Serialize(CArchive* ar)
とか?

844 名前:デフォルトの名無しさん :2005/10/24(月) 00:13:25
>>839
問題の本質を間違えてるって。
staticの配列ならともかくただのリテラルじゃ偶然に頼るほかない。

845 名前:デフォルトの名無しさん :2005/10/24(月) 00:15:30
意味不明。

846 名前:841 :2005/10/24(月) 00:16:21
>>842
英語のわけのわからんメッセージが出ます。
Debug Assertion Failed!
Program: D\My Documents\C C++ Language\test8\Debug\test8.exe
File: arccore.cpp
Line: 491

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the aplication)

847 名前:質問です。 :2005/10/24(月) 00:17:02
libjpeg調べてもさっぱりです。
プログラムを載せてるページとか教えてください。

848 名前:デフォルトの名無しさん :2005/10/24(月) 00:18:06
>>841
void *buf = NULL;

ar.Read(buf, 4);
とかやってるから、
ar.Read(NULL, 4);
と同じ意味になっててメモリアクセスエラー(というか内部のアサーション)とかいうオチ?

>>846
そのメッセージが出たところでデバッガに落ちて、
コールスタック調べればどこが問題かわかるよ

849 名前:846 :2005/10/24(月) 00:32:19
>>848
void *buf = NULL;をvoid *buf;
と書き換えても同じメッセージが出ました・・・。

デバッガでみるとbufがずっと0xccccccccとなってましたが
どうすればいいかわかりませんです。

>>843
ドキュメントビューアーキテクチャが用意してくれたシリアライズ関数に
付け足してるだけですのでそこではないかと思います。

850 名前:デフォルトの名無しさん :2005/10/24(月) 00:35:06
>>849
あのな・・・
メモリー確保しないでbufに読み込めるわけないでしょ

851 名前:デフォルトの名無しさん :2005/10/24(月) 00:49:23
数学板でも質問した者です。

例)
563、741、572、237、673、622、894、125、765
の数字の中からいくつかを足して1692にせよ。

という問題でナップサック問題
http://hp.vector.co.jp/authors/VA008160/cipher/knap.htm
というらしいのですが、
これをプログラムで解く方法は何かありますでしょうか。

ランダムにいくつか足し算して1692にするという案が浮かぶのですが、
どういう風に書いたらよいのかよく分かりませんでした。

よろしくお願いします。


852 名前:849 :2005/10/24(月) 00:55:17
>>850
たしかに!
void *buf = new int;
って書いてみたら動いてくれました。
まだ微妙に問題残ってますが考えてみます。
ありがとうございました。

853 名前:デフォルトの名無しさん :2005/10/24(月) 01:00:07
>>851
894+765=1659
563+572+237+125=1497
なので数字4つまたは3つの組み合わせを考えれば良い

とするとこうなる

第1のループ:先頭の数字を選択する
第2のループ:2つ目の数字を選択する
第3のループ:3つ目の数字を洗濯する
 ここで3つ足すと1692になるか判定する
第4のループ:4つ目の数字を選択する
 4つ足すと1692になるか判定する



854 名前:デフォルトの名無しさん :2005/10/24(月) 01:03:47
>>841 >>849 >>852
でもなんであなたはarをそのまま使わずに中のfpを取り出してるんですか・・・
arが使ってるfpを外からシークして、arの状態がおかしくなってないかどうかなんて、
怪しい領域(CArchiveの実装によりけり)に思いっきり突入してしまうような・・・。

fpを直接使いたいならMFCシリアライズ関連クラスとまぜて使うのは
放棄したほうが良いと思うですよ。

自分のやってることを完璧に理解してそういったことをするなら止めませんが、
そうとも思えません。

855 名前:デフォルトの名無しさん :2005/10/24(月) 01:18:03
>>854
>arが使ってるfpを外からシークして、arの状態がおかしくなってないかどうかなんて、
>怪しい領域(CArchiveの実装によりけり)に思いっきり突入してしまうような・・・。

GetFileは公開されてるメンバだから大丈夫だろ。(Flushする必要はあるけど)

856 名前:デフォルトの名無しさん :2005/10/24(月) 15:50:32
VC++.NETのWindowsフォームアプリケーション(.NET)で、
他アプリケーションからSendMessageされたメッセージを
受け取りたいのですが、受け取る方法がわかりません。
VC6の様にWindowProc関数を追加できれば何とかなりそうな
気がしますが、WindowProc関数を追加する方法がわかりません。
ご存知の方、教えていただけないでしょうか?

857 名前:デフォルトの名無しさん :2005/10/24(月) 16:28:54
どういうメッセージよ
システムで既に定義されてるメッセージか?
ユーザー定義のメッセージか?

前者なら単純にその分のイベントハンドラを追加しる

後者なら、FormクラスのWndProcメソッドをオーバーライドして、
目的のメッセージの処理を加え、それ以外のメッセージを元のWndProcに渡すようにすればいいかと

858 名前:857 :2005/10/24(月) 16:29:43
DefWndProcだの、WndProcだの、
MSDNでFormクラスのメンバ一覧見たら普通に載ってる項目ぞ?

859 名前:デフォルトの名無しさん :2005/10/24(月) 17:45:14
初めまして、初歩的な質問ですが、よろしくお願い致します。

先日、ソースファイルに、main.cpp , ヘッダファイルにStdAx.hを追加し、ビルドしたところ、

c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(828): error C2059: 構文エラー : 'サフィックスが無効です。'
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinNT.h(828): fatal error C1012: カッコが一致していません。')' がありません。

とエラーを二つはきました。
828行目を見ても、構文エラーであったり、「)」が足りていない訳でも無いように思え、頭を捻っています。

よろしければ、対処法などアドバイスを頂けないでしょうかm(_ _)m


860 名前:デフォルトの名無しさん :2005/10/24(月) 17:47:12
>>859
そのWinNT.hをインクルードするに至る、あんたのソースに問題があるはずだ。

861 名前:856 :2005/10/25(火) 11:23:06
>>857
ユーザー定義のメッセージです。
>後者なら、FormクラスのWndProcメソッドをオーバーライドして、
>目的のメッセージの処理を加え、それ以外のメッセージを元のWndProcに渡すようにすればいいかと
VC++.NET2003のWindowsフォームアプリケーション(.NET)では、[プロパティ]ウインドウのオーバーライドにWndProcが出てきません。

>MSDNでFormクラスのメンバ一覧見たら普通に載ってる項目ぞ?
見様見真似でMSDNのサンプルコードの追加を試みましたが上手く行きませんでした。
VC6なら即行WndProcを追加できたのですが・・・手動でオーバーライドするにしても方法がわからず。

>FormクラスのWndProcメソッドをオーバーライド
web上にサンプルコードも発見できず・・・
非常にわがままですが、実装方法を順番に説明していただけないでしょうか?

862 名前:デフォルトの名無しさん :2005/10/25(火) 12:10:33
Formクラス WndProc でぐぐったらいっぱいみつかるじゃん

863 名前:デフォルトの名無しさん :2005/10/25(火) 12:55:21
手動でオーバーライドするにしても方法がわからずって、
おまいさん、そもそもオーバーライドって何かわかってるか?

864 名前:デフォルトの名無しさん :2005/10/25(火) 21:28:38
Part20から入りましたが、Part1の
ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
をたてた人すごいな。唯我独尊

どの辺から「継続可」になったか知りたい 先達よ教えてくれ。

865 名前:デフォルトの名無しさん :2005/10/25(火) 21:45:03
そこに人が集まってしまった以上自然とそうなる。
最近ではSTLスレだってなんだかんだ言って次スレ作られているし。人は来ないけど。

866 名前:デフォルトの名無しさん :2005/10/25(火) 22:23:41
Part21にしては、まとめとかFAQとかテンプレのようなものが何もないな

867 名前:デフォルトの名無しさん :2005/10/25(火) 23:10:48


868 名前:デフォルトの名無しさん :2005/10/25(火) 23:35:48
>>866
まとめサイトをおながいします。

869 名前:834 :2005/10/26(水) 10:19:37
>>839
それでいけました。ありがとうございます。
にしてもVC(っていうかC)の文字列の扱いってまだ難解でよくわからん・・・

870 名前:デフォルトの名無しさん :2005/10/26(水) 10:30:27
とりあえずそういうやり方もできるというだけで
あんまり見ないやりかただな

871 名前:デフォルトの名無しさん :2005/10/26(水) 10:44:19
あんまり見ないと言うか、

  や  る  な

>>869の考えの方が難解でよくわからん

872 名前:デフォルトの名無しさん :2005/10/26(水) 14:55:23
リッチエディットコントロール2.0のあるダイアログボックスを作ると、何故かダイアログボックスの作成に失敗するのですが、どうやったらよいのでしょうか?

1.リソースからリッチエディット2.0を張る
2.DialogBoxでダイアログを呼ぶ

コールバックなどはreturn等最小限の処理しか書いていません

873 名前:デフォルトの名無しさん :2005/10/26(水) 15:02:51
重 要 ダイアログ ボックスでリッチ エディット コントロールを使用する場合は
(アプリケーションが SDI、MDI、ダイアログ ベースかにかかわらず)、
ダイアログ ボックスの表示前に、

(中略)


CRichEditCtrl の使い方の詳細については、『Visual C++ プログラマーズ ガイド』の
「Control Topics」および「CRichEditCtrl」を参照してください。

874 名前:872 :2005/10/26(水) 15:03:00
自己レス

LoadLibrary("riched20.dll");
をしたら解決しました。どもでした

875 名前:デフォルトの名無しさん :2005/10/27(木) 17:08:48
今デスクトップ画面を取り込んでプリンタへ印刷するアプリケーションを
作っているのですが、暫く使っていると印刷が出来なくなります。
「スタート」→「設定」→「プリンタ」の中の対象のプリンタの状態を見てみると
印刷ジョブ自体は溜まっている状態になっていて、PCを再起動すると
それまでに溜まっていた印刷ジョブが実際印刷されます。
印刷ジョブに溜まっているのに印刷出来ない状態になるというのは
どういう状況が考えられるでしょうか?プリンタの状態は「準備完了」になっています。

環境はWindows2000、VC++6.0です。宜しくお願いします。

876 名前:デフォルトの名無しさん :2005/10/27(木) 17:23:50
用紙切れ、インク切れ

877 名前:デフォルトの名無しさん :2005/10/27(木) 17:26:45
とりあえずVC++とはなんの関係も無いな

878 名前:デフォルトの名無しさん :2005/10/27(木) 17:44:50
>>876
PCを再起動すると溜まっていたジョブがそのまま印刷されるので・・・。

>>877
アプリケーションとは全く関係ないのでしょうか・・・?

879 名前:デフォルトの名無しさん :2005/10/27(木) 17:48:42
オマエの組んだプログラムのせいだ

880 名前:デフォルトの名無しさん :2005/10/27(木) 18:01:48
ビットマップを出して回転させる、一番簡単な方法ってどんな方法がありますか?

GDIでやろうと思ったら、PlgBlt使って平方四辺形の3点みたいなのを計算しないと駄目っぽくて。
もっと簡単に出来る方法があったら知りたいです。宜しくお願いします。

881 名前:880 :2005/10/27(木) 18:32:09
CreateFontを使い、絵はAAを使うことにしましたw
一応解決しましたが、さすがにAAはマズそうなので、良い方法があったら知りたいです。

882 名前:デフォルトの名無しさん :2005/10/27(木) 18:54:39
>>875
Windowsでのネットワークプリンタなら連続n回印刷コマンド発行すると一定時間受け付けなくなる仕様になってる
その期間にもうn回印刷コマンドを発行すると印刷出来ないまま受付禁止になるので印刷できなくなる

883 名前:デフォルトの名無しさん :2005/10/27(木) 18:57:16
ようするにPC初心者板で聞けばよかったと

884 名前:デフォルトの名無しさん :2005/10/27(木) 19:09:04
初歩的な質問で申し訳ありません。
VC++でAPI関数のみを用いてプログラムを作成しているのですが、
コンボボックスをクリックしたときに下に展開される行数が一行分の高さしか持ちません。
表示させる行数を複数行にする場合はどこを設定すれば宜しいのでしょうか。

┌────┐
├────┤
└────┘
    ↓
┌────┐
├────┤
│      │
│      │
└────┘ こんな感じにしたい

補足:プロパティボックスにはTRUE/FALSEの設定が大半でそれを弄る場所が見当たりませんでした

885 名前:デフォルトの名無しさん :2005/10/27(木) 19:12:12
>>884
それ超FAQだから100%回答でるよ
待てなきゃ過去ログさがせば見つかるかも

886 名前:デフォルトの名無しさん :2005/10/27(木) 20:26:31
>880
回転させるのが90度, 180度, 270度なら簡単に出来る。
この方法は自分で考えてみてね。

37度とか任意の角度なら回転行列という数学の力を借りなきゃ駄目。
具具ってみなせぇ

887 名前:デフォルトの名無しさん :2005/10/27(木) 21:05:09
>>884
それ確かに分かりにくいよな。
リソースのとこで▼を押すのだよ。
押せば分かる。
って言っても、▼が分からんのよな。
同じとこで詰まったよ。説明ページ見ても、▼って書いてあるけど分からんの。
リソース使ってないなら知らん。


888 名前:デフォルトの名無しさん :2005/10/27(木) 21:18:25
>>887
それって、そんなに気付きにくいかな?
普段使うときと同じように操作してみると分かるのに・・・。

889 名前:デフォルトの名無しさん :2005/10/27(木) 21:19:56
>>888
分かりにくいとは思うよ

890 名前:884 :2005/10/27(木) 21:26:51
>>887
ありがとうございます!
最初どこの▼かと思いましたが

※コンボボックス
┌─────┬─┐
│        │▼│←ココ
├─────┴─┤
│           │
└───────┘

まさかこの▼とは思いませんでした。ずっとプロパティの▼を見てましたw
確かに普通にコンボボックスの真ん中でサイズ変更やってたら気づきませんね。
マウスカーソル当てるとカーソルが変化したので気づきました。
ここを一回クリックするとコントロールのサイズがドロップダウン前からドロップダウン後のサイズに切り替わるので
そこを変えればOKなワケですね。

891 名前:デフォルトの名無しさん :2005/10/29(土) 01:40:28
子ウィンドウ(ダイアログ)のコントロールを親ウィンドウから操作したいのですが
どのようにしてポインタを取得すればいいでしょうか?

親ウィンドウのソースファイルを
・・・
CWnd* a = (CWnd*)GetDescendantWindow(IDD_DLG_CHILD);
CEdit* b = (CEdit*)a->GetDlgItem(IDC_EDIT);
・・・
とやってみたのですが、ビルド&実行すると、
2行目の処理の部分でエラーが起きて強制終了してしまうのです。

892 名前:デフォルトの名無しさん :2005/10/29(土) 06:17:29
親が作った子ウィンドウならハンドルぐらい持ってるだろう

893 名前:デフォルトの名無しさん :2005/10/29(土) 13:15:03
メニューの左側にアイコンを表示する方法を教えてください。

894 名前:デフォルトの名無しさん :2005/10/29(土) 14:40:21
質問です。XP、.NET です。
関数ポインタについてです。

CHoge hoge {
public:
 bool (*pFunc)();
 bool Func();
 void test();
}

CHoge::test()
{
 pFunc = Func;
}

上記のコードをコンパイルした結果、関数へのポインタへの代入に失敗しました。
Func() の型は bool (*)(CHoge*) のため(CHoge* は暗黙の引数 this を受け取る)、
bool (*)() 型の pFunc には代入できなかった、という理解でよろしいのでしょうか?

また、上記問題を解決するため、

 bool (*pFunc)(CHoge* pHoge);
 static bool Func(CHoge* pHoge);

というように、Func を静的にし、メンバを呼ぶためオブジェクトのアドレスを渡すようにしたのですが、
これでは、Func() の記述内に pHoge-> が散乱してしまい、格好悪くなってしまいます。

何かいい解決法はないでしょうか。
よろしくお願いします。

895 名前:894 :2005/10/29(土) 14:42:01
しまった・・・、スレ違いのようでした。

【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/

こちらで聞いてきます。お騒がせいたしました。

896 名前:デフォルトの名無しさん :2005/10/29(土) 16:22:12
くだすれの方で反応がないのでこちらでもよろしくお願いします

CTreeCtrlのアイテムそれぞれに対して
CWnd::EnableWindow(...)
関数のような、使用許可・不許可の設定を行うことは可能ですか?

環境
* WindowsXP
* Visual C++ 6.0

897 名前:デフォルトの名無しさん :2005/10/29(土) 16:29:10
またか

898 名前:デフォルトの名無しさん :2005/10/29(土) 16:39:24
>メニューの左側にアイコン
MDIで子ウインドウを最大化するとそうなるな

899 名前:デフォルトの名無しさん :2005/10/29(土) 18:02:08
指定されたフォルダパスが正しいか(指定されたフォルダが存在するか)チェックする方法はどんなのがいいですか?
今は

#include "io.h"

if (_access(szPath, 00) != 0){
return FALSE;
} else {
//処理
}

って感じで書いてあるんですけど。


900 名前:デフォルトの名無しさん :2005/10/29(土) 18:05:07
>>896
できなきゃ何のためにCWndを継承しているのか

901 名前:デフォルトの名無しさん :2005/10/29(土) 18:05:40
>>887-889
俺もそこで2〜3日悩んだ。

902 名前:デフォルトの名無しさん :2005/10/29(土) 18:28:54
>>900
思いっきり勘違いしていない?
TreeCtrlそのものではなく、その中の各itemの制御をしたいらしいよ。

903 名前:896 :2005/10/29(土) 20:22:30
>>902
補足ありがとうございます

904 名前:デフォルトの名無しさん :2005/10/31(月) 20:03:12
3Dビュワーもどきを作っているのですが、ドラッグで詰まっています。
ドラッグしつつカーソルがウィンドウ外に出ると、メッセージが来なくなってドラッグが中途半端に終わってしまいます。
ドラッグ中はウィンドウ外に出ても利いていて欲しいのですが、メッセージだけでは不可能なのでしょうか?
現在WM_MOUSEMOVEを使っています。

905 名前:デフォルトの名無しさん :2005/10/31(月) 20:09:58
ヒント: SetCapture

906 名前:デフォルトの名無しさん :2005/10/31(月) 21:37:41
プログラム実行中、whileか何かループで
詰まってるようで、breakポイントを仕掛けて止めるのではなく、
実行中の箇所で止めてデバッグすることは不可能なんでしょうか?
どこでループしてるか知りたいのですが

907 名前:デフォルトの名無しさん :2005/10/31(月) 21:56:18
実行中にctrl+breakで中断すればいい。

908 名前:デフォルトの名無しさん :2005/10/31(月) 23:34:43
>907は天才
いままで知らんかった
907まじおすすめ

909 名前:デフォルトの名無しさん :2005/11/01(火) 11:09:32
Cのソースを拡張子CPPにしてコンパイルしたあと拡張子Cに戻したら、
なんかのヘッダーファイルで大量にエラーが出るようになってしまった
んだけどどうすればいいですかね?

910 名前:デフォルトの名無しさん :2005/11/01(火) 11:09:40
いい!

911 名前:デフォルトの名無しさん :2005/11/01(火) 11:16:29
>>909-910
12時間ぶりの書き込みなのに8秒差かい

912 名前:デフォルトの名無しさん :2005/11/01(火) 12:13:02
>>909
リビルドした?

913 名前:デフォルトの名無しさん :2005/11/01(火) 13:28:06
>>905
猫にもありました。ありがとうございます!

914 名前:デフォルトの名無しさん :2005/11/01(火) 15:58:27
オマエんちの猫はWin32APIを装備してるのか。すげぇ。

915 名前:デフォルトの名無しさん :2005/11/02(水) 00:22:38
>>908
て言うか、メニューからも中断できたと思うが…。

>>909
拡張子を cpp に戻せばいいんじゃねーの?

916 名前:デフォルトの名無しさん :2005/11/02(水) 01:51:21
メニューバーのリソースを作ったのですが、表示が左端からではなく、右に表示されてしまいます。
これは何ででしょうか?

917 名前:デフォルトの名無しさん :2005/11/02(水) 01:53:52
右端といいますか、×(閉じる)ボタンの下あたりに表示されてしまう感じです。。

918 名前:デフォルトの名無しさん :2005/11/02(水) 02:05:49
猫でものソースを使って、はじめてのリソースを体験^^

919 名前:デフォルトの名無しさん :2005/11/02(水) 04:03:07
環境:W2K、VC6.0
教えてくださいです

GIVEIO.SYSっていうライブラリの関数(例えば、int giveio_start(void))を使うために、
下のへッダファイルは既に追加してビルド(MFC APP、DLL用)かけるんですが、リンクエラー
(LNK1136)になるんです。教えてください。どうすれば通るか・・・。

GIVEIO.H

#ifndef __GIVEIO_H__
#define __GIVEIO_H__

/* result of giveio_start() */
#define GIVEIO_ERROR 0
#define GIVEIO_WIN95 1 /* windows 95/98/Me, unnecessary */
#define GIVEIO_OPEN 2 /* giveio opened */
#define GIVEIO_START 3 /* giveio service start & opened */
#define GIVEIO_INSTALL 4 /* giveio install,start & opened */
int giveio_start(void);

/* parameter of giveio_stop() */
#define GIVEIO_STOP 3 /* giveio stop service */
#define GIVEIO_REMOVE 4 /* giveio stop & remove driver */
int giveio_stop(int param);

#endif




920 名前:デフォルトの名無しさん :2005/11/02(水) 05:48:37
>>916
「ヘルプ」が有効になってないか?

>>919
GIVEIO.c もプロジェクトに加えたの?
あと link1136のヘルプ自体に色々ヒントが書いてあるけど…?

921 名前:デフォルトの名無しさん :2005/11/02(水) 06:02:32
デバイスドライバを作ろうとしているのか?

922 名前:デフォルトの名無しさん :2005/11/02(水) 07:57:52
そんなんで詰まるLVじゃ無謀ってもんだな

923 名前:916 :2005/11/02(水) 16:00:20
>>920
直りました^^

924 名前:916 :2005/11/02(水) 16:07:33
助かりました。
有難うございます

925 名前:デフォルトの名無しさん :2005/11/02(水) 16:52:23
Win32で別プロセスにシグナル(SIGTERM)を送るには
どうしたらよいのでしょうか?
CreateProcessを使ってプロセスIDの取得するところまでは
できています。ご指摘よろしくお願いいたします。

926 名前:デフォルトの名無しさん :2005/11/02(水) 16:52:42
すみません。ビットマップエディタに画像ファイルをコピーして貼り付ける方法がわかりません。
ドラッグアンドドロップでは無理だったのですが。

927 名前:デフォルトの名無しさん :2005/11/02(水) 17:12:56
ワークスペースの右クリックのインポート
256色超えるとムリだったけど

928 名前:デフォルトの名無しさん :2005/11/02(水) 19:08:52
>>927さん
ありがとう。後ほど試してみたいと思います。

929 名前:919 :2005/11/02(水) 19:51:32
>>920
>>921
レス、どうもありがとうございます。亀レスですみません。
GIVEIO.C(GIVEIO.SYS)は、プロジェクトには、入ってません。

このエラーが出るまでは、
error LNK2001: 外部シンボル ""int __stdcall giveio_start(void)" (?giveio_start@@YGHXZ)" は未解決です
が出てきて、それを解決しようとしていたら相談してた妻がいつのまにかプロジェクトの「設定」の
「リンク」でGEIVEIO.SYSを、オブジェクト/ライブラリモジュールに登録して、更に、「ツール」、「オプション」
の「ディレクトリ」に、GIVEIO.SYSがあるフォルダを設定したので、かのようなエラー(SYSはインクルードできない
からLNK1136「ファイルが壊れています。」)が出てたようです。で結局、元に戻って考えると、エラーは、上記の
LNK2001が実態でした。
尚、GIVEIO.SYSは、「その道」では有名なドライバらしく、WIN NTや2KでIOポートを叩くときの一種の必需品みたいな
ものらしいことが、あちこちのサイトに書いてありましたが、DLLにせよEXEにせよ、プロジェクトに入れてビルドしてる
ということはないみたいです。
私のGIVEIO.SYS(C)との関わりは、簡単なマザーボードモニターを自作で作って、
CPUの温度制御に利用したいということなんですが・・・
(続き

930 名前:919 :2005/11/02(水) 19:52:08
続き)
マザーボードモニターで有名な、かの「LM78」とか「MBPROBE」でも、GIVEIO.SYSは、
モニターソフト本体とは別に、GIVEIO.SYS専用のインストーラーを使うこと、
LM78では、
INSTDRV.EXE: Version 0.16 - GiveIo.sys Driver Installer
Copyright (c) :p araffin. 2001. Allrights reserved.
を推奨し、
MBPROBEでは、
 WinNT/2000 support (download MBProbeNT.zip as well)
giveio.sys : Port I/O kernel driver for Windows NT/2000 (c) Dale Roberts
ntinst.exe : Installer for the above driver
を使って、インストールしているようです。
尚、GIVEIO.Cのソースコードは、
ttp://members.at.infoseek.co.jp/x1resource/xilinx/giveio/giveio.htm
GIVEIO.SYSは
ttp://homepage1.nifty.com/paraffin/software/index.html#INSTDRV
で、ダウンロードできます。
GIVEIO.SYSを使う例としての簡単な例として(そのサイト↓では、GIVEIO.SYSを「アクセスラブラリ」と呼んでいました。)
ttp://www1.bbiq.jp/kougaku/IO_parallel.html
があったのでこれを参考にしてのですが・・・


931 名前:919 :2005/11/02(水) 20:05:17
尚、エラーが出る個所は↓の⇒のところです

#include "stdafx.h"
#include "giveio.h"
#include "CMBM.h"
・・・・・・
・・・・・・
int giveio_result;
/* GIVEIO open */
⇒ giveio_result = giveio_start();
/* result */
/* switch(giveio_result)
{
case GIVEIO_INSTALL:
AfxMessageBox("giveio.sys installed");
case GIVEIO_START:
AfxMessageBox("giveio.sys started");
case GIVEIO_OPEN:
AfxMessageBox("giveio.sys opened");
break;
     case GIVEIO_WIN95:
AfxMessageBox("giveio.sys win95");
break;
case GIVEIO_ERROR:
AfxMessageBox("giveio.sys unable");
return 0;
}*/


932 名前:デフォルトの名無しさん :2005/11/02(水) 20:40:10
>>929
GIVEIO.Hの中にある宣言をリンゲージ指定してCリンゲージに入れればうまく動くと思う。

933 名前:デフォルトの名無しさん :2005/11/02(水) 21:01:46
VCと関係ないし作ったやつに聞けよ


934 名前:919 :2005/11/02(水) 21:28:21
>>932
レス、どうも


935 名前:919 :2005/11/02(水) 22:16:39
>>920
やっぱ、GIVEIO.Cを加えないと駄目みたいです。GIVEIO.SYS
とGIVEIO.Cは全く別もののようです。GIVEIO.CをGIVEIO.CPPに
名前を変えて一緒にビルドしたらうまくいきました。
どうもありがとうございました。


936 名前:928 :2005/11/02(水) 22:38:12
リソースの追加→ Bitmap → インポート(M) というのは見つかったのですが、
上手くいかなかったので、エクスプローラーから画像を差し替えました^^;こんなんでいいんかな

937 名前:デフォルトの名無しさん :2005/11/02(水) 22:43:03
不安だなァ・・

938 名前:デフォルトの名無しさん :2005/11/02(水) 23:38:38
>936
256色以内ならドラッグ&ドロップでもいけたよ。
>上手くいかなかった
というのは、256色以上含んでるからムリと出たんじゃないでしょか?
それなら、GDI使ってメモリデバイスコンテキスト>デバイスコンテキストの手順で、
コードでフレーム上に取り込むのが手でしょう

939 名前:デフォルトの名無しさん :2005/11/03(木) 03:31:18
>>935
確かにそれで動くようにはなるのだろうが・・・。

extern "C" について調べてみることを薦めておこう。

940 名前:デフォルトの名無しさん :2005/11/03(木) 17:12:53
VS2003のVC++で、Win32アプリプロジェクト作ってやってます

STLのstring使ってるんですが
ちゃんと#include <string>してるのに、ReleaseビルドするとLNK2001の外部参照エラーが出るんです
同じコードなのに、Debugビルドではこのエラーは出ません

ウィザードが作成したプロジェクトの設定から変えたことといえば、
プリプロセッサの定義で_UNICODEを追加しただけですが、これはReleaseもDebugも両方追加してます

どうしたらエラーを取り除けるのでしょう

941 名前:デフォルトの名無しさん :2005/11/03(木) 17:33:57
エラーメッセージはコピペで

942 名前:940 :2005/11/03(木) 18:30:29
エラーメッセージは↓のようになってます
error LNK2001: 外部シンボル ""public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ)" は未解決です。

943 名前:デフォルトの名無しさん :2005/11/03(木) 19:42:05
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/_crt_c_run.2d.time_libraries.asp?frame=true
標準C++用ライブラリのリンクの機嫌が悪いのではないかと思ってみる。

プロジェクトのプロパティの
- C/C++ -> コード生成 -> ランタイムライブラリ
- リンカ -> 入力 -> すべての既存のライブラリを無視 or 特定のライブラリを無視
辺りを弄くっても問題が解決しないようであれば、

- リンカ -> 入力 -> 追加の依存ファイル
に、自分で適切なライブラリを指定するとがんばれるかもしれない。

944 名前:デフォルトの名無しさん :2005/11/03(木) 20:16:00
>>938さん
レス有難うございます。それは、参考にさせていただきます。^^

945 名前:デフォルトの名無しさん :2005/11/03(木) 21:03:57
>>942
俺も同じ現象に遭遇したが、
マルチスレッド用のライブラリをリンクするように指定したら解決した。
(C/C++ -> コード生成 -> ランタイムライブラリ)

946 名前:デフォルトの名無しさん :2005/11/05(土) 09:17:07
VC++6 SP5をWinXP SP2で使っています。

DAOを使ったプログラムを作ろうとして、困っています。
ClassWizardで新規クラスの追加をしようとしても、
基本クラスのコンボボックスで、CDaoRecordsetを選べません。

CRecordsetは選べるのですが、データベースのオプションで、
データソースラジオボタンでDAOを選ぶこともできません。

ClassWizard(などVC++6的な操作)で
CDaoRecordsetから派生したクラスを追加するには、
どうすれば良いのでしょう?
何かインストール忘れなどがあるのでしょうか?


947 名前:デフォルトの名無しさん :2005/11/05(土) 14:15:50
>>946
まず、DAOのインストールが必要なんじゃ?


948 名前:デフォルトの名無しさん :2005/11/05(土) 14:43:22
>>947
ありがとうございました。
DAO3.5が登録されていないのが原因だったようです。

regsvr32 dao350.dll
したらClassWizardにも出るようになりました。
何で登録されていなかったのかは分かりません。
WinXPの標準はDAO3.6だと思うので、余計な副作用が発生していないといいのですが。

とりあえず、現状でコードを書いて、
AfxGetModuleState()->m_dwVersion = 0x0601;
で、DAO3.6で動くようにするという感じにしようと思っています。


949 名前:デフォルトの名無しさん :2005/11/05(土) 18:25:46
マイク入力から音階、音量読み取って画像をそれに連動させろって言われても…
そんなプログラムを1からつくってほしいのでが。。。。。



950 名前:デフォルトの名無しさん :2005/11/05(土) 18:36:35
>>949
何この微妙なマルチ
まさか同じ研究室の人?w

951 名前:デフォルトの名無しさん :2005/11/05(土) 19:41:41
>>950
まさかぁ

助けてくれ…


952 名前:デフォルトの名無しさん :2005/11/05(土) 19:53:56
あ〜
VC++だべよ


953 名前:デフォルトの名無しさん :2005/11/05(土) 20:24:28
g++とVC++の差分はどれくらいですか?

954 名前:デフォルトの名無しさん :2005/11/05(土) 20:53:13
エスパーさん、いらっしゃ〜い

955 名前:デフォルトの名無しさん :2005/11/05(土) 20:57:50
g++とはなんぞ??

956 名前:デフォルトの名無しさん :2005/11/05(土) 20:59:43
GCCのC++標準コンパイラ

957 名前:デフォルトの名無しさん :2005/11/05(土) 21:02:50
すまぬがわからむ。。。。。。。。



958 名前:デフォルトの名無しさん :2005/11/05(土) 21:13:33
>>953
C++の規格への対応に関しては(両者最新版では)ほぼ同じ。
基本的にはMFCとかATLが付属するかどうかが両者の違い。(VCTKなどは考えないものとする)
尤もMFCやATLはおそらくg++でも使えなくはないと思われる。

959 名前:デフォルトの名無しさん :2005/11/05(土) 22:55:43
ttp://www.kab-studio.biz/Programing/PragmaTwice/

>#pragma twice は Visual C++ を使用したプログラミングを1から教える初心者向け講座です。
>プログラミングの経験がまったくない方を対象に書いていますから、どなたでもすんなり入っていけるでしょう。
>それに、内容は水希と火美ちゃんの会話形式なので、とても分かりやすくなっています。


こんなサイトみつけた。VC入門には良いかもしれん。
先に言っとくけど俺はこのサイトの作者じゃないぞ! 本当だぞ!


960 名前:デフォルトの名無しさん :2005/11/05(土) 23:50:21
>>959
よくぐぐるさんで引っかかるサイトだね。
ただ・・・非常に読みにくい気が・・・・

961 名前:デフォルトの名無しさん :2005/11/06(日) 00:34:57
>>958
>尤もMFCやATLはおそらくg++でも使えなくはないと思われる。
いくらなんでもg++にMFC,ATLは無理でしょう。Windows版だけ有効になるわけ?そんなバナナ。


962 名前:デフォルトの名無しさん :2005/11/06(日) 01:02:55
>>959
>「2年実戦的なことを学んで、ここで3年勉強すれば、もうエリートじゃな
>い、すごいよね」

963 名前:デフォルトの名無しさん :2005/11/06(日) 01:13:32
>>959
コレ全部読めたらもう怖いものなしだね。
もうプログラミングで挫折することはなさそう

964 名前:デフォルトの名無しさん :2005/11/06(日) 01:25:52
小説部分は確かにヒクなw

965 名前:デフォルトの名無しさん :2005/11/06(日) 02:55:16
> TRACE
> ( "%d, %d, %d, %d\n"
> , 0 && 0, 0 && 1, 1 && 0, 1 && 1 );

ひくとかむかつくとか以前に、「コードを〈絵〉として見られるから」という割りには審美眼を持たないようで。

966 名前:C++とMFC :2005/11/06(日) 07:16:11
ご教授宜しくお願い致しますm(_ _)m

スキルとしては、サーバーサイドスクリプト(WEB)を4年程やっています。
Winアプリ開発はまったくの初心者です…(泣
今回、「.NET Frameworkなどの一般ユーザー環境には
インストールされていないランタイムを使わずに」
以下を1年程度で実現しなければならなくなりました。

1.WEB上で動くActiveXを作る  -- ドラッグ&ドロップ・DBGridの配置 など
2.データベースを管理するMDIアプリを作る

勉強として、Visual C++ .NET (2003) の「MFC アプリケーション」で
簡単なMDIメモ帳を作ってみました。

C++で問題の2点を1年程度で実現するに当たり、
MFCで作る(を勉強する)のは正解でしょうか?

例えば「Win32 プロジェクト」の方がいいよ!とか…。
皆様のお知恵をお借りしたいです。宜しくお願いします。


967 名前:デフォルトの名無しさん :2005/11/06(日) 08:33:09
ActiveXやデータベースだったらMFCの方が良さそうな気はするね。

968 名前:966 :2005/11/06(日) 10:28:56
>967

早速のレスありがとうございます。
習得ターゲットをMFCに絞って頑張る決意を持てました。
色々ググッていたのですが敷居が高く、
何から手を付けていいものやら…と悩んでいたので
とても助かりました。

厚かましいながら、現在
http://www.geocities.jp/chiakifujimon/text/text.html
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9707/actdoc/axdoc.html
http://homepage3.nifty.com/flare/pc/bcb/index.html
などのサイト様や、猫でもわかる…様、
Googleで「C++ MDI MFC」「inf cab activeX IE」などで調べているのですが、
何か検索キーワードのコツ等があれば、ヒントを頂けませんでしょうか?

969 名前:デフォルトの名無しさん :2005/11/06(日) 11:55:58
>>966
ttp://www.tt.rim.or.jp/~rudyard/torii009.html

970 名前:デフォルトの名無しさん :2005/11/06(日) 12:12:18
MFCでActiveX使うのはなんだこんなもんかって感じだが、
VCでDBMS作るとなるとそれこそ、ミドルウェア作るようなもんなんじゃないか、
DAOもといOLEDB使ったとしても、トランザクション組まなくちゃいけないんだろう。
MS-SQL鯖使ったりするならやりやすいだろうけど。
DBMSはサーバサイドJavaに任せてってとこで、C++とJAVAを同じフレームワークでできるDelphiってどうなのかな、ActiveX使えたりするの?Delphi自体使ったことないけど。


971 名前:966 :2005/11/06(日) 12:13:49
>967

そうですね…(´-ω-`)。
968の件については、昨日から7時間程ずっとググッていたのですが、
行き詰ったのでキーワードの問題かと思った次第でした。
浅はかな考えでお尋ねしてすみませんでした。
教授と教示も間違っていたのですね(汗
MFCで行けると確信できて、大変助かりました。
ありがとうございました。

972 名前:デフォルトの名無しさん :2005/11/06(日) 13:47:55
コマンドライン引数 255 200 255

#include <stdio.h>
#include <windows.h>
void main(int argc,int *argv[]){
int R = (int)argv[1];
int G = (int)argv[2];
int B = (int)argv[3];
COLORREF color = RGB(R,G,B);
int R2 = GetRValue(color);
printf("%d",R2);
}

などで正しく値が合成されなくて困っています、どうすれば良いでしょうか?
開発環境はVC.net 2003です
よろしくお願いします。

973 名前:デフォルトの名無しさん :2005/11/06(日) 14:00:37
>>972
atoi

974 名前:デフォルトの名無しさん :2005/11/06(日) 14:09:33
>void main(int argc,int *argv[])


975 名前:デフォルトの名無しさん :2005/11/06(日) 14:24:27
うはwwwwうぇうぇwwww
そんな書き方する奴初めてみた。

976 名前:デフォルトの名無しさん :2005/11/06(日) 14:31:10
>>973
ありがとう。
>>974-975
おかげで気づいた。
ありがとう。

977 名前:デフォルトの名無しさん :2005/11/07(月) 15:14:01
始めまして、僭越ながら質問させて頂きます。
先日、某所よりDLをしてきた、

http://www.uploda.net/cgi/uploader2/index.php?dlpas_id=0000005863 (PASS=1111です)

上記のツールを、折角ソースファイルも付け加えて下さっているのでという事で、試しにソースからビルドしようとした所、(.vcproj
ファイルを開き、そのままビルド致しました。)Debugというフォルダが出来、その中に出来たexeが入っていたのですがいざその
exeファイルを実行した所、機能ははたしているのですが、104kbという元のexe(これは、たった3kbなのです)と比べ物にならない
程、ファイルサイズの大きなものとなってしまった上に、CPU負荷が30〜40%と非常に大きなものとなりました。

元の3kbのexeファイルを実行した所、CPU負荷はわずか1〜2%という結果でした。
何がいけないのか、何故そのままソース変更もなくビルドをした結果このような事態になってしまった事が不思議です。

お恥ずかしい質問をしているのは承知の上ですが、原因・改善の方法がわかる方、またアドバイスをして頂ける方
よろしくお願い致しますm(_ _)m

978 名前:デフォルトの名無しさん :2005/11/07(月) 15:29:07
>>977
それはDebugビルドだから。
Releaseビルドに換えれば最適化が施されるので高速(≒低負荷)になり、
デバッグ情報が埋め込まれないので小さくなる。

979 名前:デフォルトの名無しさん :2005/11/07(月) 15:40:19
>>978
素早いレスありがとうございます。
帰宅後、ご報告を添えると共に、早速Releaseビルドを行ってみようと思います。(まだ未熟な知識の為、手順など不安ですが)

Debugビルドをしていた為、デバッグ情報が埋め込まれていたのですね。
目から鱗な気分です。一つ、勉強になりました。

本当にありがとうございましたm(_ _)m


980 名前:デフォルトの名無しさん :2005/11/07(月) 15:53:30
おいおい、DebugビルドもReleaseビルドも知らずにVC使ってんのかよ

981 名前:デフォルトの名無しさん :2005/11/07(月) 16:50:40
>>979
VC6ならビルドメニューのアクティブな構成の設定...、VC7.1ならコンボボックスで変更可能。

982 名前:デフォルトの名無しさん :2005/11/07(月) 17:22:29
プログラム作れないやつって全然どうでもいいこと気にするんだよな

983 名前:977 :2005/11/07(月) 18:37:28
ただいま帰宅し、早速試してみた所、無事Releaseフォルダが出来、その中にexeファイルが生成されておりました。

ずっと悩んでいた事だったのですごくすっきりました。
こんな小さな事で悩まなくていいように勉強していきたいと思います。

ありがとうございました。

984 名前:モードレスダイアログが作れません :2005/11/07(月) 21:27:04

親ダイアログからあるボタンを押した場合にモードレスな子ダイアログを
呼び出したいのですが、ボタンを押しても子ダイアログが表示されず(一瞬
表示される?)うまく動きません。可能性としては
1、子ダイアログが作成できていない
2、作成できているが見えていない
3、作成できているがすぐに消えている
当たりが考えられそうですが、原因がつかめません。

プログラムですが、子ダイアログ(IDD_DIALOG1)のクラスにCmyDialogをつくり
親ダイアログのOnBnClickedButton関数内で

 CClientDC myDC(this);
 CmyDialog myDL;
 myDL.Create(IDD_DIALOG1, this);
 myDL.ShowWindow(SW_SHOW);

としています。myDialog.cppの方は特になにもしていません。
個人的には、子ダイアログがすぐ消えているような気がして、myDialog.cpp内で
何かしらのループ処理が必要なのかなとも思うのですが、よく分かりません。
原因や解決策が分かる方がいらっしゃいましたらよろしくお願いします。

環境はWindowsXP,VisualStdio.NET2003、ダイアログベースのMFCを使っています。

985 名前:デフォルトの名無しさん :2005/11/07(月) 21:35:07
関数内でスタック上に作ったオブジェクトは、関数を抜けると消えるがそういう問題では?

986 名前:デフォルトの名無しさん :2005/11/07(月) 21:35:25
そのコードだと、ダイアログをスタックに作成しているから
そこを抜けたらすぐに閉じてしまう。ヒープに作成セマウル号。
CmyDialoig* myDlg=new CmyDialog();
myDlg->Create(IDD_DIALOG1,this);
myDlg->ShowWindow(SW_SHOW);

987 名前:デフォルトの名無しさん :2005/11/07(月) 21:37:06
つーかむしろメンバとして作っとけ

988 名前:デフォルトの名無しさん :2005/11/07(月) 21:46:11
>>986
もろリーク起こすやんか

989 名前:デフォルトの名無しさん :2005/11/08(火) 01:07:16
>>988
あれじゃリークするが、

CmyDialog::CmyDialog()
{
  m_pChildDlg=(CDialog *)NULL;
}

CmyDialog::~CmyDialog()
{
  if(m_pChildDilg)
    delete m_pChildDlg;
}

とかすればいい。 モーダレスが1個なら、直接メンバ変数にする方が簡単だが、
複数のモーダレスを作成/破棄するなら、メンバ変数にテンプレート(CPtrArray)
を使った変数でダイアログのポインタを管理した方がいい。

990 名前:デフォルトの名無しさん :2005/11/08(火) 01:12:39
親→子のアクションが無ければ、delete this で自殺させても可

991 名前:デフォルトの名無しさん :2005/11/08(火) 01:33:24
つ[モードレス]

992 名前:デフォルトの名無しさん :2005/11/08(火) 01:48:37
delete NULL; は合法なので、if( foo ) delete foo;は冗長

993 名前:デフォルトの名無しさん :2005/11/08(火) 02:07:43
高々四行のコードに対する部分を示してあるだけなのに
メモリリークとかケチ付けてる奴は馬鹿だな。


994 名前:デフォルトの名無しさん :2005/11/08(火) 08:47:17
そんなに悔しがるなよ^^

995 名前:デフォルトの名無しさん :2005/11/08(火) 11:58:16
二時まで眠れなかったのかw

996 名前:デフォルトの名無しさん :2005/11/08(火) 18:43:29
次スレは?

997 名前:デフォルトの名無しさん :2005/11/08(火) 18:48:23
★初心者にVisual C++を教えるスレ★ Part22
http://pc8.2ch.net/test/read.cgi/tech/1131443284/l50

998 名前:デフォルトの名無しさん :2005/11/08(火) 19:42:45
998

999 名前:デフォルトの名無しさん :2005/11/08(火) 19:52:52
999

1000 名前:デフォルトの名無しさん :2005/11/08(火) 19:53:31
1000ならVisual C++ 2005 日本語版が年内に販売。


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