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


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

★初心者にVisual C++を教えるスレ★ Part7
751 名前:デフォルトの名無しさん :03/08/18 18:14
Visual C++.NET でプロファイラを使おうと思ってマニュアルを調べたのですが、
「/PROFILE リンカ オプションは削除されました。」

「リンカ ユーティリティであるソース プロファイラは削除されました。」
という記述しか見つかりませんでした。
プロファイルできなくなってしまったんでしょうか?


752 名前:749 :03/08/18 19:12
>>750
NotepadもWin9xだと32KBの制限があるから64KBなら問題なし。
ってことで、ダイアログ作って中身をスクロールバーつきのEditBoxでやることに。
レスThx.

753 名前:デフォルトの名無しさん :03/08/18 20:00
VisualC++6.0でC言語(C++ではなくて)を勉強し始めた超初心者なんですが
#include <igraph.h>で、プログラムを作っても
「fatal error C1083: インクルード ファイルがオープンできません。'igraph.h'」となって実行ができません。
付属の解説書を読んで自分の知識では答えが見つけられませんでした・・・。
物凄い初歩的な質問で恐縮なんですがグラフィックスをプログラムする場合
どのような設定をしたらよいのか、無知な自分にどなたか教えてやって頂けないでしょうか。


754 名前:デフォルトの名無しさん :03/08/18 20:02
「今私のオッパイ見てたでしょう。」ってそりゃ見ますって。
これだけの立派なオッパイが目の前にあったら。
淫乱女教師がフェラ、パイズリで同僚の先生を責めまくります。
挿入部のアップも豊富なのでオマンコもモロ見えですよ。
無料動画をどうぞ
http://www.exciteroom.com/


755 名前:デフォルトの名無しさん :03/08/18 20:34
>>753
そんなファイルはないか、またはその解説書オリジナルのものだと思う。

絵を書きたかったらWindowsプログラミングのスキルは必須。
>>2の「猫でも〜」を見ることをお勧めする。
Windows SDK編 第1部 25章あたりで絵を描いてるから。

756 名前:デフォルトの名無しさん :03/08/18 20:57
>>751 .NETスレで聞いてくらはい

757 名前:デフォルトの名無しさん :03/08/18 20:59
あれ? VC++は .NETも含めてこのスレ?

758 名前:デフォルトの名無しさん :03/08/18 23:36
>>754
誰が貴様のような自意識過剰女なんぞ見るかよ!

759 名前:デフォルトの名無しさん :03/08/19 02:08
>>755
勉強しなおしてきます・・・。ありがとうございました。

760 名前:デフォルトの名無しさん :03/08/19 04:57

       期限は 8/20 まで

文部科学省に反対メールを!!今しかない!

「朝鮮学校含め大学受験資格容認へ 来春入試から、文科省方針」
http://www.sankei.co.jp/news/030802/0802sha008.htm

文部科学省 http://www.mext.go.jp/f_mailto.htm

文部科学省ご意見メールアドレス voice@mext.go.jp  <<<ここ

(友人知人家族にも知らせてね!携帯からもメールできます。反対の意思表示を!)

組織的工作で、朝鮮総連が文部科学省に「認めろ」とメール攻撃中。
2chが応戦中。応援お願いします。メールで「絶対反対!」の意思表示だけでも!
一人でも多くの方のご協力をお願いします!


761 名前:_ :03/08/19 23:09
http://homepage.mac.com/yamazaki8

762 名前:デフォルトの名無しさん :03/08/20 08:25
#include <stdio.h>
#include <conio.h>
int main(void)
{
  for(;;)//終了はCtrl+cで
  {
    if(kbhit())
      printf("%c ",(char)getch());
  }
  return 0;
}

ビルド時に自動的に実行されるプログラムに比べて、Debug、Releaseフォルダに
できた.exeのスピードが遅くて困っています。配布する時に動作の悪い方しか
できないので。解決方法を教えてください。

763 名前:762 :03/08/20 08:27
>>762
スピードが遅いと言うのは、キーを押しっぱなしにした時の事です。

764 名前:デフォルトの名無しさん :03/08/20 09:03
くだらんよチミ

765 名前:デフォルトの名無しさん :03/08/20 12:19
C++.NETのWindowsフォームアプリケーションでプログラムを作っているのですが
CStringArray型を使いたいと思い#include "afxcoll.h"をしてみたら
MessageBox::Show("1");の場所で
error C2653: 'MessageBoxA' : 識別子がクラス名でも名前空間名でもありません。
error C2660: 'System::Windows::Forms::Control::Show' : 関数に 1 個の引数を指定できません。
というエラーが出てしまいます
#include <afx.h>を記述しただけでエラーが発生してしまうのですがエラーを消す為にはどうしたらいいでしょうか?

From1.h内
private: System::Void button1_Click(System::Object * sender, System::EventArgs * e)
{
//CStringArray Cst_File_Array;
MessageBox::Show("1");
}

From1.cpp内
#include "stdafx.h"
#include "afxcoll.h"
#include "Form1.h"
#include <windows.h>

766 名前:デフォルトの名無しさん :03/08/20 12:25
>>765
WindowsフォームアプリでMFCのクラスを使えるの?

767 名前:デフォルトの名無しさん :03/08/20 12:27
>>762
標準出力はバッファリングされる。

768 名前:デフォルトの名無しさん :03/08/20 12:31
VC++で、セマフォみたいな機構を利用したいのだがなんかあったっけ?

769 名前:デフォルトの名無しさん :03/08/20 12:42
>>766
MessageBox::Showを使わなければ
エラーが発生せず正常に使えます
String* Str_File_Array[];の配列だとAddが使えず・・
SystemArray型はサイズが固定なので動的には使えず・・
なので文字列を追加していく処理を行うにはCStringArray型を
使うとかなり楽なんですよ
だからMFCクラスを使おうと思っているんですが

770 名前:デフォルトの名無しさん :03/08/20 12:51
>>769
Vectorでstring使っちゃダメなの?

771 名前:デフォルトの名無しさん :03/08/20 13:02
>>770
すいません
「Vectorでstring」ってどういう意味ですか?

#include <string>
using namespace std;
で通常のbasic_stringを使うという事でしょうか?

772 名前:デフォルトの名無しさん :03/08/20 13:04
std::vector<CString>ってことだろ。

773 名前:デフォルトの名無しさん :03/08/20 13:05
>>769
ArrayList

774 名前:765 :03/08/20 13:42
>>772
なるほど、そういう事ですか
ありがとうございました

>>773
ArrayListでうまくできました
本当にありがとうございました
はまっていた所なんで助かりました

775 名前:デフォルトの名無しさん :03/08/20 18:43
C++.NETFrameworkでiniファイルの書き込みと読み込みをしたいのですが
ネットで調べた所したのURLにサンプルコードがあったのですがC#で書かれていて
よくわかりません

ttp://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html

このサンプルコードをどのように使えばいいのでしょう?
試しにclass IniFileHandler {}をコピペしてみましたがエラーが発生してしまいました(当たり前だが)
error C2814: 'Ar::Form1::IniFileHandler' がマネージ 'Ar::Form1' の中で定義されています。明示的に __gc、__nogc または __value を指定する必要があります。
error C2337: 'DllImport' : アトリビュートが見つかりません。ビルトインまたは、現在の名前空間でアクセスできるカスタム属性ではありません。
error C2143: 構文エラー : ';' が 'public' の前にありません。

どうかよろしくお願いします

776 名前:デフォルトの名無しさん :03/08/21 20:27
>>775

using namespace System::Runtime::InteropServices;
using namespace System::Text;

// Ini 読み込み
[DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileString", CharSet = Ansi)]
static UInt32 GetPrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpDefault, StringBuilder* lpReturnedString,
UInt32 nSize, String* lpFileName );

// Ini 書き込み
[DllImport("KERNEL32.DLL", EntryPoint = "WritePrivateProfileString", CharSet = Ansi)]
static UInt32 WritePrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpString, String* lpFileName);

