2 :
デフォルトの名無しさん :2005/06/15(水) 07:27:42
2get
3 :
デフォルトの名無しさん :2005/06/15(水) 08:11:28
ああ、超初心者用ね
あげ
今から一から勉強しようと考えてるあまちゃんです。 シミュレーションゲームやっててだるくなって思ったんやけど、 マウスやキーボードをプログラムで操作して自動レベル上げみない事できますか? 具体的な方法はいいから、できるかどうかだけ教えて。 あと、データ書き換えれば良いってのも無し。
>>6 できます。
ロボットハンドとCCDカメラ、それとそれなりのAIを搭載したロボットでも作ればもう、ばっちり。
8 :
6 :2005/06/16(木) 20:54:53
>>7 はいはい
そんな面倒な事せんでも,画面からボタンとステータス欄の座標を取って
ステータス欄の画像を解析して、マウスのカーソルを動かしてクリックさせたらしまいやん。
ただ単に、これがVC++で他のソフトに干渉(?)して走らせる事ができるか知りたかっただけ。
つーか、ロボットハンドとCCDカメラとAI搭載ロボットって全部抽象的な表現やね。
できそうだね GetDCとかSendInputとか使えるんじゃ?
11 :
デフォルトの名無しさん :2005/06/26(日) 14:24:56
学生じゃないのでVisual C++ .NET 2003 standardを買おうと思っています。 これは最適化が付いていないと聞いたのですが本当ですか? また、MFCは使えるのですか? Windowsゲームをこれで作りたいのですが、買うまでに勉強しておいた方がいいものはなんでしょうか? 今、C/C++を勉強しています。
12 :
デフォルトの名無しさん :2005/06/26(日) 14:50:07
>>11 どういう意味かわからんが、今時最適化できないコンパイラなんて
ありえないし、C++のためにあるようなMFCが使えないことも
ありえん。買うまえに勉強しておく、という選択肢の意味も不明。
でも、まあ楽しんでね♪
13 :
デフォルトの名無しさん :2005/06/26(日) 15:07:03
>>12 >今時最適化できないコンパイラなんてありえないし、
本当ですか?
勉強するのに最適化はいらんだろ
しかしVC.NetのStandardは最適化を削られている。 けどVC Toolkitを入れれば一応最適化は手に入れられる。
字下げって何ですか?
>>16 #include <iostream>
int main()
{
std::cout << "hello, world" << std::endl; //この行、字下げしている。
}
>>11 どんなゲームかわからないけどMFCは出番少なそう。
DirectX等を使うのであれば、COMとATLの参考書を読んでおいたほうがいいかも。
でもね・・・
COMまわりはC#のマネージドから使うほうが格段に楽ですよ。
というか、いまさらC++でやるのは何かの罰ゲームだと思う。
いや、COMの辺りはたしかに面倒だが、ほかは大したことない。
別にMFC使ってゲーム開発できるでしょ? 11はただ、使えるかどうかを訊いているのだから 余計なことを言う必要は全くなし。
23 :
yasu :2005/06/28(火) 09:18:36
Visual C++ を勉強しようと思っています。 家と学校のPCに入れたいのですがVisualStudio.netのアカデミック版 だとライセンス認証 (プロダクト アクティベーション)が必要なよう ですがVisualC++.netの アカデミック版だと必要ないのでしょうか
>>23 アクティベーションが無いからと言ってライセンス違反をしていい理由にはならない。
25 :
デフォルトの名無しさん :2005/06/28(火) 16:26:36
>>24 どこが、ライセンス違反?
学生が使う分には、OK。
26 :
デフォルトの名無しさん :2005/06/28(火) 18:28:25
spokeを学生の友達に買ってもらって、 認証もその友達にしてもらい、 それを譲ってもらって使用って方法は可能ですか?
27 :
デフォルトの名無しさん :2005/06/28(火) 19:27:15
>>26 思い切りダークゾーン。
せめてその学生の友達から買い取って
自分の名義で認証すべし。
28 :
yasu :2005/06/28(火) 21:56:00
>>26 ライセンス違反。
spokeは、譲渡不可。
マイクロソフトのHPのspokeに書いてある。
29 :
デフォルトの名無しさん :2005/06/29(水) 17:04:33
30 :
デフォルトの名無しさん :2005/06/29(水) 19:43:40
>>27 >>28 ぃゃ、ライセンス違反でも使用出来るのか出来ないのかを知りたいのです。
実際に使用するのではなく、そこらへんの仕組みを知りたいのです。
要は、郵送で認証を終えた後に、アクティベーションやスパイウェアのようなもので、
本当に認証を受けた人が使っているか、のような確認が行われているのでしょうか?
平気だとわかればやるつもりだろ。ばればれだ。
27だったり。
なんか意味のないことを訊いてるなぁ。
>>30 だから、チミの名前で認証すれば何も後ろめたいことはないんだって。
そのために「その友達から買い取れ」と書いたのだ。
もっともその友達が自分の名義で認証を済ませてしまったなら、もう駄目だが。
余裕だったよ
やるつもりだろ←→やらない の水掛け論だろ。 てか2chでも、やるからって秘密するもんなの? 薬板なんてモロなのにさ。
確か、マイクロソフトは不正使用しているユーザのところに武装した人達を送り込んで、 不正使用していたコンピュータを全部強制撤去した実績がある。 まあ、 26 君はいい子だから大目に見てくれるかもね。
その場で射殺されたという話もある
37 :
26 :2005/06/30(木) 19:01:32
>>35 ,36
え、それ、マジなの((;゚Д゚)ガクガクブルブル
でも人の家に勝手に入って来れないよね。
てか
>>36 の話とか、もし嘘だったらマズイよね?
39 :
デフォルトの名無しさん :2005/06/30(木) 22:05:18
リアルで殺されたほうがよくね?
質問です。 CEditが2つあり垂直方向のスクロールを同期させたいのです。 とりあえずEN_VSCROLLに関数を割り当ててLineScrollを使って 同期が取れるようになったのですが、スクロールバーの 摘まみを動かしたときに片方しか動いてくれません。 摘まみを動かしたときも同期が取れるようにするにはどうしたらいいでしょうか。 コンパイラはVC++6.0です。
>>37 MSだから、情報隠蔽も確実にやるからな。
42 :
デフォルトの名無しさん :2005/07/03(日) 16:19:25
C++(VisualStudio6.0)で書かれたソースをC++.NETで開き、文法上のエラーを解消し、 ビルドしたところ、以下のメッセージが出てしまいました。 error LNK2001: 外部シンボル ""char * __cdecl fgets(char *,int,struct _iobuf *)" (?fgets@@$$J0YAPADPADHPAU_iobuf@@@Z)" は未解決です。 該当するソースはこのようになっています。 FILE *fstream;// ファイルディスクリプタ char tLine[256];// 一行読み込み用 if( fgets( tLine, 128, fstream ) == NULL ){ if( ferror( fstream ) ){// 一行読み出しエラー break; } break;// EOFに達した } その他,atoi、strstrなど、Cランタイムライブラリ関数(?)関連のものは みな外部シンボルが未解決と出るんですが…何か参照設定が足りないのでしょうか? ご教授いただければ思います。
>>42 プロジェクト→プロパティ→C/C++→コード生成→ランタイムライブラリ
プロジェクト→プロパティ→C/C++→詳細→呼び出し規約
はそれぞれ何になってますか?
45 :
デフォルトの名無しさん :2005/07/15(金) 10:43:21
あの、VisualStudio2003をインストールしようとしたんですが setup.exeを起動したら ファイルを一時ディレクトリにコピーできませんでした。 このファイルが存在することを確認してから、 セットアップを再実行してください ってメッセージがでてインストールできないんですが同じ現象 に陥った人っていますか? WinXPHomeでVS2003はMSDNから送られてきたCD(という説明で正しい のかなぁ)です。 CDからがだめかと思ってネットワークインストールをしようと しても同様のメッセージが表示されてしまった.....
HDDの容量が足りないかCDが壊れてるかだな どこかにインストールに必用なHDDの容量が書いてあるはず
>46 ありがとう でも、HDDは100GB以上あまってるし、別のパソコンにはインストール できたんですよね。 一時ファイルのディレクトリ指定が間違ってるのかなぁ 環境変数の「TEMP」や「TMP」だと勝手に思ってるんだけど違うかな
>>47 恐らくは、システムのあるディスクの個人環境の一時ファイルディレクトリに置くのでは?
アーカイブ→setup.exeとパッケージ→インストールイメージと展開されるはずだから
結構要領いるし、あとはセキュリティ辺りかな?
>>45 俺はVS2003は客先で使わせてもらって2回(2社)ほどインストしたが
どっちもMSDNのインストールでCDからファイルが読めなくて正しくインストールできなかったよ。
本体はちゃんと入ったけどね。
なんかCDにコピープロテクトかけようとして失敗して正規版でも正しくインスコできないとか、
単にケースがアレだから壊れやすいとか、そんなのかな?と思ってます。
ま、なんとか騙してインストール継続させれば問題ない(MSDNの場合は多少ファイルが欠けててもそこだけ見れないだけであまり害は無い)
>48,49 ありがとーう!! 週末パソコン触っていなかったのでレス遅れました。 結局インストールできました。 原因はTEMPの問題でした。 ユーザー環境変数にTEMPの指定が間違っていて、インストールした CD-ROMにTEMPディレクトリを作ろうとして失敗していました。 初歩的なミスですね....スミマセン
Visual C++.netをインスコしようとしたら出来なかった。 なんだよ、Win98じゃ使えねぇのかよ。。。 Win98で使える方法ありませんか? いや、おとなしくOEMのXPHomeでも買ってきます・・・・・・・よ目
CEditViewのテキストをCString型変数に読み込みたいんですけどどうしたらいいですか?
DDX使うの? 使わないの? どっち?
あの質問なんですが、windowsゲームプログラミングという本を読みながら下のソースを書いたのですが、 初期化子の数が多すぎます。と出てコンパイルできません。 #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { MessageBox(NULL , "ok" , "メッセージです。" , MB_OK); return 0; } 環境はvisual studio.net the spokeのvisualC++.netです。 どなたか教えてください。 お願いします。
>>54 それコピペしてコンパイルしたけど大丈夫だった
>>54 俺もその本買った。
すっげわかりにくい。
ちなみにBCCでもコンパイルできた。
OS : Windows2000 開発環境 : VisualC++6.0 jpegファイルを書き出そうとしてgdi+を使えばいいのは分かりました。 そこで Microsoft Platform SDK for Windows Server 2003 SP1 をインストールしました。 ヘッダファイルのパスを通して #include < gdiplus.h > してみたんですがエラーが大量に出てきます。 どうしたらいいのでしょう? よろしくお願いします。
>>57 gdiplus.hより先にwindows.hをインクルードする必要がある。(WIN32_LEAN_AND_MEAN抜きで)
>>58 環境が一部しか出てないのにありがとうございます。
MFCサポートしていてstdafx.hもインクルードしている状況下でのエラーでした。
エラー内容でググったら解決してしまったので分かるように記します。
エラーの内容は
error C2065: 'ULONG_PTR' : 定義されていない識別子です。
など複数出てました。
> 最新のPlatformSDKをインストールして、
> そのヘッダをVC6付属のものより優先度を上げれば良いと思います。
とあり、stdafx.hより先にgdiplus.hをインクルードすることで解決しました。
お騒がせしてすみません。
>>59 それ違う。
includeやlibの検索の優先順位の設定を変更しろってこと。
includeする順番を変えるのは、矛盾したりするからよくない。
61 :
57 :2005/07/27(水) 19:26:59
>>60 VisualC++6.0でメニューから
ツール→オプション
でオプションダイアログを起動し
「表示するディレクトリ(S)」を「インクルードファイル」に変え、「ディレクトリ(D)」の入力フォームで
C:\Program Files\Microsoft Platform SDK\Include (Microsoft Platform SDK for Windows Server 2003 SP1のパス)
を一番上に設定しました。
その後
#include "stdafx.h"
#include "MyDefinedDlg.h"
#include <gdiplus.h>
の順番にヘッダを読み込むと
>>59 のエラーが出るので
#include "stdafx.h"
#include <gdiplus.h>
#include "MyDefinedDlg.h"
とするのは問題ないのでしょうか?
>>61 普通はgdiplus.hもstdafx.hの中でインクルードするもんだと思うけど。
63 :
57 :2005/07/27(水) 19:34:37
>>62 ありがとうございます
その路線でやってみます
64 :
60 :2005/07/27(水) 21:00:12
>>61 問題ないです。
というか、普通はそうします。
MyDefinedDlg.h内で、gdiplus.h内のものを使っているんだよね?
>>62 さんの言うように、stdafx.h内でincludeすると、
プリコンパイル済みヘッダという仕組みによって、
コンパイル時間が短縮されます。
同じプログラム内で矛盾した定義をしない、という点でもオススメ。
65 :
57 :2005/07/29(金) 03:52:55
何度も質問すみません。 現状ではstdafx.h内部でgdiplus.hを呼び出しています。 Debugモードにて、MyDefinedDlg.cpp内部でGdiplus::GdiplusStartup関数を使用したところ uuid.lib(ocidl_i.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください とエラーが出ました。 googleで調べたところ > 最新のSDKはVC++6.0と互換性が無い部分があるのが原因 と出たのですが回避策とかはないのですか? Releaseモードでは問題ないのでとりあえずは凌いでいますが、さすがに後々困りますよね・・・^^;
VC++7.1を使う。
プロジェクトの設定ごとにincludeディレクトリを変えたいんですけどどうしたらいいでしょう? Release版ではあっちからincludeして,Debug版ではそっちから,と。
>>67 「プロジェクトの設定」を使ってしかるべき設定値にする。
ActiveXと他社製DLLをCABファイルにして配布しようとしているのですが、 DLLの呼び出しに失敗します。 ダウンロード先はDownloaded Program Filesです。 あらかじめパスの通ったところにDLLを置いておくと正常動作します。 こういった使い方は出来ないのでしょうか?
>>69 Downloaded Program Filesにpathを通せば起動できると思うけど、
なんでわざわざCABから展開したもの(≠ダウンロードしたもの)を
そんなところに置くわけ?
果てしなく迷惑だと思うのだけど。
>>70 知らないなら黙っとれ
>>69 IE上で動くActiveXを作っていて、
それがサードパーティのDLLを使っている、ってことかな。
そのActiveXがDLLをパス指定してLoadLibraryすりゃい。
72 :
71 :2005/08/03(水) 11:44:48
ごめん、長らくそういうの作ってないので、すっかり忘れてた。 パス指定でLoadLibraryじゃダメだ。なんだったっけなぁ・・・。
73 :
71 :2005/08/03(水) 11:47:10
CABファイルを作るときの定義ファイルの書き方がマズってるとか、 電子署名の問題でハネられているとか、 そのへんのような希ガス。
知らないなら黙っとれなんて啖呵を切る割りには……
>>74 そんなつまらないツッコミしてないで、お前が答えを書いたらどうだ。
カッコワルすぎ
ぐだぐだですね^^
昨日初めて知った驚愕の事実・・・.NETじゃClassWizard使えないの? 慣れれば大したこと無いんだろうけどメンドクセ。やっぱ6.0使っとこ。
え、まじ?
>>78 とりあえず、みんな最初そこに驚く。が、ClassWizardの機能は
すべてプロパティで補われている。
.NETから始めた俺にはClassWizardがなんなのか・・・
.NETは#を使うもの++は6.0と割り切ってる俺(でも最近はさすがに.NETに慣れたかな 最初はそのプロパティもなんかしっくりこなくてイヤだった)。
83 :
デフォルトの名無しさん :2005/08/17(水) 05:16:04
VISUAL C++ 2005 express editionってフリーなんだけど、 VISUAL C++ .NET 2003 とどう違うのか教えてエロい人。
VC++.NET 2005のサブセット。
失礼します。 CListCtrl::Scrollの使用例とか載ってるサイトとかありませんか? 使い方がいまいちわからなくて。。。orz
86 :
デフォルトの名無しさん :2005/08/17(水) 22:07:37
すいません。Visual C++6.0でout lookの予定表に似た物を作ることになっているのですが 助けてください。
87 :
86 :2005/08/17(水) 22:18:51
自己解決しました^^
88 :
86 :2005/08/17(水) 22:20:55
詳細です→ 詳細です→ 1.カレンダー表示 ・日毎予定データ登録・変更・削除・表示 ・月間予定データファイル出力 2.カレンダー表示 ・ユーザが選択した年月のカレンダーをメイン画面に表示する。 3.日毎予定データ登録・変更・削除・表示 ・各日に対して複数件の予定データを登録できる。 ・登録したデータは、後から変更することができる。 ・登録したデータを削除することができる。 ・登録したデータは、その内容または件数がカレンダーの該当日付の位置に表示される。 4.月間予定データファイル出力 カレンダー画面に表示中の月に関する全ての予定データの全内容を、リスト形式で、指定したテキストファイルに出力できる。
89 :
86続き :2005/08/17(水) 22:21:51
5. 設計条件 処理能力 ・1日の予定データとして登録できる最大件数は100件までとする。 ・予定データの件名として登録できる文字数は半角100文字までとする。 ・予定データの場所として登録できる文字数は半角100文字までとする。 ・予定データの内容として登録できる文字数は半角1024文字までとする。 6.起動条件 ・特に無し。 7.競合条件 ・特に無し。 8・制限事項 ・カレンダー表示可能な期間は、1990年1月〜2036年12月とする。
90 :
86続き :2005/08/17(水) 22:22:47
長くてすいません。
91 :
83 :2005/08/17(水) 22:53:00
84さん、 ありがとうございます。 ちなみにVisual C++ .NET 2005はすでに発売されているのでしょうか? まだ店頭では2003しか見かけないのですが。 もし買うとしたら2005を買ったほうがよいでしょうか。それとも2003でもかまいませんでしょうか? ご意見をお願いします。
>>91 発売されてない。
とりあえずフリーのを、しばらく使ってみたらいいと思う。
そのうち、自分がやりたいことのためには、どれを買えばいいのか、自ずとわかってくるから。
93 :
デフォルトの名無しさん :2005/08/19(金) 00:48:34
>>91 てか、VisualC++.NET2005は発売されない予感
Visual C++.NET 2003でMFCアプリケーションやWin32プロジェクトを 作成した場合、アプリケーションの利用者は.NET Frameworkを インストールする必要はないんですか?
>>94 MFCもWin32もネイティブだから.NETは使わないよ。
>>95 そうですか。どうも有り難うございました。
97 :
デフォルトの名無しさん :2005/08/22(月) 23:02:08
Visual C++ 2005 Express Edition Beta を使用しています。
「猫でもわかるC言語」で初歩からコンソールアプリケーションの勉強をしてきたのですが、
ttp://www.kumei.ne.jp/c_lang/intro/no_57.htmまできて 【windows.hがありません】のエラーが出てしまいました。
どうしてもC言語でwindows.hを使ったプログラミングがしたいのですが、
そのようなヘッダはフリーで入手できないのでしょうか。
どなたか、どうかお願いします。
>>97 PlatformSDKを手に入れろ。
Win32APIスレにリンクがある。
あと、そこのページでMessageBoxを呼ぶときにLPCSTRへのキャストをしているがそれは無駄。無視していいよ。
入門書(柴田さんの)の通りに、列挙体の例題を打ち込んだのですが、 error C2440: 'return' : 'int' から 'animal' に変換できません。 列挙型への変換には static_cast、C スタイル キャストまたは関数スタイル キャストが必要です。 と出てビルドできません。 この入門書は2周目で、前にやったときは実行できてたはずなんですよね、、、。 オプションの何かをいじってしまったんでしょうか、、、。 どなたか、よろしくお願いします。
>>99 そのファイルの拡張子がcppになっているだろ。
そうならそれはC++としてコンパイルされている。
C++では型安全性の強化でint型から列挙型へはキャスト演算子でキャストする必要がある。
ちゃんとエラーメッセージ読め。問題の箇所をキャストすればいいだけだ。
return (enum animal)(tmp); に変更したら、ビルドできました。 疑問に思ったんですが、このキャストは、 99のエラーメッセージの3つのうちのどれなんでしょうか? 自分はどれも違うような気がしてるんですが、、、。 よろしくお願いします。
>>101 それはCスタイルキャスト。C言語のキャストだ。
関数スタイルキャストってのはanimal(tmp)と書く。もちろん一見関数呼び出しに見えることからこの名称。
(C++ではenum animalではなく単にanimalとだけ書いていい)
本当はキャストではないけど、組み込み型や列挙型に対して使うとキャスト演算子と同じ働きをする。
static_castはC++のキャスト。static_cast<animal>(tmp)と書く。
C++ではCスタイルキャストは使わずこれを使うのが一般的。
>>102 遅れてすいません。
つまりは、ぱっぱとCを覚えて、C++にいけということですね。
頑張って勉強していきます。
またわからないことがありましたら、宜しくお願いします。
ありがとうございました。
CやってからじゃないとC++いけないわけじゃないぞ。 むしろStroustrup氏は最初にC++を学ぶことを推奨している。
一通り覚えたかな?と思って違う本(ポインタの本)にいったら、 初めてみるものが多くてさっぱりだったんですよね。 それで、自分は2003.netなので、検索かけて用語の解説をみたりしたんですが、 その解説もまたわかりませんでした。 今は、勧めないのでまた入門書を復習してる状態です。 違う入門書か、猫でも〜とかを勉強したほうがいいですかねー、、、。
ポインタも知らずに危ない言語のC++なんて作られても困る
CならそうかもしれないがC++ならSTLやboostで生のポインタ使うのを回避できるだろ。
いやそうでなくて、StroustrupはまずBetter Cとして学べと言っている。 そんでよく理解してから始めてオブジェクト指向やジェネリックプログラミングに足を突っ込めと言っている。
109 :
97 :2005/08/23(火) 12:20:18
110 :
デフォルトの名無しさん :2005/08/23(火) 13:43:02
板違いかもしれませんが、お許しください。 TCP/IPでクライアント側で起こるエラーはどんなエラーがありますか? 環境 VC++6.0 windows2000
111 :
デフォルトの名無しさん :2005/08/23(火) 13:57:39
ネットでVC++のコードを参照していると、「using namespace」を使わずに、出現のつど「名前空間::」と書かれているものが多く見られるような気がします。 なるべくそのつど書くのがいいのでしょうか。 usingは悪なんでしょうか。 標準C++のサンプルコードよりもMFCなんかのコードのほうがこの傾向をよく見る気がしたのでこのスレに書きました。 カプセル化の度合とかも関係あるのでしょうか。 早さは変わったりするのでしょうか。
>>111 「早さ」とは何のことを言っている?
コンパイル速度ならどちらにしても大差ないだろうし、生成されたモジュールならそもそも同じものになるだろう。
人間の理解の速さなら個人差の方が大きいだろうし、いずれにしても気にするような差はないと思う。
>標準C++のサンプルコードよりもMFCなんかのコードのほうがこの傾向をよく見る気がしたので
それは単に、標準C++は名前空間がない頃からあるのに対してMFCのサンプルコードは精々6か4.2以降だから
時代が違う所為ではないだろうか。
usingは悪とまでは言わないが、濫りに使うとメリットがなくなるから要注意で。
特に、インクルードファイルでは使わないほうがいい。
>>111 usingディレクティブ(using namespase)は過去との互換性のためだけに用意したとD&Eに書いてある。
こいつを使わずに 名前空間:: で直接修飾したりusing宣言を使ったり、長い名前ならエイリアスを作ったりして使うべきと書いてある。
114 :
111 :2005/08/23(火) 14:32:54
115 :
デフォルトの名無しさん :2005/08/23(火) 14:45:46
プログラムを打ってて、少々疑問を持ったのですが、 class A {}; class B {}; class C { A a; B b; }; class D {}; class E : public C, public D { A a; }; int main() { E e; return 0; } の時、構築の順番は、E→C→A→B→C→A となると思いますが、 破壊の順番はどうなってるのでしょうか? 解る方、ご指導お願いします。
>>110 オンラインで UNIX 系のマニュアル探して bind/accept とか、
open/read(sock)/write(sock)/close とかの errno の取り得る値と
意味を読め。
118 :
115 :2005/08/23(火) 14:58:47
119 :
デフォルトの名無しさん :2005/08/23(火) 15:16:09
>116 わかりました やってみます
120 :
115 :2005/08/23(火) 16:08:25
>>117 コンストラクタ、デストラクタを作ってみた結果、
クラスの初期化と解放の順序がわかりました。
ありがとう御座いました。
>>115 の構築の順番も間違ってるよね。
で、結局構築された順と反対に順に解体される
結果になった?
123 :
デフォルトの名無しさん :2005/08/23(火) 23:28:56
void CvcmsgboxView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO : ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。 static ct = 0; int ret; ct = ct + 1; switch (ct) { case 1: ret = AfxMessagBox("1 MB_OK+感漢符です", MB_OK|MB_ICONEXCLAMATION); break; case 2: ret = AfxMessagBox("2 MB_ABORTRETRYIGNORE+ストップです",MB_ABORTRETRYIGNORE|MB_ICONSTOP); break; case 3: ret = AfxMessagBox("3 MB_OKCANCEL+情報です",MB_OKCANCEL|MB_ICONINFORMATION); break; case 4: ret = AfxMessagBox("4 MB_YESNOCANCEL+疑問符+BUTTON3です",MB_YESNOCANCEL|MB_ICONQUESTION|MB_DEFBUTTON3); break; case 5: ret = AfxMessagBox("5 省略した場合です"); ct = 0; break; } CView::OnLButtonDown(nFlags, point); } c:\documents and settings\my documents\visual studio projects\vcmsgbox\vcmsgboxview.cpp(111) : error C3861: 'AfxMessagBox': 識別子は、引数依存の照合を使用しても見つかりません。 と出てしまいます。何方か教えてください。よろしくお願い致します。
125 :
デフォルトの名無しさん :2005/08/23(火) 23:54:18
126 :
デフォルトの名無しさん :2005/08/25(木) 13:44:54
NUnitを使ってるんですが、 ビルドしたDLLをNUnitに読み込ませると、 ファイルまたはアセンブリ名 [DLL名]、またはその依存関係のひとつが見つかりませんでした。 For further information, use the Exception Details menu item. というダイアログが表示されて、テストが実行できません。 テストするDLLとそれが必要とするDLLなど全て存在するんですが、 同じような現象に陥った方いましたら解決方法を教えてもらえんでしょうか。
127 :
デフォルトの名無しさん :2005/08/27(土) 06:02:57
すいません。 VC++.NET2003なのですが、TransparentBlt()を使おうとすると test2 error LNK2019: 未解決の外部シンボル __imp__TransparentBlt@44 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 と出てビルド出来ません。 「msimg32.libファイルをリンカにインポートする」という事は分かったのですが、具体的にどうすればいいのでしょうか? お願いします。
>>127 たしかプロジェクトのプロパティのリンカの入力の追加の依存ファイルの辺り。
>>127 #pragma comment(lib, "msimg32.lib")
130 :
デフォルトの名無しさん :2005/08/27(土) 18:53:50
>>128 ,129
どちらも出来ました。
128さんのやり方は、プロジェクトごとにプロパティで追加できるんですね。
129さんのやり方は、ソースの頭に書くだけでokなんですね。
勉強になりました。ありがとうございました。
131 :
デフォルトの名無しさん :2005/08/28(日) 09:07:22
Visual Studio .net (theSpoke Precium version 2003) というバージョンを使っているのですが、プロファイラの在処がわかりません。 gccにおけるgprofのようなものを想像しているんですが、このバージョンには 付属していないのでしょうか? もし付属していないのだとすれば、どのような方法で統計をとるのが いいのでしょうか?
DevPartnerとか。
VB6.0から始めたのですが、VC6.0だと大文字、小文字の区別があるので何度もCapsLockやShiftを掛ける必要があり きついと思うのですが、それはみなさんとて同じなのでしょうか。 あるいは便利なテクがあるのでしょうか。 もしあれば教えてください。 今知っているのはCtrl+Spaceぐらいです。
Windowsの弊害がここまで・・・
解決方法1 ・Delphiなら区別がありません。 解決方法2 ・後で一括置換 解決方法3 ・VS2005からリファクタリング機能があるよ、C#やろうぜ 解決方法4 ・Eclipseまんせー
解決も何も、Shiftキーを押すことに何の問題があるのか判らん。
高速タイピングの敵
138 :
131 :2005/08/28(日) 20:29:56
139 :
デフォルトの名無しさん :2005/08/28(日) 22:07:09
未だにVC++を使う必要ある?
補完はVC++が最強 リファクタリング機能もうちょっとなんとかならんものか
142 :
デフォルトの名無しさん :2005/08/29(月) 00:17:39
プログラムに興味を持ちC#かC++を勉強したいのですが始めるならどちらから勉強したほうがよいのでしょうか?
GUIならC# CUIならC++ 個人的にお勧めなのがVisual Basic 6.0。たしか、もう売ってないけどね
144 :
デフォルトの名無しさん :2005/08/29(月) 00:30:55
C++
145 :
デフォルトの名無しさん :2005/08/29(月) 00:45:03
なるほど! C#よりC++のほうが難しいと友達から聞いたのですが本当ですか? あとC#が出来るようになればC++もすぐに出来るようになり、その逆も出来るようになれますか? わかりにくかったらすみません。
初心者に限らんが毎年一言語覚えろ
147 :
1 :2005/08/29(月) 00:55:13
C# → C++というのも、身近なところで実例は知らんが まあありえるかな。 しかしC++に行くなら、どちらにしてもCを 飛ばすことはできないと思う。 マイクロソフトの宣伝で、C#が、さもC/C++の後継で、 次世代のCみたいな思い込みしている初心者が多いが、 C#はCとは関係ないとくらい思っておいたほうがいい。 CがC++に進化して、それの構文だけうっすらマネた のがJavaで、「Javaいーなー、欲しいなー」って思った MSが作ったのがC#。
すみません
>>147 です。
断じて1ではありません。
149 :
デフォルトの名無しさん :2005/08/29(月) 01:09:08
ありがとうございます!まずはCから勉強してみたいと思います!!
独自文字列クラスで、operatorで、(LPCTSTR)にキャストする関数を作りたいのですが、 どのように記述すればいいのでしょうか?
>>150 operator LPCTSTR ( ) const;
152 :
デフォルトの名無しさん :2005/08/29(月) 18:11:13
はじめまして、KAZと申します。 VisualC++6.0で作成したプロジェクトを、VisualC++.Net(2003)で リビルドしたところ、「LNK2001:外部シンボル」が多発します。 対象となる関数が「_memset,_memcpy」など標準関数が主になるのですが、 6.0のものを.NETでリビルドする場合、なにか変更する必要があるのでしょうか? ご教授よろしくお願い致します。
153 :
デフォルトの名無しさん :2005/08/29(月) 19:34:41
おれもVC++初心者でよくわからんが、外部シンボルとか未解決とかって、 ライブラリのリンクでミスってるんじゃないの? 確認してみたら?
>>152 Cランタイムライブラリがリンクされてないんだろうが・・
C/C++のコード生成のランタイムライブラリに何が入ってる?
155 :
デフォルトの名無しさん :2005/08/29(月) 21:52:38
MFCで初期ウインドウを作って、最終的にはエクスプローラーを作りたいのですが、 左のペインにツリービューをつくるにはどういう流れになるのですか? ツリーが自分のパソコンのフォルダを読み込むにはどうすればいいのですか?
>>150 当たり前だけど内部では文字列をTCHARで保持していないと駄目だからな。
157 :
デフォルトの名無しさん :2005/08/29(月) 22:20:37
VC++.NET2003なのですが、関数名を入力した後に(を入力すると、引数が出てきますが、 カーソルを違う場所へ持っていったり他の動作をするとポップアップがもう出なくなります。 再度出したい場合は、(まで削る以外に方法はないのでしょうか?
>>157 引数はそのままで ( だけ消して入力しなおせば十分。
160 :
デフォルトの名無しさん :2005/08/29(月) 22:50:48
>>158 ,159
おおお!
ありがとうございました。
基本的な使い方すらもわかっていないので、本でも買ってみたいと思います。
こうして林の糞本がまたしても売れるのであった
162 :
デフォルトの名無しさん :2005/08/30(火) 09:28:28
>>152 さん
C/C++のコード生成のランタイムライブラリで、
シングルスレッドがマルチスレッドに変わってました。
シングルスレッドに戻したところ、正常にリビルドできました。
ありがとうございました。
163 :
デフォルトの名無しさん :2005/08/30(火) 11:46:58
NOTIFYICONDATA構造体ってどのヘッダーで定義されてますか?
165 :
デフォルトの名無しさん :2005/08/30(火) 18:26:30
>>165 メール嫁。
文字化けしてるかも知れんが。
167 :
デフォルトの名無しさん :2005/08/31(水) 16:02:07
初心者なんですが MFCでダイアログベースでアプリケーション作成しています。 どこのクラスでも同じ値を使いたいのですが publicで宣言するのは .hとdlg.hどっちのヘッダーファイルのpublicで宣言したらいいでしょうか? 教えていただけますか?
Commonクラスを作ってそこに入れる
あれ?VC++にはスタティッククラスって無いの?
とあるCGIへアクセスして結果を貰うというクラスがあって そのクラスを複数のスレッドで使う場合 各スレッドから非同期でCGIにアクセスしても大丈夫なんでしょうか? それとも基本的にCGIへのアクセスは1つのスレッドからしか 出来ないようすべきでしょうか?
>>170 そのCGIの中身がスレッドセーフor中で排他制御してるなら問題なし
そうでないなら呼び出し側で排他制御
>>173 成る程ですね。ちょっとCGI側を眺めてみます。
こちら側で排他制御するとなるとクリティカルセクションって奴を
使えば良いのでしょうか?
>こちら側で排他制御するとなるとクリティカルセクション まあ、そうですね。ほかにも同期をとる手法はいくつかあるけど。 それより、ネット向こうのCGIは不特定多数のユーザーからアクセスを受けるわけだから CGI側が同期処理を行っていないはずがないのでは。このケースではこちらが 相手の心配してやることはない。それよりも自分のコードの心配したほうがいい。 マルチスレッドは十分気をつけて書かないと。
違うスレでも質問したのですが、反応がなかったのでここで聞きます。 エラーログが文字化けします。 aRaoapaCaie?e─eoe?e?... stdafx.cpp aRaoapaCaie?e─eoe?e?... sankaku.cpp print.cpp c:\Documents and Settings\tarou\My Documents\Visual Studio Projects\print\print.cpp(24) : warning C4267: '=' : 'size_t' ?? 'int' ?????????????????????????? ???????... c:\documents and settings\tarou\my documents\visual studio projects\print\print.cpp(19) : warning C4700: Ale¬eaeΦoue─eτeΩe─eoe?eoaiu[aJaie?o?Eo 'buffer' e?a?e?e─AQA?e¬iseφeΩe?e?e?uB リンクしています... Win XP Home Edition SP2で VisualStudio.NET 2003 です。 文字化けを直す解決方法が分かりません。どうすれば直すことができますか? 宜しくお願いします。
>>175 遅レスになりましたがありがとうございます。
その辺りも注意しながらやっていきます。
タロー君?
179 :
デフォルトの名無しさん :2005/09/07(水) 19:40:16
Visual C++でC言語ソースをアセンブルソースに変換するにはどうすればいいでしょうか? コンパイラオプション探したけど、目当てのものが見つからないぽ
デバッガ開始してf11でステップインしていくと、 printf.cのパスを入力してくださいとダイアログが出てくるのですが、 なんでこれが出てくるのか分かる方教えてください。 stdio.hはインクルードしてます。
>>181 ライブラリのprintf関数の中にステップインしようとしたから。
ライブラリのソースをインストールしる。
183 :
182 :2005/09/07(水) 21:08:24
ごめん、書き忘れていた。 ソースファイルが存在しない、 もしくは、 ソースファイルが見つからない というのが直接の原因。 解決法は、 そういう関数にはステップインしようとしない、 ソースを用意してやる の2つ。
>>183 ありがとうございます。
一度再インストールしてみることにします。
>>183 無視して混合モードで表示すると言う解決方法もあるのだが。
186 :
182 :2005/09/08(木) 00:30:18
>>185 それは超初心者には酷な解決方法ではないかと。
VC++は超初心者だけど、C++やアセンブラは中級以上だというのなら、大丈夫だが・・・。
VC++.NETでjpeg形式のファイルを使って画像処理は 簡単にできるんですか? C♯では比較的簡単にでき、画像処理向きだといわれたんですが VC++.NET買ってしまったんで、なんとかがんばってみたいんですが・・・
>>187 やりたいことにもよる。
ImageMagickのような外部ライブラリを使いたいならC#よりも楽だと思うし。
C#のどこが画像処理向きなんだかわからない。 もちろんC#ではできないというわけではなく、簡単じゃなくて普通レベルだろって言いたい。
XMLファイルを読み込む勉強をしてるのですが MessageBox(elm->GetBaseName()); で例外エラーが発生してしまいます。 elm->AttachDispatch(xml->GetDocumentElement(), TRUE); に問題があると思うのですが、どこが間違っているのでしょうか? IXMLDOMDocument *xml = new IXMLDOMDocument; IXMLDOMElement *elm = new IXMLDOMElement; xml->loadXML("d:\\test.xml"); elm->AttachDispatch(xml->GetDocumentElement(), TRUE); MessageBox(elm->GetBaseName());
すみません、言語の話とは違うのですが、DLL内の関数の宣言なんかが 一覧できるビューアみたいなのが、以前のOSだったかVSのツールだったかに 付いてたと思うのですが、そのツールの名前は何だったでしょうか?
Dependency Walkerのこと?
193 :
191 :2005/09/08(木) 14:12:58
>>192 とりあえずPlatform SDKの中から見つけることができました。
ありがとうございました。
教えて下さい。 Visual C++ Ver.7.1を使っていて、C++のプログラムを作っているのですが、 1.プロジェクトのコピー方法 2.ソリューションのコピー方法 がわかりません。 回答お願いいたします。
>>190 インターフェイスはnewするものじゃないだろ。
>>194 普通にファイルコピーしたらいいんでないの?
197 :
187 :2005/09/09(金) 02:56:58
PCカメラの画像を取りこみ、編集していくんですが カメラからはjpeg形式のファイルがつくられるんで bitmapで画像処理ができないんです。 C♯だとjpegをbitmapに直接変換できる方法はあるようなのですが C++で変換する方法がイマイチわからないんで、C♯の方がやりやすいのかなと思ったんですが。
C++でもjpegを読む方法はいろいろあるが。
ライブラリを使えばC#でもC++でも関係ないような気がするが
C++でもマネージドC++なら.Net Frameworksのクラス群が使えるし。
2005でだいぶかわりそうだけど
202 :
194 :2005/09/09(金) 23:20:00
>>196 普通にディレクトリーごとコピーして、プロジェクトを開いたら、ソリューションエクスプローラでは(利用不可)と表示され、クラスビューでもリソースビューでも何も表示されません。
私の聞き方が悪かったようなので、質問を変えたいと思います。
【質問】
今、ProgV1.exeというプログラムの開発が終わり、リリースしました。次はProgV1.exeに新機能を追加したProgV2.exeの開発を行います。
ProgV1.exeの開発自体は終わってしまったのですが、不具合修正のため、ProgV1.exeの開発環境はそのまま取っておきます。
また、ProgV1.exeの不具合修正とは関係なく、ProgV2.exeの開発は進めるのですが(もちろんProgV1.exeで見つかった不具合はProgV2.exeでも対応していきます)、
このような場合、ProgV1.exeのソリューションレベルのフォルダを丸ごとコピー&リネームしても、.vcproj, .sln, .rc 等管理ファイル中のフォルダ名が自動的にリネームされないので、エラーになってしまいます。
内部の管理ファイルの整合性を保ったまま、また、できあがったexeの名前も別になるような、ソリューションをコピーする方法を教えて下さい。
回答可能な方、回答お願いいたします。
CDにまんま入ってたりどっかから落として来たサンプルソースとか 普通に開いてビルドできるのが当たり前だから フォルダ丸ごとコピーしてビルドできないはずがない。
204 :
196 :2005/09/10(土) 09:27:02
>>202 >203も書いているが、コピーしたプロジェクトが利用不可になることはふつうはない。
私の参加しているプロジェクトは複数の業者が関与しているから凡そ10台の端末で
開発されている筈だが、コピーしても問題なく開発を継続できる。
考えられる可能性としては、プロジェクトに参加しているファイルにフルパスのものがあるんじゃないか?
或いはプロジェクト管轄以外への相対パスとか。
そんな最初から管理を放棄したようなことをしているのなら、コピーできなくても不思議はないな。
205 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 03:20:36
今買うならVC++6.0 か VC++7.1どちらが良いでしょうか? .NET特有のライブラリとかは糞なのでいらないのですが
VC7.1は標準準拠度が大きく上がったと読んだ希ガス
207 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 05:46:45
7.1って.NET2003だよねぇ? なら問答無用で7.1でしょ
.NEET 2003 みたいに言われるのは必至なので VC++6.0推奨。
販売とサポートはとっくに終了してるけど
便乗質問スマソ .NET 2003 は、VC++ .NET standard 2003 と Visual Studio .NET professional 2003 があり、後者は通常版は10万以上しますよね? 個人で通常版買うとしたら前者しか手が出ないのですが この2つのパッケージの差は何でしょうか? professional が必要な場面って…
いろいろな言語が入っててバラで買うより徳
the Spokeは激安
どーせ買うなら、格安でMSDN付きのを買おうね。 そんな私は、VS.NET 2002のMSDN付きを買って、 VS.NET 2003とVC6.0をMSDNでゲットしましたよ。 そして主に使っているのは、VC6.0だけという・・・。
>>214 MSDN付きでVC++6.0が入手可能なセットはどの種類からになりますか?
格安というのはいくら位のものを指してますか?(非アカデミックで)
>>210 VSはVC++,VB,VC#,VJ#がセットになったって感じ。
てか俺も悩んでVC++買ったクチだけど、
VC++をやりたい!ってレベルなら前者買って問題ないと思うよ。
最適化コンパイラが付いてないけど、正直、VC++やりたいレベルならいらないし、
無料のToolkitを使えば最適化できるし、アプリケーションが完成した時に考えればいいんじゃね?って事。
俺は勉強用だからアプリケーションを完成させて配布するなんて当分先だろうし。
あと学生なら
>>213 の言うように、選択肢はこれ(Spoke)しかない。
217 :
214 :2005/09/11(日) 20:35:06
>>215 ごめん、わからない。
自分が買ったのは昔だから。
格安というのは、MSDN付きによる差額が1〜2万くらい。
218 :
名無しさん@そうだ選挙に行こう :2005/09/11(日) 20:50:03
CDC* pDC = new CClientDC(h); と CClientDC myDC(h); はどのように使い分ければいいのですか?
同じだから好みで
前者は開放し忘れに注意
はじめまして。私は、VC++を使い始めた超初心者です。
gshowという動画再生のフリーソフトがあるのですが・・・このソフトを改良しようと思って日々いろいろ勉強しています。
改良といっても、gshowは重複起動できないので、「重複起動のチェックを外す」ことだけを目標としています。
これについては、知人に聞いて大体の見当がついてます。
このgshowには、ソースがついているので、改良前に自分でgshowをVisual C++6.0でビルドしようにもサッパリできないのです。
プログラミングに詳しい知人に聞いたのですが、わからず八方塞状態です。ちなみに、gshowの作者とは連絡がとれないのです。
このソースとDirectX8.0以降のSDKとWindows Media Format SDKがあれば、ビルドできるそうです。
今現在、DirectX9(october2004)SDKを導入し、コンパイルしたら下記のようにエラーがでました。
自分なりに解決方法をしらべてはいますが、1週間以上解決法がみつからないままです。
Windows Media Format 9.5SDKをインストールしてはあるのですが・・・きちんと導入できているかわからないです。
このソフトのソースをなんとかビルドできるように、ご指導よろしくお願いいたします。
どうか救いの手を・・・
/////////////// /////////////// /////////////// ///////////////
コンパイル中...
StdAfx.cpp
c:\program files\microsoft directx 9.0 sdk (october 2004)\include\strmif.h(1024) : error C2146: 構文エラー : ';' が、識別子 'HSEMAPHORE' の前に必要です。
c:\program files\microsoft directx 9.0 sdk (october 2004)\include\strmif.h(1024) : fatal error C1004: 予期せぬ EOF が検出されました。
cl.exe の実行エラー
gshow.exe - エラー 2、警告 0
/////////////// /////////////// /////////////// ///////////////
↓gshowの配布サイト
http://www.vector.co.jp/soft/win95/art/se296143.html?y
めんどくさいから適当に考えるとStdAfx.cppの中でincludeしてるヘッダファイルの どこかで;やら}やらが抜けてる予感だな。
224 :
デフォルトの名無しさん :2005/09/11(日) 23:57:08
ちょっとでもUIを変えたいと思うと極端に難しいような気がする。 たとえば、ListViewの項目にプログレスバーやコンボボックスを入れたい なんて超初心者ではきつい
デバッガで開いてトレースしてみて、おそらくCreateMutexしているからそれを探して パスするパッチを当てる方が早かったりして。
何のために多重起動できないようにしてあるのか、理解していないのであれば、やらないほうがいい。 ついでに、そんなつまらないことで、作者に連絡が取れたら作者に聞こうなんて、いい迷惑だ。
DirectX8.0のSDKを使わないと。現在の9SDKとは仕様が異なるから コンパイルが通らんわけだ。 一番早いのは8SDKを手に入れることだが、MSはもう公開を停止してるのではなかったかな?
228 :
an_take :2005/09/12(月) 22:34:46
222です みさま、イロイロアドバイスありがとうございます。 自分なりにイロイロ調べてみたいと思います。 といっても・・・・わからないことだらけですが・・・ (@Д@; アセアセ・・・
VC6で良い(有名な)Unit Testのツールないですか? あと、クラス設計とか参考になりそうなサイトないでしょうか?
Boost Test LibraryとかCPPUnitとか
231 :
デフォルトの名無しさん :2005/09/13(火) 05:07:55
コマンドラインでプログラムを作っていたのですが VC++に移行しようと思ったのですが int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) の意味がいきなり分かりません 説明して頂けませんか?
このIDEが激しく使いにくいんだけど IDEだけ変えることってできないの?
今は慣れたからやってないけど、最初のころは秀丸で作ってた。 メモ帳でもなんでも好きなテキストエディタ使えばいい
234 :
232 :2005/09/13(火) 05:58:22
どういうこと? 好きなエディタで書いて、書き終ったらはっつけてやれってこと?
>>231 VC++に以降というかWindowsプログラミングに以降するって事だよね?
意味が分からないって関数が分からないって意味じゃなくて引数の意味が分からないって事だよね?
それならぐぐれば出てきまくるけどとりあえず無視しても平気っぽい。
というかウィンドウ描画まで一気に行ってから理解した方が早いと思う。
>>231 そこのWinMainの部分はほとんどいじることがないし、
そこだけ見てもしょうがない。
渡されたパラメータを使う段階になったら調べるといい。
237 :
232 :2005/09/13(火) 06:21:15
>>235 , 236
うっせーなうんこ
いいから教えろ
Win32アプリケーションにしているのですが 文字を出力させたいのですが、printfだとどこにも表示されません 簡単に表示させる方法はないでしょうか?
>>238 「簡単」の定義がわからないが、printfで表示されないという言葉を見る限りで判断させてもらうと、
簡単に表示させる方法はない。
まずはウィンドウを作る勉強をし、メッセージやウィンドウプロシージャなどの勉強をするべし。
ちなみにウィンドウズプログラミングの入門書などにはこれらの事が必ず書かれているので安心しましょう。
240 :
238 :2005/09/13(火) 07:36:15
うっせ ウインドウ作ってそこにprintfの結果張り付けられるようなコードを書け 早くかけ
書いたよ
243 :
238 :2005/09/13(火) 08:13:58
C++マネージ拡張は、ほとんどの点で、従来のC++の上位互換となっている。 例えば、以下のようなよくあるCの“Hello World”プログラムを記述してもそのまま実行できる。 #include "stdafx.h" #include <stdio.h> int _tmain() { printf("Hello World!\n"); return 0; } これのいったい何がすごいのか分からないという読者もいると思う。 また、.NET Frameworkの知識のある読者の中には、何が起きているのか よく理解できないという方もいるかもしれない。 実はこのソース・コードは、マネージ・コードで書かれたmain関数 (ソース・コードでは「_tmain」)から、 ネイティブ・コード(アンマネージ・コード)で書かれたprintf関数 (旧来のC言語標準ライブラリのAPI)を呼び出しているのである。 つまり、新規に書いた部分は新しいテクノロジで、 呼び出す先は古いテクノロジで実現されているということである。 まさに「過去の資産の継承」を印象付ける事例なのである
245 :
デフォルトの名無しさん :2005/09/13(火) 08:25:59
すごい! printfそのまま使ってる 信じられん
printf使えるようになったんだ。 世の中進歩したね。 あと100年は無理だと思ってたけど、こんなに早く夢が実現したとは
ncbファイルってやたら大きいですが、何のファイルですか?
Visual C++ IntelliSense Database ファイルのプロパティ開けば出るだろ。 意味は名前の通り。
No Compile Browser コンパイルされないブラウザ
もしスペースが押されたら というコードが書きたいのですが、 書き方が分かりません どう書けばいいのでしょうか?
VK_SPACE
254 :
252 :2005/09/14(水) 21:35:23
>>253 ありがとうございます
ずっと調べているのですが、キーフックと言う言葉は分かったものの
やり方が分かりません
あるウインドウ限定とかではなく、常に監視していてスペースが押されたら
○○の処理みたいな感じのことがしたいです
できれば、コードを書いて頂ければ嬉しいです
MainFrameでWM_CHARかWM_KEYUPを捕まえればいいんでないの?
256 :
デフォルトの名無しさん :2005/09/15(木) 11:44:59
Visual C++ 6.0 で 文字コードに依存しないようにTCHAR.Hを使用してプログラムを組もうとしています。 そのとき、文字列はCString型を使用することにして #define _UNICODE #include <afx.h> int _tmain(int argc, _TCHAR * argv[]) { CString TestChar = _T("Test"); return 0; } 上のように記述したのですが、最初の一文字しか代入されていないようです。 #define _UNICODE をはずすとうまく代入されます。 これは、どういうことなのでしょうか
>最初の一文字しか代入されていないようです。 まさかprintfで確認したとか
TCHAR使うなら_tprintf UNICODEだと、文字列中に0x00が入ることがあるため、printfだと途中で切れる。
次は「日本語を表示させると文字化けします」が来ると予想。
中国語も化けるよ
261 :
デフォルトの名無しさん :2005/09/15(木) 14:48:44
卒業研究としてOpenGLで折り紙のアニメーションを作りたいのですが、 難易度はどうでしょうか?ちなみに私は初心者です。
どの分野で初心者なんだ……。 VCの初心者なのか。 プログラミングと別にアニメーションだのの知識が必要だがそっちが初心者なのか。 OpenGLの初心者なのか。それとも(まさか)折り紙か。 全部だとしたらちょっと厳しくない? っていう難易度になりそうな予感。
3DCGツールでモーションを作成して、それを再生するだけ 難易度は初級の上ぐらい 今からだと年末には間に合わないと思うよ
>>259 意地悪しないで、_tmainに入ってすぐに
_tsetlocale(LC_ALL, _T("")) ;
をやれと言ってやればいいのに・・・
265 :
256 :2005/09/15(木) 19:35:15
>>257 ,258
デバッグウィンドウの変数で見ていました。
_tprintfで確認できましたが
>>259 「日本語を表示させると文字化けします」
ちなみにcoutの代わりは、ないのですか?
266 :
256 :2005/09/15(木) 19:37:01
>>265 setlocale( LC_CTYPE,"Japanese");
wcout << wstring( L"こんに") << endl;
_UNICODEでstring/wstringは切り替わらない。
>>265 やるならこんな感じで。
#ifdef _UNICODE
#define _tcout wcout
#define _tostream wostream
#else
#define _tcout cout
#define _tostream ostream
#endif
_tcout << _T("Test") << endl;
269 :
256 :2005/09/15(木) 20:27:56
すいませんまた新たな問題が #define _UNICODE #include <afx.h> int _tmain(int argc, _TCHAR * argv[]) { _tsetlocale(LC_ALL, _T("")) ; CString TestChar = _T("Test"); TestClass TC; _tprintf(_T("TestChar :\"%s\"\n\n"), TestChar); TC.TestMeth(TestChar); return 0; } ------- int TestClass::TestMeth(CString TestString) { _tprintf(_T("TestString :\"%s\"\n\n"), TestString); return 0; } 上記のようなとき以下のような結果になってしまいます。 TestChar :"Test" TestString :"T" クラスの側で何か宣言しておく必要があるのでしょうか
MFCでUNICODE使うときmfc***u.libをリンクする んじゃなかったかな。だからアクティブな構成を Win32 Unicode Debugにするとか。ちがったらごめん。
>>269 #define _UNICODE
を、もっとグローバルな箇所で定義すべし。
プロジェクトの設定でプリプロセッサとして定義するのがベスト
>>265 > デバッグウィンドウの変数で見ていました。
設定で、UNICODE文字列を表示する、といったようなものがあるから、そこにチェックを入れる。
>>269 > _tprintf(_T("TestChar :\"%s\"\n\n"), TestChar);
> _tprintf(_T("TestString :\"%s\"\n\n"), TestString);
これはあんまりよろしくない。LPCTSTRにキャストしたほうがいい。
> int TestClass::TestMeth(CString TestString)
関数の中で何をやるか、複数のスレッドで触るのかとかにもよるけど、
CString& TestString
や
CString* pTestString
などを検討してみたほうがいい。
まぁ、CStringのコピーはdeepではなくshallowだけどさ・・・。
>>268 _tosteramはそうしなくてもtypedef std::basic_ostream<_TCHAR> tostreamとだけ書けばよい。
(cout/wcoutは#ifdef _UNICODEで切り替える必要があるが)
しかも下線で始まる名前は処理系予約。
テスト用のコードとアプリケーション本体のコードを分離して 管理したいんですけどうまい方法というか定石みたいなの あります?
276 :
256 :2005/09/15(木) 22:03:16
>>271 ご指摘の方法を試したところいろいろ調整が必要でしたが
なんとなくうまく動くようになったようです。
その他いろいろな方からご回答いただきましてありがとうございました。
理解できない言葉などもありますのでもっと勉強したいと思います。
それでもまたどうしてもわからないところがありましたら、ご指導のほどよろしくお願いします。
MFCはまず何から始めたらいいんでしょうか? 一応Cはほんのり理解しているつもりです やっぱりSDKの知識が必要なんですかね?
まずはWindowsアプリのしくみを理解すること。 言語とかフレームワークとかの前に。
すいません、ちょっと聞きたいんですが、 1234567890を繰り返し表示するプログラムを作成しなさい。 ただし、表示する数字は読み込まれた整数値の個数とする。 という問題が解けません。 初心者なので、本当に分からなくて…。 駄質問で申し訳ないですが、どなたかお願いします。
>>280 // 読み込みまではしらね。
for (unsigned ic = 0; ic < readNum; ++ic) {
putchar('0' + (ic + 1) % 10);
}
宿題スレ逝け馬鹿
>>280 わかりません。
とだけ書かれても、何がわからないのか、わからないのですが・・・。
>>283 >>279 意見ありがとうございます
本読んでC++勉強しようとしているこんな僕でも作れますかね?
合作でサウンドノベル風なのを作ろうと考えているのですが…
>>285 MFCはWin32SDKのラッパー+α程度だと思っていたほうがいいです。
MFCはC++なので、C++を全く知らないと無理だけど、C++の簡単なことだけ知っていれば使えます。
MFCはサウンドノベルを作るには適切な選択肢ではないような気がします。
WindowsゲームつくるならCでGDIをガリガリ書いた方がいいですかね? その後DirectXをCでガリガリ書くとか。
DirectXはC++でやれよ。たとえガリガリでもいいからさ。
CでCOMをやるのは死ねます。 C++でも、気をつけないと、死ねます。 サウンドノベルだったら、もっと他のものを使うことを考えたほうがいいと思うよ。
Flashではいけないという理由を思いつけない……
重い
VisualC++初心者ですがサンプルソースを見て勉強中です。 ポインタについては少しわかってきた程度ですが、ちょっと聞きたいことがありまして。 スコープ::やメンバ選択->について勉強できる良いサイトはありませんか? いくつか検索してみましたが、なかなか良いサイトが見つからなかったもので・・・
卒業制作で言語処理プログラム(簡易プログラミング言語みたいの) を作ろうと思ってるんですが、VCでの開発は可能でしょうか? VBは少しやっていたのですが、「VBでは無理」、 と言われてしまいまして・・・。
VCはVCで作ってます 以上
>>294 言語処理系なら開発環境としてUNIXを使用したほうがよいと思う。
UNIX系のツールであるlexとかyaccを使用せずに開発するのは至難の業だから。
VC++.netを使っています。SDKで開発をしています。 ある文字(列)をタブ文字で置換することが出来ません。 以下のように置換を行っています。 void Replace(char *text, char *key, char *rep){ char *p, buf[128]; p = Search(text, key); while(p!=NULL){ *p = '\0'; strcpy(buf, p+strlen(key)); strncat(text, rep, strlen(rep)-1); strcat(text, buf); p = Search(p+strlen(rep), key); } } char *Search(char *text, char *key){ int m, n; char *p; m = strlen(text); n = strlen(key); for(p = text; p<=text+m-n; p++){ if(strncmp(p, key, n)==0){ return(p); } } return(NULL); }
という関数を作り、Replace関数を呼ぶことで置換を行っています。 char strMsg = "test,aaa,bbb\n"; とstrMsgを宣言し、Replace(strMsg, "test", "agesage"); とすると、strMsgの中身は、"agesage,aaa,bbb\n"となります。 ここで、Replace(strMsg, ",", "\t"); としてみたところ、 strMsgの中身は、"agesage\taaa\tbbb\n"となって欲しいのですが、 "agesageaaabbb\n" となってしまいました。 デバッグをして1行1行見てみたところ、Replace関数の中に入った時点で、 *key の中身が"\t"ではなく、""となっていました。 どのようにすれば、タブ文字への置換が出来るのでしょうか? お願いします。
「禿本」とは何を指しているのでしょうか?
>>292 本屋にいって本を買え。
なんで無料で見れるWebサイトで済まそうとするんだろうねぇ。
>>297 > デバッグをして1行1行見てみたところ、Replace関数の中に入った時点で、*key の中身が"\t"ではなく、""となっていました。
本当?
> strncat(text, rep, strlen(rep)-1);
これが間違いだと思う。
なんでrepから1文字削るの?
"\t"なら1文字削ると""になっちゃうよ。
まぁその他にも、言いたいことはたくさんあるが・・・。
301 :
300 :2005/09/17(土) 21:35:44
いちおう言っとくか・・・ あなたの書いたプログラムは、かなり危ないです。 bufが128バイトで足りなくなることがないことを、呼び出し側が保証していますか? repに""が指定された時、strlen(rep)-1は、-1となり、とんでもないことになりませんか? 置換した結果、textのメモリを越える長さにならないことを、どのように保証しますか?
ネタとしか思えんな ネタに答えてる馬鹿は何者?
>>292 目指せプログラマー!
ってホームページがいいんじゃない。
かなり、詳しいよ。
やさしいXXXXXってシリーズよりずっといいと思う。
305 :
デフォルトの名無しさん :2005/09/17(土) 22:19:26
こんばんは、よろしくお願いします。 構造体メンバーから、文字比較をしたいのですが、 どうすればよいのでしょうか。 struct s{ char *a; char *b; }; s s1; s1.a = ""; if(strcmp(s1.a,"")) //この場合trueでない
>>305 嫌がらせか?
ここはCスレでもC++スレでもないんだが
ちょっと気になったのだが・・・
>>297 はネタだとして、strncat(text, rep, strlen(rep)-1);
を strcat(text, rep);
にしてみたんだが、それでも agesageaaabbb となったぞ。なして?
>>304 > 目指せプログラマー!
> ってホームページ
今ちらっと STL の set のところ見てみたけど、
erase の削除範囲とか lower_bound の説明とか
嘘だらけな気が…。
VC使えないやつの嫌がらせだろうか?
>>286 >>289 意見毎度ありがとうございます
今度仲間とよく相談してこのまま続けるか考えます
>>286 選択肢とはWIN32APIで作るとかでしょうか?
ほんの2,3ヶ月前に始めたばかりなのでよく分かりません…
すいませんでした
>>309 >スコープ::やメンバ選択->について勉強できる良いサイトはありませんか?
すまんね。
って部分だけを見てたんで。
313 :
デフォルトの名無しさん :2005/09/17(土) 22:50:27
315 :
デフォルトの名無しさん :2005/09/18(日) 01:35:43
Visual Studio 2003で、標準のコンパイラの代わりにgccを使ってビルドしてみ たいんですが無理ですか?
>>314 flashで、ということでしょうか…?
とりあえず考えておきます
助言ありがとうございます
サウンドノベルだったら、NScripterみたいな専用のゲーム作成ツールを使うのもアリかと。 プログラミングできない人でも、そこそこの物が作れるみたいだし。 自分でプログラミングしたい!ってなら自作してもいいけどね。 って、ム板で言うべきじゃことじゃないかw
>>318 ありがとうございます
ただ、部活の製作物として文化祭に出品する予定なので
1から作ってみたいと思います。逃げ道として考えておきます
そもそもこの質問はゲーム製作スレとかでするものでした
スレ違い失礼しました
あるソフトのpluginの開発をしています。 複数の人間で作業しているため、workspace以下の内容を同じ設定にしたいと考えています。 (他人のプロジェクトをコピペして設定を変えずに自分のマシンでコンパイル出来るようにするのが目的です) この開発キットでは * headerファイル * objファイル の2種類のファイルをプロジェクトに追加する必要があります。 同じプロジェクトの設定にするために、 [ツール]→[オプション]→[ディレクトリ] からインクルードファイルのパスを通すことにより、"headerファイル"は設定を変えることなくコンパイル可能です。 しかし"objファイル"の場合、上記と同様に行うことが出来ません。 現在は"ファイルをプロジェクトに追加"のコマンドを使って"objファイル"のリンクを直してからコンパイルする手間があります。 この手間をなくすにはどういった手法をとるのがいいのでしょう? 開発環境: OS : windows 2000, windows XP IDE : Visual C++ 6.0 standard
複数の人間で作業しててまともなやつが1人もいないということか
プロジェクトの絶対パスを共通にするという手もあるぞw
324 :
320 :2005/09/20(火) 03:58:33
>>322-323 やっぱりそうなりますかね・・・
smartじゃないんで採用したくなかったのですが検討してみます・・・w
絶対パスを共通にする場合、 人によってドライブレターが違うので、 1台しかPCがなかろうと、 共有フォルダを設定して、 みなで同じドライブレターでネットワークドライブを設定するといいかも。
うへ、ローカルドライブでネットワーク資源を消費する極悪な手法だ。
ダミーのソースをプロジェクトに追加 ソースよりobjが新しければ リビルドしない限りobjは更新されない
328 :
320 :2005/09/20(火) 09:10:55
>>326 だってさー、SUBSTすらも使いこなせない人がいるんよ・・・orz
Windows2000インストール出来ない奴いたなぁ
なんかみんなで俺の文句言ってる…
プログラマのチームに異動してきた人が、 この職場はおかしい。Windows2000のインストールの手順書が存在しない。 と言って、ビックリしたことがあるよ。
>>332 そいつに作らせればみんなが幸せになっていんじゃね?
とりあえずは幸せになるね。 そいつが1人で黙々と手順書を作るのであれば。
マごときが勝手にインストールすんなゴルァ
+src ++mylib ---liba.h ---liba.cc ++sys ---main.cc こんな感じのディレクトリ構成のプログラムをlinuxで書いていたんですが、 これをVCでコンパイルする場合、どうすればいいでしょうか。 とりあえず、ソースやヘッダーの項目にmylibやsysという新しいフィルタ(ディレクトリ??)を追加して、 その下にソースを追加してビルドしてみた所、 main.ccの#include "mylib/liba.h"が見つからないと言われてしまいました。 おそらくディレクトリ階層が認識できていないからだと思うのですが、どうしたらよいでしょうか。 VCは Visual C++ 2005 Express Edition Beta 2 です。
#include "../mylib/liba.h" にするか、プロジェクトの設定でsrcにパスを通してしまうか・・・。
>>336 linuxのときのmakefileはどうなってた?
>>337 ソースは変更したくなかったので、srcにパスを通したらいけました。ありがとうございました。
が、'fopen' が古い形式として宣言されました。ってwarningが大量発生した。。
さらにstrtofが見つからないってエラーが出たんですが、
VCにはstrtofって無いんでしょうか? 標準ライブラリだと思うんですが。
#M_PIも無いって言いやがる。。
>>339 strtod使え
あとM_PI使いたかったら
math.hインクルードする前に
#define _USE_MATH_DEFINES
もしくはオプションであらかじめ定義しておくべし。
>>339 C++なら、fopen()はstd::fopen()だからじゃないか?
で、>338
わざわざVCでコンパイル必要がなさそうなプログラムだな gccでもいれた方がいいのに 頭わるそう
>>341 それってcstdioですよね? stdio.hインクルードしてるんですが、言われます。
mffwってのを使ってました。
>>342 全くもってその通りなんですが、最近のgccではコンパイルできないので。。
mffwって…… なんか、根本的にプロジェクト管理がわかっていない悪寒。
最初は自分でmakefile書いてたんですけど、 mffwを使った方が簡潔に出来たのでそうしました。 というかフレームワーク(結局はmakefile)を使うのってそんなに不味かったでしょうか。
>>345 main.ccからみたliba.hはlinuxでもVCでも変わらないんだろ?
それだったらlinuxでmakefileに書いたようにVCでもプロジェクトを作ればいいわけなんだが。
mffw使っているために、基準ディレクトリとか相対パスとか理解できてないんだろうなぁと思ってね。
で、C++を使う以上、gcc on linuxでもgcc on cygwinでもvcでも、いずれにしろstdio.hは使えなくなるぞ。
#つーか、cstdioを使うべき。
347 :
デフォルトの名無しさん :2005/09/26(月) 02:51:14
visual studio .net 2003をwindowsでCの勉強したくて先日買いました。 今までfreebsdでソースコード書いて cc hoge.cでコンパイル ./a.outで実行してたんですけど・・・ このソフトでたったそれだけやりたいんですけど、、 簡潔にやり方教えて下さい。。。 if for while switchとかまだそういう程度のプログラム勉強したもんで
>>347 それなら、それを買わずに、Cygwinを使えば良かったのに。
スタートメニューからそれっぽい環境変数をセットしてコマンドプロンプトを開くのを選び、
目的のディレクトリに移動し、
cl
ってタイプしてリターン押してみ。
とりあえず実行したいということならCtrl + F5もドゾー
350 :
デフォルトの名無しさん :2005/09/26(月) 15:00:54
strtokのデリミタに"(二重の引用符)を使いたい場合はどうすればいいか教えてください。
>>350 "\""
strtok()よりsscanf()推奨。
353 :
デフォルトの名無しさん :2005/09/26(月) 16:40:29
ファイル > 新規作成 > ファイルで C++ファイル作成で
Cソース書いたんですが
>>349 氏の言うCtrl + F5できませんが
どうしてでしょうか
>>353 VisualStudioはプロジェクトをこさえないとデバッグはできない。
好きなのを選べ。
・VisualStudioの使い方を覚える。
・コマンドラインからclを使う。
・VisualStudioは諦めてCygwinをインストールして擬似Unix環境を使う。
無料版でいいのにわざわざ製品版買ってるくせに 本は買わずに済ませようと思ってるんだろうか?
356 :
デフォルトの名無しさん :2005/09/26(月) 22:22:08
VisualC++.net2003でSTLを使うと >BSCMAKE: warning BK4503 : .SBR ファイル '.\debug\stdafx.sbr' 中に重大でないエラーがありましたが、無視しました。 って警告が大量に出てくるんだけど、この表示を消すには {STL|BSCMAKE|そもそもVisualC++}を使わない以外に解決策ないんでしょうか?
>>356 自己解決。
コンパイルオプションの/YX"stdafx.h"外したら出なくなりました。
358 :
デフォルトの名無しさん :2005/09/26(月) 23:02:23
テキストファイルから文字列を読み出してきて、 returnでその文字列を返す関数を書いたのですが、 fcloseする直前までは正しい値なのですが、fcloseが動いた途端に文字列が変化してしまいます。 (下に書いたコードでは分かりずらいと思うのですが。。。) ビルドしたときの警告に「ローカル変数またはテンポラリのアドレスを返します。」っていうのが出ているので、 これが原因だとは思うのですが、解決法が分かりません。 教えていただけないでしょうか。 /** 簡単な流れ **/ char* function() { char* szText; : : szText = (テキストから欲しい文字列だけ読んでくる関数) ←ここでは正しく読み込めている。 : : fclose(filename); ←ここへくると文字列が変化してしまう。 return szText; ←正しくない文字列が返る }
>>358 その警告の対象になっている関数(おそらく(テキストから欲しい文字列だけ読んでくる関数)だと思われる)の
return 〜;をreturn strdup(〜);にしてみろ。
後で要らなくなったらfree()しろよ。
>>359 すばやいレスありがとうございます!
無事に解決しました。
361 :
359 :2005/09/26(月) 23:29:57
割れ鍋に閉じ蓋っていうやつですね
363 :
358 :2005/09/26(月) 23:43:59
>>361 あ、そうなんですか。
やっぱりもっとしっかり勉強して根本から解決しなければならないですよね。
もう少し調べてみます。
質問です。A.cpp から、B.h と C.h という二つのヘッダファイルをインクルードしてます。 B.h で 関数D のプロトタイプ宣言を行うと問題はないのですが、 B.h に書かずC.h に記述すると”予期せぬEOF〜”とエラーが出てしまうという、 変なバグで困ってます。 関数D を記述したいのは C.h の方なのでどうにか修正したいのですが、 この場合、エラーの原因にはどのようなものがあるのでしょうか?
リビルド
366 :
デフォルトの名無しさん :2005/09/27(火) 00:46:14
超初心者です、というより触った事も無い自分ですが質問です 自分でプログラムしてゲームを作りたいと思うのですが、 DirectXを使ってゲームを作る場合はC++が良いなど聞くのですが BASICよりも難しいと聞きます、 それなりにしっかりしたゲームのプログラムを作れるようになるまでに、 どのくらいの努力と年月が掛かるのでしょうか? (ちなみに作りたいゲームは2Dのシューティングなのですが、DirectXを使ってみたいのです
>>366 ゲーム製作板に行った方がまともな回答が来ると思うのだが・・・
結論から言うと、人それぞれ。
・1日に確保できる時間
・プログラミングのセンス、理解力
・やる気
この辺に個人差があるから何とも言えない。
概算で適当に答えておくと
1日3〜4時間ずつ勉強していったとして、
C++だけでも、文法をそれなりに理解するのに1年は必要。
VC++等でWinアプリを作りながらやっていったとしても、
シンプルな2Dのゲームを作れるようになるまでに、
最低で2〜3年くらいはかかると思う。
(プログラムの構成や処理の組み立て方を身に着けるのは本当に時間がかかる
DirectXはさらにそこから半年〜1年くらいかかると予想。
#まあ、たぶんもっと時間かかるだろうけど。
>>366 学生時代に作ったけど、
1ヶ月目 C言語の配列ぐらいまでやった。対戦専用将棋作った
2ヶ月目 ポインタ・ファイル入出力ぐらいまで。テトリス作った
3ヶ月目 windowsプログラムで簡単なツール。圧縮解凍とか
4ヶ月目 DirectXで絵を適当に動かしたり勉強
5ヶ月目 ゲーム製作開始(シューティング)
7ヶ月目 ショボイけどとりあえず完成
な感じだった。他人は知らんが、自分はこんなもん。
370 :
デフォルトの名無しさん :2005/09/27(火) 12:50:09
winampとかみたいなスキン切替アプリをつくろうかと思ってんだけど、 そういうのの骨組みは普通のGUIで画像張っただけなの? なんか別のやり方があるの?
WMPの場合はSDK出てたな
VC++6.0でメニューリソースのIDを変えて、ソースの中身の関連付けも チェックした後、ビルト→実行してもメニューバーが表示されませんでした。 ですので名前を変えたところをすべてもとに戻して再度ビルトして実行しましたが またメニューバーが表示されませんでした。 私の戻し忘れのエラーなんでしょうか?
373 :
デフォルトの名無しさん :2005/09/28(水) 21:46:45
実験の実測データからパラメータを計算するために、 VC++6.0のConsoleApplicationでプログラムを書きました。 現在はバッチファイルを作って、 //-------------------------------- CALC.EXE InputFile1 OutputFile1 CALC.EXE InputFile2 OutputFile2 : //-------------------------------- と記述して処理していますが、ファイルが増えるとバッチファイルを作るのがかなり大変です。 これを例えば (1)フォルダ指定(argv[1]にInputFileのフォルダパス、argv[2]にOutputFileのフォルダパス)してそのフォルダにあるTXTファイルをInputFileとして全て計算させる、 (バッチファイルで"copy InputFileパス\*.txt OutputFileパス\*.txt"と書いたときのような感じで) または、 (2)EXEのあるフォルダの全てのTXTファイルをInputFileとして計算させる(出力先は何とかする)、 というようなことは可能でしょうか。 C++でコーディングをしていますが、 コードが特に複雑ではないの関数は全てglobalで書いています。
375 :
373 :2005/09/28(水) 22:30:45
可能ですか。 どうすればよいのでしょうか?? 教えていただけないでしょうか?
>>375 ファイル名は連番だろ。
ofstream使ってバッチファイルを書き出してそれを最後に実行させるプログラムを作ればいいじゃないか。
377 :
375 :2005/09/28(水) 23:41:56
いや、連番ではないです。 373のは少しでも分かりやすくしようと思って書いただけで。 誤解を招く書き方でした。すみません。 実際のファイル名は[西暦月日時間_実験条件.txt]です。 連番ならばバッチファイルでも全然楽なんですけどね。
>>377 それでもFindFirstFile〜FindNextFileを使えばフォルダ内のファイルを列挙できる。
それぞれostringstreamやら_snprintfやらでコマンドライン文字列を作って、systemで実行させればいい。
>>375 スレ違いになるのでみんな言わないんだろうし、条件や要求にもよるが、
こんな場合、少し気の利いた奴なら普通、.batスクリプトなどで for文と
メタキャラクタでのループを書いて、それだけでお終いだよねぇ……
APIでやる Cの標準関数でやる その他(systemやバッチで手抜き) 下2つはスレ違い
俺は擦れ違いだー!\(*o*)/ ↓こいつモナー
くだすれってなんですか?
>>382 くだらないスレ
つまりsageるなということ。
Visualスタジオ.net the spokeをXPSP1に入れています。 DOS窓を使って、*.cから直接実行ファイルを書き出すことは可能ですか? gcc test.c -o test.out みたいな感じです。
できる
>>385 専用のDOS窓でclするんですね。
ありがとうございました。
387 :
デフォルトの名無しさん :2005/10/17(月) 16:35:15
VC2002.NETなのですが、複数のプロジェクトをまとめて管理している場合に、 ダイアログボックスのコントロールにメッセージ処理関数とか追加すると、 意図しないプロジェクトに関数が追加されたりして、 それだけでコンパイルエラーになったりして困っています。 これってバグですよね? 対応方法とか修正パッチとかあるのでしょうか? 教えてください。SP1は既にあてています。
いるよなぁ。絶対に自分のせいだと認めない奴。
389 :
デフォルトの名無しさん :2005/10/17(月) 17:50:43
Microsoft Visual C++ 6.0 が研究室のPCに入ってます。 "xxx.c"を"xxx.exe"にコンパイル(?)する方法がわかりません。 具体的には"xxx.exe"のプログラム内容を変えたいのです。 まるでわからなくてごめんなさい。
390 :
デフォルトの名無しさん :2005/10/17(月) 18:00:03
Visual C++ で gcc の strip みたいなコマンドはありますか?
>>388 は高々、単プロジェクトしか作れないから、
言ってる意味がわからないんだと思う。
コマンドって何? ゲームかなんかの話?
395 :
389 :2005/10/17(月) 18:29:18
xxx.exe - エラー 1、警告 0 と出てしまいます。 ちなみにxxx.cをMicrosoft Visual C++ 6.0のショートカットにドラッグ&ドロップしました。 何かxxx.cに問題があるんですね。 ありがとうございました。
>>395 ファイル->新規作成でプロジェクト作って
プロジェクト->プロジェクトへ追加->ファイルでxxx.cを読み込ませる
そんな適当な説明じゃかえって混乱するだろ
わざわざプロジェクト作らなくても
>>395 のやり方でビルドしたら
デフォルトのワークスペースができるね
399 :
389 :2005/10/17(月) 18:52:08
>>392 ありがとうございました。なんとかコンパイルは成功しました。
再び質問で申し訳ないのですが、プログラムに
/* 時間データ読み込み */
void readtime(FILE *fi, FILE *fo)
{
char time[6] = "";
fseek(fi, 73, SEEK_SET);
fscanf(fi, "%5c", &time);
fprintf(fo, "%s\n", time);
}
なる箇所があって、これはファイルの時刻を読み込んで書き出しているのだろうと思います。
ところが、(読み込む対象の)データの時刻が9時間ほどずれていて、そのため後の計算も大幅にずれてしまうので困っています。
0:03:00を9:03:00にするようなことはできないでしょうか?
ファイルフォーマットも提示されてないのにどうやってアドバイスすればいいんだろうな。 エスパー出番です。
402 :
389 :2005/10/17(月) 19:08:38
>>389 補正はどうやってでも可能ではある(としか助言しようが無い)が、
ほんとにズレてんのか、あるいは標準時として処理する必要は無いのか、
なんてのも、わからないままなんだろうなあ、、、
>>389 研究室の先輩や、同輩、他の研究室の知り合いに聞いたほうがいいぞ。
405 :
デフォルトの名無しさん :2005/10/18(火) 03:38:16
ダイアログの初期化処理が行いたいのですが WM_INITDIALOGのように画面が出る前の初期化処理ではなく、 画面が表示されてから1回だけしたい処理があるのですが、 そういうWMってないでしょうか...orz 今は、ダイアログプロシージャの中でstaticな変数をフラグにして 表示後1回だけ処理してるんですが。
406 :
デフォルトの名無しさん :2005/10/18(火) 07:37:24
はい通報
407 :
デフォルトの名無しさん :2005/10/18(火) 17:53:18
質問です。 VC2002.netとVC2003.netのプロジェクトの互換性はありますか? または同じプロジェクトファイルを相互に使いまわす方法はありますか? やりたいこととしては、 私:vc2003.netを持っている 相手:vc2002.netを持っている という状況で同じプロジェクトファイルを使えないか、ということです。 自分ひとりでテストできないのでまだ何のテストもできていません。 よろしくお願いします。
408 :
407 :2005/10/18(火) 19:19:22
すみません、解決しました(バージョン合わせることができました)。 ただし疑問としてはまだ持っていますので、教えて頂けるとうれしいです。
なにこのエスパー
410 :
デフォルトの名無しさん :2005/10/18(火) 22:33:02
VS.net 2002 で、WinPcap を使って、簡単なキャプチャを作りました。 pcap_handler の中でパケット毎に malloc を実行したら NULL を返してきました。 malloc() が NULL 返したとき、どうすればいいでしょうか。何か間違ってますか? # 何度チェックしても NULL...。 Windows 再起動しても NULL...。
>>410 引数の値がありえないほどの巨大な大きさになっていないか?
412 :
410 :2005/10/19(水) 00:36:49
帰宅しました。帰宅した環境でコンパイルしてもNULLでした。 >411 ありがとうございます。sizeof(構造体)で、28バイトです。 ソース変えながらいろいろ試してみます。
>>410 その程度なら確保されるはずだが。
・初期化してない変数で確保したいサイズを渡している。
・mallocから受け取った変数がBuffer over writeなバグに侵食された。
と予測をたててみる。
>>410 1. メモリリークにより、メモリを食い尽くしていないか?
パフォーマンスカウンタ等でチェックする
2. Cランタイムの初期化は済んでいるか?
済んでいなければmallocは使えない。
初期化をするかCランタイムを使わず、
Win32APIを直接使う。HeapAllocとか。
>>412 とりあえずmallocの行を晒してみろ。
416 :
414 :2005/10/20(木) 00:20:20
DLLのエントリポイントは何にしてる? 自分で作った関数にしていたら、Cランタイムの初期かとか行われなくなってしまうよ。 一見、DLLMainに直接飛んでくるように見えても、DLLのエントリポイントはDLLMainじゃないよ。 Cランタイムの初期化等を行う別の関数がエントリポイントで、そこからDLLMainを呼んでるよ。
417 :
誘導されて来ました :2005/10/21(金) 18:16:56
最近C++を始めてみようと、 「Visual C++.net Standard Version2003 アカデミック」 を購入しました。 6枚のCDを出したり入れたりして4段階のセットアップが完了し 早速起動してみました。 よくわからなかったのでとりあえず ファイル⇒新規作成⇒プロジェクト で「test」と名づけたプロジェクとを作成したところ 以後「既存のプロジェクトを開く」の一覧から「test」を左ダブルクリックで選択すると 選択した瞬間にエラーが発生してC++が強制再起動します。 また、その後に作成した「test2」というプロジェクトは 選択時はセーフなのですが プロパティを見ようとすると同様に強制再起動します。 これの解決策をご教授くださいませ・・・
PC自体が腐っているに一票。
>>417 たったそれだけの情報で、どうやって答えればいいのだ?
420 :
417 :2005/10/22(土) 02:03:38
すみません。 これだけ示せば十分かと思ったので・・・ 何を示せばいいのかもよくわかりません。
VSSみたいなリビジョン管理ツールとか入ってる?
VSSだけはやめとけ
アカデミック版にVSS入れるなんて聞いたことないぞ
424 :
デフォルトの名無しさん :2005/10/22(土) 09:33:34
VC++にソースファイル名を変更する機能はないでしょうか? 今までは、間違ったファイル名をつけてしまった場合、プロジェクトから一度削除して、名前を変更した後に再度プロジェクトに追加していたんですが、面倒なので…。 ソールファイル名変更のリファクタリング機能はVC++にはないのでしょうか(´・ω・`)
>>424 プロジェクトファイルを編集してファイル名を変更。
それさえ面倒なら、それをするスクリプトを用意する。
426 :
424 :2005/10/22(土) 14:18:10
>>425 プロジェクトファイルを直接編集する手がありましたか(^^;
それが一番手軽そうですね。
ありがとうございます。
それはそれでめんどくさいんだけどね・・・
「猫でもわかるWindowsプログラミング」で勉強中です Googleでもヘルプでもわからなかったので Visual C++ .NET 2003 standard ファイル−新規作成−プロジェクト で Win32プロジェクトで勝手にできあがったファイルに コード追加して勉強してたんですが OPENFILENAME 構造体のところでつまずきました。 勝手にできあがったsample.cppのグローバル変数のところに // グローバル変数 : HINSTANCE hInst; TCHAR szTitle[MAX_LOADSTRING]; TCHAR szWindowClass[MAX_LOADSTRING]; OPENFILENAME ofn; // ためしにここに追加した。
でも、 −−−−−−−−− d:\C++.NET\TextEdit\TextEdit.cpp(12) : error C2146: 構文エラー : ';' が、識別子 'ofn' の前に必要です。 d:\C++.NET\TextEdit\TextEdit.cpp(12) : error C2501: 'OPENFILENAME' : 識別名を宣言するのに、型が指定されていません。 d:\C++.NET\TextEdit\TextEdit.cpp(12) : error C2501: 'ofn' : 識別名を宣言するのに、型が指定されていません。 −−−−−−−−− というエラーが出ます。 空のプロジェクトで0からソース打ち込んだら、ちゃんとビルドしてくれました。 Win32プロジェクトで勝手にできあがったものではなぜかOPENFILENAME構造体のオブジェクトを作成できません。 おねがいします。
430 :
勉強中の名無しさん :2005/10/23(日) 11:42:30
「最新版の有無」もできないし、再インストールしてみますけども・・・
Visual C++ 2005っていつリリースなんですかね。 もうじき2006になっちゃいますが・・・。
>>429 それコモンダイアログだからこれが必要
#include <commdlg.h>
433 :
勉強中の名無しさん :2005/10/23(日) 12:14:45
>>432 さんありがとうございます m(_ _)m
出来ました。消すまいに確認してよかった
空のプロジェクトで作成したときには
#include <commdlg.h>
がなくても
#include <windows.h>
#include <windowsx.h>
だけで、出来たのが気になりますが...
「Microsoftだから」で納得することにします。
>>432-433 <commdlg.h>は<Windows.h>の中でインクルードされる。
ただしWIN32_LEAN_AND_MEANが定義されていない場合。
VCのWin32プロジェクトでは#define WIN32_LEAN_AND_MEANが書かれているはず。
だから<commdlg.h>がインクルードされておらず
>>428-429 になったのだろう。
435 :
勉強中の名無しさん :2005/10/23(日) 13:13:55
>>434 さん
書かれていました。windows.hも確認したら、ちゃんとifndefされてました。orz
とりあえずは、WIN32_LEAN_AND_MEANをコメントにしてしまえば、windows.hはフルに使えると解釈しました。
WIN32_LEAN_AND_MEANしかstdafx.hに無かったし。
MFCのまえにAPIのさわりぐらい知ってからと思って勉強してましたが、危うく挫折するところでした。
とりあえずは、超初心者から初心者目指してがんばります。
436 :
410 :2005/10/23(日) 13:16:19
410=412です。 malloc() が NULL を返した件不本意ながら解決しました。 >> 413 > ・初期化してない変数で確保したいサイズを渡している。 > ・mallocから受け取った変数がBuffer over writeなバグに侵食された。 > と予測をたててみる。 前者は引数は sizeof(型)で打ってたので違います。 可能性だけだったら、後者がそうなのかもしれない。 >> 414=416 ありがとう。でも、DLL使っていません。 winpcap の developer's pack の basic_dump 編集しただけなので。 プログラム修正とプロジェクト作り直し同時にやったら直りました。 コードのロジックは変えていないので、プロジェクトのオプションが 悪さしたんだと推測しています。
437 :
デフォルトの名無しさん :2005/10/23(日) 17:06:26
Visual C++ .NET Standard Version 2003 を購入してきました。 インストールをしようとしたら、 Microsoft FrontPage2000 Web Extensions Client が、インストールできませんでした。 CDから直接 weccom.msi をクリックしてインストールすると、 『Windows XP Professional ServicePack 1 CDを挿入して下さい。』 というメッセージが出てきてしまいます。 パッケージにはXP Home Editionでも使えるとあったので購入したのですが、 なぜこんなエラーが出てインストールできないのでしょうか? 環境は、 OS:Windows XP Home Edition Version2002 SP1 CUP:Celeron 1.60GHz メモリ:256MB です。 対処法などを教えて下さい。お願いします。
それ入れないと何か困ることがあるの?
439 :
437 :2005/10/23(日) 17:25:36
>>438 必須コンポーネットと『お使いになる前に』という冊子に書かれていたので。
これを入れないとダメなんですよね?
>>437 2003買うっつうことは、当分2005はでないの?
2005年内は無理か?
バグが多いのに2005が出てもらってもなぁ。。。
開発ツールは周りに合わせるのが一番・・・ 最新の技術を追っかけたい人以外は。
たとえば2006年発売になっても2005というバージョン名で 発売するのかな。2005中止にすりゃいいのに。どうせ発売後すぐに 2006とか出されるよりかは、万全にして出して欲しいな。
>>437 Windows XPのCDがなければ、CDの代わりにC:\i386フォルダを指定してみろ。
445 :
デフォルトの名無しさん :2005/10/23(日) 22:55:15
質問です。 VC++をやってるのですが、 ソースの上のところに、 class XXXX; (XXXXは、他のソースで定義されているクラス名) と宣言してある場合、どんな意味があるのでしょうか?
>>445 前方宣言。
とりあえずそういう名前のクラスがあることだけを示す。
そのクラスを引数に取る関数の宣言や、そのクラスへのポインタ・参照をメンバに持つクラスなどの宣言では、
クラスの宣言は要らず前方宣言だけあれば良いのでヘッダ間の依存を減らせる。
(クラスの宣言はそれらの定義時には必要)
質問です。XP、.NET 2003 です。 プロジェクト hoge を作成した場合、ビルドしてできあがった実行ファイルは hoge.exe となりますが、 プロジェクト名はそのままで、出力する実行ファイルの名前を変える方法はありますでしょうか。 現在は、ビルドするたびにファイル名を変えて対処しています。 よろしくお願いします。
プロジェクトのプロパティ ↓ リンカ ↓ 全般 ↓ 出力ファイル
449 :
447 :2005/10/25(火) 17:07:30
プロパティ見てたのに見つけられなかった俺って・・・orz ありがとうございました。
Visual C++ なんで、unsigned longとかを typedefしてULONG とか ULONG_PTRとかにするんだ? 構造体ならわからんでもないが 関数の戻り値で混乱しそうだよ(TT; わざわざキャストしたりしてたのに結局同じじゃないか ただでさえ構造体多くて混乱しそうなのにぃ
根本的にわかってないみたいだな。
>>450 ULONGはunsigned longよりもタイプ数が少なくすむ。
ULONG_PTRは64bit移行準備用。
Win32のポインタは32bit、Win64のポインタは64ビット。
ULONG_PTRは64bit VCではポインタと同じサイズの64bit符号無し整数型のtypedefになるようになっている。
ポインタをunsigned longにキャストしていると後で対応が面倒になるからULONG_PTRを使おうということ。
>>450 >>452 文字数節約のためではない。
ULONGが誰によって誰のためにtypedefされているのかを考えれば自ずとわかる。
454 :
デフォルトの名無しさん :2005/10/25(火) 23:26:33
環境:WinXP SP2、VC++6.0 フォルダ内にある特定の拡張子のファイルを一括で編集するプログラムをMFCで作っています。 参照ボタンを追加して、SHBrowseForFolderでフォルダパスを取得してくるところまでは出来ました。 次に、実行ボタンでそのフォルダのなかのファイルを1つずつフルパスで取得して編集処理を行いたいのですが、 ファイル名の取得が上手くできません。 //------------------------------------- (目的のファイルの拡張子をExtとします。) CFileFind finder; CString szPath; BOOL bRet = FALSE; bRet = finder.FindFile("*.Ext", 0); ---(1) szPath = finder.GetFilePath(); ---(2) while (bRet){ : /** ファイル編集処理 **/ : bRet = finder.FindNextFile(); szPath = finder.GetFilePath(); } //------------------------------------- (1)の部分でSHBrowseForFolderで取得してきたフォルダ下の目的の拡張子のファイルを検索させて、(2)の部分でGetFilePathでファイルのフルパスをszPathに入れたい。 でも、finder.FindFileでファイルを見つけられないでいます(デバッガで見るとbRet = FALSEになる)。 FindFileの第1引数を『フォルダパス\\*.Ext』にすると、 GetFilePathで例外エラーになってしまいます。 SHBrowseForFolderで取得してきたフォルダ下で、 特定の拡張子のファイルをフルパスで取得する方法をご教授ください。
このスレでは初めて発言するんだが、
>>446 のおかげで悩みが一発で解消した。
自作のウィンドウクラスがコンパイル通らなくて悩んでたんだが、おかげで無事完了できた。
多謝!!
>>454 まず先に小言を言わせてくれ。
問題の切り分けくらい、やってから、質問してくれ。
この問題には、SHBrowseForFolderは一切関係ない。
で、本題だが。
いきなり答えを書いても学習しないだろうから、ヒントだけにしておく。
MSDNライブラリで、
・CFileFindクラスの概要と使い方の例
・GetFilePath
・FindNextFile
この3つのページを良く読めばすぐにわかる。5秒でわかる。
ていうか、マニュアルも読まずにコーディングするなよ・・・勘弁してね。
いや、CFileFindの仕様が一風変っているのもあるんだけど、
あれはあれで、他のものよりも良い仕様だとは思うんよ・・・。
VC++2003.Netなんですが、 プロジェクトの中にフォルダを作って小分けにしてますが、 一旦ソリューションを閉じて開きなおすと、ソリューションエクスプローラ内で 縮小表示にしてあったフォルダが勝手に展開されて、 非常に鬱陶しいです(ファイル数が多いので) これを抑止する方法はありませんか? ・・・と思ったら(一応)解決した・・・ 要するに、開いてるドキュメントを含むフォルダは勝手に開いちゃうんだな。 それもちょっと鬱陶しい動作だけど。
458 :
454 :2005/10/27(木) 01:34:59
>456 SHBrowseForFolderが別問題だってのは分かってたんですけどね。 自分の状況を出来るだけ詳しく説明しようとしたら書き方がおかしくなってしまいました。 で、今日456さんのレスを見る前にMSDNを見てたら1つ気づいたことがあって。 俺、CFileクラスのGetFilePathを見てたんですよ。 だからCFileFindクラスのGetFilePathを見てみたらFindNextFileを呼び出した後、って書いてあるじゃないっすか。 俺がアホでした。 というわけで、問題は無事に解決しました。 後はどう作り込んでいくかです。 あ、あとマニュアルについては。。。 うちの大学の研究室(電力系です)って結構いい加減なんですよね。。。 数年前の大掃除で捨てたかも、とかいわれる始末。。。 紙ベースのマニュアルがあるのかどうかも知らない状態なもんで。
マニュアル = MSDN だと思うけど・・・ 紙ベースのマニュアルなんて必要はないでしょ MSDNインストールしてねーのか?
学校の試験じゃないんだから、記憶力なんていらない。 資料を見ながらやっていいんだよ。 というか、 自分の記憶や予想に頼ったコーディングはしてはいけない。 トラブルがなくても、マニュアルで確認しつつコーディングするくらいでちょうど良い。
CTreeCtrlのアイテムそれぞれに対して CWnd::EnableWindow(...) 関数のような、使用許可・不許可の設定を行うことは可能ですか? 環境 * WindowsXP * Visual C++ 6.0
462 :
デフォルトの名無しさん :2005/10/27(木) 16:21:42
皆さんは、オブジェクト指向をどのような考え方を導入して 取り入れて設計していますか? クラス設計や関連などの設計の一端のお話など聞かせていただければと。。。
>>462 その話題は宗教論争の元になるから
専用のスレにいって聞いてくれると助かる
宗教論争ですか。。。 有用な設計技術なら積極的にアプローチするのもいいと思ったのですが、 宗教論争に恣意的に巻き込もうとする視野の狭い技術者が いまだに多いと言うことのあらわれなのでしょうかね。 他のスレあたってにます。失礼致します。
スレの選択間違えるアホにクラス設計できるかよ
そうやって煽るヤシはC++でさえも使えないのが多いってさ。
クラス設計をしたこともない人間が こんなスレでいきがってますよーwww
468 :
デフォルトの名無しさん :2005/10/27(木) 19:01:02
>>465 って、Visual C++使ってるってだけで、
クラス設計だのオブジェクト指向だのの使い手だと
思い込んでいるんだと思う。
ここはオブジェクト指向とかクラス設計とか抽象的な話をする場所じゃないから。 VC使って具体的に実装するレベルのスレ
オブジェクト指向なんて使えなくても実装してるクソグラマーは たくさんいるから気にすんな。
471 :
461 :2005/10/27(木) 21:18:27
再度よろしくお願いします
>>462 ちょっとC++自体からは外れてデザインパターンでも勉強してみたら?
473 :
デフォルトの名無しさん :2005/10/28(金) 11:43:08
オプションの設定ってどこに保存されてるんでしょうか? もしかしてレジストリ?
474 :
デフォルトの名無しさん :2005/10/28(金) 20:27:39
>473 レジストリっぽい 'Visiual Studio' フォルダを消して再インストールしても設定全然変わらんです .
475 :
デフォルトの名無しさん :2005/10/31(月) 13:13:57
ビルドすると、 LINK : fatal error LNK1201 プログラムデータベース C:\Docu... に書き込めません。 ディスク容量不足、パスが無効、また十分な特権がない可能性 があります、となります。 どうしたらよいのでしょうか?
476 :
デフォルトの名無しさん :2005/10/31(月) 19:04:01
.NET使ってVC++やってます。ふと思ったのですが、 新しいプロジェクトを作るとき、実は他にVBやらC#やら その中でもWEBコントロールやらasp何たらやら ActiveXコントロールなんたらやら、実にいろいろな種類があります。 こんなにいろいろあるのに、ほとんど使っていない自分。 なんかものすごくもったいない気がしています。 このまま一生使わないのかな。。。と。 それぞれ他のプロジェクトのことも知りたいのですし、 もしかしたら他のプロジェクトと組み合わせることで、 もっと効率的に早く仕事が出来たり、新しい技術を身に付けられたり と漠然と考えているのですが、実際にいろいろ使っている方たちは、 どのようなきっかけで使うようになったのでしょう。 また、その時の勉強方法など、どのように苦労されてものにされましたか? わかりにくい質問で申し訳ございません。
使う必要性が出て来たら使えばいいよ。 それがきっかけになる。それまでは自分が 出来るもので技術を磨いておけば良い。
ただ、あえて言うなら、MSDNのサンプルをビルドしまくって 動かしてみることだな。そうすると、こういうコントロールは AvctiveXを使っているのか、とか、そういうのが分かるようになる。 そこで何かひらめいたら自分のアプリで応用できないか 考える。
479 :
476 :2005/10/31(月) 22:45:55
そうですね。色々試してみることにします。 どうも。
>>479 ていうか、あなたニセモノですけどサンクスw
>>475 ディスクの容量に余裕があって、あんたが書き込みできるディレクトリでビルドすればいいと思うよ。
>>475 ビルド対象のexeが実行中の可能性もある。タスクマネージャでも見れ。
>>482 EXEが実行中なら、別のエラーが出ると思う。
>>475 プログラムデータベースというのは、拡張子pdbのファイルね。
デバッグのためのシンボル情報等々が格納されるファイルです。
エラーメッセージに書かれていることに対してチェックして、その結果くらい書こうよ。
・まずは、そのディレクトリにファイルを書きこむことができるかどうか確認する。その結果は?
・ディスク容量が十分にあることを確認する。その結果は?
・パスが有効であることを確認する。その結果は?
・十分な特権があることを確認する。その結果は?
それを確認してすべて、OKだった、ということを書かないと、誰も相手にしてくれないよ。
たぶんデバッグ中にVC++が落ちてファイルが使用中のままになって 上書きできないってだけなんじゃないかな?
485 :
デフォルトの名無しさん :2005/11/01(火) 20:14:06
VisualStudio.NET2003 を使っています。 32x32-256色と16x16-256色の2種類のイメージを持った ico ファイルを普通にリソースとして読み込んでビルドしています。 実行ファイルのアイコンおよび実行時のタスクバーのアイコンは先の ico ファイルのものになりますが、 ウインドウ左上部分および ALT+TAB した時に表示されるアイコンはウインドウズ標準(青いタイトルバーの白い四角)のものが表示されてしまいます。 全部のアイコンを、先の ico ファイルにするにはどうしたらいいですか?
486 :
デフォルトの名無しさん :2005/11/01(火) 20:19:42
if(loopTemp2>4)flagXp=1;else flagXp=0; if(loopTemp3>4)flagYp=2;else flagYp=0; if(loopTemp2<4)flagXm=4;else flagXm=0; if(loopTemp3<4)flagYm=8;else flagYm=0; if(loopTemp2>loopTemp3)flagBYeX=16;else flagBYeX=0; if(loopTemp2>-loopTemp3)flagAYemX=32;else flagAYemX=0; if(loopTemp2<loopTemp3)flagAYeX=64;else flagAYeX=0; if(loopTemp2>-loopTemp3)flagBYemX=128;else flagBYemX=0; if(loopTemp2==loopTemp3)flagYeX=1000;else flagYeX=0; if(loopTemp2==-loopTemp3)flagYemX=2000;else flagYemX=0; if(loopTemp2==4)flagXZero=4000;else flagXZero=0; if(loopTemp3==4)flagYZero=8000;else flagYZero=0; flagStat=flagXp+flagXm+flagYp+flagYm+flagAYeX+flagBYeX+flagAYemX+flagBYemX+flagYeX+flagYemX+flagXZero+flagYZero; switch(flagStat){ case '19': でcase19にはいらないのはなぜですか
487 :
デフォルトの名無しさん :2005/11/01(火) 21:26:54
488 :
デフォルトの名無しさん :2005/11/01(火) 21:36:31
486 事故解決しました
>>485 その.icoファイルのリソースをLoadIcon()して、SetIcon()すればよろしかろ。
そうそう、MFCのテンプレートでは、コンストラクタで
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
OnInitDialog()で
SetIcon(m_hIcon, TRUE);// 大きいアイコンを設定
SetIcon(m_hIcon, FALSE);// 小さいアイコンを設定
としているけど、最後の行は設定しちゃうと大きいアイコンで小さいアイコンを上書きしちゃうので、
小さいアイコンも持っているなら実行しないこと。
490 :
デフォルトの名無しさん :2005/11/02(水) 10:25:02
デバッグを開始できません (中略) アクセスが拒否されました って出るのですがどうしたら解決できますか? ちなみに「デバッグなしで開始」とすれば一応プログラムは正常に走ります。
>>490 デバッグする権限がないのだと思う。
貴方はローカルのAdministratorsグループに入っていますか?
>>490-491 AdmistratorsでなくともDebugger Usersに入れば十分。
494 :
デフォルトの名無しさん :2005/11/03(木) 04:43:11
誘導されてきました。 エディタ等が入ってないPCで Visual C++で作られた dllファイルに一行追加したいんだけど、 サクラを入れてみたけど、文字化けで指定のところが編集できませんでした。 なにで編集すれば文字化け解消できますか?
495 :
デフォルトの名無しさん :2005/11/03(木) 07:36:32
むり。できるが時間がかかる。
>>494 バイナリエディタ
そもそもなんでここに誘導されたかわからない。
497 :
Y-D :2005/11/03(木) 09:32:05
関数内で static int a; と宣言し、 デバッグウィンドウのウォッチで デバッグ中に a を参照しようとしても シンボル "a" が見つかりません と表示されます。 どなたか a を参照する方法を教えてください。 VCは6.0です。
int b=a;で可?
499 :
Y-D :2005/11/03(木) 18:48:54
>498 可です。 あと、static でも関数の外で宣言した時は 可です。
>>499 アセンブリ出力を見て、そのstatic変数につけられた名前を使うとか。
つーか、配置されたアドレスを得てそこを見ればいい気も。
501 :
494 :2005/11/04(金) 02:43:35
>>494 さんありがとうございます。
バイナリエディタでできそうですが、
2ビットの頭の私には
16進数は無理っぽいです。今日早めに出勤したので
会社のPCで片付けました。
今後のためにVisual C++は1台のライセンスでノートに入れたらだめですか?
502 :
494 :2005/11/04(金) 02:45:00
503 :
デフォルトの名無しさん :2005/11/04(金) 02:48:26
STLのvectorについてなんですが。 vector<int> v; vector<int>::iterator the_iterator; v.push_back(1); the_iterator = v.begin()+1; v.push_back(2); としたときthe_iteratorは最初の要素1をさしてるんでしょうか?
v.begin()+1; じゃなくて v.begin(); でした。 やってみたらイテレータを代入したあとで要素の追加をしたらイテレータの指す場所が変わってしまうんですが、要素を追加してもイテレータを保存しておく方法ないですか?
>>501 > 今後のためにVisual C++は1台のライセンスでノートに入れたらだめですか?
1台用のライセンスなら、2台に入れたらダメだろう。
ライセンスの内容をチェックしてみ。1台用ではなく1人用かもしれないから。
508 :
507 :2005/11/04(金) 12:06:10
というだけじゃ冷たいか。 そういう場合には、イテレータではなく、atやoperator[]を使えばいい。 というか、イテレータが何者か、勉強してから使わないと、痛い目にあうよ。
>>504 vectorへの要素の追加で、それまでに内部的に確保していたメモリでは足りなくなったら
新たに必要分を確保しないといけない。たいてい、これは「新領域確保→コピー→
旧領域解放」となる。
vectorでないコンテナの場合は、要素の追加でソートが発生するかもしれない。
以上から、要素の追加・削除があった場合は、期待したとおり動作するとは限らない。
従って、イテレータを保存しておいても意味のある結果は得られない。
ただし、vectorの実装が「要求された要素数の倍だけ、新たに確保する」場合、
つまり例えばvector<int> v(100);のときなら内部的に200まで確保される場合、
the_iteratorは100〜199個までの要素の追加では変化しないかもしれない。
コンパイラのバージョン変更で動作しなくなる危険はあるけど。
構造体で ●●-> って打つとメンバの候補でてきますよね。 あれが更新されなくなってしまって(古いの がでる)。 どうしたらなおりますかね?
Intellisenseはマクロ使うと機能しなくなる場合あり。 プロジェクトフォルダ内の●●.ncbを一旦削除すると直る可能性もある。
治りました! ありがとうございます!!!!!!
STLはよそでやれ
>>505 イテレータを無効にしたくないならstd::listでも使えば?
ここも超初心者スレなんだけどなー。
517 :
デフォルトの名無しさん :2005/11/04(金) 17:13:11
コンパイラはライブラリ(作成したやつ)を開けません(fatal error),と蹴られました。 エラーメッセージをダブルクリックしてもプログラムのある行に飛ばないのですが ライブラリはどのように指定したらいいのでしょうか?
簡単にみつかるはずだけど
519 :
デフォルトの名無しさん :2005/11/04(金) 17:48:59
Visual Studio 6.0で、ファイルをコンパイルすると fatal error インクルードファイルがオープンできません。 'ntddndis.h' : No such file or directory というエラーが でてきます。このファイル自体は存在しており、コンパイルを したソースのフォルダにntddndis.hを入れても、エラーが消えません。 何が原因なのでしょうか?
プロジェクトに追加してないとか
521 :
デフォルトの名無しさん :2005/11/04(金) 18:29:01
プロジェクトには追加されていました。 Visula Studio 2003 の時は、このようなエラーはでなかった です。
VC++7.1(2003.net)を使っています。 Cの時に使っていた #define printd(...) { printf(__VA_ARGS__); } という感じの printf の置き換えマクロがあるんですが、 ... の部分が予期せぬ文字列が・・というエラーが、 __VA_ARGS__に至っては定義されていない識別子、というエラーが出て コンパイルが通りません。 VC++では可変長引数のマクロは使えないのでしょうか?
522の、Cの時、は別なコンパイラっていう方が正しいですね。 ぐぐってみたりしたんですが、VC++では使えないマクロのようですね・・ なんかちょっとガッカリ。 解決してませんが、自己解決ってことで。 お邪魔しました。
それはCの標準のマクロなのか? Cスレにでも行って確認してこい
C99から定義されてるらしいです。> __VA_ARGS__ CWでは使えたんですがどうも使えないVC++が少数派っぽいです。 VC++用に書式が変わっちゃうのも癪なんですが、これはしょうが無いのかなぁ・・ まぁIDEのアウトプットにはprintfで出せないので書き直さないといけないですけど。
VC++はC99を部分的にしかサポートしていない。
C++のサポートと被ってる部分があるだけでC99なんてまったく眼中にないだろ
ほかにもlong longと(<stdint.h>はないけれど)intptr_t/uintptr_tはあるし、 構造体の最後のメンバが配列のときその要素数を省略できる機能も独自拡張として使える。
今、マルチスレッドのネットワークアプリを作ろうと思っています。 vc使ってデバッグをしているのですが、よくOSごとフリーズしてしまって リセット→再起動の繰り返しで困っています。 具具って見た結果、コントロールパネルから言語設定をいじってみると 直る可能性があるということを知りましたので、その設定どおりに 設定してみましたが、なんら変わりません。 なにかほかに原因があるのでしょうか?
OS再インスコはしたか
>>529 リソースを食いつぶしているんじゃないか?
急にC++ヘッダをインクルードするとコンパイル出来なくなりました。 エラーの内容は C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\xmemory(137): error C3861: '_Allocate': 識別子は、引数依存の照合を使用しても見つかりません。 と出ます。 xmemoryの137行目は pointer allocate(size_type _Count) {// allocate array of _Count elements return (_Allocate(_Count, (pointer)0)); } となっています。
リソースリークしていないかチェックしる
なにげに2005って英語版は完成してたんだね。 買った人いる?
http クライアントを作りたいのですが、 DelphiにおけるIndyコンポーネントのようなライブラリはあるでしょうか?
なんすかそれ?
537 :
デフォルトの名無しさん :2005/11/06(日) 21:02:05
ポインタ変数にint型変数の値をメモリアドレスとして代入させることは出来ないのでしょうか?
日本人ですか?
>>537 ソースコードにそういう記述をすることは出来るが、それが正しく動くかどうかは別問題。
おそらく動かない。動いたら偶然であり、他の用で使っているところということになる。
(ただしWPARAM/LPARAMなどポインタを整数型にキャストしたものをポインタ型へ戻すキャストなら問題ない)
540 :
デフォルトの名無しさん :2005/11/07(月) 00:29:17
double型で256*256などの大きい配列を取るとプログラムが落ちてしまうのですが改善する方法は無いのでしょうか?
541 :
540 :2005/11/07(月) 00:30:57
すみません、書き忘れましたが動的にではなくて静的に取る場合に落ちます double aaa[256][256];
>>540 スタックサイズには限りがある。
増やしたいならリンクオプションでスタックサイズを指定してやる。
もしくは素直に動的確保 or STLを使う。
543 :
540 :2005/11/07(月) 00:51:17
>>542 スタックサイズの指定でできました
ありがとうございました
544 :
デフォルトの名無しさん :2005/11/07(月) 23:28:58
文字列を扱うのにいろいろなデータ型がありますよね。 char*でいいのかと思いきやTCHAR*とか_TCHAR*とか、 LPCTSTR(定数文字列?)にLPTSTRとかなんかいっぱい。 いろいろドキュメント読んでると、UNICODEとかMBCSとか互換性とか あちこちちりばめられて解説されてはいるのですけど、 どういう方針でやるのが一番いいのかチンプンカンプンになってしまいました。 書籍などを探しても、この辺の話に触れている本って いまだかつて見たことが無いです。 あっても、2,3行の説明でちっとも詳しくはありません。 一貫してこう扱えばいいよ、というような指針を示している 本とかサイトってどこかに無いでしょうか。 それとも皆さんはそれほど気にしてないのでしょうか。
>>544 さて、WinAPIでは2種類の文字列を扱う。1つはMBCS(日本語WinではShift JIS)ともう1つはUnicodeだ。
引数や戻り値に文字列が使われる関数では通常MBCS/Unicodeの2種類が提供されている。
ところがWin 9xでは原則MBCS版しか使えないのだ。しかし世の中は確実にUnicodeの方へ動いている。
そこで、MSは考えた。1つのソースコードでMBCS版とUnicode版の両方のEXE(やDLL)を作れるようにしてしまえばいい。
というわけでコンパイル時に#define UNICODEがあるかどうかで、charとwchar_tのどちらかになるデータ型TCHARが作られた。
(実際には#defineよりもコンパイラオプションで指定するだろうが)
LPCTSTRはconst TCHAR *のtypedefで、LPTSTRはTCHAR *のtypedefだ。
ちなみにtypedefといえば上のTCHARをcharやwchar_tに置き換えたものとしてLPCSTR/LPSTR, LPCWSTR/LPWSTRもある。
さらにそれらのLなし版(PCTSTRやPSTRなどと言った具合)もある。Win16ではLの有り無しで違いがあったが今は同じ。
このように<Windows.h>の中ではいろいろとtypedefがなされている。
さらにMSはCライブラリ関数にもこのTCHARの仕組みを導入してきた。
CライブラリがWindows.hに依存するのも格好悪いので独自に<tchar.h>を作って対応することにした。
その中で_TCHARがtypedefされている。
546 :
デフォルトの名無しさん :2005/11/08(火) 08:50:36
入力時にCapsがかかった状態にしたいんですが C++内で制御するにはどうすればいいでしょう?
>>546 SetWindowsHookEx(WH_KEYBOARD, ・・
を使うとか
WinXP用のアプリケーションを作ろうと思うのですが、 PlatformSDKはXP SP2ってのをインストールすればよいのでしょうか。 それとも、もっと新しい2003ってのでしょうか。
>>548 Platform SDKは必要になってから入れればいい。
Win XP専用のアプリケーションを作るからといって最新のものを入れる必要はない。
教えて下さい。
VC++2003でWinPcap(
ttp://www.winpcap.org/ )というライブラリを使いたいのですが、次のメッセージが表示されてリンクできません。この問題の解消方法を教えて下さい。
apollo1 error LNK2019: 未解決の外部シンボル _pcap_open_offline が関数 "public: void __thiscall Capollo1Dlg::OnBnClickedButtonStart(void)" (?OnBnClickedButtonStart@Capollo1Dlg@@QAEXXZ) で参照されました。
これまでにやったこと
●プロジェクトメニューのapollo1のプロパティのC/C++の全般の追加のインクルードディレクトリの右端のボタンを押すと、マクロ一覧が見られるダイアログが表示されるので、ここでマクロを使って指定。「$(VCInstallDir)WinPcap\WpdPack\Include」と指定した。
●同様にして、リンカの全般の追加のライブラリディレクトリも指定した。
●C/C++のプリプロセッサのプロセッサの定義に「WPCAP」を追加。
●ツールメニューのオプションのプロジェクトのVC++ディレクトリの「インクルードファイル」と「ライブラリファイル」のパスにも追加した。
●dumpbin /all wpcap.libで確認したところ、wpcap.libには_pcap_open_offlineは存在している。
●wpcap.libをF:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\libにコピー。
上記の方法を全てとっても、ダメでした。
お願いします。
551 :
550 :2005/11/09(水) 14:55:01
自己解決しました。 VS2003の「プロジェクト」メニューの「apollo1のプロパティ」を選択し、「リンカ」の「入力」の「追加の依存ファイル」に「wpcap.lib」を追加したところ、リンクに成功しました。リンクするライブラリを明示的に指定する必要があるのですね。お騒がせしました。
VCとC++の差ってなに?
>>552 IDE(除くToolkit類)やMFC/ATLなどのライブラリ。
VCはソフトの名前 C++はプログラミング言語のひとつ
555 :
デフォルトの名無しさん :2005/11/10(木) 20:04:24
Visual Studio 2003でCの勉強をしています。 新規作成 > VisualC++の空のプロジェクト > 新しい項目の追加 で.cファイルを作りました。 ソースを書いてCtrl + F5でうまくコンパイル、実行できました。 また新しいソースを作ろうと思って、新しい項目の追加で同じように Cソースを書いてCtrl + F5をしても 「C勉強 error LNK2005: _main は既に test.obj で定義されています。」 「C勉強 fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。」 とエラーになってしまいます。 新しいCファイルをまた書いてコンパイル、実行するにはどうすればいいのでしょうか 教えてください。
>>555 もう一個ソリューションを作る。
または前のソースファイルを削除する。
557 :
555 :2005/11/10(木) 20:22:32
そうなんですか。ソースファイルっていうフォルダに 追加すればいいのかと思ってました。 前のソースファイルは別にフォルダに全部保存することにします。 ありがとうございました。
VC++でWINDOWSプログラミングを練習してるのですが BMP表示で詰まっています。 WM_PAINTでBeginPaint()を使って画像を表示するのはできたのですが、WM_CHAR を受け取ったときにも何か表示するようにしようと、そこにもBeginPaint()を使って画像 を描写する処理を入れたところ表示してくれません。 なのでGetDCを使って表示したのですがこんどはGetDCで描写した部分が隠れ てまた現れたときに再描写してくれません。 GetDCを使って表示した部分をWM_PAINTで再描写するために何か処理がいる のでしょうか?それともそもそも根本的に考え方が間違ってるのでしょうか?
BMP表示する関数のソースです。 void ShowBMP(HWND hWnd, HDC hdc, int mode) { HDC hmdc; HBITMAP hBitmap; BITMAP bmp; HINSTANCE hInst; int BMP_W, BMP_H; hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); if(mode == 1){ hBitmap = LoadBitmap(hInst, "BMP_HAIKEI01"); }else if(mode == 2){ hBitmap = LoadBitmap(hInst, "BMP_HAIKEI02"); } GetObject(hBitmap, sizeof(BITMAP), &bmp); BMP_W = (int)bmp.bmWidth; BMP_H = (int)bmp.bmHeight; hmdc = CreateCompatibleDC(hdc); SelectObject(hmdc, hBitmap); if(mode == 1){ BitBlt(hdc, 0, 0, BMP_W, BMP_H, hmdc, 0, 0, SRCCOPY); }else if(mode == 2){ BitBlt(hdc, 120, 0, BMP_W, BMP_H, hmdc, 0, 0, SRCCOPY); } DeleteDC(hmdc); DeleteObject(hBitmap); return; }
560 :
558 :2005/11/13(日) 16:13:18
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); ShowBMP(hWnd, hdc,1); EndPaint(hWnd, &ps); break; case WM_CHAR: hdc = BeginPaint(hWnd, &ps); ShowBMP(hWnd, hdc,2); EndPaint(hWnd, &ps); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); }
561 :
デフォルトの名無しさん :2005/11/13(日) 16:15:16
↑がコールバックの部分です。 case WM_CHAR: hdc = BeginPaint(hWnd, &ps); ShowBMP(hWnd, hdc,2); EndPaint(hWnd, &ps); を case WM_CHAR: hdc = GetDC( hWnd ); ShowBMP(hWnd, hdc,2); ReleaseDC(hWnd, hdc); break; にするとキーを押したときに描写はしてくれるのですが、隠れてまた現れた ときに再描写してくれません。 どなかたご教授お願いします。
WM_CHARで書いたらWM_CHARが発生した時しか表示されない。 だから自動的には再描写されない。 再描写はWM_PAINTでやるのが普通 BeginPaintは基本的にWM_PAINTでしか使わない
563 :
デフォルトの名無しさん :2005/11/13(日) 17:48:49
なるほどー。 じゃあ画面の状態を入れとく構造体か何かを用意してキーが押されたらWV_CHARでその中身を変更、WV_PAINTでその構造体をもとに描写、ってやるのがいいのかな。 だとすると任意のタイミングでWV_PAINTを呼び出す必要がありそうですね。 色々調べてみます、ありがとうございました。
564 :
デフォルトの名無しさん :2005/11/13(日) 18:21:33
VC++6.0で質問なんですが、テキストボックス内の文字列のサイズを ピクセルで取得するにはどうしたらいいのでしょうか? そのテキストボックス内のフォント、フォントサイズは切り替わる可能性があるので フォントの状態とかもみてサイズを出してくれるような関数ってあるんでしょうか? GetTextExtent()とか使ってみたのですが上手くいきませんでした。 どなたかご回答お願いいたします。
>>564 GetTextExtentPoint32
566 :
564 :2005/11/13(日) 18:53:35
>>565 さん
素早い回答ありがとうございます。
今は試せる環境がないので明日試してみようと思います。
ありがとうございました。
そのためのInvalidateRectです
568 :
558 :2005/11/13(日) 23:26:57
>>567 なるほどー、その関数で無理やり無効領域を発生させて
WM_PAINTを呼び出すっていうやり方が一般的みたいですね。
覚えることいっぱい、呪文いっぱいで大変だぁ・・・
>>568 無理やりって表現がアレだけどね。
無理やりじゃないし。
強制的というべきかな。
お前らって相手が素人だと見るとつまらない揚げ足取り始めるよな
「無理やり」「ガリガリと」「フルスクラッチで」 こういう何も考えてない発言は死滅すべきである
やれよ。勝手に。
ガ〜リガ〜リ君ガ〜リガ〜リ君ガ〜リガ〜リ君
Visual C++ 2005 expressを使っていて、 defファイルからdllを読み込むためのlibファイルを生成しようとしているのですが、 DOSプロンプトで (略)\Microsoft Visual Studio 8\VC\bin\lib.exe /def:libchasen.def /out:libchasen.lib とやってもファイルを生成するどころか、エラーログも吐いてくれません。 パスを通してから「lib /def:(略」とやっても同じです。 色々サイトを回ってみても、上記のようにすればOKとしか書いてなくて… どうすれば良いのでしょうか。
>>575 コンピュータの中を検索してみな。
意外と思わぬところに出力されていないかな?
>>576 ありがとうございます。
早速VCをインストールしたドライブと、
defファイルの置いてある(Chasenをインストールした)ドライブをそれぞれ
検索してみましたが、残念ながら見つかりませんでした。
友人にも一応同じVC++ Express使いがいるので、
明日そっちの方でも試してもらおうと思います。
vc\bin\vcvars32.bat実行してから"lib.exe /def....."ってやってみたら? expressにあるかどうか知らないが
>>578 朝起きて試してみたら出来ました!
3日詰まってたんですが、やっとchasenライブラリが利用できるようになりました。
本当にありがとうございました。
ド低脳で誠に申し訳ない。 Visual C++ 2005 express Beta2を今日ダウンロードして WIN2000SP4にインスコしたんだけど、ビルドがこける。 最初はCLSがどうたらってでたんで、それを切るようにプロジェクト プロパティから設定したら、今度は「systemとは何ですか?」 みたいなエラーをほぼ全文に対して連発してビルド不可能。 ちなみにビルドしているのは、ウィンドウアプリの新規作成したてや コンソールアプリ新規作成したて。 これでエラーってことは、インスコ失敗でしょうか?
581 :
デフォルトの名無しさん :2005/11/20(日) 01:03:57
いろいろなカスタムGUIを作りたいのですが、 参考になる書籍がありましたら教えてください。 よろしくお願いいたします。
本当に超初心者なのですが・・・ 「フォームを閉じるボタン」を設置してフォームをとじようとしてるのですが。 1.イベントハンドラが右クリックから選択できない。 2.ボタンクリックして、開いた場所に「Form1.Close();」「Form->Close();」とやってもエラー ということで困ってます。 使用言語はC++.NETスタンダードです。 本を見てもさっぱりなんで、よろしくおねがいします。
質問です。 ウインドウでゲームを作っています。BitBltで背景マップ を出してその上にキャラクターを表示したいのですが、 MFCやDirectXを使わずに透明色の処理を行うことは できますか?それともAPIだけでは難しいのでしょうか。 よろしくお願いいたします。
ANDで抜いてからORで転送だな。ナツカスィ
VC5ってあーた・・・
VC+5かよ……
どこで売ってたの?
ネタに反応するの(・A ・)イクナイ!
590 :
585 :2005/11/21(月) 01:24:56
ネタじゃなくて本当に買ってしまいました。 久しぶりの秋葉原で、ちょっと財布の中身が充実してて、 路上でふと脇を見たら「Visual C++ Professional Edition」と書かれたパッケージがあったもので。 バージョンが5.0だというのはインストールするときに気が付きました。 せめてパッチぐらい当てたいんです。 手に入れる方法はないでしょうか?
592 :
585 :2005/11/21(月) 02:51:48
>>591 助かりました。
これで衝動買いの元は取れそうです。
ありがとうございます。
。oO(ここでVisual C++ 2005がただで手に入ると言っておくべきだろうか)
>>583 >ウインドウでゲームを作っています。
寒くなってきたからガラス窓でやってるのかと思った。
595 :
585 :2005/11/22(火) 00:04:57
>>593 (-д- )
早速落としてみます。
Beta2でも5.0に比べれば良いものなんだろうなぁ・・・
596 :
デフォルトの名無しさん :2005/11/25(金) 19:51:24
C/C++の Win32 なコンソールアプリを作ってます。 他のシステムに持って行くことが多いので、 ソースファイルは UTF-8 にしています。 できあがったコンソールアプリを実行しても、 コードページ 932 なコンソールの中で動くので 文字がぐちゃぐちゃになってしまいます。 コンソールアプリの起動時のコードページを 指定するって事は可能なんでしょうか?
WriteConsoleW使うとか。 (NT・UTF16限定)
599 :
デフォルトの名無しさん :2005/11/25(金) 21:11:57
gcc/g++ は2バイト目が 0x5c ('\') になるような
Shift JIS文字がソースコード中に含まれていると
だめなので、UTF-8 にしてたんですが、そもそも
gcc/g++ とソースファイルを共用にしなきゃならない時点で
多バイト文字をソースコード中に含ませるのは
あきらめなきゃならなかったんですね・・
GNU gettext を使うことになるわけですが、
Windows で gettext がまともに使えるのかどうか・・・
GetText for Windows
http://gnuwin32.sourceforge.net/packages/gettext.htm
EUCで書けばいいじゃん
>>600 それだと Windows のコンソールで化ける・・・
というわけで、面倒だから英語にしました、メッセージ。
ではUTF-16は?と無責任に言ってみる。
寧ろ2バイト文字をリテラルで使うなと。
iconvでもつかってリテラルを変換する プリプロセッサを仕掛ければいいじゃん。
今日、初心者本を買ってきたばかりなのです。 MSのVisual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使うのページを見て インストールしようと思っています。 Visual C++ 2005 Express Edition の方はできたのですが、Platform SDKのインストールのやり方がわかりません。 とりあえずcabとexeのファイルは全部落としたのですが、その先がどうしていいやら。 パスを通したいのですがインストールができないのでどうしようもありません。 どうかよろしくお願いします。
CDイメージの方を落としてみたら?
>>606 ありがとうございます。そうしたらインストールできました。
インストールはできたのですが、パスの通し方がわかりません。
初心者にこのマニュアルは敷居が高すぎです。
[オプション] ダイアログ ボックスの [プロジェクトとソリューション] セクションで [Visual C++ フォルダ] のところを
クリックするとプラットフォームがwin32、ディレクトリを表示するプログラムが実行可能ファイルと出てます。
ここでokをクリックすると何も反応がありません。
実行可能ファイルがExecutable ファイルだと思うのですが。
以下のように設定するにはどうすればいいのでしょうか?
Executable ファイル - 「C:\Program Files\Microsoft SDK\Bin」
Include ファイル - 「C:\Program Files\Microsoft SDK\include」
Library ファイル - 「C:\Program Files\Microsoft SDK\lib」
>>607 ですが、
"%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" の"vccomponents.dat" を
消すことでいいみたいでした。
さらに
“%ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\"の
"AppSettings.htm "の441 - 444 行をコメントアウトするみたいですが、"\1033"フォルダがありません。
あるのは"\1041"フォルダだけです。
どうすればいいでしょう?
今日はギブ。
ググると、詳しく解説してるサイト見つかる。
610 :
デフォルトの名無しさん :2005/11/26(土) 11:00:57
アフォ質問で申し訳ありませんが、 int a = 1; bool b; b = (bool)a; とした場合、 'int' : ブール値を 'true' または 'false' に強制的に設定します (警告の処理) という警告が出てしまいます orz (bool)という型キャストは効かないんでしょうか。 どなたか助けてください m(__)m
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|
>>1 .おお、
| 凄ぇぇぇぇ
\__ ______
∨
∧晒∧
(・∀・ )
−−−8<−−−8<−−−
IPアドレス 61.21.153.232
ホスト名 61-21-153-232.rev.home.ne.jp
612 :
デフォルトの名無しさん :2005/11/26(土) 11:06:12
613 :
610 :2005/11/26(土) 11:17:19
int a = 1; bool b; b = static_cast<bool>(a); も駄目なんですけど・・なんで〜 (T_T)
>>610 b = a ? true : false;
615 :
610 :2005/11/26(土) 11:33:26
>>614 おおおお、通りました!!
ググりまくっても出ないから、どうしようかと思ってました。
神よ、ホント感謝です (ノω`)・゚・。。
>>615 そりゃぁあんた、>614を「キャストする」積もりで書く香具師はいないから検索に引っ掛からないんだろ。
キャストで誤魔化すのではなく、本来の意味を考えれば>614に思い至らないのがおかしいのだが。
617 :
610 :2005/11/26(土) 11:52:08
アフォですまそ m(__)m
618 :
デフォルトの名無しさん :2005/11/26(土) 13:07:09
gprof みたいなプロファイラって、 Visual C++ の世界 では何が相当するんでしょうか。各関数の呼び出し回数と そこでの消費時間などを調べたいのですが。
プロファイラ
620 :
デフォルトの名無しさん :2005/11/26(土) 13:50:31
ふつーVTune、だと思っていたが
AMDのCPUなら利用できる無料プロファイラ「CodeAnalyst」
623 :
デフォルトの名無しさん :2005/11/26(土) 21:39:13
こんばんは、よろしくお願いします。 ダブル型の数字を誤差のないように小数以下切捨てで計算したいのですが、 char *a = "0.145"; double d = atof(a); int m = int(d * 5000); とかすると、誤差の出る計算式があります。 ので、いろいろ調べて、ceilを使うと、今度は、すべて、切り上げになってしまうようです 誤差の出ないような切捨てのデータ型はないのでしょうか。
fllllllllooooooooooooorrrrrrrrrrrrrrr
int m = int(d * 5000 + 0.1);
データの型を聞いてるんじゃないのか?
627 :
デフォルトの名無しさん :2005/11/26(土) 22:02:55
>>624 さんありがとうございます。
でも、
char fsf[20];
wsprintf(fsf,"%d",(int)floor(2.3*7000));
MessageBox(hwnd,fsf,"",0);
これでは、16099になるので、誤差が解消されないようなのですが。
628 :
デフォルトの名無しさん :2005/11/26(土) 22:05:25
>>625 さんありがとうございます。
すべての計算でそうなりたいのです。
>>626 さんありがとうございます。
vbaでのdecimal のような型がないのかなとおもいまして。
つ[long long]
四捨五入するための特別な関数はありません。浮動小数点の変数xに対して小数点以下を四捨五入する最も簡単な方法は、 (int) (x + 0.5) を実行することです。ただし、この方法は負の数に対して期待した結果を得ることができないかもしれません。
633 :
デフォルトの名無しさん :2005/11/26(土) 22:15:46
long long を printf で表示するには、どうすればいいのでしょうか? long long int lli1 = 100L; long long int lli2 = 200L; long long int lli3 = 300L; printf("%lld %lld %lld\n", lli1, lli2, lli3); これではだめなのでしょうか? Visual Studio .NET 2003 で試してみると正しく表示されません。 ためしに std::cout << lli1 << ' ' << lli2 << ' ' << lli3 << std::endl; とすると正しく表示されます。
634 :
デフォルトの名無しさん :2005/11/26(土) 22:20:22
みなさんに質問です! プログラムって、独学でもいけますか? 自分文系なんですが。
別にいけないことはない。 その手の質問はネット上にあふれてるから、調べてみると良い。
printf("%lld %lld %lld\n", lli1, lli2, lli3); ここのパラメータが32bitだからじゃないかな?
637 :
デフォルトの名無しさん :2005/11/26(土) 22:27:53
プログラム unsigned long long l0 = 0; unsigned long long l1 = 1; unsigned long long l2 = 2; printf("%llu, %llu, %llu\n", l0, l1, l2); std::cout << l0 << ", " << l1 << ", " << l2 << std::endl; 結果 0, 0, 1 0, 1, 2
638 :
デフォルトの名無しさん :2005/11/26(土) 22:30:24
sizeof(unsigned long long) == 8 のようです。
%I64d ↑大文字の [ I ]
640 :
デフォルトの名無しさん :2005/11/26(土) 22:38:24
>>639 ありがとうございました。
ll (えるえる) が ANSI 標準だと思っていました。
VC++ も ANSI 標準は使えるだろうとタカをくくってました。
#define lld I64d
642 :
デフォルトの名無しさん :2005/11/26(土) 22:41:23
>>641 文字列リテラルのなかなんで、
いくら何でもプリプロセッサでは無理かと。
M$のやることだから大目にみてやれ。
644 :
デフォルトの名無しさん :2005/11/27(日) 11:26:38
>>628 です
>>629 さんありがとうございます。
どうしてか私のパソコンでは、long long で宣言してもint になってしまうようで・・・
long long = 2.3;でも中身は、2になってるのです。
>>630 さんありがとうございます。
関数はないのですね、
>>631-632 さんありがとうございます。
小数点以下第三位ぐらいまで出いいのです。
いろいろ調べていただいたこと本当にありがとうございます。
ので自分で関数を作って対処いたしました。
みなさま教えていただきましたこと、ほんとうにありがとうございます。
if(tanka=="") return 0;
int tekcha =0;
int icount = 0,hani = 0;
bool flag = false;
char *damy;
damy = (char *)malloc(strlen(tanka)+1);
for(int i = 0;i<strlen(tanka);i++){
if(tanka[i]=='.') {
flag = true;continue;
}
if(flag) hani++;
damy[icount++]=tanka[i];
}
damy[icount]='\0';
tekcha = atoi(damy);
free(damy);
return (int)(tekcha*suuryou)/pow(10,(hani));
>>644 そりゃそうだ。long longは整数型だから2になって当然だ。
646 :
デフォルトの名無しさん :2005/11/27(日) 15:54:13
もしかして、 long double にしたいんじゃね?
小数点以下第三位までで良いのに long double 使うのか?
結局、初心者は素直に自分が何をやりたいのか書けって事だな。
649 :
デフォルトの名無しさん :2005/11/28(月) 10:04:22
オブジェクトブラウザで表示されるクラスの中で、 当該プロジェクトでは一度も使われていないクラスを 探す事はできるでしょうか? 「使われていない」とは「インスタンスが生成されていない」 という意味です。
これはと思うクラスをコメントアウトしてビルド。
どこで聞けば良いか分からないので、ここで聞かせてください。 VisualStudio.net 2003のC++でWebサービスを開発する場合、 「ASP.net Web サービス」と「ATL Server Web サービス」の2種類が ありますが、パフォーマンスとかが違うものなのでしょうか? それとも単純にmanagedなコードならASPの方、そうでなければATL、 というようなものなのでしょうか? VC++6.0、ATL上で書かれたCOMのサーバをWEBサービス化することを 考えており、ATL Serverの方なら簡単に移植できるのかと思いきや、 見掛けも違うし、訳が分からない状態で困っています。
sage
質問です。 土曜からウインドウズプログラミングを猫でもわかる〜さんのとこで勉強してるのですが、イントロダクションからつまづきました。サンプルをビルドしたところ、 myProg.hbrBackground =GetStockObject(WHITE_BRUSH); が'HGDIOBJ'から'HBRUSH'に変換できません。'void*'から非'void'型への変換には明示的なキャストが必要ですってエラーがでます。 猫でも〜さんには解決方法が無くて普通に進んでしまい三日目にしてわからないのでお聞きしました。 VC++2005 Express Beta2を使っております。 よろしくお願いします。
654 :
ハクション大魔王 :2005/11/28(月) 17:41:57
>653 本買えば?
>>653 エラーだけ見て脊髄反射ですが、キャストだけが問題なら
myProg.hbrBackground =(HBRUSH)(GetStockObject(WHITE_BRUSH));
ってキャストすれば良いのでは?お行儀良くないですが。
エラーメッセージを読めばどこをどう直せばよいかすぐにわかると思います。
C/C++をやり直してきます。
SDI形式で作ったアプリが、起動ごとに表示位置がずれていき ます。毎回中央に表示する方法はありますか?
アプリ終了時にウィンドウ位置をレジストリかファイルに保存、起動時にそれを読んでウィンドウ作成後MoveWindow()
ちなみに毎回表示位置がずれるのはWindowsの仕様。
hInstanceに0を入れてウィンドウ作れ
>>662 9xでも平気か教えてほしい。
NT系では無視されるとあるから安心してNULLにできるが。
ちょっと話変わるけど hPrevInstance 真面目に処理してる香具師いる?
>>664 無視。引数名も与えていない。
それにどうせWin16向けにはコンパイルできないと決めてかかっている。
一応超初心者向け
くだらない質問を受けるスレである以上
>>653 見たいなのはさくっと
>>655 見たいに答えるだけでよくね?
そうしないと他のスレとの違いがなくなって単なる重複になっちゃうよ。
それが嫌ならレスしなきゃいいし
ってこれが出来ないやつが多いからグダグダになるんだけど。
>>666 中途半端に希望を持たせるのはかわいそう
ダメなやつはダメとはっきり教えてあげないと
VC6です。 wprintf(L"ABCあいう\n"); で日本語以降が表示できないのですが、 なにか設定とかあるのでしょうか?
ABCはでるんだ じゃ日本語つかえない環境だね
670 :
デフォルトの名無しさん :2005/11/30(水) 12:39:50
100ms待つ、っていう動作を Solaris/Linux/cygwin/Win32 console で ポータブルに書くことってできますでしょうか?
struct timeval wait; wait.tv_sec = 0; wait.tv_usec = 100000; sleep(0, NULL, NULL, NULL, &wait); はどう? Win32 以外なら usleep(100000); でもいいと思うけど。
OSにタスク戻さなくても良いなら システム時間見ながらループしてもいいんじゃないかな
>>668 #include <locale>を書き、
main()の先頭にstd::locale::global(std::locale("japanese"));を書く。
質問です。 今、SystemParametersInfoのSPI_SETDESKWALLPAPERを使って、リソースに組み込んだBITMAPファイルを壁紙に設定しようと考えています。 しかし、SystemParametersInfoの引数がファイル名なので、それは無理なのでしょうか?もし、他の方法で、リソースのBITMAPを壁紙に設定する方法はありますでしょうか? よろしくお願いします。
JoytoKeyみたいなある入力を別の入力に変えてしまう そんなツールが作りたいんですが…どうしても方法がわかりません やりたいのはUSBの信号をMIDIInputとして入力をしたいです USB側の信号の受け取りはさっくり出来たんですけど… MIDIInputをプログラムで使うにはmidiInGetNumDevs()で列挙後 midiInOpenを使ってコールバックを仕掛けるみたいなので midiInGetNumDevs()の候補になれば良さそうなんですけど、 この方法がどうやってもわかりません いい方法がないでしょうか…
>>673 遅くなりました。
ありがとうございます。
エクセルのような感じの、表になっている入力インターフェースを作成するにはどうすればいいですか? どのあたりを調べればよいか教えてください。
MSFlexGridとかVS-FlexGridとか。
682 :
デフォルトの名無しさん :2005/12/05(月) 07:53:51
Visual C++(.NET 2003) と eMbbeded Visual C++4.0(PocketPC用VC++)で同じソースを使っています。 Win32とWinCEのそれぞれのバイナリを区別する為にリソースのバージョン情報の一項目だけを切り替える、ということをしたいと思っています。 手書きで*.rcのVERSION節でOS定義定数(_WIN32など)を見てそれぞれの行を有効にするようにしたのですが、VERSION節自体を編集するとそれがなくなってしまいます。 なにかよい実現方法は無いでしょうか? ヒントだけでもくれるとありがたいです。
コピー
1は 板違い
VCのDLLのデバッグでクライアントアプリケーションのexeやらpdbやらを持ってきて DLLのプロジェクトから実行してデバッグしてるんだけど ステップ実行すると必ず何回目かで固まる。しかもctrl+alt+delもきかない。 なにこのバグ 馬鹿マイクロソフト、さっさと直せばあか
688 :
デフォルトの名無しさん :2005/12/07(水) 21:35:26
directxを始めたばっかりの初心者なのですが、 direct3Dで3Dモデルを描くところまでできたのですが それをbitmapで保存する方法がわかりません。 どうがご教授お願いします。
Whileで一定のプログラムの無限ループ書いてくれ。
#include <stdio.h>
#define infinite_loop while(true)
#define die printf("
>>689 は死ね\n")
#define main int main()
#define begin {
#define end }
#define return_zero return 0
main
begin
infinite_loop
begin
die;
end
return_zero;
end
692 :
デフォルトの名無しさん :2005/12/08(木) 14:38:34
VC6(Sp6)つかっています SDIで、 左側にFormView、右側にListViewで、 Listのアイテムが選択されたらListViewエリアの下部分にFormViewを出すといったようなアプリをつくりたいんですが、 どのひょうにつくったらいいでしょうか? 新規作成で分割されたSDIをつくったら左側がTreeViewになっていてこまっています。(変更できないし^;) おしえてくださいー
新規クラスでFormViewを追加して TreeViewを検索してFormViewにおきかえる
VC6使用です。 他のバージョンで作られたlibeay32.libがうまく動かないんですが どうやったら動くようになるでしょうか? libeay32.lib(b_print.obj) : error LNK2001: 外部シンボル "__ftol2" は未解決です libeay32.lib(b_print.obj) : error LNK2001: 外部シンボル "__aulldvrm" は未解決です
VC6を使ってます。 C++の勉強をしているのですが、以下のコードで、 'vector' : 定義されていない識別子です。 とコンパイルエラーが発生します。 何故でしょうか? --------------------------------------- #include <vector> #include <iostream> void main(void) { vector<int> v1; }
参考書を投げ捨てて、std::の記述のあるのを買い直す
698 :
694 :2005/12/08(木) 21:46:06
>>696 ありがとうございます。
おかげで解決しました。
何この流れ。
最近CからC++始めたものです。 ゲームを作っているんですけど、 vector<ZAKO01> vzako01; ZAKO01 zako01; vzako01.push_back(zako01); このようなコードで 以下のようなエラーが出てしまいます。 d1 error LNK2019: 未解決の外部シンボル "public: __thiscall ZAKO01::ZAKO01(class ZAKO01 const &)" (??0ZAKO01@@QAE@ABV0@@Z) が関数 "protected: void __thiscall std::vector<class ZAKO01,class std::allocator<class ZAKO01> >::_Insert_n(class std::vector<class ZAKO01,class std::allocator<class ZAKO01> >::iterator,unsigned int,class ZAKO01 const &)" (?_Insert_n@?$vector@VZAKO01@@V?$allocator@VZAKO01@@@std@@@std@@IAEXViterator@12@IABVZAKO01@@@Z) で参照されました。 d1 fatal error LNK1120: 外部参照 1 が未解決です。 可変配列って便利そうだったので挑戦してみたんですけど まだ使うのは早過ぎたかなぁ。 どなたかよろしければ教えてください。
>>700 2行目「ZAKO01::ZAKO01(class ZAKO01 const &)」が未解決(1行目)と書いてあるのだから、
ようするにZAKO01のコピーコンストラクタを書いてみろ。
あと01なんてつけるな。きちんと考えろ。
class ZAKO01:public MOVOBJ{ public: ZAKO01(float arfX=0,float arfY=0):MOVOBJ("zako01.bmp",1,1,1,32,32){ obj.fX=arfX; obj.fY=arfY; fDeg=90; fSpd=1; } ZAKO01(const ZAKO01&); }; どうも ZAKO01クラスはこんな感じなんですが・・・ コピーコンストラクタは ZAKO01(const ZAKO01&); じゃ駄目なんでしょうか。 すみません もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドと言う事で 自分でもよくわかりません。 C++難しいです。 普通の配列でもよかったんですけど 勉強になるかなと思ってvector使ってみたんです。 すみません01をつけたのは雑魚をいくつも作るつもりでまだ1匹目なので01 なのすけど名前をちゃんとつけましょうってことでしょうか?
あう、 そういうことか わかりました。 コピーコンストラクタもちゃんと { }つけて処理書かないと駄目なんですね・・・ たぶん当たり前の事なんでしょうが、まだ勉強中だったので気付きませんでした。 自分はメンバ関数外に書く方法もあるみたいだけど クラスの中でメンバ関数の処理も書いちゃってたのに コピーコンストラクタの分だけ外に書く方式にしちゃってますね。 なのに外に書いてないから、おかしいわけですね。 ありがとうございました。
class ZAKO01:public MOVOBJ{ public: ZAKO01(float arfX=0,float arfY=0):MOVOBJ("zako01.bmp",1,1,1,32,32){ obj.fX=arfX; obj.fY=arfY; fDeg=90; fSpd=1; } ZAKO01(const ZAKO01&):MOVOBJ("zako01.bmp",1,1,1,32,32){ }; }; ちなみにこうしたら動きました。 馬鹿な質問だったでしょうが、ヒントをもらえてうれしいです。
>>704 ZAKO01(const ZAKO01&):MOVOBJ("zako01.bmp",1,1,1,32,32){
}; ←このセミコロン要らない。
うわっ恥ずかしい、これは自分でも間違いな事はわかります。 汗 なんかついたまま動いてましたけど、気付きませんでした。 ありがとう。 取っときました。
ただのコピーならコピーコンストラクタ書かなくても本当は自動でコピーしてくれるんですね・・・ 下手にコピーコンストラクタのカスみたいなものを書いていたために自動コピーが働かなかったようです。 コピーコンストラクタ丸ごと削除しても動きましたorz
>>707 カスというかクラスの定義にコピコンの宣言だけ書いて定義してなかったんでしょ?
宣言してあったらそりゃリンカが探そうとするって。
709 :
デフォルトの名無しさん :2005/12/10(土) 23:42:32
Windowsサービスで使えるプロセス間通信って何が一般的なの? 開発環境は Windows2000以降、VisualC++ .NET2003で、 .NET Frameworkは無しでお願いします。
socket
711 :
デフォルトの名無しさん :2005/12/11(日) 00:13:16
早いレスありがと。 やぱ、WinSockですか・・・ WinSockでTCP/IPサーバは作ってますが、それとは別の方法さがしてるんです。 ぐぐってんだけど、探し方が悪くてよくわからん。 メールスロット、名前付きパイプ、OLE、DDE・・いろいろありそうで混乱してます。 やりたいのは、数十バイト程度の要求内容を溜め込めて、 順次取り出して、Windowsサービス内で処理させたいだけなんだけど・・・
RPC
共有メモリ
Mutex
715 :
デフォルトの名無しさん :2005/12/11(日) 23:53:31
class myclass{ public: PUCHAR buf; //コンストラクタ myclass(){ buf = new UCHAR[BUF_SIZE]; ZeroMemory(buf,BUF_SIZE); } //デストラクタ ~myclass(){ delete[]buf; } }; こういう使い方ってまずいですか?
>>715 それ自体は問題ない。
ただしコピーコンストラクタとoperator =()をきちんと実装するか、
あるいは非公開にするかのどちらかを行うこと。
いいんじゃないの なぜまずいと思ったんだろ
718 :
デフォルトの名無しさん :2005/12/12(月) 00:12:13
はじめてプログラミング言語やる者ですが Visual C++で簡単なプログラムを書いてデバッグしようとすると デバッグ開始→このプロジェクトは変更されています。ビルドしますか? →はい →ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか? →はい →プログラム'〜〜〜.exe'を開始できません。指定されたファイルが見つかりません。 →OK 終了になるんですが、何がいけませんか?
>>718 ビルドに成功していないのにデバッグできるわけないっしょ。
>>716 >>717 どうもです。
C++勉強し始めたばっかりで、コンストラクタとかはじめて使ったもんで・・・。
721 :
718 :2005/12/12(月) 00:37:21
------ ビルド開始: プロジェクト: pro1, 構成: Debug Win32 ------ リンクしています... MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。 Debug\pro1.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ビルドログは "略" に保存されました。 pro1 - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== ビルドするとこうなります。
>>721 Windowsアプリケーションを組もうとしてコンソールアプリケーション選んだでしょ。
723 :
718 :2005/12/12(月) 00:56:25
>>722 はい。一応教科書の通りにやったんですが。
>>724 なんでnewでNULLチェックなんだよ。
nothrowバージョンでもなし。
727 :
デフォルトの名無しさん :2005/12/12(月) 01:36:48
初心者どうこう以前の問題なのですが、 質問させてください。 BorlandのC++コンパイラを先日DLしてC言語を勉強しはじめたばかりなのですが、 C及びC++のリファレンスってどこに行けば見れるのでしょうか? それともVisual C++を買うしかないのでしょうか? ググってもさっぱり分からず難渋しております どうか皆様がどこでリファレンスを参照しているのか教えてください
>>727 きみのハードディスクにインストールされているよ
731 :
デフォルトの名無しさん :2005/12/12(月) 10:31:03
>>712 localなマシン内なのに、わざわざRPCするのも、なんだかイマイチな気が
>>713-714 共有メモリに要求内容をいれて、Mutexで排他同期取るのを手作りしたとして・・
起動はどうする?
なんか、こいつは便利だぜっていうAPIは用意されてないんでしょうかね〜
>>731 >起動はどうする?
CreateProcess()
パイプ(socket)でいいんじゃないの?
734 :
デフォルトの名無しさん :2005/12/12(月) 13:47:09
>>732 それだと、あたらしくプロセス・スレッドが生成さてしまうんでは?
それとも、すでに常駐しているサービスを指定して、イベント起動できるの?
>>733 名前付きパイプ、今調べてるけど、これも、メールスロットと同じで、
自分で同期取るタイプだよね。だから、Windowsサービスでは使えない方式では?
プロセス間通信したいだけでもWinSockでポート開いて、
アクセス制限とかリモートからのセキュリティかけてlocalhost通信するのが流儀なの?
いろいろ調べてみてると、RPC使うのが普通?
Microsoft以外のサービスでは、iPodServiceやMcAfeeがRPCに依存してるね。
でも、RPC、コーディングしたことなくてわからん、
IDL書いて、IDLコンパイラかまして、VC++にインポート?
う〜ん、なんだかハマッテきた・・
>>734 COMっつーか、オートメーション?
サービスはあまり作ったことないから使えるか知らないが
736 :
デフォルトの名無しさん :2005/12/12(月) 15:43:52
タブコントロールを固定幅で使用していますが、 タブの幅はどうやって指定するのですか?
SetItemSize()でした 私のことはもう、忘れてください・・・
>731 サービスなんだろ。Mutexが存在し無かった時点で、 net start hogeserviceで起動を掛ければいい。
740 :
デフォルトの名無しさん :2005/12/12(月) 22:00:38
>>739 サービスの常駐開始って意味の起動じゃなくて、
要求が入ってきたよ。って意味のイベント起動って意味
>やりたいのは、数十バイト程度の要求内容を溜め込めて、 >順次取り出して、Windowsサービス内で処理させたいだけなんだけど・・・ 何?この「Windowsサービス」は、固有名(ServiceMainを使うプログラム)ではなく、 一般名(Windowsでサーバとして何かやるプログラム)なの?
ああ、発火という意味か。Event使えば。
743 :
デフォルトの名無しさん :2005/12/13(火) 00:43:31
聞きたいのですが、『.c』と『.cpp』はどう違うのでしょうか? Borlandでコンパイルしてるのですが、.cppではうまくいくのに.cではうまく いかなかったり、その逆もあるのですが。どういう事なんでしょうか?
C言語ソースファイルとC++言語ソースファイルの違い。 というかスレ違い。
745 :
デフォルトの名無しさん :2005/12/13(火) 08:59:40
C++ のソースコードの拡張子って何にしてます?>ALL cpp か cc かで悩むことがある。 UNIX でプログラム書いてたときには .cc 使ってたけど、 最近 VC++ 使うようになって .cpp にした。 変わったところでは .c++ っていう拡張子使ってる人もいるらしい。 ヘッダファイルは .h .hh .hpp これまた悩む。
迷わず、SKU
747 :
デフォルトの名無しさん :2005/12/13(火) 09:23:03
拡張子にはASCII以外使いたくないなぁ。 Uって機種依存文字だったと思うし。
じゃぁ .HG
749 :
デフォルトの名無しさん :2005/12/13(火) 11:46:30
cxx
.C
現在、ある計算プログラムを作成しているのですが、 計算結果をダイアログに表示(グレーの部分)するにはどうすればいいのでしょうか? 現在はMessageBoxで表示しるのですが、これだと[OK]を押さなければならないので、不便です。 環境は WindowsXP 、VC++.net です
>>751 SetWindowText()で、キャプション変えるのが一番簡単
その辺で悩むって、どうやって計算式を入力してるんだろうね ダイアログの上には何も存在しないんだろうか
>>745 h, cpp以外は不自然に感じるから使わない。
hとcppは、HeaderとC Plus Plusだと思うけど、
hhとかccとか何でそうなるのかわからん。
.hppはBoostが使っているから気にならなくなった。 けれど単独プロジェクト内でしか使わないヘッダは依然として.hを使っている。
H++
<iostream>とか初めて見たときは愕然とした
そこで.cxxですよ
759 :
デフォルトの名無しさん :2005/12/14(水) 03:04:35
unsigned char *str = new unsigned char[256]; で確保したメモリに、メモリの後ろからデータを入れていくには どうすればいいですか? memcpy(str + (256- sizeof(moji)), &moji, sizeof(moji)); ではうまくいきません。。 環境はVisual Studio 6.0でXP SP2です。
memcpy(str + (255 - strlen(moji)), &moji, strlen(moji) + 1);
761 :
デフォルトの名無しさん :2005/12/14(水) 11:18:46
>>741 一般名(Windowsでサーバとして何かやるプログラム)の実装手法として
(ServiceMainを使うプログラム)という話で質問したわけでして・・
リモートからの接続無しのプロセス間通信時の
起動(発火って言うのが一般的?)する手段って何が一般的なのかが知識不足で
わからんものでして・・
Unix系のdaemon君だとSoketでUNIXドメインとか、IPCとか、パイプとかにあたるやつ
別途、サードパーティとかフリーソフトを入れないで使える手段でです。
>>742 CreateEvent,SendEvent調べてるとこ・・
見つかるサンプルはどれもGUI向けのものばかりで
次来る時は日本語も勉強しておいて欲しいです
763 :
デフォルトの名無しさん :2005/12/14(水) 13:07:35
質問がです。 MFCを使用して、15マイクロ秒間隔で、パラレルポートからデータを送信するプログラムを 作成したいと考えています。 Windowsプログラムに関して、あまり詳しくないので、 実現することが可能かどうかしりたく質問します。 1.ウインドウズアプリで 15マイクロ秒という短い間隔で、処理を呼び出すことが可能なのでしょうか? TIMEイベントを使用してもイベントの発生時間の最小単位が ミリ秒なので不可でしょうか? 2. 15マイクロ秒で呼び出すことができない場合、 while(1) { 現在の時間を取得 if( 15マイクロ秒かどうか ) { データを送信する。 } } といった感じにループをまわしつづけて時間を毎ループ計測してデータを送信 するとったことは、可能でしょうか? 宜しくお願い致します。
CSplitterWndつかって画面分割しているんすけど、 それぞれの画面領域の初期サイズの設定ってどうやったらいいすか? CreateViewの際のCSize(100,100)とかだとなんかいまいちだめぽいんですが、 というのも、分割画面の一番下側のがなんか、異様にでかくて全部の領域をかくしちゃってる状態。。。 こいつ小さくしたいけど小さくならない。。。なぜぇ〜
>>763 LONG t = timeGetTime();
while(timeGetTime() - t < 15)
;
//送信
#winmm.libをインポートしないとtimeGetTimeは使えない
>>764 BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
if(!m_wndSplit.CreateStatic(this, 2, 2) ||
!m_wndSplit.CreateView(0, 0, RUNTIME_CLASS(CMfcTestView)
, CSize(100, 100), pContext) ||
!m_wndSplit.CreateView(0, 1, RUNTIME_CLASS(CMfcTestView)
, CSize(100, 100), pContext) ||
!m_wndSplit.CreateView(1, 0, RUNTIME_CLASS(CMfcTestView)
, CSize(100, 100), pContext) ||
!m_wndSplit.CreateView(1, 1, RUNTIME_CLASS(CMfcTestView)
, CSize(100, 100), pContext)){
return FALSE ;
}
CView*pview ;
pview = (CView *)m_wndSplit.GetPane(0, 0) ;
SetActiveView(pview) ;
return TRUE ;
}
>全部の領域をかくしちゃってる状態
ならなかったけど
767 :
364 :2005/12/14(水) 14:08:50
>>766 GetGetPane(0,0)
がだめっぽいのかなぁ〜
すごい変な風に分割してるので、ちょっと、そこらへんいじってみます
あんがと!
768 :
デフォルトの名無しさん :2005/12/14(水) 14:27:42
364じゃないっす。。764のまちがえっす>< if( !m_wndSplitter1.CreateStatic( this, 2, 1 ) ) return FALSE; if( !m_wndSplitter2.CreateStatic( &m_wndSplitter1, 1, 2, WS_CHILD|WS_VISIBLE, m_wndSplitter1.IdFromRowCol( 0, 0 ) ) ) return FALSE; if( !m_wndSplitter2.CreateView( 0, 0, RUNTIME_CLASS( CTest1View ), CSize( 400, 600 ), pContext ) ) return FALSE; if( !m_wndSplitter3.CreateStatic( &m_wndSplitter2, 2, 1, WS_CHILD|WS_VISIBLE, m_wndSplitter2.IdFromRowCol( 0, 1 ) ) ) return FALSE; if( !m_wndSplitter3.CreateView( 0, 0, RUNTIME_CLASS( CTest2View ), CSize( 0, 500 ), pContext ) ) return FALSE if( !m_wndSplitter3.CreateView( 1, 0, RUNTIME_CLASS( CTest3View ), CSize( 0, 200 ), pContext ) ) return FALSE; if( !m_wndSplitter1.CreateView( 1, 0, RUNTIME_CLASS( CTest4View ), CSize( 0, 200 ), pContext ) ) return FALSE; CTest1Viewをちゃんと表示したいんだけど、どうGetPaneしたらええかな、、、 なにやっても、CTest4View がでかくなっちって他の分割領域にかぶさっちゃう。 (ぶんかつすぷりったーうごかせばちゃんとそれぞれの画面はみえるです。)
>>768 CSplitterWnd::SetRowInfo()で、どうにかする。
SetRowInfoでどうにかできました。orz
771 :
デフォルトの名無しさん :2005/12/14(水) 19:01:53
VC++6.0のリファレンス見ていると関数名の前にアンダーバーがついている関数があるんですけど これはC/C++の標準ライブラリ関数ではなく処理系が独自に用意した関数ということでしょうか?
哀れなスレだ。
QueryPerfoemanceCounterはお嫌い?
778 :
デフォルトの名無しさん :2005/12/14(水) 22:31:12
#include <sudio.h> int main(void) { printf("Hello World!\n"); return 0; } と書いてビルドすると ------ ビルド開始: プロジェクト: pro1-7, 構成: Debug Win32 ------ コンパイルしています... hello.c c:\ー略ー\hello.c(1) : fatal error C1083: include ファイルを開けません。'sudio.h': No such file or directory ビルドログは "file://c:\ー略ー" に保存されました。 pro1-7 - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== となります。エラーって何ですか?
780 :
778 :2005/12/14(水) 22:35:52
質問変えます。 なんでエラーになりますか?(どこがいけないですか)
お前、英語読めないのか?
>>780 'sudio.h': No such file or directory
(そんなファイルorフォルダ無いっすよ)
どういうエラーか、しかもエラーの原因まできちんと報告してるじゃん。英語は読む気無しか?
>>780 お前が読んでいる本・サイトなどにあるプログラムとお前が書いたプログラムを見比べろ。
785 :
778 :2005/12/14(水) 22:56:11
すいません。エラー報告をよく読んでませんでした。 入門書につべこべ言わずこれそのまま書いてビルドしてみろ と書いてあったのでやってみました。 sudio.hがないということは代わりにどんなファイルを指定するべきなんですか?
786 :
デフォルトの名無しさん :2005/12/14(水) 23:12:39
788 :
778 :2005/12/14(水) 23:14:49
本当にご迷惑おかけしましたorz
789 :
デフォルトの名無しさん :2005/12/14(水) 23:32:32
>>788 こういったファイル名称を字面で覚えるとミスるので
スタンダードIOドットエイチ
STanDardIO.H
と、覚えましょう。
790 :
デフォルトの名無しさん :2005/12/15(木) 01:31:12
sizeof(構造体)の値と、計算上のサイズが違う場合ってメンバのサイズを変えるしか ないのですか?
>>790 メンバの順番を変えても構造体のサイズが変わるかもしれない。
まぁ、よく判らんのだったら気にするなと。
struct aho { char baka[5]; long shine; }; sizeof(struct aho) の値が 9 じゃなくて 10 になるって話?
12 かな
794 :
デフォルトの名無しさん :2005/12/15(木) 01:38:06
>>790 計算上のサイズとはなんですか?
メンバー変数のサイズの合計は必ずしも構造体のサイズではないですよ。
コンパイラーまたはそのオプションによって、メンバー変数はある一定の
バウンダリー上に配置されます。つまり、メンバー変数とメンバー変数の
間に隙間ができます。
構造体のサイズとはこれらの隙間も足した合計です。
796 :
デフォルトの名無しさん :2005/12/15(木) 01:53:56
VCのデフォルトのアラインメントは8だったかな? だから、デフォルト設定だと10
798 :
790です :2005/12/15(木) 02:24:33
おお、いつの間にかこんなにレスが。
言いたいことは
>>792 さんの言うとおりです。
少し質問を変えますが、例えば
typedef struct aho_{
char baka[5];
long shine;
}aho, *paho;
でahoのサイズが10になるとして
paho AHO= new paho;
char boke[11] = "0123456789";
memcpy(AHO, &boke, sizeof(aho));
とした場合アクセスできないデータがでてくるのですか?
799 :
デフォルトの名無しさん :2005/12/15(木) 02:28:44
800 :
790です :2005/12/15(木) 02:29:41
確認する前に間違えて送信を押してしまいました・・・orz paho AHO= new aho; ですね。 ネットワーク関係のプログラムの勉強をしていて、受信バッファを構造体にコピーして扱いたい と思っています。
801 :
790です :2005/12/15(木) 02:35:47
>>799 構造体のサイズが10でメンバのサイズが9ってことは、
for(int i; i<5; i++){
printf("02%x\n", aho->baka[i]);
}
printf("08%x", aho->shine);
で全てのメンバを16進数で出力したとしても、どれか1つ出力されないのかと
思ったのですが。。。
aho->baka[5] これでアクセス可能
803 :
デフォルトの名無しさん :2005/12/15(木) 02:42:52
>>800 >801の例だと、メンバの隙間は出力されないからそういう意味では、「一つ出力されない」と言える。
実際に構造体がどう配置されるか自分で調べることができないレベルならば、
構造体に直接コピーするのではなく1バイトずつきちんとコピーした方がいいよ。
ネットワークを介した両端で同じように構造体にパックされることが保証されているなら
中身を気にせず構造体のまま送るのも手ではあるけど。
805 :
デフォルトの名無しさん :2005/12/15(木) 02:48:08
メンバの数が多いときはどこにすき間がくるかわかるのか?
806 :
803 :2005/12/15(木) 02:52:39
>>803 はあくまで一般的なことを言ったまでで、あくまで電文の仕様によります。
構造体のコピーでよい場合もあります。電文の仕様にあってればの話ですけど。
>>805 (環境が特定できるなら)全て予測可能だし、必要ならコンパイル時に確定できる。
809 :
デフォルトの名無しさん :2005/12/15(木) 02:57:18
>>805 コンパイルオプションの構造体メンバーのアラインメントが何バイトになっているか
で、わかりますけど、このオプションを変更すると動作が不定になってしまう
コードはどうかと思います。
みなさん本気にありがとうございます! 頑張って勉強してみます!
どうでもいいけど、間違いだらけなページだ。
自演乙でした
どっちかというと #pragma pack() socketのソース見てみれ
814 :
デフォルトの名無しさん :2005/12/15(木) 09:53:12
一度作ったプログラムに ウインドウをもうひとつ追加するのって どうやったらいい?
ウインドウといわれてもいろいろあるから
816 :
デフォルトの名無しさん :2005/12/15(木) 10:19:38
本体から離れたところにできるウインドウが 後から追加でホスィです
作ればいい 誰も止めない
818 :
デフォルトの名無しさん :2005/12/15(木) 20:03:01
windows XPでもポインタでもエラーがでますか?
>>818 それ以前の問題として日本語にエラーが出てるよ。
ファイルを読み込んで処理を行うプログラムを作ったのですが、 デバッグ->開始 とやると最後まで動きますが、 デバッグ->デバッグなしで開始 とやると途中でエラーがでてしまいます(・・` 同じプログラムなのにこうなる原因は何なんでしょうか?
>>820 おまいさんのコーディングが悪い。
つーか、エラーが発生してるのなら、その内容くらい書こうね。
LPTSTRとPTSTRのように、Lの付いているのと付いていないのとで どう違うのでしょうか?
>>822 LはlongのLだ
ロングポインタか、ポインタかの違いだ
>>823 レスありがとうございます。
すみません。ロングポインタとポインタの違いがわからないです。。。
825 :
デフォルトの名無しさん :2005/12/16(金) 13:40:07
俺も分からない(笑 FAR ポインタと NEAR ポインタの違いなら分かる(笑
くだらない事なのですが、マウスを2つ接続(あるいは マウスとタッチパッドを接続)し、それらの機器別に マウスのイベントをフックするといった芸当はできるの でしょうか?
827 :
デフォルトの名無しさん :2005/12/16(金) 15:30:17
すいません、質問です。 printf("%f\n",Is[j]); でIsに格納した値を出力しようとして コンパイル時にエラーも警告も出ないのに 1.#QNANO と出力されてしまいます。 ↑これって何なんでしょう?? Isはdouble型です。
>>826 そういうことに対応したドライバを使えばできるんじゃない?
829 :
826 :2005/12/16(金) 15:45:13
普通はできないんですかね。 グローバルフックとかを頑張って調べてみたんですが、 どうもマウスの判別といった事ができるわけではないようで・・・。
>>827 計算結果が数値じゃないとそう出力される。
例えばその値は0割り算の結果だとか、その値の入っているはずのメモリが破壊されたか、scanf()系で間違って"%f"で入力しようとしたか、その辺だろう。
上下に画面分割していて 上のListView(レポートタイプ)部分で選択されたアイテムの内容を 下のFormViewに配置されているEditBox等に表示させたいのですが、 ListViewのアイテムが選択されたこと&データをどうやってFormViewにわたせばいいでしょうか。。。
832 :
827 :2005/12/16(金) 16:05:25
>>830 レスありがとうございます!
そうですか…scanf()系は使ってないので
式がどこかおかしいっぽいですね。
sqrt()
でルートの中がマイナスになっても
そう出力されるでしょうか??
>>825 ロングポインタとただのポインタの違いはfarポインタとnearポインタと同じ。
>>824 そんでこれらの違いは昔の名残で、今のVC++にロング・FARポインタは存在しない。
>>832 >ルートの中がマイナス
そりゃぁ、計算不可能な値が返されるだろうねぇ。
835 :
827 :2005/12/16(金) 17:32:37
>>834 じゃあそこの式がおかしいっぽいですね。
もう一度洗い直してみます。
ご指導ありがとうございました!
>>831 ListViewのアイテムが選択された時の処理で直接EditBoxに書いてもいいし
FormViewに処理を作ってそれを呼んでもいい
Visual C++ 2005 Expressでincludeとかのパスを はじめの状態に戻すにはどうすればいいですか?
Visual C++とVisual C++.NETって何がどう違うんでしょうか? Visual C++.NETは、Visual C++ プラス .NET Framework というふうに単純に考えていいんですか?
Visual C++ 2005 は元の名前にもどった
841 :
デフォルトの名無しさん :2005/12/17(土) 12:30:31
本体のウインドウから離れたところに できるウインドウってなんていうのがあるの?
>>841 多分、お前がやりたいのは、ダイアログ
きっとそう
この場合ダイアログではなくて 別にウィンドウを作りたいと解釈してみる SDI -> ウィンドウが1つしかない MDI -> 親ウィンドウの中にウィンドウが入ってしまう マルチインスタンス -> ウィンドウが複数ある(SDIを複数起動)
SDIはドキュメントひとつにウインドウひとつというだけで そのアプリのウインドウの数とは関係ないよ
訂正 SDIはドキュメントひとつにビューひとつ
>>838 Visual C++ .Netは.Netをアピールするため、
Visual C++の特定のバージョンの製品名に.Netをつけただけ。
VisualC++6.0を使っているのですが、この関数はここから呼ばれてるなどと解りやすく図にしてくれる機能とかっていうのはないんでしょうか? 結構長いソースを読む時に苦労しているので・・・
DirectX 9.0 SDKのサンプルをリビルドしてみたんだけど(Release - Win32) 1>dxutmisc.obj : error LNK2019: 未解決の外部シンボル __imp__DialogBoxIndirectParamW@20 が関数 "void __cdecl DXUTDisplaySwitchingToREFWarning(void)" (?DXUTDisplaySwitchingToREFWarning@@YAXXZ) で参照されました。 なんて感じのが山ほど出てしまった。 VC2005 Express Editionではビルドできないの? MFCないからダメとか?
>>849 必要なライブラリを探して追加して自己解決した。
スマンコ。
>>839 >>846 6.0 + .NET = Visual C++ .NET or 2005
ってことな訳ですね。
ドーモ(´∀`)アリガトー!!
実行したらすぐ閉じちゃうんだけど。 どうやったら閉じなくなるの?
>>853 入力待ちにするか、無限ループにするか(ぉぃ)、コマンドプロンプトから実行するか、適当にどうぞ。
コマンドプロンプトから実行すると閉じない!おぉ。 そうだったのか。
Ctrl + F5 で実行するんじゃなくて F5 だけでやってみるのもいいかも
857 :
デフォルトの名無しさん :2005/12/19(月) 16:36:13
すいません質問です.某社のカウンタボードを使っていて, カウントが一致したときに割り込みをメッセージとしてアプリ側に 通知できる設定があるのですが,そのときに通知メッセージのメッセージ番号 を指定してやらなくてはなりません. どうやってメッセージ番号がきまるのですか?任意の番号じゃだめなんですよね? 教えてください.
ウインドウに送られてくるなら WM_USER+α とか WM_COMMAND で WPARAM とか LPARAM が考えられるけど >某社のカウンタボード 某社に聞くかマニュアル嫁
859 :
857 :2005/12/19(月) 17:26:33
マニュアルというかサンプルプログラムを見たところWM_USER+100 と定義していました.まねしてやってみたのですが動かず... 100ってのはなんでもいいんですかね.
概ね大丈夫だけど、WM_APP以降を使う事を推奨する WM_USER〜はなんかで(忘れた)バッティングする事がある 0x0000 〜 WM_USER-1 システムで使われるメッセージ用 WM_USER(0x4000) 〜 WM_APP-1 それぞれのウィンドウクラスで使われる整数メッセージ用 WM_APP (0x8000) 〜 0xBFFF アプリケーションで使う整数メッセージ用 0xC000 〜 0xFFFF アプリケーションで使う文字列メッセージ用
>メッセージとしてアプリ側に通知できる設定 これに100または1024+100を設定すると WM_USER+100で受け取れそう? 受け取れなければ別の原因と思われる。(文面からはどのウインドウを指定するとかないし)
862 :
857 :2005/12/19(月) 18:11:56
ほんと初心者なもんでよくわからないのですが
>>861 > これに100または1024+100を設定すると
この意味がよくわかりません.私が”通知できる設定”と書いたのは
ボードにそういう機能があるという意味です.
> WM_USER+100で受け取れそう?
ここもよくわからないのですが受け取れるか受け取れないかは
意図したとおりに動くか動かないかで判断すればよろしいのでしょうか?
また,メッセージを受け取るウィンドウは指定しています.
すいませんよろしくお願いします.
863 :
デフォルトの名無しさん :2005/12/19(月) 18:25:57
コンパイラやプラットフォームの違いを吸収したいんですが プリプロセッサで判定に使えるマクロって何がありますか? コンパイラの種類、バージョン、WIN32か否か、NT系か否か、などを知りたいです。 目的は、アセンブラを多用したLinux用のコマンドラインプログラムを cygwinおよびWIN32コンソールに移植するに当たってのソースの共通化です。 インラインアセンブラは全く書式が違いますし、浮動小数点関係でも isnan()辺りが違うので、判定したいと思っています。
GCCなら__GNUC__ VCなら_MSC_VERがバージョン込みで WindowsのバージョンはWINVERで定義されてる。
追加 __GNUC__がメジャーバージョン __GNUC_MINOR__がマイナーバージョン で定義されてる。
#ifdef WIN32 #ifdef _CONSOLE //? _MSC_VER 1310 //のときVC7.1 普通NT,2000,Xp と Win98 Meはexeを分けないので 必要ならランタイムに GetVersion(); する。
>>862 >> これに100または1024+100を設定すると
>この意味がよくわかりません.私が”通知できる設定”と書いたのは
>ボードにそういう機能があるという意味です.
ボードにメッセージ番号の数値を設定できると認識している。
で、設定した数値そのままが、ウインドウメッセージとして送られてくるなら
1124(WM_USER(0x400=1024)+100) をボードに設定すれば
アプリにはWM_USER+100のウインドウメッセージがくるはず。
ボードが設定された値+WM_USERの値をウインドウに送るような仕様なら
ボードに100を設定するとアプリにはWM_USER+100のウインドウメッセージがくるはず。
つまり、アプリがWM_USER+100を受け取るようにしていれば、
ボードに100を設定したときか、1124を設定したときのどちらかで、
アプリが受け取れるはず。
ボードに設定する数値は100でなくても、アプリに送られるメッセージが
0x400(1024)〜0x7fff(32767)の範囲内なら設定可能なはず、
>>860 の
>WM_USER(0x4000)
の0x4000はたぶん0x400の間違い。
某Contec社のライブラリは、WM_USERからWM_APPまでに制限がかかってた。 RegisterWindowMessageしたのや、WM_APP+Nを渡したら、エラーになった。
869 :
857 :2005/12/19(月) 19:18:15
なんとなくですが,わかりました.皆さんどうもありがとうございました.
C#で利用できるdllをつくりたいんだけど、 普通にWin32 Dynamic-Link Libraryで作っていいのかな?
Mapを使いたいんですがエラーが出てコンパイルできないっす〜! なにがいけないのかおしえてください;; #include <map> CMap<int, int> map;
#include <map> map<int , int> hoge; じゃね? あと"using namespace std;"をやってないんだったら "std::map"になるわな。
873 :
デフォルトの名無しさん :2005/12/20(火) 22:58:11
VC++2005EEでcppとhppを追加してコンパールしたら stdafx.hをお忘れでなくって?って怒られたんですが どのようにすればお気に召して頂けるのかしら? fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
>>873 cppファイルの先頭に#include "stdafx.h"を書く。
>>870 そうするとC#ではdllimportを使うことになる。
もう1つ.Netクラスライブラリなどのプロジェクトを作る方法もあって、
こちらではC#のほうでは参照設定をするだけで使えるらしい。
876 :
デフォルトの名無しさん :2005/12/20(火) 23:09:04
orz... ファイル先頭にincludeするのが重要だったのね。。 2行目にしてたわ、アタシ。 EE先生、厳しすぎます。。。orz。。。 ちなみに、VC++環境を見分けるための識別子って何かしら? #ifdef MSVC #include "stdafx.h" #endif ってして於きたいの。
プリコンパイル済ヘッダを使用しない でもおk
878 :
873 :2005/12/20(火) 23:10:48
#if defined(_MSC_VER) /*ネカマキモイ*/ #endif
880 :
873 :2005/12/20(火) 23:56:56
>>879 様、お忙しいところありがとうございます。
試してみたのですが
fatal error C1020: unexpected #endif
って怒られちゃって悲しくなりました。
google先生に聞いてみても上手く解決できそうになかったので
cppファイルのプロパヘーから/Yuオプションを外して全て忘れることにします。
それでは、ごきげんよう。
なんともったいない。
882 :
デフォルトの名無しさん :2005/12/21(水) 02:14:27
lib 作ったんだけど 中覗いたら作成時のパス情報が入ってて鬱なんです 作成時の環境情報を入れないオプションって無いでしょうか?
ありますよ
884 :
882 :2005/12/21(水) 08:34:34
へー、そうなんだ。ありがと。
キーボードで$012-を打ってそれを¥01200-に 変換したいのだけどどうすりゃいい? switchで$を押されたら\に変えるはできたけどその後の 数字012の後に00を追加する方法がわからない。
886 :
デフォルトの名無しさん :2005/12/21(水) 09:18:24
Visual C++ 6.0でプログラムをしていますが、 Windowsプログラムは初めてなので分らないことが多くて 困っています。教えてください。 1.レジストリにXXX.regをコピーしたいのですが簡単な方法はありますか? 今のところ、 RegCreateKeyEx RegSetValue RegCloseKey という流れで考えています。 もっと簡単な方法があれば教えてください。 2.上記処理でもCreateエラーやSetエラーなどを考えないと いけませんか? 3.HDD中のファイルを移動したいのですが、 私の知識では、 ファイルを読み込んで、 クリエイトして、、、 となってしまいますが 簡単なAPIがあれば教えてください。 よろしくお願いします。
SHFileOperation
画面分割してて上にListView下にFormViewをつくってて 上のListViewの内容を下のFormViewに表示させたいんだけど ListViewのリストが選択されたら FormViewのcppのほうでSetWindowTextしようとおもったんだけど ウインドウハンドルが空っぽでセットすることができないんですが、どうしたらいいでしょう
どこで、どのようにして、どのウインドウハンドルを取ってきたんだ?
質問です。 VC++2005Express Edition のIDEでビルドした後、 指定したファイルを自動的に別の場所にコピーするにはどうすればいいのでしょうか? makefile 書いてコマンドラインからとか、 バッチファイル作れってのは無しの方向でお願いします。
2003なら[プロジェクト]-[xxxのプロパティ]で表示されるダイアログで リンカの出力ファイルで設定するか、ビルドイベントのビルド後のイベントでも なんかできそうだけど2005はしらない
プロパティ マネージャ→プロパティ→ビルド後のイベント→copyコマンド入れ
unixにはシンボル情報などを削除してexeをダイエットするstripコマンド があるんですが、VC++にはこういうコマンドってあるんでしょうか。
>>894 コンパイラとリンカのオプションをいじってそもそもそういった情報を着けないようにすれば良いと思う。
コンパイラオプションではデバッグ情報の形式とかリンカオプションのデバッグ情報の生成とか。
別にビルドの構成を作ったほうが良いと思う。
リリースビルドするだけ
898 :
デフォルトの名無しさん :2005/12/22(木) 10:34:28
899 :
デフォルトの名無しさん :2005/12/22(木) 11:25:38
質問です。 visual C++ 6.0でインターネットのHPを表示するソフトをつくりたいのですが 条件が日付によって表示するHPを変えるというものです 要は、365日(閏年で366日分)毎日ちがうHPを表示するものを組めと言われたのですが IEと連動させることすらできません 時間取得で日付判定までは作ったのですが、、、 WEBから情報取得の方法を教えていただけませんか?
>インターネットのHP 先ずこれを解説してください。インターネットのヒットポイントですか?
ShellExecute( NULL, "open", "www.google.co.jp", NULL, NULL, SW_SHOW );
ShellExecute()が出たところで関連質問。 ShellExecute(hWnd, "print", "foo.txt", NULL, NULL, SW_HIDE); しても印刷ダイアログが開いてしまうわけだが、確認なしに印刷させる方法ってないもんかな。
>>889 ListViewから、FormViewにあるEditBoxのウィンドウハンドルってどうやったら取得できますか?
GetDlgItemしても、hWndが空っぽっていわれるし
ListView→app→FormView→DlgItem
Appを経由しないとむり?
分割って書いてあるからCSplitterWndでね? ListView.GetParent()をCSplitterWndにキャスト split->GetPane()をFormViewに(ry DlgItem キャストがいやならメンバー変数にデモして
初歩的な質問なんだけど。 void main(void) { souwa(10); } int souwa(int n) { if(n==1) return(1); else return (n+ souwa(n-1)); } 渡した数の総和を出すのだけど。 n+souwa(n-1)はn+9が先にされてるの? それとも、またsouwa(9)が先にされてるの? 処理の動き方がわからないので教えてください。
908 :
デフォルトの名無しさん :2005/12/23(金) 13:48:57
ずっと再帰的にsouwa(n)が呼ばれる。nが2のときに return (2 + souwa(2 - 1))となるが、この部分はsouwa(2 - 1)が先に処理される。souwa(2 - 1)の場合、単純に1が帰る。 よって上式はreturn (2 + 1)となってreturnする。 するとさらに呼び出し元はreturn(4 + 3)となる。 ということで 1+2+3+4+..10となる
fputcに関する質問です。 FILE *fout; int gyou;. /*行数のカウント*/ . . . fputc(gyou,fout); のようにして、行数をファイルに整数で出力したいのですが、asciiコードに対応した文字でファイルに出力されてしまいます。 gyouに入っている整数そのままをfputcで出力するにはどうすればいいでしょうか? fprintfは使ってはいけないとのことです。
>>910 sprintf()などで文字列にしてからfputc()をループで回してはダメ?
つーか、fputc()一発じゃ無理だと思うけど。
#行数が高々一桁で表せると言う前提があるなら話は別だが。
912 :
デフォルトの名無しさん :2005/12/24(土) 07:54:03
メッセージボックスを表示するだけのプログラムはどこまでサイズを小さく出来るのですか? バイナリエディタで見るとNULLばっかりで無駄なところが多そうなんだけど、 その部分を削ると動かなくなる・・・
>>912 リンク->入力->すべての既存のライブラリの無視を「はい」
にすると、2kbくらいになる。
>>910 fputc で普通はバイナリデータが書き込まれるよ。
int gyou には本当にバイナリのデータが入ってる?
書き込む前にgyouが対応するaciiコードに変換されているのでは?
fputcを疑う前に他のコードを調べた方がいい。
例えば下の例
100に対応するデータ0x64が一個だけファイルに書き込まれたのがバイナリエディタで確認できる。
つまりfputcで全然問題なくバイナリデータは書き込まれるってわけ
#include <stdio.h>
FILE *fp;
char ofname[100] = "output.dat";
void main(){
if(!(fp=fopen(ofname,"w")))// 新規に作成
{
printf(" Can't open outputdata file -- so program quitting \n ");
return ;
}
printf("write data to %s\n",ofname);
int c;
c= 100;
fputc(c,fp);
printf(" Now write data =%d to output file %s\n",c,ofname);
fclose(fp);
}
915 :
デフォルトの名無しさん :2005/12/24(土) 17:45:06
>>913 やっぱりそれ以上は小さくならないんですね。
もし仮にuser32.dll が提供しているメッセージボックスのAPI関数と同じようなものを自分で書くことが
出来たらもっと小さなサイズでメッセージボックスを書けるのですか?
>>915 いや、かえってサイズが大きくなるだろう。
メッセージボックスだけでもそれなりの量のコードになると思う。
セクションの結合、アライメントの変更でもちっと小さくなるけどな…
DOSスタブを小さいものに変えるという方法もまだある。
919 :
デフォルトの名無しさん :2005/12/25(日) 14:04:13
どこに書いてよいのやらわからんかったのでここで VS6.0+PlatformSDK+DX9SDK(Oct2004)の環境なんですが、DX9SDK付属のDXUTをビルド しようとするとやれ何とかが定義されていないだの予期せぬEOFがでたのなんだのと まったくビルドできません。取り敢えず検索パスは設定してるんですが… 他にも何か足らんのでしょうか?
何とかが定義されていない
VC++2005にばじょんあぷ
922 :
デフォルトの名無しさん :2005/12/25(日) 14:17:49
>921 DXUTがビルドできない件をしらべるとよくそう言われてるようで… 真面目に買い換えないと駄目か…
924 :
910 :2005/12/25(日) 20:47:12
>>911 ,
>>914 c= 49;を代入してみたところ、しっかり整数'1'出力されました。
これを基にしてやってみます。どうもありがとうございました。
925 :
919 :2005/12/25(日) 23:45:18
>>923 マジデΣ(゚д゚lll)
もう古いPSDKは手にはいらんし、こりゃ買い替えケテーイか… orz
>>925 買い換えなくともとりあえずExpress Editionでなんとかならないか?
927 :
919 :2005/12/25(日) 23:59:28
>>926 いまisoイメージ落としてます
いつの間にこんなのが出たんだか
浦島太郎な気分…
なにかすっきりしないので教えてください。 次のようにMFCのCStringをreturnするケースですが、 //呼び出される関数 CString GetHogeHoge() { CString str; str = _T("hogehoge"); return str; } //呼び出す関数 void hoge() { CString buf; buf = GetHogeHoge(); //bufを使った処理 } GetHogeHogeの変数strってローカルなのに、それをreturnして、 呼び出しもとで使うって何か気持ち悪いのですが、これって、 C++の言語仕様的に何かをやってるのでしょうか? 同じことcharの配列でやっちまうとNGですよね?
930 :
919 :2005/12/26(月) 00:59:03
何から何までマリガトウ 今入ってるPSDKのバージョンがわからんので環境再構築してみる
戻り型がCStringなら、charの配列を返してもいい。 returnそれ自体に、戻り型のオブジェクトを構築する効果がある。
>>929 そういった処理で何度コンストラクタ・デストラクタが呼ばれるか
知らないとCに比べてとんでもなく遅いプログラムになる。
933 :
929 :2005/12/26(月) 02:04:49
有り難うございます。すっきりしました。 呼ばれる回数が多い場合は戻り値ではなく、引数にポインタを使う様にしてみます。 そう言う場合はCStringではなくて、LPTSTRがいいのでしょうね。
>>932 この話でCとスピードを比べるのはお門違い
>>933 ポインタのサイズは CString でも LPTSTR(char*) でも同じだよ
値渡し ポインタ渡し 参照渡し コピーコンストラクタ、この辺りを勉強したらいいよ
CSimpleStringT( const CSimpleStringT<BaseType, !t_bMFCDLL>& strSrc ) { CStringData* pSrcData = strSrc.GetData(); CStringData* pNewData = CloneData( pSrcData ); Attach( pNewData ); } static CStringData* __cdecl CloneData( CStringData* pData ) { CStringData* pNewData = NULL; IAtlStringMgr* pNewStringMgr = pData->pStringMgr->Clone(); if( !pData->IsLocked() && (pNewStringMgr == pData->pStringMgr) ) { pNewData = pData; pNewData->AddRef(); } else { pNewData = pNewStringMgr->Allocate( pData->nDataLength, sizeof( XCHAR ) ); if( pNewData == NULL ) { ThrowMemoryException(); } pNewData->nDataLength = pData->nDataLength; CopyChars( PXSTR( pNewData->data() ), PCXSTR( pData->data() ), pData->nDataLength+1 ); // Copy '\0' } return( pNewData ); } この辺が呼ばれるのか? 通常は多分、ポインタのコピーと参照回数の更新だけっぽい >buf = GetHogeHoge(); 速度にこだわる必要がなければ、これでもいいんじゃねーの? 見やすいし まぁ、初心者なら色々やってみるのもいいと思う。
>>933 メモリ管理が楽になるようにCStringなどを使っているのにそんなんでLPTSTR使うなんておいおい。
(LPCTSTRなら話は別だが)
937 :
919 :2005/12/26(月) 11:20:14
DXUTってUNICODE専用なんすね('A`) サンデープログラマだった事もあり、今までUnicodeと縁が無かったのでいきなり躓いてます。 VS6.0でUnicodeを使う場合、”プロジェクトの設定”→”<C/C++>タブ”を選択し、 プリプロセッサの定義で_MBCSを削除して、替わりに_UNICODEを入れたんですが、 ビルドしようとするとまたUnicodeにしると怒られます。 Unicode使う場合の設定を教えて下さい。 orz コノトオリ
>>906 ん〜やっぱわからないっす〜
void CTestListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
CCardInformationView View;
View.DisplayCardInformation( cardinfo );
}
う、途中で投稿してしまった。。。 ん〜やっぱわからないっす〜 void CTestListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult) { CTestFormView FormView; FormView.SetData( "aaa" ); } void CTestFormView ::DisplayCardInformation( CString str ) { このstrをこのFormViewにあるEditBoxにセットしたいんですけど どないしたら〜ええんでそ。。。 ここでふつうにSetWindowTextやっても、Wndがnullでつ }
>>938 >>906 > GetParent()をCSplitterWndにキャスト
人の話を全然聞いていないだろ。
941 :
デフォルトの名無しさん :2005/12/26(月) 13:03:37
>>940 いや、それしてもできんとです。。。
画面を複雑に6分割とかしてるから
GwtPaneがうまくいってないだけなのかなぁ。。。
942 :
デフォルトの名無しさん :2005/12/26(月) 13:05:30
Webアプリケーションにおけるコントロールについてですが 「Webフォーム」カテゴリにある「ボタン」「ラベル」と 「HTML」カテゴリにあるこれらはどう違うのですか?
>>941 とりあえず、
>GetParent()をCSplitterWndにキャスト
>GetPane()をFormViewに
に、してみた場合のコード見せてよ
944 :
デフォルトの名無しさん :2005/12/26(月) 17:21:34
プリプロセッサの文字列化演算子 # って Visual C++ で使えます? #define MYNAME vipper #define macro_to_string(macro) #macro std::cout << macro_to_string(MYNAME); で、vipper って表示されるとうれしいんだけど・・・
これで MYNAME って表示されるってことは・・・ 「#演算子」について俺は間違った理解をしている orz
>>944 C言語の仕様上の理由で二重にマクロを挟まないといけない。
#define MYNAME vipper
#define TT(macro) #macro
#define macro_to_string(macro) TT(macro)
質問です。 size = fread(data, 1, 128, imgfp ); printf("%d byte読み込みました。\n", size); でバイナリファイルを読み込みしようとしてるのですが、 毎回size = 0となってしまっています。 ファイルはちゃんと開けている保障はあるのですが、何が原因と考えられますでしょうか?
>>946 ほんとだ、ありがとう。
何でこうなるのか、プリプロセッサになった気分で考えてみたけど、
頭がこんがらがってきて分からなくなった。
>>947 ファイルを開くところからソースを晒せ。
>>949 はい。。
strcpy(imgfilename, "test.bmp");
if((imgfp = fopen(imgfilename, "rb")) == NULL){
printf("ファイルオープンエラー\n");
return;
}
char data[256];
int size, i;
size = fread(data, 1, 128, imgfp );
printf("%d byte読み込みました。\n", size);
for(i=0; i<size; ++i) /* 実際に読み込めた分だけ繰り返す */
{
printf( "%d", data[i] ); /* 10進整数として表示 */
}
printf("\n");
fclose(imgfp);
よろしくお願いします。
>>948 文字列化演算子 (#) は引数を展開することは出来ない。
なので、さらにマクロの引数にすることで強制的に展開させるのが
>>946 のコード
......とは言ってもこんな腐った技法を覚えるくらいなら
素直にboostを導入して、BOOST_PP_STRINGIZEを使いましょうとなるんですけどね
imgfpの宣言も晒せウンコ
>>950 feof()とferror()でのチェック結果は?
と書き逃げ
>>950 もしかして910?オラ914だ
今回のコードはうちのVC++では問題なく動いたし、BCC5.5.1でも問題ない。
#include <stdio.h>
#include <string.h>
FILE *imgfp;
char imgfilename[256];
void main(){
>>950 のコード
}
とやっただけだよ、またどっか全然関係ない部分に問題ありなのでは?
蛇足:
printf("%d",data[i]); は%cとすると最初の2バイトがBMと表示される(BMPファイル)
それが出てればうまくいっていると思ったらいい。
955 :
953 :2005/12/26(月) 22:37:50
>>950 追加でファイル名を疑ってみる。
"test.bmp"の代わりに違うファイルが開かれていないか?
imgfilenameは十分な大きさを持っているか?
printf("%s\n", imagefilename);の結果は?
>>950 に物申す。
自分の悩んでいる点を単純化して可能なら丸まま書けよと。
> printf("%d byte読み込みました。\n", size);
以降はfclose以外不要だろと。
その他の部分を書き足しても
>>954 で十分だろうと。
>>954 のソースでも結果が想定外なら原因は限られる。
コンソールプログラムでバイナリファイルを開いて表示したいんですが、 94 FD 47 36 68 54 4C B9 77 31 41 FF 35 05 9D 00 ↓ FFFFF94 FFFFFFFD 47 36 68 54 4C FFFFFFB9..... とまだらにFFFFFFがついて表示されてしまいます。 ちゃんと上の表記のように表示するにはどうすればいんですか? Dos窓からコピペするとなぜかFFFFFFはつかないです。 表示部分のソースを記しておきます。 size = fread(bytes, sizeof(char), 16, fp); for(i=0;i<size;i++){ printf("%X ", bytes[i]); }
すいません。事故解決しました。
1000
960 :
デフォルトの名無しさん :2005/12/27(火) 15:15:13
変数のアドレスというのは、 仮想的なアドレスなんですか? それともアドレス0x1234は他のプログラム から見てもアドレス0x1234なんですか?
962 :
960 :2005/12/27(火) 16:51:18
オーナードローでタブコントロールを描画しているのですが、 アクティブなタブの「浮き出る用に見せている描画部分(TCS_BUTTONならへこんでいる)」 も自分で描画したいのですが、もしくは自動的に描画させないようにしたいのですが、 何かいい方法がありますか?
964 :
デフォルトの名無しさん :2005/12/27(火) 19:18:22
オーバーフローはするんですか?
>>964 何の? 何のオーバーフローの話がしたいんじゃね?
質問です。 リソースエディタでダイアログを編集していましたところ、 配置されているテキストボックスなどのタブストップ順番が しっちゃかめっちゃかになってしまいました。 製作された順番にタブストップするっぽいのですが、今後も拡張などをするかもしれませんし作り直すわけにはいきません。 何かタブストップの順番を明確に定義できる方法はありませんでしょうか
>>966 *.rc内での順番が、タブストップの順番。
GUIで変更したいなら、リソースエディタでCtrl+Dして変更。
>>966 メニューの<書式>→<タブオーダー>
クリックした順にタブオーダーが決定する
969 :
968 :2005/12/28(水) 12:28:35
ああ、Ctrl+Dと同じか・・・
あと、意外に知られてないけどShift+クリックでその番号から変更できる。
>>970 うぉ!!知らなかった・・・
今まで、クリック踏み外した時、泣く泣く最初からやってたorz
thx!
972 :
963 :2005/12/28(水) 15:06:45
CodeGuruにちょうどいいサンプルがありました。 おさわがせしました。
>>967-968 ありがとうございました!
メニューの<書式>というのが見当たらなかったのでCTRL+Dを使わせていただきました。
私のVS、でてないメニューがあるんですかね…。ちょっとそっちも探してみます。
キャッシュ的な使い方をするために一時的にアプリ内で メモリを確保するとき、「スワップを発生させいで 確保できる最大メモリの半分くらい」つーノリで、 メモリを確保したいんですが、そのサイズって どうやって見積もればいいんでしょうか? やっぱそういうのは標準的な関数には無くて、 直接何らかのWINのAPIをたたく事になるんでしょうか?
>スワップを発生させい どこぞのお殿様?
あ〜「スワップを発生させないで」の間違いでした。 スマソ
977 :
デフォルトの名無しさん :2005/12/29(木) 00:33:21
vc++8ってどこで手に入りますか? vc++6とか、vc++Net2003とかいうやつしか 売ってるのを見たことないのですが。 あと、c++の開発環境としてvc++6の次に 普通の後継バージョンとして買うなら 今のところvc++Net2003ってやつでいいのでしょうか?
979 :
デフォルトの名無しさん :2005/12/29(木) 01:31:25
>>798 expressはリソースエディタとか使えないらしいので
検討の対象外です。
>>979 じゃ、Visual Studio 2005 Professional
買えばいいじゃん。何をそんなに迷ってるの?
>>979 そこまで調べてなぜ他のEditionのリリース情報を調べない?
982 :
デフォルトの名無しさん :2005/12/29(木) 07:12:27
>>980 ですからVC++8っていうのがあるっぽいんで
それはなんなのかなと。。
>>982 なんなのかって言われても、
それは Visual C++ 2005 のことでしょ。
お前は Windows XP 進める人に向かって、
「ですから Windows NT 5.1 ってのがあるっぽいんで」
って言い続けるのか?
製品名 (Visual C++ 2005) とバージョン番号
(Visual C++ 8) の区別もつかないのか?
984 :
デフォルトの名無しさん :2005/12/29(木) 07:31:35
↑何でこいつ馬鹿のくせに偉そうなんですか?
985 :
デフォルトの名無しさん :2005/12/29(木) 07:42:08
>>983 「Visual C++ 2005」っていう製品もでてるんですか?
どこにも売ってなさげなんですが。。
Visual Studio 2005 Professional インストールして、 バージョン情報見ると、インストールされている製品 の欄に Visual C++ 2005 って表示されてるよ。
988 :
デフォルトの名無しさん :2005/12/29(木) 08:02:47
Visual C++ 2005 って単品で手に入らないのでしょうか
VS2005はまだパッケージ販売されてないよ。 ちなみに単品では買えない。
990 :
デフォルトの名無しさん :2005/12/29(木) 08:23:08
そうですか。わかりました。ありがとうございました。 今2万だしてc++.net2003買うなら 6をしばらく使って VS2005スタンダードがでたら3万でそっちを買おうと思います。 で、、、 vc++8ってどれのことですか? 2003のほうのことでないですか?
Visual C++ 6.0 which includes MFC 6.0 (released in 1998) Visual C++ .NET 2002 which includes MFC 7.0 (known also as Visual C++ 7.0) was released in 2002 Visual C++ .NET 2003 which includes MFC 7.1 (known also as Visual C++ 7.1) was released in 2003 Visual C++ 2005 (known also as Visual C++ 8.0) which was released in November of 2005.
んでも、C++ 使うならそんなに VC++ 8 に こだわる必要ないと思うんだがなぁ。 C++/CLI 使いたいならしらんが。 ちなみに、C++/CLI って結構面白いな
993 :
デフォルトの名無しさん :2005/12/29(木) 09:08:50
GetSafeHdcでハンドル取得し、使い終わったらReleaseしないとダメですか? GetDCとReleaseDCが対になっている様に、GetSafeHdcもリリース用の関数が 存在するのでしょうか?
>>995 C#は普通に使ってるんで。
それにこのスレの話題でもないし。
Managed C++ と比べてって話で面白いと。
正直 Managed C++ は面白いと言うよりは
「むりしてんなぁ」って感じだった。
で、上の新スレが正式な新スレでいいんだよね? それとも次スレはVIP行き?
ヽ / _ ───┐ |
/ ̄| / / |
∧ / |
/ / | /\ | /
/ \ / \ |_/
人 匚二二|
/ \ ┌──┐
/─┬─ \ ├──┤
─┼─ ├──┤
─┴─ └──┘
丿 \
| ___
ー十ー | | ー――十――― __|_ |ーー
__|_ |__| ,ーー十ーー __|_|_ |___
|___| | | .ー――亠――― ___ ___|
|___| ..|__| |――――| |___| |__
| .| | ト―――-| |___| |__
ー十ー ノ | ト―――‐| | .| |__
| / ..J | .J | J L__」
_ノ ノ_
/ ヽ / \
〈 | ̄| 〉
\ 丿 | /
 ̄
http://pc8.2ch.net/test/read.cgi/tech/1135817069/
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。