777 名前:775 :03/08/22 11:11
>>776
回答ありがとうございました
エラーは消えたのですが今度はForm1.cpp内でエラーが発生してしまいました
宣言してる場所がおかしいのでしょうか?

Ar\Form1.cpp(16): error C2129: 静的関数 'unsigned int Ar::WritePrivateProfileString(System::String __gc *,System::String __gc *,System::String __gc *,System::String __gc *)' が宣言されましたが定義されていません。

778 名前:775 :03/08/22 11:12
Form1.cpp内
#include "stdafx.h"
#include "Form1.h"
#include <windows.h>

using namespace Ar;

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;
Application::Run(new Form1());
return 0;
}

779 名前:775 :03/08/22 11:13
Form1.h内
namespace Ar
{
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::Text;
using namespace System::Runtime::InteropServices;


// Ini 読み込み
[DllImport("KERNEL32.DLL", EntryPoint = "GetPrivateProfileString", CharSet = Ansi)]
static UInt32 GetPrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpDefault, StringBuilder* lpReturnedString,
UInt32 nSize, String* lpFileName );

// Ini 書き込み
[DllImport("KERNEL32.DLL", EntryPoint = "WritePrivateProfileString", CharSet = Ansi)]
static UInt32 WritePrivateProfileString( String* lpAppName,
String* lpKeyName, String* lpString, String* lpFileName);

中略

//iniファイル処理関数
private: System::Void IniFile(System::Object * sender, System::EventArgs * e)
{
WritePrivateProfileString("Setup","test","1",String::Concat(Application::StartupPath,"Setup.ini"));
}

780 名前:776 :03/08/22 16:56
>>777
>>776 のコードはクラスの中で定義します。

>>779
〜 StartupPath, "Setup.ini"));
↑これだと区切り文字を付け足してないので失敗します。
〜 StartupPath, "\\Setup.ini"));

781 名前:デフォルトの名無しさん :03/08/23 22:21
以下のプログラムをvc++6.0でコンパイルすると
「コンストラクタの宣言に戻り値の型が含まれています」というエラーがでます。
どうしてでしょう?
わたしの使っている教科書そのままなので、構文がおかしいとは思えないのですが・・・。;q;

class complex{
  float r, i;
public:
  complex(float a = 0.0, float b = 0.0);
  float real();
  float imag();
}

complex::complex(float a, float b){
  r = a; i= b;
}
float complex::imag(){
  return i;
}
float complex::real(){
  return r;
}

782 名前:デフォルトの名無しさん :03/08/23 22:35
>>781
class complex{
/* 〜 */
};// ←セミコロンがねぇよ。

783 名前:デフォルトの名無しさん :03/08/23 22:44
>>782
(゚◇゚)~ガーン それだけなのー!?


・・・ほんとだ、コンパイラとおった。(w
ありがとうございました。m(__)m

784 名前:すれ違いだが :03/08/24 02:48
>>781
どうせだから勉強がてら四則演算子とかも定義してみ。


785 名前:デフォルトの名無しさん :03/08/24 09:36
int main(int argc,char* argv[]){ ←二個目の引数でパスを渡す
char path[20];
   
strcpy(path,argv[2]);
chdir(path)
こんな感じでやっているんですが、コンパイルすら通りません。
VCでchdirとか入力すると引数候補とかが表示されるのに、
それは定義されていませんんと出ます。なぜでしょうか?


786 名前:デフォルトの名無しさん :03/08/24 09:39
>>785
#include <direct.h>

787 名前:デフォルトの名無しさん :03/08/24 09:58
2個目なら argv[1] じゃないの?
ところで、path[20] って少なすぎ。

788 名前:デフォルトの名無しさん :03/08/24 10:35
>>787
二個目の要素じゃなくて二個目の引数だからargv[2]でOKだろ。

789 名前:デフォルトの名無しさん :03/08/24 10:42
>>786
そんなのあるんですか〜、標準関数じゃないっぽいから
知らなかった〜
>>787
うーん、適当に20文字にしてしまいましたが、少ないですか〜


790 名前:デフォルトの名無しさん :03/08/24 11:28
windowsやDOSでは、
argv[0]に引数の個数、argv[1]に第一引数、argv[2]に第二引数・・・なんだよね。
僕の使ってる教科書はargv[0]が第一引数になっていてかなり戸惑った。

791 名前:デフォルトの名無しさん :03/08/24 11:31
> argv[0]に引数の個数、

違います。

792 名前:デフォルトの名無しさん :03/08/24 11:35
>>791
違ったっけ?(w

793 名前:デフォルトの名無しさん :03/08/24 11:39
あ、プログラム名だ。
引数の数はargc-1だな。

794 名前:デフォルトの名無しさん :03/08/24 12:04
>>789 強いていうなら、多い少ないの問題でないと思う

795 名前:デフォルトの名無しさん :03/08/24 13:11
動的2次元配列なんですが、
典型的なダブルポインタつかったパターンで対応できない場合
(2次元目の要素を見つける度にpush_backする必要がある)ではどうするのが
一番手っ取り早いでしょうか。
みなさんどう対応されてますでしょうか。

ベクタのベクタ(vector<vector<int> > v; )
を試したのですがメモリ使用量が多杉&処理速度も低速
&stlport453でこれやるとVCのheapエラーが出て実用になりませんでした。


796 名前:デフォルトの名無しさん :03/08/24 13:25
list<vector<T> >
deque<T* >
あたりではどうか。

797 名前:デフォルトの名無しさん :03/08/24 13:41
結局>>751の件はどうなんでしょ?
私も調べたんですが見付けられず(鬱
どなたか情報お願いします_(_^_)_

798 名前:デフォルトの名無しさん :03/08/24 13:43
vector<vector*<int>>で代用。

799 名前:デフォルトの名無しさん :03/08/24 13:49
>>797
別売り。

800 名前:795 :03/08/24 18:17
>>796
外側をlistにするのは気がつきませんでした。
ポインタ使った方法にも興味があります。
ありがとうございます。早速試してみます。
>>798
おお、こういった記述もできるんですね。
もちょっと勉強してみます。
ありがとうございました。

801 名前:797 :03/08/24 19:27
>799
やっぱそうなん?(鬱
セコいよなぁ、M$もその金魚の糞共も

802 名前:デフォルトの名無しさん :03/08/25 00:35
VC++ .NETスタンダードとプロフェッショナル(VS.NET)とを比べての
スタンダードが劣る部分は何ですか?

803 名前:学生さそ :03/08/25 00:40
>>802
最適化と、リモートデバッガ。

804 名前:デフォルトの名無しさん :03/08/25 01:30
最適化が出来ないってのは、大きなアプリケーションを作る上で致命的ですよねぇ。
ここはMSに貢いでまでVS.NETを買うべきでしょうか。

805 名前:学生さそ :03/08/25 01:57
>>804
漏れがヘタレってことも多いにあると思うけど、VC6std でコンパイルした奴と
VC2003.net Proffessional (赤版)でコンパイルした奴を比べたら
10秒ぐらいかかる処理が2秒ぐらいで終わったよ… ┐(´ー`)┌
ちなみにファイルサイズは 約130KB → 110KBで 20KBぐらい減った。
最適化を期待してヨカタよ。

806 名前:学生さそ :03/08/25 01:59
○最適化を期待して(VS2003 Prof 赤版を買って)ヨカタよ。

に訂正…。

807 名前:デフォルトの名無しさん :03/08/25 02:05
非赤で13万弱か…。お財布と相談しつつ慎重に検討してみます。
ありがとうございました。

808 名前:デフォルトの名無しさん :03/08/25 10:58
>>805
すんなにかわるのかぁ・・・。はふーん。
相変わらず6.0スタンダードでがんばってる漏れは負け組み?

809 名前:デフォルトの名無しさん :03/08/25 13:45
>相変わらず6.0スタンダードでがんばってる漏れは負け組み?

仕事ならしょうがないんちゃう?

810 名前:デフォルトの名無しさん :03/08/25 14:09
仕事でスタンダードなら負け組みもいいところ

811 名前:デフォルトの名無しさん :03/08/25 14:43
>>809
仕事なのにスタンダードなんて使うのか?

812 名前:デフォルトの名無しさん :03/08/25 20:22
つーか金がないならボーランドの無料コンパイラ使うけどな
SDKベースでシコシコ開発するよ(疲)

813 名前:デフォルトの名無しさん :03/08/25 21:08
>>812
あれは最適化できるんかいな?

814 名前:デフォルトの名無しさん :03/08/25 23:16
>>813
速度優先とサイズ優先のコンパイルオプションがある
どちらでコンパイルしてもVC6よりサイズがコンパクトだったw
動作も問題なかったし、速度も問題なし

ただし、dependancy walkerとかspyとかがないから、それに相当するモノを・・・・・
フロントエンドを導入すれば開発環境としては問題がないだろうが・・・・・


815 名前:デフォルトの名無しさん :03/08/26 06:23
ピクチャボックスの大きさを簡単にわかる
方法はどうすればいいのでしょうか。
プロパティを見ても分からないし・・・

816 名前:デフォルトの名無しさん :03/08/26 09:52
>>815
ステータスバーに位置とサイズ

817 名前:デフォルトの名無しさん :03/08/26 14:25
>>816
あ、ありがとうございました。


818 名前:デフォルトの名無しさん :03/08/26 15:55
動的に構造体を作りたい場合はどうしたらいいのでしょうか?

819 名前:デフォルトの名無しさん :03/08/26 15:57
>>818
すいません、訂正です。
構造体の配列を動的に確保したい場合はどうしたらいいのでしょうか?

820 名前:デフォルトの名無しさん :03/08/26 15:59
>>819
ほらよ。ガンガレ!
http://www.google.co.jp/search?q=%E6%A7%8B%E9%80%A0%E4%BD%93%E3%81%AE%E9%85%8D%E5%88%97%E3%82%92%E5%8B%95%E7%9A%84%E3%81%AB%E7%A2%BA%E4%BF%9D&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

821 名前:デフォルトの名無しさん :03/08/26 20:54
構造体を定義しといて確保したい場所でnewすればええんでないのかい?

822 名前:デフォルトの名無しさん :03/08/27 02:24
std::vectorかなんかを使う

823 名前:775 :03/08/27 12:35
>>780
返事が遅くなってスマソ
クラス内で宣言したらちゃんと使えるようになりました
ありがとうございました

824 名前:デフォルトの名無しさん :03/08/27 21:12
C++スレでスレ違いと言われたのでこちらでおながいします。

>VC.netでコンパイルしたプログラムを.netフレームワークなしで
>動かすにはどうすればいいの?
>
>mscoree.dllがロードできないって言われて終わる。
>検索しても.netフレームワークをインストールすれ、っていう
>文献は見つかったけど、コンパイルをどう工夫するのか、ってのはない。
>なんか簡単なプログラムを書いた友達はデフォルトで動く、
>って言ってたけど、なんかオプションとかあるの?

825 名前:デフォルトの名無しさん :03/08/27 22:03
VC6でWindows APIをベースに簡単なプログラムを作っています。

ウィンドウクラスのレジストで
WNDCLASSオブジェクトのhbrBackgroundメンバに
(HBRUSH)GetStockObject(NULL_BRUSH)をセットして
背景を透明にしたいと思います。

しかし、このままでは背景がうまく再描画されてくれません。
WM_PAINTメッセージを受取ったとき、
ちゃんと背景が再描画されてデスクトップが透けて見えるようにするには
どうしたらよいでしょうか?

どうかお知恵をお貸しください。m(__)m

826 名前:あぼーん :あぼーん
あぼーん

827 名前:デフォルトの名無しさん :03/08/27 22:27
背景とデスクトップをSRC_PAINTさせればいいんちゃう?
アフォですまんm(__)m

828 名前:デフォルトの名無しさん :03/08/27 22:29
>>825
NULL_BRUSHは背景を透過するものではないのだが・・・

829 名前:825 :03/08/27 22:42
>>827
むみゅう。うちのMSDNではSRC_PAINTが検索に引っかかってこないのですが・・・。

>>828
では透明にするにはどうしたらよいのでしょう?
背景や枠を透明にできないと、
万景方号に拉致されてしまいます。;_;

830 名前:デフォルトの名無しさん :03/08/27 23:09
>>824
マネージドC++だったら.NETフレームは絶対必要。.NETフレームワークなし
で動くのはアンマネージドC++でビルドした場合だけ。つまりVC++7.0を使って
MFCアプリでも何でもいいからネイティブコードを生成すればいい。

831 名前:828 :03/08/27 23:15
>>829
>>うちのMSDNではSRC_PAINTが検索に引っかかってこないのですが・・・。

BitBltなどにあるラスタオペレーションコードでしょう
SRCCOPYとかSRCPAINTとか

>>では透明にするにはどうしたらよいのでしょう?

普通はデスクトップをキャプチャーして背景にコピーでしょうか。
「猫でも」にもあるでしょう、たぶん。
Win2000以降ならレイヤードウィンドウをつかうとか。



832 名前:デフォルトの名無しさん :03/08/27 23:16
>>825
すまん。SRCPAINTやった。
でもこれはBMP関係だから意味ないかも( ´Д⊂ヽ

833 名前:830 :03/08/28 00:51
マネージドと案マネージドのC++コンパイラって同じものなのかな?
だとすればコマンドライン引数でスイッチできるのかも。だけど普通は
プロジェクトの自動生成の段階でどっちか決定するし、そもそも使う
ライブラリだって違うから、マネージドと案マネージドを切り替えるな
んて事もしない。だからコマンドライン引数なんて考えた事もないよ。

834 名前:デフォルトの名無しさん :03/08/28 08:55
質問です。
MFCで、エクスプローラの左側のペインのようなフォルダツリーを
簡単に作れるクラスはないですか?

835 名前:デフォルトの名無しさん :03/08/28 09:08
無いです。
お次の方どうぞ。

836 名前:デフォルトの名無しさん :03/08/28 09:17
>>835
おいおい、エクスプローラ自体がMFCだろが。

837 名前:834 :03/08/28 09:23
結構いろいろなところで使われてることが多いので、そういうクラスがあると思うのですが・・・。



838 名前:デフォルトの名無しさん :03/08/28 09:53
「MFCの中にフォルダツリーを簡単に作れるクラスは無いか?」と言う問いに
「無い」は適切な答えだと思うが。

839 名前:デフォルトの名無しさん :03/08/28 09:58
>>837
CTreeView

840 名前:834 :03/08/28 09:58
はいそうですね。MFCにはないようです。
シェル名前空間から階層構造を取得し、ツリーコントロールに入れていけばできる、ということでしょうか。
でも面倒くさいですね。
SDK用ですが見つかったので、これをCWndにアタッチして使うことにします。
http://www.wakusei.ne.jp/software/free/soft_1747.html
これの作者は「MFCでは簡単に作れるのに」と書いてるのでそういうものがあるかと思ったわけです。

841 名前:デフォルトの名無しさん :03/08/28 10:03
>>840
簡単にできるっていうのは画面分割の方をさしているかと思われ
ツリーもMFCのCTreeCtrlの方が若干扱いやすい…かも

842 名前:デフォルトの名無しさん :03/08/28 10:34
MFC + PIDL ってのは、そこら辺にごろごろ落ちてるけどな。

843 名前:デフォルトの名無しさん :03/08/28 12:46
MFCならCodeProjectとかCodeGuru行けば、いっぱいありそうだけどな。

844 名前:834 :03/08/28 19:52
>>843
CodeProjectに、まさしく探していたものがありました。どうもありがとうございます。
http://www.codeproject.com/treectrl/shelltreectrl.asp

845 名前:デフォルトの名無しさん :03/08/28 21:45
VCで#include "cpgplot.h"を使うにはどうしたらよいですか?
PGPLOTのライブラリーが必要とあったのですが導入方法がまったく分かりません。ご教授頂けると幸いです。


846 名前:デフォルトの名無しさん :03/08/28 21:53
あどけない顔でニッコリ微笑みながらのフェラが抜きどころ!
鮮明映像で臨場感も抜群の一作です。
素人援交女と巨乳美女満載!当然モロですよ。
無料動画あります。
http://www.cappuchinko.com/

847 名前:デフォルトの名無しさん :03/08/28 22:30
PGPLOTをインストールして、ヘッダのディレクトリをパスに追加するか、
ヘッダファイルを全部VisualC++のヘッダディレクトリにコピーする。

848 名前:デフォルトの名無しさん :03/08/28 23:12
>>836
Explorer.exeをDependency Walkerで見てもMFC42.DLLとかでてこないよ。
MSVCRT.DLLは出てくるからMFCをスタティックリンクしてるとも考えにくい。
よって多分MFCは使ってない。

849 名前:デフォルトの名無しさん :03/08/28 23:25
>>847 すみません。http://www.astro.caltech.edu/~tjp/pgplot/のHPでPGPLOTをインストールしたのですがファイルがいっぱいありすぎてどの部分のヘッダファイルをPGPLOTをVCのヘッダにディレクトリにコピーすればよいのか分かりません。
手取り足取りですみません。
宜しければ教えてください。


850 名前:デフォルトの名無しさん :03/08/28 23:42
ごめんなさい。849です。日本語が変でした。
あらためて http://www.astro.caltech.edu/~tjp/pgplot/のHPでPGPLOTをインストールしたのですがファイルがいっぱいありすぎてどの部分のヘッダファイルをVCのヘッダディレクトリにコピーすればよいのか分かりません。
手取り足取りですみません。
宜しければ教えてください。


851 名前:デフォルトの名無しさん :03/08/28 23:51
なんだこりゃ?フォートランじゃねえか。

852 名前:デフォルトの名無しさん :03/08/28 23:53
今日初めてVCでGUIアプリをつくったが、、、

お前らマゾだろ

853 名前:デフォルトの名無しさん :03/08/28 23:59
はじめはそう感じるかもね・・・。

854 名前:デフォルトの名無しさん :03/08/29 00:14
つーか、PGPLOT自体、VCだけでコンパイルできない雰囲気だが。

855 名前:デフォルトの名無しさん :03/08/29 00:18
MFCは慣れればVBなんかより開発効率いいよ。特にプログラムが
でかくなると。

856 名前:デフォルトの名無しさん :03/08/29 00:19
>>850
コンパイル済みのライブラリ探した方が早いね。それかUNIXでやるか。

857 名前:デフォルトの名無しさん :03/08/29 00:26
850です。どうもありがとうございます。
学校のレポートでどうしてもC言語を使って物理シュミレーションしなくてはならなかったので使いたかったんでが、なにか 他に良い方法はないでしょうか?UNIXや、LINAXを使っていないのでVCでするしかなかったもので。


858 名前:デフォルトの名無しさん :03/08/29 00:26
こんなわけのわからないマイナーなライブラリ使うよりも、
WindowsのGDI使った方が早い気がするんだが。

859 名前:デフォルトの名無しさん :03/08/29 00:33
サウンドプログラミングがMFCだったのでショックだった。
SDKで書いてあれば、SDK、MFCに両方に対応できるだろうに。

860 名前:デフォルトの名無しさん :03/08/29 00:34
というより、一体どういう学校なんだよ。カリキュラムに問題があるな。
シミュレーション以前にグラフィックライブラリの基本ぐらいは実習で教えるだろ?
元々CやC++にはグラフィックの扱いは定義されてないんだからな。
WindowsのGDIは初心者には癖が強すぎて難しいと思う。
OpenGLとGLUTを使うのがベストだな。俺が学生の頃シミュレーションはよくこれでやった。

861 名前:しぇけなべいべな :03/08/29 18:51
VC6でアイコンリソースを作成すると、例えば

IDI_ICON1 ICON DISCARDABLE "icon1.ico"

という具合に、IDに「IDI_ICON1」という名前をつけても、resource.hの方で

#define IDI_ICON1 110

のようにされて、ID名をconst char*型からconst int型に強制的に変更されてしまいます。
こうなると、ウィンドウクラスのレジストで、

WNDCLASS wc;
wc.hIcon = LoadIcon(hInst, "IDI_ICON1");

としてもエラーになってしまいます。(LoadIconの第二引数がLPCTSTR型であるため)
MSDNには、「ID番号を使う場合、MAKEINTRESOURCEマクロを使用せよ」と書かれているので、

WNDCLASS wc;
wc.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON1));

のようにするのですがうまくいきません。
どうやったらうまくいくのでしょうか・・・。;_;)ノノ
ちなみに、メニューIDやビットマップIDなどもconst int型に強制変更されてしまうため、
随所でMAKEINTRESOURCEマクロが必要になるのですが、これらは正しく機能します。
iconの場合だけ機能しません。


862 名前:デフォルトの名無しさん :03/08/29 20:04
それはよくひっかかるんだよね。
IDI_ICON1じゃなくて"IDI_ICON1"にすべし。

863 名前:デフォルトの名無しさん :03/08/29 20:10
CListCtrl で DeleteItem を使っているのですが、大量のアイテムを削除しようとすると
時間がかかりすぎて困っています。何か解決方法はないでしょうか?

864 名前:デフォルトの名無しさん :03/08/29 23:22
削除中SetRedrawで描画を止めればいいかも

865 名前:863 :03/08/29 23:27
>>864
レスありがとうございます。早速試してみます。

866 名前:863 :03/08/29 23:36
おかげさまで激速になりました。

867 名前:デフォルトの名無しさん :03/08/30 02:58
VisualC++のプロファイラを使って行単位のカバレッジを
行いたいのですが、インクルードしているiostreamなどの
ヘッダの中身まで検査されてしまい、網羅率が上がりません。
プロファイルダイアログの「詳細設定」に/EXC ヘッダ名.h
と書いたり、ソースファイルの#includeしている行を
EXCで除外したりしましたが、改善されませんでした。
プロファイルの対象からヘッダファイルをはずす方法を
教えて下さい。
使用環境はVC6.0のプロ版です。よろしくお願いします。


868 名前:デフォルトの名無しさん :03/08/30 08:58
>>863
表示の更新は止めてるんだろうね?

869 名前:デフォルトの名無しさん :03/08/30 11:39
質問おながいします。
CComboをCreateしてAddStringしたのですが、
ドロップダウンリストにスクロールバーが表示されません。
スパイでみたところWS_EX_RIGHTSCROLLBARはたっているのですが。。。

870 名前:デフォルトの名無しさん :03/08/30 12:35
>>869
普通にリストボックスの高さが広すぎるのでは?

871 名前:870 :03/08/30 12:48
リソースエディタの中で↓をクリックすると高さを調節できるようになったはず

872 名前:デフォルトの名無しさん :03/08/30 13:24
VCいじってるんですけど、ウィンドウの様々な項目の意味がわかりません。
どこかにそういうのを解説してあるサイトありませんか?
またはそういうの中心の本でもいいです。

873 名前:デフォルトの名無しさん :03/08/30 13:28
スクリーンの低消費電力モードを無効にする方法はありませんか?
SystemParametersInfoだとWindows2000でうまく機能しないので。

874 名前:デフォルトの名無しさん :03/08/30 14:02
ダイアログにボタンを貼り付けたのですが
表示されるとDisabledされます。
なんででしょうか。。。

875 名前:869 :03/08/30 14:39
>>870-871
どうもすみませんでした。解決しました。
WS_EX_RIGHTSCROLLBAR以前にWS_VSCROLLが立っていませんでした。
お騒がせしました。。。m(__)m

876 名前:デフォルトの名無しさん :03/08/30 22:03
>>873
設定−コントロールパネル−電源オプション

877 名前:デフォルトの名無しさん :03/08/30 23:46
>>874
デフォルトが無効になってるとか

878 名前:デフォルトの名無しさん :03/08/31 00:12
>>876
くだらね。

879 名前:デフォルトの名無しさん :03/08/31 11:22
画像の縮小をしたいのですが、StretchBlt()を使うととても汚いです。
もっときれいに縮小できる方法はありませんか?

880 名前:デフォルトの名無しさん :03/08/31 11:34
SetStretchBltModeは試してみた?

881 名前:デフォルトの名無しさん :03/08/31 11:48
教えてください。
Win32プロジェクトと.netプロジェクトの違いは一体何ですか?
Win32ってWinNT以降のOSの総称ですよね?
.netって一体何ですか?
どちらを使うべきか迷います。

882 名前:879 :03/08/31 11:59
>>880
SetStretchBltModeをCOLORONCOLORにしたらきれいになりました。
どうもありがとうございました。

883 名前:873 :03/08/31 12:56
>>876
ありがとうございます。解決しました。

884 名前:635 :03/08/31 16:31
VisualC++ Ver6 SP5 使ってます。ツールバーの配置が偶に換わるんですが防ぐ方法はあるのでしょうか?
いつもは↓

■ | ■■■ | ■■■ | ■■■ | ■■■ | ■匚二二二二▼ | ■ || ■■■■ | ■■■■■ | ■ | ■■■■■■
匚二二二二▼ | 匚二二二二▼ | 匚二二二二▼■ || ■■■■■■ || ■■■■ | ■ | ■■ | ■ |

↑という配置になっているのですが、デバッグを終えてVCの画面に戻ってみると↓

■ | ■■■ | ■■■ | ■■■ | ■■■ | ■匚二二二二▼ | ■
|| ■■■■ | ■■■■■ | ■ | ■■■■■■
匚二二二二▼ | 匚二二二二▼ | 匚二二二二▼■
|| ■■■■■■
|| ■■■■ | ■ | ■■ | ■ |

↑のように縦一列になってたりします。


885 名前:デフォルトの名無しさん :03/08/31 17:08
>>884
たまになるね。

886 名前:デフォルトの名無しさん :03/08/31 17:21
にた症状で、DirectXのプログラミングしてる時、
作成しているアプリで、たとえば640x480の全画面表示をやると
終了した時にVisualStudioまでその解像度になってしまうことがあるんですが、
これも解決方法ありませんか?

887 名前:デフォルトの名無しさん :03/08/31 17:29
>>884
通常時とデバッグ時のツールバー配置を、全く同じにすればずれません。

888 名前:デフォルトの名無しさん :03/08/31 18:28
自ウインドウ(SDI or ダイアログベース)のウインドウハンドルの取得のしかたを教えてください。
関数の引数に HWND があるのでウインドウハンドルが知りたいのです。

環境はWin2k+VC++6.0Proです。

889 名前:デフォルトの名無しさん :03/08/31 19:19
HWND GetSafeHwnd()

890 名前:デフォルトの名無しさん :03/08/31 21:08
>>884
デバッグ中に最小化しない。

891 名前:884 :03/08/31 22:05
>>890
それだ!!これが原因だったのかぁ・・・
dクス

892 名前:デフォルトの名無しさん :03/09/01 00:06
m_hWnd直接使っちゃだめなの?

893 名前:デフォルトの名無しさん :03/09/01 01:56
>>892
ttp://forums.belution.com/ja/vc/000/101/90s.shtml

894 名前:デフォルトの名無しさん :03/09/01 10:03
ユーザーインターフェイススレッドを new でヒープに作りました。
ここで PostQuitMessage した場合、ヒープは delete されるのでしょうか?
コンストラクタは呼び出されているようなのですが。

895 名前:デフォルトの名無しさん :03/09/01 10:37
メールを送信したいのですが、どのようにしたら良いのでしょう?
やはり、CAsyncSocket??

896 名前:デフォルトの名無しさん :03/09/01 12:45
>> 894
素直にwinsockを直接叩きなさい。

897 名前:デフォルトの名無しさん :03/09/01 12:55
まぁ宛先違うけどな

898 名前:デフォルトの名無しさん :03/09/01 13:26
>>896
すいません、直接叩くって言うのは・・・?

899 名前:デフォルトの名無しさん :03/09/01 13:30
APIを叩くだのポートを叩くだの言ってるやつは素人。

ポートを開くだの閉じるだの言ってるやつも素人。


900 名前:デフォルトの名無しさん :03/09/01 13:31
>>894
使えるならMAPIとかもある。

901 名前:デフォルトの名無しさん :03/09/01 15:42
>>899
じゃあ玄人はどういうんだ?

902 名前:デフォルトの名無しさん :03/09/01 15:51
そんなもんにこだわるのが素人

903 名前:デフォルトの名無しさん :03/09/01 18:48
visual c++ 6.0ってgarbage collectionないの?
マルチスレッドのDLL書いてるんだけど、ない場合死にそう…。

904 名前:デフォルトの名無しさん :03/09/01 19:04
C#ってそういう人のためにあるんだろうな。

905 名前:903 :03/09/01 19:13
>>904
洩れもJavaメインだからなぁ。

こういう時ってみんなどうしてんの?
レファレンスカウンタを自分で実装してる?

とりあえずboostにそれっぽいのがあったから使おうと思うんだけど、
http://www.boost.org/libs/smart_ptr/shared_ptr.htm
インスタンスを保持する変数全てにこれ使えばGCやってくれるんだよね?


906 名前:デフォルトの名無しさん :03/09/01 20:52
当方超初心者です。

Winsockのことで質問です。(業務上TCP/IPをやることになった・・・)
ちなみにコンパイラはVC5.0です。

Winsockのconnect()でWSAEADDERINUSEが帰ってくるケースとしては
どのような場合が考えられるのでしょうか?

ソケットのクローズをクライアント側で行うプログラムを作成しています。
この時クライアント側がアクティブクローズを行っていることから
TIME_WAIT状態のソケットがクライアント側で発生するという記事をみました。

このようにしてClient側でTIME_WAIT状態のソケットが大量に発生した場合
やはりClient側のconnect()でWSAEADDERINUSEが帰るのでしょうか?

またそれに関するMSDNのページなどがありましたら教えていただきたいので
どうかよろしくお願いします。
ちなみにVBではそれらしい技術情報を見ましたが・・・

907 名前:デフォルトの名無しさん :03/09/01 20:57
>>906
bindしてからconnectしてる?

908 名前:デフォルトの名無しさん :03/09/01 21:09
VC++.NETのひとつ前のバージョン(VC7?)ってもう手に入らないの?
お店においてない。

909 名前:デフォルトの名無しさん :03/09/01 21:10
VC5・・・・

910 名前:デフォルトの名無しさん :03/09/01 21:14
>>904
.NET版のC++はGC使えるらしいよ

911 名前:906 :03/09/01 21:56
>>907
はい。行っているとおもいます。
(元の処理は自分が組んだのではないのですが・・・)
通常は問題ないのですが
大量に処理を実行させたときに現象が発生します。
bind()で上記の値が返ってくるケースは幾つか記事を見たのですが
(サーバー側がクローズしたときにソケットがまだ裏で生きているのでbindで再使用が出来ない)
conect()で発生するケースが見つからなくて・・・

今回発生している原因がconnectなのは確かですし
MSDNでもconnectが値を返すのを確認しましたが
現象が発生するパターンが出てないので・・・
発生ケースとしてはbind()の場合と同じなのでしょうか?
bind()→connect()でTIMEWAITの判定を行うのが
サーバーかクライアントかという違いということなのでしょうか・・・

TCP/IPは本当に初心者なので処理自体もまだうろ覚えの状態で調べてるため
単純な問題かもしれませんがよろしくお願いいたします。

912 名前:デフォルトの名無しさん :03/09/01 22:09
>>888
MFCならCWnd::m_hWnd、SDKならコールバックのところでウィンドウハンドル
取れるけど、それにアクセスできない特殊な条件とかなの?

>>905
スマートポインタとスマートポインタの配列版は
手持ちのものを使ってますが重宝してます。

913 名前:デフォルトの名無しさん :03/09/01 22:59
>>905
待て待て。
確かに参照数が0になったら抱えてるオブジェクトをdeleteしてくれるが、
それをGCと呼ぶのは語弊があるぞ。
JAVAとC++は根本が違うという事を意識しないときっと痛い目に遭う。

で、boostとJAVA互換スレッドライブラリを作って妥協したりする(´ー`)y-~~


914 名前:903 :03/09/01 23:15
>>913
それはつまりスマートポインタ内でしかその参照を
数えてないわけで、スマートポインタ以外でポインタを
保持しているとしてもdeleteされるから、
第三者が書いたプログラムが俺が書いたコードの内部で生成
したインスタンスの参照を持っているのに勝手にdeleteされる
可能性もありで、グローバルなGCではない、
っていう理解で正しい?

915 名前:デフォルトの名無しさん :03/09/01 23:20
>>911
bindではエラーしてないの?
connectする前のbind消してみたら?

http://www.sockets.com/err_lst1.htm

916 名前:デフォルトの名無しさん :03/09/01 23:47
>>903
自分でGCに替わる仕掛けでも作りましょう。手っ取り早い方法は
削除対象のポインタをどっかにプールしておいて、抹消したい時点
でいっきにdeleteする。もんだいはdeleteすべき時期をどうやって
決めるか。以前.NET GCの仕組みがMSDNマガジンに解説されてたけど
すんごい事やってるね。

>>908 >>909
VC++.NET(Visual Studio.NET 2002)の一つ前っていうと6.0でしょ。

>>910
.NET版つまりマネージド版なら確かにGC使える。でもアンマネージド
のVC++7.0だったら使えないよ。

917 名前:デフォルトの名無しさん :03/09/01 23:51
>>914
そゆことだ。
smart pointerだけを使えばいいんだけど、そうしてくれない人もいる。
(smart pointerはコストが高いと、プロファイルもせずに思いこんでいる人とかね)
そういう人が出てきた時点であぼんぬする。

あと、C++でもgcはあるにはあるよ。名前失念したので自力検索してくれ。スマソ

918 名前:デフォルトの名無しさん :03/09/02 10:24
C++.NETのBinaryWriterでテキストファイルを出力する処理を作っているのですが
行ごと格納されている文字配列を一つのString型に統合して
バイト型に変換、BinaryWriterで書き込みというやり方でやっていたのですが
このやり方だと小さいサイズの書き込みは問題ないのですが、大きいファイルの書き込みになると
メモリが増大してしまって処理が極端に遅くなってしまいます

分割して書き込んでいけばいいと思うのですが
BinaryWriterでテキストを分割して書き込むいい方法はないでしょうか?

for(int Int_OutCount=0;Int_OutCount<Aay_output_Array->Count;Int_OutCount++)
{
//配列に入ってる文字列を統合する
Str_Replacement = String::Concat(Str_Replacement,Convert::ToString(Aay_output_Array->Item[Int_OutCount]));
}

//文字列をバイト列に変換する(ファイルに書き込む文字コードはShiftJIS)
Byte bytesData []=System::Text::Encoding::GetEncoding(932)->GetBytes(Str_Replacement);

//書き込み先のパスを設定する
FileStream* Fst_Output = new FileStream(Str_Save, FileMode::OpenOrCreate,FileAccess::ReadWrite);

//バイナリ書き込みモードを設定する
BinaryWriter* Biw_Writing = new BinaryWriter(Fst_Output);

//ファイルに書き込み
Biw_Writing->Write(bytesData);

919 名前:918 :03/09/02 10:48
下のやり方に変えたら分割してできるようになりました
お騒がせしました、、、

//書き込み先のパスを設定する
FileStream* Fst_Output = new FileStream(Str_Save, FileMode::OpenOrCreate,FileAccess::ReadWrite);

//バイナリ書き込みモードを設定する
BinaryWriter* Biw_Writing = new BinaryWriter(Fst_Output);

//検索でヒットした行数分ループする
for(int Int_OutCount=0;Int_OutCount<Aay_output_Array->Count;Int_OutCount++)
{
//配列に入ってる文字列を統合する
Str_Replacement = String::Concat(Str_Replacement,Convert::ToString(Aay_output_Array->Item[Int_OutCount]));
//文字列長さが1500以上になった場合
if(Str_Replacement->Length > 1500)
{
//文字列をバイナリモードに変換する(ファイルに書き込む文字コードはShiftJIS)
bytesData=System::Text::Encoding::GetEncoding(932)->GetBytes(Str_Replacement);

//ファイルに書き込み
Biw_Writing->Write(bytesData);

//格納用文字列の解放
Str_Replacement=Str_Replacement->Remove(0,Str_Replacement->Length);
}
}

920 名前:デフォルトの名無しさん :03/09/03 06:54
自分はコンソールアプリを作る時、Main.cppにmain関数、#include "ooo.h"
#include "ooo.h"、プロトタイプ宣言を書いて、その他は全て.hファイルに
書いています。ただ、落としたソースを見てみるとよくc、cppファイルが
複数入ったプログラムがあるのですが、何のために複数用意しているのでしょう。

921 名前:デフォルトの名無しさん :03/09/03 07:08
え、cppに宣言して実装をh?

922 名前:920 :03/09/03 07:36
はい。いつから、なぜこういうスタイルになったか覚えていませんが。
ただ、どこにどの関数があるか見つけやすかったりしますが。

////Main.cpp////
#include <stdio.h>
//Map.h
void InitMap(int*);
void ShowMap(int,int,int,int,int,int,int*);
//Fighting.h
void CheckFighting(int,int,int,int*);
void CheckVSFighting(int,int,int,int*);
#include "Map.h"
#include "Fighting.h"
int main(void)
{return 0;}

////Map.h////
void InitMap(int*)
{}
...

////Fighting.h////
void CheckFighting(int,int,int,int*)
{}
...

923 名前:デフォルトの名無しさん :03/09/03 08:39
>>922 (;´Д`)

924 名前:デフォルトの名無しさん :03/09/03 09:15
初心者に・・教えてくれるんですよね?│柱│ω・`)ジー
あのぅ・・C++ってまず何を参考に勉強すればいいんですか?
試しにC++が書ける?ソフトみたいなの使ったんですが、
何を書けばいいのかわからないし・・(;とか{って何?)
誰か助しけて・・(´;ω;`)

925 名前:デフォルトの名無しさん :03/09/03 10:02
>>924
スレ違い。C/C++ スレ池。

926 名前:デフォルトの名無しさん :03/09/03 10:07
>>924
C から始めたら。すでに枯れた言語だけど基本です。
あまり時間をかけずに一通り仕組みを理解したら C++ に進む。
同じように理解したら VC++ 。

あとは努力次第である程度書けるようになるでしょ

927 名前:デフォルトの名無しさん :03/09/03 12:12
>>924
まずCからやるならここで勉強してみては?
ttp://www.ics.kagoshima-u.ac.jp/edu/katuyoukiso/vc/index.html

使ってるソフトが何かにもよるが多少参考にと思います

928 名前:デフォルトの名無しさん :03/09/03 12:43
すいません、ちょっとお聞きしたいんですが、
ワークスペースを開こうとすると
「SHCV.DLLが読み取れません、VCをインストールしなおしてください」
というエラーがなぜか突然でるようになってしまいました。
以前までは普通に使えていたんですが、、、
一旦アンインスコして入れなおしたんですが、やはりダメでした。

ド素人なもので、DLLとかよくわからないんですが、
検索したら同名ファイルはいろいろ落ちていたので拾ってはみたものの、
どこに入れればいいのかも分からず、
なにかやたらな事したらどうなるか分らないので怖いです。

何か対処法がありましたら教えてください。よろしくお願いします。

929 名前:デフォルトの名無しさん :03/09/03 13:19
スマソ、、、
ちょっと前にVC本体のドライブを変えようと思って
インスコしなおす作業をしていたんですが、
その時になぜか例のファイルだけ消えずに残ってたらしく、
そのため新しいドライブの方にはこのファイルが作られなかった模様です。
そして今日久々に立ち上げようとしたらエラーがでた、、、
ということだったみたいです。
新しいフォルダの方にコピペしたらエラーがでなくなりました。
こんなことで悩んでいた挙句スレ汚し、、、
どうもすいませんでした。

930 名前:デフォルトの名無しさん :03/09/03 13:21
あ、ここIDないんですね、、、
>>929>>928です。重ね重ねすいません。

931 名前:924 :03/09/03 14:14
>>926,>>927
ありがd!!
C、C++、VC++全部同じだと思ってましたw
今ツタヤ行って「C言語超入門ゼロからのプログラミング」っての買ってきたんで
927のサイトも一緒に見ながら勉強します。

932 名前:920 :03/09/03 14:17
.cppはひとつで残りは全て.hというスタイルを貫きます。

933 名前:デフォルトの名無しさん :03/09/03 16:28
個人でやるならどうぞご自由に

934 名前:920 :03/09/03 16:49
>>933
やっぱり貫けません、ごめんなさい。
本当はどう言う風にするのが正しいのか知りたいです。
ANSI-Cではこうするとかあるなら教えてください。
また、グーグルのキーワードでも良いです。

935 名前:デフォルトの名無しさん :03/09/03 17:00
>>934
普通は
○○○.hファイルに宣言を書き,
拡張子以外同名の○○○.cppに
○○○.hで宣言してる関数の実装を書きます

936 名前:デフォルトの名無しさん :03/09/03 17:01
>>934
で,C++なら
○○○.hと○○○.cppのファイルは
クラスごとに1セットって感じ

937 名前:920 :03/09/03 17:27
>>935>>936
なるほど、そうだったのですか。ありがとうございました!

938 名前:デフォルトの名無しさん :03/09/03 20:09
WTLは.hにガリガリ書いていくけど、あれはクラスだし、ちょっと違うか。


939 名前:デフォルトの名無しさん :03/09/03 20:26
クラスっていうかテンプレートだから

940 名前:デフォルトの名無しさん :03/09/04 01:59
継承を使うときは基底クラスと派生クラスで別ファイルにする、しない、どっち?
わしの場合、
継承関係が複雑になってくるとインクルードシールドが必要になって面倒なので、
一ファイルにまとめちゃうんですが・・・。

941 名前:デフォルトの名無しさん :03/09/04 03:13
つーかVCの話じゃねー

942 名前:デフォルトの名無しさん :03/09/04 03:38
CStringからWCHAR*への簡単な変換方法はないでしょうか。
現在MultiByteToWideCharを使っているのですが
もっと便利な関数があったら教えてください

943 名前:デフォルトの名無しさん :03/09/04 04:13
#define UNICODE

944 名前:デフォルトの名無しさん :03/09/04 05:12
>>920は宣言と定義の違いをもっと理解した方がいい。
そのやり方だと、ソース間で(この場合はヘッダ間でか)相互にインクルードしあう場合はどう対処する?
初心者向きの本には、分割コンパイルについて述べられているものが少ないのも問題な気がする。
ヘッダは宣言のみとし、#ifndef,#define,#endifで二重定義を防ぐようにするのは習慣にすべき。

945 名前:デフォルトの名無しさん :03/09/04 05:18
>相互にインクルードしあう場合
意味もなくテンプレートにしたり、インターフェースクラスを活用して逃げる(w

946 名前:デフォルトの名無しさん :03/09/04 06:31
なんか、スレ違いな話題が進行しているような気がするが
VC7.1に移行してから pragma once のみで統一するようにした。
見た目にシンプルな方がイイ。

947 名前:デフォルトの名無しさん :03/09/04 09:46
>>942
_bstr_t使う。

948 名前:デフォルトの名無しさん :03/09/04 10:24
>>944
そうなんですよね。オレもソース分割でかなり悩みました。
自分のソースは今のところ短いから問題ないんですが、
人のソースを読むときに難解で・・・。

VCだとプリコンパイルだかなんだかでstdafx.cppなんかが
作られてますが、こういう手法ってVC以外でもとられる
もんなんでしょうか。

949 名前:デフォルトの名無しさん :03/09/04 12:02
すません。
Unix Cは経験あるけど、VC++&C++は初めて触るというのに
いきなりVC++開発突っ込まれてしまったプログラマです。

fstreamとかでテキストファイルを排他&追加モードでオープンしたいのですが、
どうやって指定すればいいのでしょう?
openmode = ios::appで追加モードにできるというのはわかったんですが……;


950 名前:920 :03/09/04 12:49
>>944
相互にインクルードしあう場合、分割コンパイル、#ifndef,#define,#endif
全部使ったことがありませんでした。基本は全部Main.cppに書いて、
長くなってきたら.hを作っていくと言う感じでした。win32アプリでも
WinMain.cppと.hという感じで作っていました。

951 名前:デフォルトの名無しさん :03/09/04 13:27
>>947 (´Д`;)

952 名前:デフォルトの名無しさん :03/09/04 17:29
MSDNライブラリがMFCマンセー仕様になってる気がするのは気のせいでしょうか?

953 名前:デフォルトの名無しさん :03/09/04 17:56
>>952
何をいまさら。(w

954 名前:デフォルトの名無しさん :03/09/04 19:00
>>952
そのためのMSDNです!

955 名前:デフォルトの名無しさん :03/09/04 22:23
Visual C++ 6.0
Visual C++ .NET Standard
Visual C++ .NET Standard 2003

ってあるけど
やっぱ新しいほうがいいの?

956 名前:デフォルトの名無しさん :03/09/04 22:29
>>949
排他&追加モードってどういうこと?

957 名前:デフォルトの名無しさん :03/09/04 23:04
>>955
>やっぱ新しいほうがいいの?
.net 2002は使ったことないがバグだらけという噂。
2003は漏れの感じでは良く出来てるかと。(ただし、重たい)

958 名前:デフォルトの名無しさん :03/09/04 23:13
>>949
CreateFileじゃだめなの?

959 名前:デフォルトの名無しさん :03/09/05 06:22
↓次スレハ マカスィタ!!

960 名前:デフォルトの名無しさん :03/09/05 16:41
↓  ↑
└→┘

961 名前:デフォルトの名無しさん :03/09/05 19:33
猫でもわかるプログラミング(ttp://www.kumei.ne.jp/c_lang/index.html)

のC言語編第57章のプログラムがエラーになるのですが、どうすればよいのでしょうか?

-------エラーメッセージ----------
'WinMain' : 関数はオーバーロードできません。
--------以下ソース---------------
#include <windows.h>

int WINAPI WinMain( HANDLE hInstance ,
HANDLE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
{
MessageBox(NULL,
(LPCSTR)"メッセージ・ボックスのテストです。",
(LPCSTR)"猫でもわかるプログラミング",
MB_OK);
return 0;
}
---------------------------------




962 名前:デフォルトの名無しさん :03/09/05 19:46
>>961
HANDLE → HINSTANCE に置換。

大昔のVCではHANDLEでも通ったのだが。今は型がより厳密になった。

963 名前:デフォルトの名無しさん :03/09/05 20:06
いい加減、時代遅れな猫を参考にするのはやめよう。

964 名前:デフォルトの名無しさん :03/09/05 20:08
>>963
だな。あそこは修正すべきだよな。
VC++4.0だったよな。確か。
もうそんな骨董品使ってる椰子いねーよな。

965 名前:デフォルトの名無しさん :03/09/05 20:21
>>962
お〜!!できました。どうもありがとうございました。

>>963-964
確かに…今までも結構苦労しながら読んできたんですよ…

ここ以外にお奨めのサイトとかってありますかね?



966 名前:デフォルトの名無しさん :03/09/05 20:24
すいません。。
Platform SDK
っていったいなんですか?

967 名前:デフォルトの名無しさん :03/09/05 21:23
http://www.google.com/search?hl=ja&lr=lang_ja&q=%22Platform+SDK%82%c6%82%cd%22

968 名前:デフォルトの名無しさん :03/09/05 22:02
猫ねえ・・・
たまに関数や構造体をど忘れした時に、リファレンス的に見ることはある。
ていうか検索かけると上位に出てくることが多い。
あそこで勉強するのはさすがに勧められないな。

969 名前:デフォルトの名無しさん :03/09/05 22:13
>>968
ではどこで勉強したらいいでしょうか?

970 名前:デフォルトの名無しさん :03/09/05 22:43
本買え。

971 名前:デフォルトの名無しさん :03/09/06 13:37
MFCからはじめろ。MFCわからなけりゃ他の言語にしな。
MFCはVisualC++に初心者向けの本がくっついてきただろ?読むならそれで十分だ。

972 名前:デフォルトの名無しさん :03/09/06 19:14
EngBitBlt というのがよくわかりません。
おしえてください。

973 名前:デフォルトの名無しさん :03/09/07 04:14
Win32Applicationで最小化して戻した時など再描画の処理を入れて
文字などが消えないようにしますが、コンソールみたいにウインドウに焼き付ける
みたいな方法で同じ事がしたいのですが、その方法があるなら教えてください。

974 名前:デフォルトの名無しさん :03/09/07 04:34
>>973
WM_PAINT もしくは、 OnDrawで描画するようにする。
Winプログラマの常識。

975 名前:973 :03/09/07 05:04
>>974
ありがとうございます。

いつもはWM_PAINTでやっているのですが、ゲームを作っていて、
マップ、コマンド、アイテムなどユーザーに選択させながら表示させている
のですが、それを再表示するとなると、又選択させないといけないのです。
表示と選択処理は別にするのが普通だと思うのですが、マップは攻撃範囲に
よって表示するものが変わり、コマンドだと所持しているアイテムに
よって変わるなど、その地点では必要ないデータを渡すのが
ごちゃごちゃして嫌だったので楽な方法が無いかと質問しました。

OnDrawは始めて聞きました。調べてみます。

976 名前:デフォルトの名無しさん :03/09/07 05:42
>>975
Doc/View使ってないならWM_PAINTで描画すればよろしかと。

>表示と選択処理は別にするのが普通だと思うのですが
常に、そうするべきと思われ。

なんだか、設計に問題ありなような気がするなあ。

977 名前:973 :03/09/07 07:05
>>946
ありがとうございます。

>Doc/View使ってないならWM_PAINTで描画すればよろしかと。
始めて聞いた言葉なので調べてみます。

>常に、そうするべきと思われ。
>なんだか、設計に問題ありなような気がするなあ。
とにかく楽に作る事を考えていたので、これ以外の拡張の時もすごく大変
でした。ゲームを作りながらプログラムを勉強しているので、行き当たり
ばったりなのもあると思いますが。もう一度1からやりなおします。

978 名前:デフォルトの名無しさん :03/09/07 11:08
>>975
普通はCreateCompatibleBitmapを使うだろ。

979 名前:デフォルトの名無しさん :03/09/07 13:21
>>978
ありがとうございます。それも調べてみます。

980 名前:デフォルトの名無しさん :03/09/07 14:21
AdvancedWindows 買おうと思ったけど
たけーーーーーーーーーーーーーーーー!!!

買って損しないか心配

981 名前:デフォルトの名無しさん :03/09/07 15:03
ゲームならOnDrawで描画するより、タイマーで割り込みをかけてOnTimerで描画した方がいい。
というかゲームのプログラムはそれが普通。
こうすれば常に描画を更新しているから、再描画を指示する必要はない。
一冊ゲームプログラミングの本を買うことをおすすめするよ。
慣れてきたらDirectXとマルチメディアタイマーに切り替えな。OnTimerは精度悪いから。

982 名前:デフォルトの名無しさん :03/09/07 19:43
>>981
おぉ、そうなのか。
なんかおすすめのゲーム製作本はある?

983 名前:デフォルトの名無しさん :03/09/07 20:09
>>982
このサイトの本なんかはよさげ。本は持っていないが、このサイトでよく勉強してる。
http://www.sm.rim.or.jp/~shishido/index.html

984 名前:デフォルトの名無しさん :03/09/08 14:55
あるボタンを押してその関数内の処理を
強制終了させるためのボタンを作りたいので
すがボタン内の処理を強制終了させる関数、
方法はありませんか

985 名前:デフォルトの名無しさん :03/09/08 15:55
ボタンのイベント処理を別スレッドでやってるだろうから、
その、イベント処理をやってるスレッドに WM_QUIT でも投げてやればよし。
そのイベント処理をやるスレッドが
while( 0 < GetMessage( ... ) ) {
}
って感じじゃない時は、
グローバルな変数をつかう。たとえばグローバルなスコープに
volatile static int haltButtonProcess = 0;
などと書いておいて、
イベントハンドラ側に if( haltButtonProcess ) return;
ってな記述をちりばめておく。
外部から haltButtonProcess = 1; とかってやると、強制終了できる。


986 名前:デフォルトの名無しさん :03/09/08 18:07
>>984
ボタンに中の関数なんてありませんよ。

987 名前:デフォルトの名無しさん :03/09/08 18:48
ボタン内の関数・・・何となくVBっぽい感覚だな。
強制的に別のスレッドを終了させるには、TreminateThread()という関数がある。
でもこれは危険だから使わない方がいいよ。
何かグローバル変数を用意しておいて、終了ボタンを押したらグローバル変数をtrueにして、
作業してるスレッド内ではループのどこかでグローバル変数を調べて、
フラグが立っていたらExitThread()をする、という方法がある。こちらの方が安全。

988 名前:デフォルトの名無しさん :03/09/08 21:00
グローバル変数よりも、メンバ変数のほうが良くないか?

989 名前:デフォルトの名無しさん :03/09/08 22:28
↓今度こそ次スレをマカスィタ!!!

990 名前:デフォルトの名無しさん :03/09/08 22:59
http://pc2.2ch.net/test/read.cgi/tech/1063029371/
立てました。

991 名前:デフォルトの名無しさん :03/09/08 23:08
>>988
別スレッドにオブジェクトを渡すと構成がデバッグの時assertで落ちます。リリースなら通るんですがね。
コールバックの引数にオブジェクトのポインタを渡そうとしたら、そういうエラーが出て、
停止位置のMFCのソース読んだらオブジェクト渡すなというようなことが書かれていました。

992 名前:デフォルトの名無しさん :03/09/08 23:16
埋め

993 名前:デフォルトの名無しさん :03/09/08 23:49


994 名前:デフォルトの名無しさん :03/09/09 07:52
>>991
別にオブジェクト渡すなんていってないよ。
MFCだとマルチスレッドもクラスだから、そのクラスのメンバに変数を追加して、
メンバ関数でその変数を書き換えるようにすればいい。

995 名前:デフォルトの名無しさん :03/09/09 14:42
>>984が作ってるのは CWinThread派生のUIスレッドじゃなくて、
ワーカスレッドっしょ?多分。

996 名前:デフォルトの名無しさん :03/09/09 15:06
Microsoft Platform SDKはどこにあるのでしょう?
MicrosoftのDownloadサイトでPlatform SDKを検索しても
Pentablet用とかしか命中しません・・・
October 2002が欲しいんですが・・・。

997 名前:デフォルトの名無しさん :03/09/09 19:13
>>996
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
ココなんだが、February 2003になってる
(スクリプト切ってるとダウンロードできないよ)


998 名前:デフォルトの名無しさん :03/09/09 19:14
ほいさっさ。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

October 2002とかって昔の奴はDLできないんでないの?

999 名前:デフォルトの名無しさん :03/09/09 19:15
ケコーンついでに

1000 名前:デフォルトの名無しさん :03/09/09 19:16
1000げとスザー


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