くだすれVisual C++(超初心者用)

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。

Visual C++ Home Page
http://www.microsoft.com/japan/msdn/visualc/
2デフォルトの名無しさん:2005/06/15(水) 07:27:42
2get
3デフォルトの名無しさん:2005/06/15(水) 08:11:28
>>1さんオツ&お気に入りに追加。
4デフォルトの名無しさん:2005/06/15(水) 08:50:20
ああ、超初心者用ね
5デフォルトの名無しさん:2005/06/16(木) 19:12:00
あげ
6デフォルトの名無しさん:2005/06/16(木) 19:56:57
今から一から勉強しようと考えてるあまちゃんです。

シミュレーションゲームやっててだるくなって思ったんやけど、
マウスやキーボードをプログラムで操作して自動レベル上げみない事できますか?
具体的な方法はいいから、できるかどうかだけ教えて。
あと、データ書き換えれば良いってのも無し。
7デフォルトの名無しさん:2005/06/16(木) 20:00:34
>>6
できます。
ロボットハンドとCCDカメラ、それとそれなりのAIを搭載したロボットでも作ればもう、ばっちり。
86:2005/06/16(木) 20:54:53
>>7
はいはい

そんな面倒な事せんでも,画面からボタンとステータス欄の座標を取って
ステータス欄の画像を解析して、マウスのカーソルを動かしてクリックさせたらしまいやん。
ただ単に、これがVC++で他のソフトに干渉(?)して走らせる事ができるか知りたかっただけ。

つーか、ロボットハンドとCCDカメラとAI搭載ロボットって全部抽象的な表現やね。

9デフォルトの名無しさん:2005/06/17(金) 12:31:19
>>8
鼬害
10デフォルトの名無しさん:2005/06/17(金) 17:59:28
できそうだね
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
>今時最適化できないコンパイラなんてありえないし、

本当ですか?
14デフォルトの名無しさん:2005/06/26(日) 15:15:25
勉強するのに最適化はいらんだろ
15デフォルトの名無しさん:2005/06/26(日) 15:16:18
しかしVC.NetのStandardは最適化を削られている。
けどVC Toolkitを入れれば一応最適化は手に入れられる。
16デフォルトの名無しさん:2005/06/26(日) 23:52:51
字下げって何ですか?
17デフォルトの名無しさん:2005/06/26(日) 23:54:41
>>16
#include <iostream>
int main()
{
    std::cout << "hello, world" << std::endl; //この行、字下げしている。
}
18デフォルトの名無しさん:2005/06/27(月) 19:39:27
>>11
どんなゲームかわからないけどMFCは出番少なそう。
DirectX等を使うのであれば、COMとATLの参考書を読んでおいたほうがいいかも。

でもね・・・
COMまわりはC#のマネージドから使うほうが格段に楽ですよ。
というか、いまさらC++でやるのは何かの罰ゲームだと思う。

19デフォルトの名無しさん:2005/06/27(月) 20:49:44
いや、COMの辺りはたしかに面倒だが、ほかは大したことない。
20デフォルトの名無しさん:2005/06/27(月) 21:32:38
>>18
人によって全く違う意見ですね。
21デフォルトの名無しさん:2005/06/28(火) 00:21:40
別にMFC使ってゲーム開発できるでしょ?
11はただ、使えるかどうかを訊いているのだから
余計なことを言う必要は全くなし。
22デフォルトの名無しさん:2005/06/28(火) 05:10:59
>>21
それをきっかけに話が進むのはアリだろ。
23yasu:2005/06/28(火) 09:18:36
Visual C++ を勉強しようと思っています。
家と学校のPCに入れたいのですがVisualStudio.netのアカデミック版
だとライセンス認証 (プロダクト アクティベーション)が必要なよう
ですがVisualC++.netの アカデミック版だと必要ないのでしょうか
24デフォルトの名無しさん:2005/06/28(火) 15:19:28
>>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

思い切りダークゾーン。
せめてその学生の友達から買い取って
自分の名義で認証すべし。
28yasu:2005/06/28(火) 21:56:00
>>26
ライセンス違反。
spokeは、譲渡不可。
マイクロソフトのHPのspokeに書いてある。
29デフォルトの名無しさん:2005/06/29(水) 17:04:33
>>28
うっせ、ヴォケ!w
30デフォルトの名無しさん:2005/06/29(水) 19:43:40
>>27
>>28
ぃゃ、ライセンス違反でも使用出来るのか出来ないのかを知りたいのです。
実際に使用するのではなく、そこらへんの仕組みを知りたいのです。

要は、郵送で認証を終えた後に、アクティベーションやスパイウェアのようなもので、
本当に認証を受けた人が使っているか、のような確認が行われているのでしょうか?
31デフォルトの名無しさん:2005/06/29(水) 19:47:32
平気だとわかればやるつもりだろ。ばればれだ。
32デフォルトの名無しさん:2005/06/29(水) 22:08:51
27だったり。
なんか意味のないことを訊いてるなぁ。

>>30

だから、チミの名前で認証すれば何も後ろめたいことはないんだって。
そのために「その友達から買い取れ」と書いたのだ。

もっともその友達が自分の名義で認証を済ませてしまったなら、もう駄目だが。
33デフォルトの名無しさん:2005/06/30(木) 01:14:26
余裕だったよ
34デフォルトの名無しさん:2005/06/30(木) 02:48:43
やるつもりだろ←→やらない
の水掛け論だろ。

てか2chでも、やるからって秘密するもんなの?
薬板なんてモロなのにさ。
35デフォルトの名無しさん:2005/06/30(木) 12:14:47
確か、マイクロソフトは不正使用しているユーザのところに武装した人達を送り込んで、
不正使用していたコンピュータを全部強制撤去した実績がある。
まあ、 26 君はいい子だから大目に見てくれるかもね。
36デフォルトの名無しさん:2005/06/30(木) 14:24:08
その場で射殺されたという話もある
3726:2005/06/30(木) 19:01:32
>>35,36
え、それ、マジなの((;゚Д゚)ガクガクブルブル
でも人の家に勝手に入って来れないよね。

てか>>36の話とか、もし嘘だったらマズイよね?
38デフォルトの名無しさん:2005/06/30(木) 19:27:36
>>35
某サークルなんとかじゃあるまいし
39デフォルトの名無しさん:2005/06/30(木) 22:05:18
リアルで殺されたほうがよくね?
40デフォルトの名無しさん:2005/06/30(木) 23:18:27
質問です。
CEditが2つあり垂直方向のスクロールを同期させたいのです。
とりあえずEN_VSCROLLに関数を割り当ててLineScrollを使って
同期が取れるようになったのですが、スクロールバーの
摘まみを動かしたときに片方しか動いてくれません。
摘まみを動かしたときも同期が取れるようにするにはどうしたらいいでしょうか。
コンパイラはVC++6.0です。
41デフォルトの名無しさん:2005/07/01(金) 15:39:35
>>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ランタイムライブラリ関数(?)関連のものは
みな外部シンボルが未解決と出るんですが…何か参照設定が足りないのでしょうか?
ご教授いただければ思います。
43デフォルトの名無しさん:2005/07/03(日) 16:25:03
>>42
マルチかよ
44デフォルトの名無しさん:2005/07/03(日) 19:02:26
>>42
プロジェクト→プロパティ→C/C++→コード生成→ランタイムライブラリ
プロジェクト→プロパティ→C/C++→詳細→呼び出し規約

はそれぞれ何になってますか?
45デフォルトの名無しさん:2005/07/15(金) 10:43:21
あの、VisualStudio2003をインストールしようとしたんですが
setup.exeを起動したら


ファイルを一時ディレクトリにコピーできませんでした。
このファイルが存在することを確認してから、
セットアップを再実行してください


ってメッセージがでてインストールできないんですが同じ現象
に陥った人っていますか?
WinXPHomeでVS2003はMSDNから送られてきたCD(という説明で正しい
のかなぁ)です。
CDからがだめかと思ってネットワークインストールをしようと
しても同様のメッセージが表示されてしまった.....
46デフォルトの名無しさん:2005/07/15(金) 12:45:48
HDDの容量が足りないかCDが壊れてるかだな
どこかにインストールに必用なHDDの容量が書いてあるはず
47デフォルトの名無しさん:2005/07/15(金) 13:12:28
>46
ありがとう
でも、HDDは100GB以上あまってるし、別のパソコンにはインストール
できたんですよね。
一時ファイルのディレクトリ指定が間違ってるのかなぁ
環境変数の「TEMP」や「TMP」だと勝手に思ってるんだけど違うかな
48デフォルトの名無しさん:2005/07/15(金) 15:03:49
>>47
恐らくは、システムのあるディスクの個人環境の一時ファイルディレクトリに置くのでは?
アーカイブ→setup.exeとパッケージ→インストールイメージと展開されるはずだから
結構要領いるし、あとはセキュリティ辺りかな?
49デフォルトの名無しさん:2005/07/16(土) 01:31:19
>>45
俺はVS2003は客先で使わせてもらって2回(2社)ほどインストしたが
どっちもMSDNのインストールでCDからファイルが読めなくて正しくインストールできなかったよ。
本体はちゃんと入ったけどね。

なんかCDにコピープロテクトかけようとして失敗して正規版でも正しくインスコできないとか、
単にケースがアレだから壊れやすいとか、そんなのかな?と思ってます。
ま、なんとか騙してインストール継続させれば問題ない(MSDNの場合は多少ファイルが欠けててもそこだけ見れないだけであまり害は無い)
5045,47:2005/07/19(火) 11:28:00
>48,49
ありがとーう!!
週末パソコン触っていなかったのでレス遅れました。

結局インストールできました。
原因はTEMPの問題でした。
ユーザー環境変数にTEMPの指定が間違っていて、インストールした
CD-ROMにTEMPディレクトリを作ろうとして失敗していました。
初歩的なミスですね....スミマセン
51デフォルトの名無しさん:2005/07/21(木) 19:12:39
Visual C++.netをインスコしようとしたら出来なかった。
なんだよ、Win98じゃ使えねぇのかよ。。。
Win98で使える方法ありませんか?

いや、おとなしくOEMのXPHomeでも買ってきます・・・・・・・よ目
52デフォルトの名無しさん:2005/07/22(金) 00:46:27
CEditViewのテキストをCString型変数に読み込みたいんですけどどうしたらいいですか?
53デフォルトの名無しさん:2005/07/22(金) 03:07:27
DDX使うの? 使わないの? どっち?
54デフォルトの名無しさん:2005/07/22(金) 22:46:33
あの質問なんですが、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です。
どなたか教えてください。
お願いします。
55デフォルトの名無しさん:2005/07/22(金) 23:06:48
>>54
それコピペしてコンパイルしたけど大丈夫だった
56デフォルトの名無しさん:2005/07/23(土) 00:51:44
>>54
俺もその本買った。
すっげわかりにくい。
ちなみにBCCでもコンパイルできた。
57デフォルトの名無しさん:2005/07/27(水) 03:58:12
OS : Windows2000
開発環境 : VisualC++6.0

jpegファイルを書き出そうとしてgdi+を使えばいいのは分かりました。
そこで
Microsoft Platform SDK for Windows Server 2003 SP1
をインストールしました。
ヘッダファイルのパスを通して
#include < gdiplus.h >
してみたんですがエラーが大量に出てきます。
どうしたらいいのでしょう?
よろしくお願いします。
58デフォルトの名無しさん:2005/07/27(水) 07:41:13
>>57
gdiplus.hより先にwindows.hをインクルードする必要がある。(WIN32_LEAN_AND_MEAN抜きで)
59デフォルトの名無しさん:2005/07/27(水) 12:46:12
>>58
環境が一部しか出てないのにありがとうございます。
MFCサポートしていてstdafx.hもインクルードしている状況下でのエラーでした。

エラー内容でググったら解決してしまったので分かるように記します。

エラーの内容は
error C2065: 'ULONG_PTR' : 定義されていない識別子です。
など複数出てました。

> 最新のPlatformSDKをインストールして、
> そのヘッダをVC6付属のものより優先度を上げれば良いと思います。

とあり、stdafx.hより先にgdiplus.hをインクルードすることで解決しました。
お騒がせしてすみません。
60デフォルトの名無しさん:2005/07/27(水) 14:05:47
>>59
それ違う。

includeやlibの検索の優先順位の設定を変更しろってこと。
includeする順番を変えるのは、矛盾したりするからよくない。
6157: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"

とするのは問題ないのでしょうか?
62デフォルトの名無しさん:2005/07/27(水) 19:28:08
>>61
普通はgdiplus.hもstdafx.hの中でインクルードするもんだと思うけど。
6357:2005/07/27(水) 19:34:37
>>62
ありがとうございます
その路線でやってみます
6460:2005/07/27(水) 21:00:12
>>61
問題ないです。
というか、普通はそうします。
MyDefinedDlg.h内で、gdiplus.h内のものを使っているんだよね?

>>62さんの言うように、stdafx.h内でincludeすると、
プリコンパイル済みヘッダという仕組みによって、
コンパイル時間が短縮されます。

同じプログラム内で矛盾した定義をしない、という点でもオススメ。
6557: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モードでは問題ないのでとりあえずは凌いでいますが、さすがに後々困りますよね・・・^^;
66デフォルトの名無しさん:2005/07/29(金) 09:41:19
VC++7.1を使う。
67デフォルトの名無しさん:2005/08/03(水) 02:39:03
プロジェクトの設定ごとにincludeディレクトリを変えたいんですけどどうしたらいいでしょう?
Release版ではあっちからincludeして,Debug版ではそっちから,と。
68デフォルトの名無しさん:2005/08/03(水) 02:43:46
>>67
「プロジェクトの設定」を使ってしかるべき設定値にする。
69デフォルトの名無しさん:2005/08/03(水) 10:34:57
ActiveXと他社製DLLをCABファイルにして配布しようとしているのですが、
DLLの呼び出しに失敗します。
ダウンロード先はDownloaded Program Filesです。
あらかじめパスの通ったところにDLLを置いておくと正常動作します。
こういった使い方は出来ないのでしょうか?
70デフォルトの名無しさん:2005/08/03(水) 11:13:44
>>69
Downloaded Program Filesにpathを通せば起動できると思うけど、
なんでわざわざCABから展開したもの(≠ダウンロードしたもの)を
そんなところに置くわけ?
果てしなく迷惑だと思うのだけど。
71デフォルトの名無しさん:2005/08/03(水) 11:41:46
>>70
知らないなら黙っとれ

>>69
IE上で動くActiveXを作っていて、
それがサードパーティのDLLを使っている、ってことかな。
そのActiveXがDLLをパス指定してLoadLibraryすりゃい。
7271:2005/08/03(水) 11:44:48
ごめん、長らくそういうの作ってないので、すっかり忘れてた。
パス指定でLoadLibraryじゃダメだ。なんだったっけなぁ・・・。
7371:2005/08/03(水) 11:47:10
CABファイルを作るときの定義ファイルの書き方がマズってるとか、
電子署名の問題でハネられているとか、
そのへんのような希ガス。
74デフォルトの名無しさん:2005/08/03(水) 11:53:48
知らないなら黙っとれなんて啖呵を切る割りには……
75デフォルトの名無しさん:2005/08/03(水) 14:14:49
>>74
そんなつまらないツッコミしてないで、お前が答えを書いたらどうだ。
76デフォルトの名無しさん:2005/08/03(水) 14:28:23
カッコワルすぎ
77デフォルトの名無しさん:2005/08/10(水) 17:21:32
ぐだぐだですね^^
78デフォルトの名無しさん:2005/08/13(土) 02:27:43
昨日初めて知った驚愕の事実・・・.NETじゃClassWizard使えないの?
慣れれば大したこと無いんだろうけどメンドクセ。やっぱ6.0使っとこ。
79デフォルトの名無しさん:2005/08/13(土) 03:07:53
え、まじ?
80デフォルトの名無しさん:2005/08/13(土) 04:41:05
>>78
とりあえず、みんな最初そこに驚く。が、ClassWizardの機能は
すべてプロパティで補われている。
81デフォルトの名無しさん:2005/08/13(土) 23:24:21
.NETから始めた俺にはClassWizardがなんなのか・・・
82デフォルトの名無しさん:2005/08/14(日) 01:19:17
.NETは#を使うもの++は6.0と割り切ってる俺(でも最近はさすがに.NETに慣れたかな
最初はそのプロパティもなんかしっくりこなくてイヤだった)。
83デフォルトの名無しさん:2005/08/17(水) 05:16:04
VISUAL C++ 2005 express editionってフリーなんだけど、
VISUAL C++ .NET 2003 とどう違うのか教えてエロい人。
84デフォルトの名無しさん:2005/08/17(水) 06:31:48
VC++.NET 2005のサブセット。
85デフォルトの名無しさん:2005/08/17(水) 11:21:04
失礼します。
CListCtrl::Scrollの使用例とか載ってるサイトとかありませんか?
使い方がいまいちわからなくて。。。orz
86デフォルトの名無しさん:2005/08/17(水) 22:07:37
すいません。Visual C++6.0でout lookの予定表に似た物を作ることになっているのですが
助けてください。
8786:2005/08/17(水) 22:18:51
自己解決しました^^
8886:2005/08/17(水) 22:20:55
詳細です→
詳細です→
1.カレンダー表示
・日毎予定データ登録・変更・削除・表示
・月間予定データファイル出力

2.カレンダー表示
・ユーザが選択した年月のカレンダーをメイン画面に表示する。

3.日毎予定データ登録・変更・削除・表示
・各日に対して複数件の予定データを登録できる。
・登録したデータは、後から変更することができる。
・登録したデータを削除することができる。
・登録したデータは、その内容または件数がカレンダーの該当日付の位置に表示される。

4.月間予定データファイル出力
カレンダー画面に表示中の月に関する全ての予定データの全内容を、リスト形式で、指定したテキストファイルに出力できる。
8986続き:2005/08/17(水) 22:21:51
5. 設計条件
処理能力
・1日の予定データとして登録できる最大件数は100件までとする。
・予定データの件名として登録できる文字数は半角100文字までとする。
・予定データの場所として登録できる文字数は半角100文字までとする。
・予定データの内容として登録できる文字数は半角1024文字までとする。

6.起動条件
・特に無し。

7.競合条件
・特に無し。

8・制限事項
・カレンダー表示可能な期間は、1990年1月〜2036年12月とする。
9086続き:2005/08/17(水) 22:22:47
長くてすいません。
9183:2005/08/17(水) 22:53:00
84さん、
ありがとうございます。
ちなみにVisual C++ .NET 2005はすでに発売されているのでしょうか?
まだ店頭では2003しか見かけないのですが。
もし買うとしたら2005を買ったほうがよいでしょうか。それとも2003でもかまいませんでしょうか?
ご意見をお願いします。
92デフォルトの名無しさん:2005/08/18(木) 01:58:12
>>91
発売されてない。

とりあえずフリーのを、しばらく使ってみたらいいと思う。
そのうち、自分がやりたいことのためには、どれを買えばいいのか、自ずとわかってくるから。


93デフォルトの名無しさん:2005/08/19(金) 00:48:34
>>91
てか、VisualC++.NET2005は発売されない予感
94デフォルトの名無しさん:2005/08/19(金) 13:05:12
Visual C++.NET 2003でMFCアプリケーションやWin32プロジェクトを
作成した場合、アプリケーションの利用者は.NET Frameworkを
インストールする必要はないんですか?
95デフォルトの名無しさん:2005/08/19(金) 14:27:00
>>94
MFCもWin32もネイティブだから.NETは使わないよ。
96デフォルトの名無しさん:2005/08/19(金) 14:38:30
>>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を使ったプログラミングがしたいのですが、
そのようなヘッダはフリーで入手できないのでしょうか。
どなたか、どうかお願いします。
98デフォルトの名無しさん:2005/08/22(月) 23:09:07
>>97
PlatformSDKを手に入れろ。
Win32APIスレにリンクがある。

あと、そこのページでMessageBoxを呼ぶときにLPCSTRへのキャストをしているがそれは無駄。無視していいよ。
99デフォルトの名無しさん:2005/08/22(月) 23:12:23
入門書(柴田さんの)の通りに、列挙体の例題を打ち込んだのですが、
error C2440: 'return' : 'int' から 'animal' に変換できません。
列挙型への変換には static_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
と出てビルドできません。

この入門書は2周目で、前にやったときは実行できてたはずなんですよね、、、。
オプションの何かをいじってしまったんでしょうか、、、。
どなたか、よろしくお願いします。
100デフォルトの名無しさん:2005/08/22(月) 23:17:47
>>99
そのファイルの拡張子がcppになっているだろ。
そうならそれはC++としてコンパイルされている。

C++では型安全性の強化でint型から列挙型へはキャスト演算子でキャストする必要がある。
ちゃんとエラーメッセージ読め。問題の箇所をキャストすればいいだけだ。
101デフォルトの名無しさん:2005/08/22(月) 23:27:43
return (enum animal)(tmp);
に変更したら、ビルドできました。

疑問に思ったんですが、このキャストは、
99のエラーメッセージの3つのうちのどれなんでしょうか?
自分はどれも違うような気がしてるんですが、、、。
よろしくお願いします。
102デフォルトの名無しさん:2005/08/22(月) 23:44:48
>>101
それはCスタイルキャスト。C言語のキャストだ。

関数スタイルキャストってのはanimal(tmp)と書く。もちろん一見関数呼び出しに見えることからこの名称。
(C++ではenum animalではなく単にanimalとだけ書いていい)
本当はキャストではないけど、組み込み型や列挙型に対して使うとキャスト演算子と同じ働きをする。

static_castはC++のキャスト。static_cast<animal>(tmp)と書く。
C++ではCスタイルキャストは使わずこれを使うのが一般的。
103デフォルトの名無しさん:2005/08/23(火) 00:22:40
>>102
遅れてすいません。
つまりは、ぱっぱとCを覚えて、C++にいけということですね。
頑張って勉強していきます。
またわからないことがありましたら、宜しくお願いします。
ありがとうございました。
104デフォルトの名無しさん:2005/08/23(火) 00:31:40
CやってからじゃないとC++いけないわけじゃないぞ。
むしろStroustrup氏は最初にC++を学ぶことを推奨している。
105デフォルトの名無しさん:2005/08/23(火) 01:27:01
一通り覚えたかな?と思って違う本(ポインタの本)にいったら、
初めてみるものが多くてさっぱりだったんですよね。
それで、自分は2003.netなので、検索かけて用語の解説をみたりしたんですが、
その解説もまたわかりませんでした。
今は、勧めないのでまた入門書を復習してる状態です。
違う入門書か、猫でも〜とかを勉強したほうがいいですかねー、、、。
106デフォルトの名無しさん:2005/08/23(火) 03:50:16
ポインタも知らずに危ない言語のC++なんて作られても困る
107デフォルトの名無しさん:2005/08/23(火) 08:36:40
CならそうかもしれないがC++ならSTLやboostで生のポインタ使うのを回避できるだろ。
108デフォルトの名無しさん:2005/08/23(火) 08:53:27
いやそうでなくて、StroustrupはまずBetter Cとして学べと言っている。
そんでよく理解してから始めてオブジェクト指向やジェネリックプログラミングに足を突っ込めと言っている。
10997:2005/08/23(火) 12:20:18
>>98
ありがとうございます、解決しました!


実はPlatform SDK ダウンロードのページ
ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/
は何回も訪れていたようでした

・初回「もうリンク切れか・・・」と見るのをやめ
・次回は「Windows Server」って書いてあるしXPじゃないよなと見るのをやめ
・その次は PSDK-amd64.exe を実行しようとしてみてやっぱり違ったとあきらめておりました
超初心者を実感しました。感謝
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なんかのコードのほうがこの傾向をよく見る気がしたのでこのスレに書きました。
カプセル化の度合とかも関係あるのでしょうか。
早さは変わったりするのでしょうか。

112デフォルトの名無しさん:2005/08/23(火) 14:12:45
>>111
「早さ」とは何のことを言っている?
コンパイル速度ならどちらにしても大差ないだろうし、生成されたモジュールならそもそも同じものになるだろう。
人間の理解の速さなら個人差の方が大きいだろうし、いずれにしても気にするような差はないと思う。

>標準C++のサンプルコードよりもMFCなんかのコードのほうがこの傾向をよく見る気がしたので
それは単に、標準C++は名前空間がない頃からあるのに対してMFCのサンプルコードは精々6か4.2以降だから
時代が違う所為ではないだろうか。

usingは悪とまでは言わないが、濫りに使うとメリットがなくなるから要注意で。
特に、インクルードファイルでは使わないほうがいい。
113デフォルトの名無しさん:2005/08/23(火) 14:15:56
>>111
usingディレクティブ(using namespase)は過去との互換性のためだけに用意したとD&Eに書いてある。
こいつを使わずに 名前空間:: で直接修飾したりusing宣言を使ったり、長い名前ならエイリアスを作ったりして使うべきと書いてある。
114111:2005/08/23(火) 14:32:54
>>112-113
明快なご回答ありがとうございました.
勉強になりました.
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
となると思いますが、

破壊の順番はどうなってるのでしょうか?

解る方、ご指導お願いします。
116デフォルトの名無しさん:2005/08/23(火) 14:50:44
>>110
オンラインで UNIX 系のマニュアル探して bind/accept とか、
open/read(sock)/write(sock)/close とかの errno の取り得る値と
意味を読め。
117デフォルトの名無しさん:2005/08/23(火) 14:51:47
>>115
デストラクタ作って監視汁
118115:2005/08/23(火) 14:58:47
>>117
わかりました。
やってみます。
119デフォルトの名無しさん:2005/08/23(火) 15:16:09
>116
わかりました
やってみます
120115:2005/08/23(火) 16:08:25
>>117
コンストラクタ、デストラクタを作ってみた結果、
クラスの初期化と解放の順序がわかりました。

ありがとう御座いました。
121デフォルトの名無しさん:2005/08/23(火) 16:18:03
>>120
参考までにどんな順序でしたか
122デフォルトの名無しさん:2005/08/23(火) 16:20:03
>>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': 識別子は、引数依存の照合を使用しても見つかりません。
と出てしまいます。何方か教えてください。よろしくお願い致します。
124デフォルトの名無しさん:2005/08/23(火) 23:46:22
>>123
AfxMessagBox ???
125デフォルトの名無しさん:2005/08/23(火) 23:54:18
>>124
スペルミスですね
すみません。
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ファイルをリンカにインポートする」という事は分かったのですが、具体的にどうすればいいのでしょうか?
お願いします。
128デフォルトの名無しさん:2005/08/27(土) 07:40:51
>>127
たしかプロジェクトのプロパティのリンカの入力の追加の依存ファイルの辺り。
129デフォルトの名無しさん:2005/08/27(土) 17:47:15
>>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のようなものを想像しているんですが、このバージョンには
付属していないのでしょうか?
もし付属していないのだとすれば、どのような方法で統計をとるのが
いいのでしょうか?
132デフォルトの名無しさん:2005/08/28(日) 11:04:23
DevPartnerとか。
133デフォルトの名無しさん:2005/08/28(日) 13:27:55
VB6.0から始めたのですが、VC6.0だと大文字、小文字の区別があるので何度もCapsLockやShiftを掛ける必要があり
きついと思うのですが、それはみなさんとて同じなのでしょうか。
あるいは便利なテクがあるのでしょうか。
もしあれば教えてください。
今知っているのはCtrl+Spaceぐらいです。
134デフォルトの名無しさん:2005/08/28(日) 14:00:34
Windowsの弊害がここまで・・・
135デフォルトの名無しさん:2005/08/28(日) 19:53:10
解決方法1
・Delphiなら区別がありません。
解決方法2
・後で一括置換
解決方法3
・VS2005からリファクタリング機能があるよ、C#やろうぜ
解決方法4
・Eclipseまんせー
136デフォルトの名無しさん:2005/08/28(日) 20:03:32
解決も何も、Shiftキーを押すことに何の問題があるのか判らん。
137デフォルトの名無しさん:2005/08/28(日) 20:04:47
高速タイピングの敵
138131:2005/08/28(日) 20:29:56
>>132
ありがとう。
高そうですね。
139デフォルトの名無しさん:2005/08/28(日) 22:07:09
未だにVC++を使う必要ある?
140デフォルトの名無しさん:2005/08/28(日) 23:15:14
>>135
なるほど。ありがとうございます。
141デフォルトの名無しさん:2005/08/28(日) 23:53:25
補完はVC++が最強
リファクタリング機能もうちょっとなんとかならんものか
142デフォルトの名無しさん:2005/08/29(月) 00:17:39
プログラムに興味を持ちC#かC++を勉強したいのですが始めるならどちらから勉強したほうがよいのでしょうか?
143デフォルトの名無しさん:2005/08/29(月) 00:30:44
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++もすぐに出来るようになり、その逆も出来るようになれますか?
わかりにくかったらすみません。
146デフォルトの名無しさん:2005/08/29(月) 00:46:45
初心者に限らんが毎年一言語覚えろ
1471:2005/08/29(月) 00:55:13
C# → C++というのも、身近なところで実例は知らんが
まあありえるかな。
しかしC++に行くなら、どちらにしてもCを
飛ばすことはできないと思う。

マイクロソフトの宣伝で、C#が、さもC/C++の後継で、
次世代のCみたいな思い込みしている初心者が多いが、
C#はCとは関係ないとくらい思っておいたほうがいい。

CがC++に進化して、それの構文だけうっすらマネた
のがJavaで、「Javaいーなー、欲しいなー」って思った
MSが作ったのがC#。
148デフォルトの名無しさん:2005/08/29(月) 00:56:49
すみません >>147 です。
断じて1ではありません。
149デフォルトの名無しさん:2005/08/29(月) 01:09:08
ありがとうございます!まずはCから勉強してみたいと思います!!
150デフォルトの名無しさん:2005/08/29(月) 11:09:44
独自文字列クラスで、operatorで、(LPCTSTR)にキャストする関数を作りたいのですが、
どのように記述すればいいのでしょうか?
151デフォルトの名無しさん:2005/08/29(月) 13:15:04
>>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++初心者でよくわからんが、外部シンボルとか未解決とかって、
ライブラリのリンクでミスってるんじゃないの?
確認してみたら?
154デフォルトの名無しさん:2005/08/29(月) 20:05:37
>>152
Cランタイムライブラリがリンクされてないんだろうが・・
C/C++のコード生成のランタイムライブラリに何が入ってる?
155デフォルトの名無しさん:2005/08/29(月) 21:52:38
MFCで初期ウインドウを作って、最終的にはエクスプローラーを作りたいのですが、
左のペインにツリービューをつくるにはどういう流れになるのですか?
ツリーが自分のパソコンのフォルダを読み込むにはどうすればいいのですか?
156デフォルトの名無しさん:2005/08/29(月) 21:57:26
>>150
当たり前だけど内部では文字列をTCHARで保持していないと駄目だからな。
157デフォルトの名無しさん:2005/08/29(月) 22:20:37
VC++.NET2003なのですが、関数名を入力した後に(を入力すると、引数が出てきますが、
カーソルを違う場所へ持っていったり他の動作をするとポップアップがもう出なくなります。
再度出したい場合は、(まで削る以外に方法はないのでしょうか?
158デフォルトの名無しさん:2005/08/29(月) 22:26:45
>>157
引数はそのままで ( だけ消して入力しなおせば十分。
159デフォルトの名無しさん:2005/08/29(月) 22:39:24
>>157
Ctrl+Shift+スペース
160デフォルトの名無しさん:2005/08/29(月) 22:50:48
>>158,159
おおお!
ありがとうございました。
基本的な使い方すらもわかっていないので、本でも買ってみたいと思います。
161デフォルトの名無しさん:2005/08/29(月) 23:54:10
こうして林の糞本がまたしても売れるのであった
162デフォルトの名無しさん:2005/08/30(火) 09:28:28
>>152さん
C/C++のコード生成のランタイムライブラリで、
シングルスレッドがマルチスレッドに変わってました。
シングルスレッドに戻したところ、正常にリビルドできました。

ありがとうございました。
163デフォルトの名無しさん:2005/08/30(火) 11:46:58
NOTIFYICONDATA構造体ってどのヘッダーで定義されてますか?
164デフォルトの名無しさん:2005/08/30(火) 11:57:46
165デフォルトの名無しさん:2005/08/30(火) 18:26:30
すいません。学生でVisual Studio.net the Spokeのサイト
http://jp.thespoke.net/qotd/firstpage.aspxが落ちてるのですが
なぜでしょうか?
166デフォルトの名無しさん:2005/08/31(水) 13:18:15
>>165
メール嫁。
文字化けしてるかも知れんが。
167デフォルトの名無しさん:2005/08/31(水) 16:02:07
初心者なんですが
MFCでダイアログベースでアプリケーション作成しています。
どこのクラスでも同じ値を使いたいのですが
publicで宣言するのは
.hとdlg.hどっちのヘッダーファイルのpublicで宣言したらいいでしょうか?
教えていただけますか?
168デフォルトの名無しさん:2005/08/31(水) 16:48:13
Commonクラスを作ってそこに入れる
169デフォルトの名無しさん:2005/08/31(水) 17:02:57
あれ?VC++にはスタティッククラスって無いの?
170デフォルトの名無しさん:2005/08/31(水) 22:35:00
とあるCGIへアクセスして結果を貰うというクラスがあって
そのクラスを複数のスレッドで使う場合
各スレッドから非同期でCGIにアクセスしても大丈夫なんでしょうか?
それとも基本的にCGIへのアクセスは1つのスレッドからしか
出来ないようすべきでしょうか?
171デフォルトの名無しさん:2005/09/01(木) 00:03:59
>>168-170
おまえらプログラマに向いてないわ。
早いとこ転職考えろ。
172デフォルトの名無しさん:2005/09/01(木) 08:32:23
>>171
偉そうにw
173デフォルトの名無しさん:2005/09/02(金) 09:03:16
>>170
そのCGIの中身がスレッドセーフor中で排他制御してるなら問題なし
そうでないなら呼び出し側で排他制御
174デフォルトの名無しさん:2005/09/02(金) 11:44:44
>>173
成る程ですね。ちょっとCGI側を眺めてみます。
こちら側で排他制御するとなるとクリティカルセクションって奴を
使えば良いのでしょうか?
175デフォルトの名無しさん:2005/09/02(金) 12:26:40
>こちら側で排他制御するとなるとクリティカルセクション
まあ、そうですね。ほかにも同期をとる手法はいくつかあるけど。

それより、ネット向こうのCGIは不特定多数のユーザーからアクセスを受けるわけだから
CGI側が同期処理を行っていないはずがないのでは。このケースではこちらが
相手の心配してやることはない。それよりも自分のコードの心配したほうがいい。
マルチスレッドは十分気をつけて書かないと。


176デフォルトの名無しさん:2005/09/03(土) 16:28:34
違うスレでも質問したのですが、反応がなかったのでここで聞きます。

エラーログが文字化けします。

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 です。
文字化けを直す解決方法が分かりません。どうすれば直すことができますか?
宜しくお願いします。
177デフォルトの名無しさん:2005/09/06(火) 11:05:21
>>175
遅レスになりましたがありがとうございます。
その辺りも注意しながらやっていきます。
178デフォルトの名無しさん:2005/09/06(火) 11:31:34
タロー君?
179デフォルトの名無しさん:2005/09/07(水) 19:40:16
Visual C++でC言語ソースをアセンブルソースに変換するにはどうすればいいでしょうか?
コンパイラオプション探したけど、目当てのものが見つからないぽ
180デフォルトの名無しさん:2005/09/07(水) 19:54:57
>>179
リスト出力
181デフォルトの名無しさん:2005/09/07(水) 20:01:15
デバッガ開始してf11でステップインしていくと、
printf.cのパスを入力してくださいとダイアログが出てくるのですが、
なんでこれが出てくるのか分かる方教えてください。
stdio.hはインクルードしてます。
182デフォルトの名無しさん:2005/09/07(水) 21:06:49
>>181
ライブラリのprintf関数の中にステップインしようとしたから。
ライブラリのソースをインストールしる。
183182:2005/09/07(水) 21:08:24
ごめん、書き忘れていた。

ソースファイルが存在しない、
もしくは、
ソースファイルが見つからない
というのが直接の原因。

解決法は、
そういう関数にはステップインしようとしない、
ソースを用意してやる
の2つ。
184デフォルトの名無しさん:2005/09/07(水) 21:17:10
>>183 ありがとうございます。
一度再インストールしてみることにします。
185デフォルトの名無しさん:2005/09/08(木) 00:03:11
>>183
無視して混合モードで表示すると言う解決方法もあるのだが。
186182:2005/09/08(木) 00:30:18
>>185
それは超初心者には酷な解決方法ではないかと。

VC++は超初心者だけど、C++やアセンブラは中級以上だというのなら、大丈夫だが・・・。
187デフォルトの名無しさん:2005/09/08(木) 04:28:26
VC++.NETでjpeg形式のファイルを使って画像処理は
簡単にできるんですか?
C♯では比較的簡単にでき、画像処理向きだといわれたんですが
VC++.NET買ってしまったんで、なんとかがんばってみたいんですが・・・
188デフォルトの名無しさん:2005/09/08(木) 05:06:59
>>187
やりたいことにもよる。
ImageMagickのような外部ライブラリを使いたいならC#よりも楽だと思うし。
189デフォルトの名無しさん:2005/09/08(木) 07:38:40
C#のどこが画像処理向きなんだかわからない。
もちろんC#ではできないというわけではなく、簡単じゃなくて普通レベルだろって言いたい。
190デフォルトの名無しさん:2005/09/08(木) 10:20:02
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());
191デフォルトの名無しさん:2005/09/08(木) 13:29:00
すみません、言語の話とは違うのですが、DLL内の関数の宣言なんかが
一覧できるビューアみたいなのが、以前のOSだったかVSのツールだったかに
付いてたと思うのですが、そのツールの名前は何だったでしょうか?
192デフォルトの名無しさん:2005/09/08(木) 13:40:46
Dependency Walkerのこと?
193191:2005/09/08(木) 14:12:58
>>192
とりあえずPlatform SDKの中から見つけることができました。
ありがとうございました。
194デフォルトの名無しさん:2005/09/08(木) 22:04:51
教えて下さい。

Visual C++ Ver.7.1を使っていて、C++のプログラムを作っているのですが、

1.プロジェクトのコピー方法
2.ソリューションのコピー方法

がわかりません。

回答お願いいたします。
195デフォルトの名無しさん:2005/09/08(木) 23:02:10
>>190
インターフェイスはnewするものじゃないだろ。
196デフォルトの名無しさん:2005/09/08(木) 23:36:29
>>194
普通にファイルコピーしたらいいんでないの?
197187:2005/09/09(金) 02:56:58
PCカメラの画像を取りこみ、編集していくんですが
カメラからはjpeg形式のファイルがつくられるんで
bitmapで画像処理ができないんです。
C♯だとjpegをbitmapに直接変換できる方法はあるようなのですが
C++で変換する方法がイマイチわからないんで、C♯の方がやりやすいのかなと思ったんですが。


198デフォルトの名無しさん:2005/09/09(金) 13:00:19
C++でもjpegを読む方法はいろいろあるが。
199デフォルトの名無しさん:2005/09/09(金) 22:35:06
ライブラリを使えばC#でもC++でも関係ないような気がするが
200デフォルトの名無しさん:2005/09/09(金) 23:13:36
C++でもマネージドC++なら.Net Frameworksのクラス群が使えるし。
201デフォルトの名無しさん:2005/09/09(金) 23:19:19
2005でだいぶかわりそうだけど
202194: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の名前も別になるような、ソリューションをコピーする方法を教えて下さい。

回答可能な方、回答お願いいたします。
203デフォルトの名無しさん:2005/09/09(金) 23:35:17
CDにまんま入ってたりどっかから落として来たサンプルソースとか
普通に開いてビルドできるのが当たり前だから
フォルダ丸ごとコピーしてビルドできないはずがない。
204196:2005/09/10(土) 09:27:02
>>202
>203も書いているが、コピーしたプロジェクトが利用不可になることはふつうはない。
私の参加しているプロジェクトは複数の業者が関与しているから凡そ10台の端末で
開発されている筈だが、コピーしても問題なく開発を継続できる。

考えられる可能性としては、プロジェクトに参加しているファイルにフルパスのものがあるんじゃないか?
或いはプロジェクト管轄以外への相対パスとか。
そんな最初から管理を放棄したようなことをしているのなら、コピーできなくても不思議はないな。
205名無しさん@そうだ選挙に行こう:2005/09/11(日) 03:20:36
今買うならVC++6.0 か VC++7.1どちらが良いでしょうか?
.NET特有のライブラリとかは糞なのでいらないのですが
206名無しさん@そうだ選挙に行こう:2005/09/11(日) 04:36:57
VC7.1は標準準拠度が大きく上がったと読んだ希ガス
207名無しさん@そうだ選挙に行こう:2005/09/11(日) 05:46:45
7.1って.NET2003だよねぇ?
なら問答無用で7.1でしょ
208名無しさん@そうだ選挙に行こう:2005/09/11(日) 08:52:50
.NEET 2003 みたいに言われるのは必至なので VC++6.0推奨。
209名無しさん@そうだ選挙に行こう:2005/09/11(日) 09:06:49
販売とサポートはとっくに終了してるけど
210名無しさん@そうだ選挙に行こう:2005/09/11(日) 12:20:41
便乗質問スマソ

.NET 2003 は、VC++ .NET standard 2003
と Visual Studio .NET professional 2003
があり、後者は通常版は10万以上しますよね?

個人で通常版買うとしたら前者しか手が出ないのですが
この2つのパッケージの差は何でしょうか? professional
が必要な場面って…
211名無しさん@そうだ選挙に行こう:2005/09/11(日) 12:29:42
いろいろな言語が入っててバラで買うより徳
212名無しさん@そうだ選挙に行こう:2005/09/11(日) 12:39:36
213名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:05:21
the Spokeは激安
214名無しさん@そうだ選挙に行こう:2005/09/11(日) 17:27:15
どーせ買うなら、格安でMSDN付きのを買おうね。

そんな私は、VS.NET 2002のMSDN付きを買って、
VS.NET 2003とVC6.0をMSDNでゲットしましたよ。

そして主に使っているのは、VC6.0だけという・・・。
215名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:25:41
>>214
MSDN付きでVC++6.0が入手可能なセットはどの種類からになりますか?
格安というのはいくら位のものを指してますか?(非アカデミックで)
216名無しさん@そうだ選挙に行こう:2005/09/11(日) 19:27:47
>>210
VSはVC++,VB,VC#,VJ#がセットになったって感じ。

てか俺も悩んでVC++買ったクチだけど、
VC++をやりたい!ってレベルなら前者買って問題ないと思うよ。
最適化コンパイラが付いてないけど、正直、VC++やりたいレベルならいらないし、
無料のToolkitを使えば最適化できるし、アプリケーションが完成した時に考えればいいんじゃね?って事。
俺は勉強用だからアプリケーションを完成させて配布するなんて当分先だろうし。

あと学生なら>>213の言うように、選択肢はこれ(Spoke)しかない。
217214: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);
はどのように使い分ければいいのですか?
219名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:52:59
同じだから好みで
220名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:54:51
前者は開放し忘れに注意
221名無しさん@そうだ選挙に行こう:2005/09/11(日) 20:58:32
>>219-220
ありがとうございました。

222an_take:2005/09/11(日) 22:51:56
はじめまして。私は、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
223名無しさん@そうだ選挙に行こう:2005/09/11(日) 23:44:02
めんどくさいから適当に考えるとStdAfx.cppの中でincludeしてるヘッダファイルの
どこかで;やら}やらが抜けてる予感だな。
224デフォルトの名無しさん:2005/09/11(日) 23:57:08
ちょっとでもUIを変えたいと思うと極端に難しいような気がする。

たとえば、ListViewの項目にプログレスバーやコンボボックスを入れたい
なんて超初心者ではきつい
225デフォルトの名無しさん:2005/09/12(月) 01:03:18
デバッガで開いてトレースしてみて、おそらくCreateMutexしているからそれを探して
パスするパッチを当てる方が早かったりして。
226デフォルトの名無しさん:2005/09/12(月) 14:04:15
何のために多重起動できないようにしてあるのか、理解していないのであれば、やらないほうがいい。
ついでに、そんなつまらないことで、作者に連絡が取れたら作者に聞こうなんて、いい迷惑だ。
227デフォルトの名無しさん:2005/09/12(月) 19:35:09
DirectX8.0のSDKを使わないと。現在の9SDKとは仕様が異なるから
コンパイルが通らんわけだ。
一番早いのは8SDKを手に入れることだが、MSはもう公開を停止してるのではなかったかな?
228an_take:2005/09/12(月) 22:34:46
222です
みさま、イロイロアドバイスありがとうございます。
自分なりにイロイロ調べてみたいと思います。
といっても・・・・わからないことだらけですが・・・
(@Д@; アセアセ・・・
229デフォルトの名無しさん:2005/09/13(火) 02:25:46
VC6で良い(有名な)Unit Testのツールないですか?
あと、クラス設計とか参考になりそうなサイトないでしょうか?
230デフォルトの名無しさん:2005/09/13(火) 02:38:28
Boost Test LibraryとかCPPUnitとか
231デフォルトの名無しさん:2005/09/13(火) 05:07:55
コマンドラインでプログラムを作っていたのですが
VC++に移行しようと思ったのですが
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
の意味がいきなり分かりません

説明して頂けませんか?
232デフォルトの名無しさん:2005/09/13(火) 05:34:58
このIDEが激しく使いにくいんだけど
IDEだけ変えることってできないの?
233デフォルトの名無しさん:2005/09/13(火) 05:54:08
今は慣れたからやってないけど、最初のころは秀丸で作ってた。
メモ帳でもなんでも好きなテキストエディタ使えばいい
234232:2005/09/13(火) 05:58:22
どういうこと?
好きなエディタで書いて、書き終ったらはっつけてやれってこと?
235デフォルトの名無しさん:2005/09/13(火) 06:11:48
>>231
VC++に以降というかWindowsプログラミングに以降するって事だよね?

意味が分からないって関数が分からないって意味じゃなくて引数の意味が分からないって事だよね?
それならぐぐれば出てきまくるけどとりあえず無視しても平気っぽい。
というかウィンドウ描画まで一気に行ってから理解した方が早いと思う。
236デフォルトの名無しさん:2005/09/13(火) 06:13:01
>>231
そこのWinMainの部分はほとんどいじることがないし、
そこだけ見てもしょうがない。
渡されたパラメータを使う段階になったら調べるといい。
237232:2005/09/13(火) 06:21:15
>>235, 236
うっせーなうんこ
いいから教えろ
238デフォルトの名無しさん:2005/09/13(火) 06:40:59
Win32アプリケーションにしているのですが
文字を出力させたいのですが、printfだとどこにも表示されません
簡単に表示させる方法はないでしょうか?
239デフォルトの名無しさん:2005/09/13(火) 07:34:33
>>238
「簡単」の定義がわからないが、printfで表示されないという言葉を見る限りで判断させてもらうと、
簡単に表示させる方法はない。
まずはウィンドウを作る勉強をし、メッセージやウィンドウプロシージャなどの勉強をするべし。
ちなみにウィンドウズプログラミングの入門書などにはこれらの事が必ず書かれているので安心しましょう。
240238:2005/09/13(火) 07:36:15
うっせ
ウインドウ作ってそこにprintfの結果張り付けられるようなコードを書け
早くかけ
241デフォルトの名無しさん:2005/09/13(火) 08:01:12
書いたよ
242デフォルトの名無しさん:2005/09/13(火) 08:01:22
243238:2005/09/13(火) 08:13:58
>>241
ここに貼れ
244デフォルトの名無しさん:2005/09/13(火) 08:24:06
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そのまま使ってる
信じられん
246デフォルトの名無しさん:2005/09/13(火) 08:48:17
printf使えるようになったんだ。
世の中進歩したね。
あと100年は無理だと思ってたけど、こんなに早く夢が実現したとは
247デフォルトの名無しさん:2005/09/13(火) 19:50:52
>>238
Win32コンソールアプリにしる。
248デフォルトの名無しさん:2005/09/14(水) 13:21:27
ncbファイルってやたら大きいですが、何のファイルですか?
249デフォルトの名無しさん:2005/09/14(水) 13:50:37
Visual C++ IntelliSense Database
ファイルのプロパティ開けば出るだろ。
意味は名前の通り。
250デフォルトの名無しさん:2005/09/14(水) 13:53:54
No Compile Browser
コンパイルされないブラウザ
251デフォルトの名無しさん:2005/09/14(水) 14:17:27
252デフォルトの名無しさん:2005/09/14(水) 20:42:35
もしスペースが押されたら
というコードが書きたいのですが、
書き方が分かりません

どう書けばいいのでしょうか?
253デフォルトの名無しさん:2005/09/14(水) 21:23:43
VK_SPACE
254252:2005/09/14(水) 21:35:23
>>253
ありがとうございます
ずっと調べているのですが、キーフックと言う言葉は分かったものの
やり方が分かりません
あるウインドウ限定とかではなく、常に監視していてスペースが押されたら
○○の処理みたいな感じのことがしたいです
できれば、コードを書いて頂ければ嬉しいです
255デフォルトの名無しさん:2005/09/14(水) 22:55:47
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

をはずすとうまく代入されます。
これは、どういうことなのでしょうか
257デフォルトの名無しさん:2005/09/15(木) 12:45:10
>最初の一文字しか代入されていないようです。

まさかprintfで確認したとか
258デフォルトの名無しさん:2005/09/15(木) 14:23:43
TCHAR使うなら_tprintf
UNICODEだと、文字列中に0x00が入ることがあるため、printfだと途中で切れる。
259デフォルトの名無しさん:2005/09/15(木) 14:26:44
次は「日本語を表示させると文字化けします」が来ると予想。
260デフォルトの名無しさん:2005/09/15(木) 14:36:10
中国語も化けるよ
261デフォルトの名無しさん:2005/09/15(木) 14:48:44
卒業研究としてOpenGLで折り紙のアニメーションを作りたいのですが、
難易度はどうでしょうか?ちなみに私は初心者です。
262デフォルトの名無しさん:2005/09/15(木) 14:52:01
どの分野で初心者なんだ……。
VCの初心者なのか。
プログラミングと別にアニメーションだのの知識が必要だがそっちが初心者なのか。
OpenGLの初心者なのか。それとも(まさか)折り紙か。
全部だとしたらちょっと厳しくない? っていう難易度になりそうな予感。
263デフォルトの名無しさん:2005/09/15(木) 15:04:58
3DCGツールでモーションを作成して、それを再生するだけ
難易度は初級の上ぐらい
今からだと年末には間に合わないと思うよ
264デフォルトの名無しさん:2005/09/15(木) 19:33:26
>>259
意地悪しないで、_tmainに入ってすぐに
_tsetlocale(LC_ALL, _T("")) ;
をやれと言ってやればいいのに・・・
265256:2005/09/15(木) 19:35:15
>>257,258
デバッグウィンドウの変数で見ていました。
_tprintfで確認できましたが
>>259
「日本語を表示させると文字化けします」
ちなみにcoutの代わりは、ないのですか?
266256:2005/09/15(木) 19:37:01
>>264
ありがとうございます。
助かりました
267デフォルトの名無しさん:2005/09/15(木) 20:04:20
>>265
setlocale( LC_CTYPE,"Japanese");
wcout << wstring( L"こんに") << endl;

_UNICODEでstring/wstringは切り替わらない。
268デフォルトの名無しさん:2005/09/15(木) 20:20:19
>>265
やるならこんな感じで。

#ifdef _UNICODE
  #define _tcout wcout
  #define _tostream wostream
#else
  #define _tcout cout
  #define _tostream ostream
#endif


_tcout << _T("Test") << endl;
269256: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"

クラスの側で何か宣言しておく必要があるのでしょうか
270デフォルトの名無しさん:2005/09/15(木) 20:43:22
MFCでUNICODE使うときmfc***u.libをリンクする
んじゃなかったかな。だからアクティブな構成を
Win32 Unicode Debugにするとか。ちがったらごめん。
271デフォルトの名無しさん:2005/09/15(木) 20:44:04
>>269
#define _UNICODE

を、もっとグローバルな箇所で定義すべし。
プロジェクトの設定でプリプロセッサとして定義するのがベスト
272デフォルトの名無しさん:2005/09/15(木) 21:01:15
>>265
> デバッグウィンドウの変数で見ていました。

設定で、UNICODE文字列を表示する、といったようなものがあるから、そこにチェックを入れる。
273デフォルトの名無しさん:2005/09/15(木) 21:06:53
>>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だけどさ・・・。
274デフォルトの名無しさん:2005/09/15(木) 21:32:16
>>268
_tosteramはそうしなくてもtypedef std::basic_ostream<_TCHAR> tostreamとだけ書けばよい。
(cout/wcoutは#ifdef _UNICODEで切り替える必要があるが)
しかも下線で始まる名前は処理系予約。
275デフォルトの名無しさん:2005/09/15(木) 21:32:45
テスト用のコードとアプリケーション本体のコードを分離して
管理したいんですけどうまい方法というか定石みたいなの
あります?
276256:2005/09/15(木) 22:03:16
>>271
ご指摘の方法を試したところいろいろ調整が必要でしたが
なんとなくうまく動くようになったようです。

その他いろいろな方からご回答いただきましてありがとうございました。
理解できない言葉などもありますのでもっと勉強したいと思います。
それでもまたどうしてもわからないところがありましたら、ご指導のほどよろしくお願いします。
277デフォルトの名無しさん:2005/09/15(木) 22:29:04
>>276
ガンバレ。

誰しもが通った道だ。
278デフォルトの名無しさん:2005/09/16(金) 00:24:16
MFCはまず何から始めたらいいんでしょうか?
一応Cはほんのり理解しているつもりです
やっぱりSDKの知識が必要なんですかね?
279デフォルトの名無しさん:2005/09/16(金) 02:20:59
まずはWindowsアプリのしくみを理解すること。

言語とかフレームワークとかの前に。
280デフォルトの名無しさん:2005/09/16(金) 04:31:12
すいません、ちょっと聞きたいんですが、

1234567890を繰り返し表示するプログラムを作成しなさい。
ただし、表示する数字は読み込まれた整数値の個数とする。

という問題が解けません。
初心者なので、本当に分からなくて…。
駄質問で申し訳ないですが、どなたかお願いします。
281デフォルトの名無しさん:2005/09/16(金) 07:46:05
>>280 // 読み込みまではしらね。
for (unsigned ic = 0; ic < readNum; ++ic) {
putchar('0' + (ic + 1) % 10);
}
282デフォルトの名無しさん:2005/09/16(金) 08:04:18
宿題スレ逝け馬鹿
283デフォルトの名無しさん:2005/09/16(金) 08:43:52
>>278
C++知らないとMFCは無理
284デフォルトの名無しさん:2005/09/16(金) 16:46:26
>>280
わかりません。

とだけ書かれても、何がわからないのか、わからないのですが・・・。
285デフォルトの名無しさん:2005/09/16(金) 20:40:59
>>283 >>279
意見ありがとうございます
本読んでC++勉強しようとしているこんな僕でも作れますかね?
合作でサウンドノベル風なのを作ろうと考えているのですが…
286デフォルトの名無しさん:2005/09/16(金) 22:57:58
>>285
MFCはWin32SDKのラッパー+α程度だと思っていたほうがいいです。
MFCはC++なので、C++を全く知らないと無理だけど、C++の簡単なことだけ知っていれば使えます。
MFCはサウンドノベルを作るには適切な選択肢ではないような気がします。
287デフォルトの名無しさん:2005/09/16(金) 23:02:07
WindowsゲームつくるならCでGDIをガリガリ書いた方がいいですかね?
その後DirectXをCでガリガリ書くとか。
288デフォルトの名無しさん:2005/09/16(金) 23:22:56
DirectXはC++でやれよ。たとえガリガリでもいいからさ。
289デフォルトの名無しさん:2005/09/17(土) 02:06:13
CでCOMをやるのは死ねます。
C++でも、気をつけないと、死ねます。

サウンドノベルだったら、もっと他のものを使うことを考えたほうがいいと思うよ。
290デフォルトの名無しさん:2005/09/17(土) 03:32:15
Flashではいけないという理由を思いつけない……
291デフォルトの名無しさん:2005/09/17(土) 03:33:40
重い
292デフォルトの名無しさん:2005/09/17(土) 18:07:15
VisualC++初心者ですがサンプルソースを見て勉強中です。
ポインタについては少しわかってきた程度ですが、ちょっと聞きたいことがありまして。

スコープ::やメンバ選択->について勉強できる良いサイトはありませんか?

いくつか検索してみましたが、なかなか良いサイトが見つからなかったもので・・・
293デフォルトの名無しさん:2005/09/17(土) 18:24:24
>>292
C++スレ行け
294デフォルトの名無しさん:2005/09/17(土) 19:04:10
卒業制作で言語処理プログラム(簡易プログラミング言語みたいの)
を作ろうと思ってるんですが、VCでの開発は可能でしょうか?
VBは少しやっていたのですが、「VBでは無理」、
と言われてしまいまして・・・。
295デフォルトの名無しさん:2005/09/17(土) 19:10:53
VCはVCで作ってます
以上
296デフォルトの名無しさん:2005/09/17(土) 19:24:24
>>294

言語処理系なら開発環境としてUNIXを使用したほうがよいと思う。
UNIX系のツールであるlexとかyaccを使用せずに開発するのは至難の業だから。
297デフォルトの名無しさん:2005/09/17(土) 20:48:56
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);
}
298297(続きです):2005/09/17(土) 20:49:59
という関数を作り、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"ではなく、""となっていました。

どのようにすれば、タブ文字への置換が出来るのでしょうか?
お願いします。
299デフォルトの名無しさん:2005/09/17(土) 21:03:48
「禿本」とは何を指しているのでしょうか?
300デフォルトの名無しさん:2005/09/17(土) 21:32:43
>>292
本屋にいって本を買え。

なんで無料で見れるWebサイトで済まそうとするんだろうねぇ。


>>297
> デバッグをして1行1行見てみたところ、Replace関数の中に入った時点で、*key の中身が"\t"ではなく、""となっていました。
本当?

> strncat(text, rep, strlen(rep)-1);
これが間違いだと思う。
なんでrepから1文字削るの?
"\t"なら1文字削ると""になっちゃうよ。

まぁその他にも、言いたいことはたくさんあるが・・・。
301300:2005/09/17(土) 21:35:44
いちおう言っとくか・・・

あなたの書いたプログラムは、かなり危ないです。
bufが128バイトで足りなくなることがないことを、呼び出し側が保証していますか?
repに""が指定された時、strlen(rep)-1は、-1となり、とんでもないことになりませんか?
置換した結果、textのメモリを越える長さにならないことを、どのように保証しますか?
302デフォルトの名無しさん:2005/09/17(土) 21:38:40
>>297の言うSDKって何??
303デフォルトの名無しさん:2005/09/17(土) 21:50:19
ネタとしか思えんな
ネタに答えてる馬鹿は何者?
304デフォルトの名無しさん:2005/09/17(土) 22:08:54
>>292
目指せプログラマー!
ってホームページがいいんじゃない。
かなり、詳しいよ。
やさしいXXXXXってシリーズよりずっといいと思う。
305デフォルトの名無しさん:2005/09/17(土) 22:19:26
こんばんは、よろしくお願いします。
構造体メンバーから、文字比較をしたいのですが、
どうすればよいのでしょうか。

struct s{
char *a;
char *b;
};

s s1;
s1.a = "";
if(strcmp(s1.a,"")) //この場合trueでない
306デフォルトの名無しさん:2005/09/17(土) 22:22:31
>>305
嫌がらせか?
ここはCスレでもC++スレでもないんだが
307デフォルトの名無しさん:2005/09/17(土) 22:23:00
ちょっと気になったのだが・・・

>>297はネタだとして、strncat(text, rep, strlen(rep)-1);
を strcat(text, rep);
にしてみたんだが、それでも agesageaaabbb となったぞ。なして?
308デフォルトの名無しさん:2005/09/17(土) 22:28:03
>>307
Cスレ行け
309デフォルトの名無しさん:2005/09/17(土) 22:41:14
>>304
> 目指せプログラマー!
> ってホームページ

今ちらっと STL の set のところ見てみたけど、
erase の削除範囲とか lower_bound の説明とか
嘘だらけな気が…。
310デフォルトの名無しさん:2005/09/17(土) 22:42:46
VC使えないやつの嫌がらせだろうか?
311デフォルトの名無しさん:2005/09/17(土) 22:45:57
>>286 >>289
意見毎度ありがとうございます
今度仲間とよく相談してこのまま続けるか考えます
>>286 選択肢とはWIN32APIで作るとかでしょうか?
ほんの2,3ヶ月前に始めたばかりなのでよく分かりません…
すいませんでした
312デフォルトの名無しさん:2005/09/17(土) 22:47:05
>>309
>スコープ::やメンバ選択->について勉強できる良いサイトはありませんか?

すまんね。
って部分だけを見てたんで。
313デフォルトの名無しさん:2005/09/17(土) 22:50:27
>>305です
すみませんでした。
去ります。
314デフォルトの名無しさん:2005/09/17(土) 22:54:55
315デフォルトの名無しさん:2005/09/18(日) 01:35:43
Visual Studio 2003で、標準のコンパイラの代わりにgccを使ってビルドしてみ
たいんですが無理ですか?
316デフォルトの名無しさん:2005/09/18(日) 08:24:49
>>315
カスタムビルドを指定すればいい。
317デフォルトの名無しさん:2005/09/18(日) 19:21:31
>>314
flashで、ということでしょうか…?
とりあえず考えておきます
助言ありがとうございます
318デフォルトの名無しさん:2005/09/18(日) 22:41:54
サウンドノベルだったら、NScripterみたいな専用のゲーム作成ツールを使うのもアリかと。
プログラミングできない人でも、そこそこの物が作れるみたいだし。
自分でプログラミングしたい!ってなら自作してもいいけどね。

って、ム板で言うべきじゃことじゃないかw
319デフォルトの名無しさん:2005/09/19(月) 16:40:07
>>318
ありがとうございます
ただ、部活の製作物として文化祭に出品する予定なので
1から作ってみたいと思います。逃げ道として考えておきます

そもそもこの質問はゲーム製作スレとかでするものでした
スレ違い失礼しました
320デフォルトの名無しさん:2005/09/19(月) 20:26:04
あるソフトのpluginの開発をしています。
複数の人間で作業しているため、workspace以下の内容を同じ設定にしたいと考えています。
(他人のプロジェクトをコピペして設定を変えずに自分のマシンでコンパイル出来るようにするのが目的です)

この開発キットでは
* headerファイル
* objファイル
の2種類のファイルをプロジェクトに追加する必要があります。

同じプロジェクトの設定にするために、
[ツール]→[オプション]→[ディレクトリ]
からインクルードファイルのパスを通すことにより、"headerファイル"は設定を変えることなくコンパイル可能です。

しかし"objファイル"の場合、上記と同様に行うことが出来ません。
現在は"ファイルをプロジェクトに追加"のコマンドを使って"objファイル"のリンクを直してからコンパイルする手間があります。
この手間をなくすにはどういった手法をとるのがいいのでしょう?

開発環境:
OS : windows 2000, windows XP
IDE : Visual C++ 6.0 standard
321デフォルトの名無しさん:2005/09/19(月) 21:18:23
複数の人間で作業しててまともなやつが1人もいないということか
322デフォルトの名無しさん:2005/09/19(月) 23:35:00
>>320
ヒント:相対パス
323デフォルトの名無しさん:2005/09/20(火) 03:54:29
プロジェクトの絶対パスを共通にするという手もあるぞw
324320:2005/09/20(火) 03:58:33
>>322-323
やっぱりそうなりますかね・・・
smartじゃないんで採用したくなかったのですが検討してみます・・・w
325デフォルトの名無しさん:2005/09/20(火) 04:35:42
絶対パスを共通にする場合、
人によってドライブレターが違うので、
1台しかPCがなかろうと、
共有フォルダを設定して、
みなで同じドライブレターでネットワークドライブを設定するといいかも。
326デフォルトの名無しさん:2005/09/20(火) 07:53:21
うへ、ローカルドライブでネットワーク資源を消費する極悪な手法だ。
327デフォルトの名無しさん:2005/09/20(火) 08:36:14
ダミーのソースをプロジェクトに追加
ソースよりobjが新しければ
リビルドしない限りobjは更新されない
328320:2005/09/20(火) 09:10:55
>>327
リビルドできないのはちょっと・・・
329デフォルトの名無しさん:2005/09/20(火) 22:48:16
>>326
だってさー、SUBSTすらも使いこなせない人がいるんよ・・・orz
330デフォルトの名無しさん:2005/09/21(水) 22:20:02
Windows2000インストール出来ない奴いたなぁ
331デフォルトの名無しさん:2005/09/22(木) 00:00:06
なんかみんなで俺の文句言ってる…
332デフォルトの名無しさん:2005/09/22(木) 00:26:06
プログラマのチームに異動してきた人が、
この職場はおかしい。Windows2000のインストールの手順書が存在しない。
と言って、ビックリしたことがあるよ。
333デフォルトの名無しさん:2005/09/22(木) 03:05:39
>>332
そいつに作らせればみんなが幸せになっていんじゃね?
334デフォルトの名無しさん:2005/09/22(木) 21:22:40
とりあえずは幸せになるね。
そいつが1人で黙々と手順書を作るのであれば。
335デフォルトの名無しさん:2005/09/23(金) 02:43:22
マごときが勝手にインストールすんなゴルァ
336デフォルトの名無しさん:2005/09/24(土) 03:59:32
+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 です。
337デフォルトの名無しさん:2005/09/24(土) 05:13:20
#include "../mylib/liba.h"
にするか、プロジェクトの設定でsrcにパスを通してしまうか・・・。
338デフォルトの名無しさん:2005/09/24(土) 11:58:19
>>336
linuxのときのmakefileはどうなってた?
339デフォルトの名無しさん:2005/09/24(土) 13:47:30
>>337
ソースは変更したくなかったので、srcにパスを通したらいけました。ありがとうございました。

が、'fopen' が古い形式として宣言されました。ってwarningが大量発生した。。
さらにstrtofが見つからないってエラーが出たんですが、
VCにはstrtofって無いんでしょうか? 標準ライブラリだと思うんですが。

#M_PIも無いって言いやがる。。
340デフォルトの名無しさん:2005/09/24(土) 13:58:56
>>339
strtod使え
あとM_PI使いたかったら
math.hインクルードする前に
#define _USE_MATH_DEFINES
もしくはオプションであらかじめ定義しておくべし。
341デフォルトの名無しさん:2005/09/24(土) 14:11:21
>>339
C++なら、fopen()はstd::fopen()だからじゃないか?
で、>338
342デフォルトの名無しさん:2005/09/24(土) 14:22:00
わざわざVCでコンパイル必要がなさそうなプログラムだな
gccでもいれた方がいいのに
頭わるそう
343デフォルトの名無しさん:2005/09/24(土) 16:35:42
>>341
それってcstdioですよね? stdio.hインクルードしてるんですが、言われます。
mffwってのを使ってました。

>>342
全くもってその通りなんですが、最近のgccではコンパイルできないので。。
344デフォルトの名無しさん:2005/09/24(土) 16:36:58
mffwって……
なんか、根本的にプロジェクト管理がわかっていない悪寒。
345デフォルトの名無しさん:2005/09/24(土) 16:51:45
最初は自分でmakefile書いてたんですけど、
mffwを使った方が簡潔に出来たのでそうしました。
というかフレームワーク(結局はmakefile)を使うのってそんなに不味かったでしょうか。
346デフォルトの名無しさん:2005/09/24(土) 20:26:03
>>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とかまだそういう程度のプログラム勉強したもんで
348デフォルトの名無しさん:2005/09/26(月) 03:19:10
>>347
それなら、それを買わずに、Cygwinを使えば良かったのに。

スタートメニューからそれっぽい環境変数をセットしてコマンドプロンプトを開くのを選び、
目的のディレクトリに移動し、
cl
ってタイプしてリターン押してみ。
349デフォルトの名無しさん:2005/09/26(月) 05:17:56
とりあえず実行したいということならCtrl + F5もドゾー
350デフォルトの名無しさん:2005/09/26(月) 15:00:54
strtokのデリミタに"(二重の引用符)を使いたい場合はどうすればいいか教えてください。
351デフォルトの名無しさん:2005/09/26(月) 15:38:48
>>350
"\""
strtok()よりsscanf()推奨。
352デフォルトの名無しさん:2005/09/26(月) 16:14:26
>>351

ありがとうございます。
353デフォルトの名無しさん:2005/09/26(月) 16:40:29
ファイル > 新規作成 > ファイルで C++ファイル作成で
Cソース書いたんですが>>349氏の言うCtrl + F5できませんが
どうしてでしょうか
354デフォルトの名無しさん:2005/09/26(月) 17:01:57
>>353
VisualStudioはプロジェクトをこさえないとデバッグはできない。
好きなのを選べ。
・VisualStudioの使い方を覚える。
・コマンドラインからclを使う。
・VisualStudioは諦めてCygwinをインストールして擬似Unix環境を使う。
355デフォルトの名無しさん:2005/09/26(月) 17:03:29
無料版でいいのにわざわざ製品版買ってるくせに
本は買わずに済ませようと思ってるんだろうか?
356デフォルトの名無しさん:2005/09/26(月) 22:22:08
VisualC++.net2003でSTLを使うと
>BSCMAKE: warning BK4503 : .SBR ファイル '.\debug\stdafx.sbr' 中に重大でないエラーがありましたが、無視しました。
って警告が大量に出てくるんだけど、この表示を消すには
{STL|BSCMAKE|そもそもVisualC++}を使わない以外に解決策ないんでしょうか?
357デフォルトの名無しさん:2005/09/26(月) 22:27:46
>>356 自己解決。
コンパイルオプションの/YX"stdafx.h"外したら出なくなりました。
358デフォルトの名無しさん:2005/09/26(月) 23:02:23
テキストファイルから文字列を読み出してきて、
returnでその文字列を返す関数を書いたのですが、
fcloseする直前までは正しい値なのですが、fcloseが動いた途端に文字列が変化してしまいます。
(下に書いたコードでは分かりずらいと思うのですが。。。)

ビルドしたときの警告に「ローカル変数またはテンポラリのアドレスを返します。」っていうのが出ているので、
これが原因だとは思うのですが、解決法が分かりません。
教えていただけないでしょうか。


/** 簡単な流れ **/
char* function()
{
char* szText;
:
:
szText = (テキストから欲しい文字列だけ読んでくる関数) ←ここでは正しく読み込めている。
:
:
fclose(filename); ←ここへくると文字列が変化してしまう。
return szText; ←正しくない文字列が返る
}

359デフォルトの名無しさん:2005/09/26(月) 23:11:36
>>358
その警告の対象になっている関数(おそらく(テキストから欲しい文字列だけ読んでくる関数)だと思われる)の
return 〜;をreturn strdup(〜);にしてみろ。

後で要らなくなったらfree()しろよ。
360デフォルトの名無しさん:2005/09/26(月) 23:17:28
>>359

すばやいレスありがとうございます!
無事に解決しました。
361359:2005/09/26(月) 23:29:57
>>360
言い忘れたが、これは応急策だからな。
362デフォルトの名無しさん:2005/09/26(月) 23:35:43
割れ鍋に閉じ蓋っていうやつですね
363358:2005/09/26(月) 23:43:59
>>361

あ、そうなんですか。
やっぱりもっとしっかり勉強して根本から解決しなければならないですよね。
もう少し調べてみます。
364デフォルトの名無しさん:2005/09/27(火) 00:14:56
質問です。A.cpp から、B.h と C.h という二つのヘッダファイルをインクルードしてます。

B.h で 関数D のプロトタイプ宣言を行うと問題はないのですが、
B.h に書かずC.h に記述すると”予期せぬEOF〜”とエラーが出てしまうという、
変なバグで困ってます。

関数D を記述したいのは C.h の方なのでどうにか修正したいのですが、
この場合、エラーの原因にはどのようなものがあるのでしょうか?
365デフォルトの名無しさん:2005/09/27(火) 00:26:25
リビルド
366デフォルトの名無しさん:2005/09/27(火) 00:46:14
超初心者です、というより触った事も無い自分ですが質問です
自分でプログラムしてゲームを作りたいと思うのですが、
DirectXを使ってゲームを作る場合はC++が良いなど聞くのですが
BASICよりも難しいと聞きます、

それなりにしっかりしたゲームのプログラムを作れるようになるまでに、
どのくらいの努力と年月が掛かるのでしょうか?
(ちなみに作りたいゲームは2Dのシューティングなのですが、DirectXを使ってみたいのです
367デフォルトの名無しさん:2005/09/27(火) 02:25:26
>>366
ゲーム製作板に行った方がまともな回答が来ると思うのだが・・・
結論から言うと、人それぞれ。
・1日に確保できる時間
・プログラミングのセンス、理解力
・やる気
この辺に個人差があるから何とも言えない。

概算で適当に答えておくと
1日3〜4時間ずつ勉強していったとして、
C++だけでも、文法をそれなりに理解するのに1年は必要。

VC++等でWinアプリを作りながらやっていったとしても、
シンプルな2Dのゲームを作れるようになるまでに、
最低で2〜3年くらいはかかると思う。
(プログラムの構成や処理の組み立て方を身に着けるのは本当に時間がかかる

DirectXはさらにそこから半年〜1年くらいかかると予想。
#まあ、たぶんもっと時間かかるだろうけど。
368デフォルトの名無しさん:2005/09/27(火) 10:02:16
>>366
学生時代に作ったけど、
1ヶ月目 C言語の配列ぐらいまでやった。対戦専用将棋作った
2ヶ月目 ポインタ・ファイル入出力ぐらいまで。テトリス作った
3ヶ月目 windowsプログラムで簡単なツール。圧縮解凍とか
4ヶ月目 DirectXで絵を適当に動かしたり勉強
5ヶ月目 ゲーム製作開始(シューティング)
7ヶ月目 ショボイけどとりあえず完成

な感じだった。他人は知らんが、自分はこんなもん。
369デフォルトの名無しさん:2005/09/27(火) 11:16:11
>>366
2DSTGは5番目に作るゲームだよ

GamDevPukiWiki - 段階的学習!
http://gamdev.org/w/?%5B%5B%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%A1%AA%5D%5D
370デフォルトの名無しさん:2005/09/27(火) 12:50:09
winampとかみたいなスキン切替アプリをつくろうかと思ってんだけど、
そういうのの骨組みは普通のGUIで画像張っただけなの?
なんか別のやり方があるの?
371デフォルトの名無しさん:2005/09/27(火) 12:57:13
WMPの場合はSDK出てたな
372デフォルトの名無しさん:2005/09/28(水) 16:11:23
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で書いています。
374デフォルトの名無しさん:2005/09/28(水) 21:47:58
>>373
全部可能。
375373:2005/09/28(水) 22:30:45
可能ですか。
どうすればよいのでしょうか??
教えていただけないでしょうか?
376デフォルトの名無しさん:2005/09/28(水) 23:32:10
>>375
ファイル名は連番だろ。
ofstream使ってバッチファイルを書き出してそれを最後に実行させるプログラムを作ればいいじゃないか。
377375:2005/09/28(水) 23:41:56
いや、連番ではないです。
373のは少しでも分かりやすくしようと思って書いただけで。
誤解を招く書き方でした。すみません。

実際のファイル名は[西暦月日時間_実験条件.txt]です。
連番ならばバッチファイルでも全然楽なんですけどね。
378デフォルトの名無しさん:2005/09/29(木) 14:08:23
>>377
それでもFindFirstFile〜FindNextFileを使えばフォルダ内のファイルを列挙できる。
それぞれostringstreamやら_snprintfやらでコマンドライン文字列を作って、systemで実行させればいい。
379デフォルトの名無しさん:2005/09/29(木) 15:17:53
>>375
スレ違いになるのでみんな言わないんだろうし、条件や要求にもよるが、
こんな場合、少し気の利いた奴なら普通、.batスクリプトなどで for文と
メタキャラクタでのループを書いて、それだけでお終いだよねぇ……
380デフォルトの名無しさん:2005/09/29(木) 15:32:02
APIでやる
Cの標準関数でやる
その他(systemやバッチで手抜き)

下2つはスレ違い
381デフォルトの名無しさん:2005/10/01(土) 04:39:48
俺は擦れ違いだー!\(*o*)/
↓こいつモナー
382デフォルトの名無しさん:2005/10/01(土) 10:06:49
くだすれってなんですか?
383デフォルトの名無しさん:2005/10/01(土) 10:23:14
>>382
くだらないスレ
つまりsageるなということ。
384デフォルトの名無しさん:2005/10/17(月) 00:09:04
Visualスタジオ.net the spokeをXPSP1に入れています。
DOS窓を使って、*.cから直接実行ファイルを書き出すことは可能ですか?
gcc test.c -o test.out
みたいな感じです。
385デフォルトの名無しさん:2005/10/17(月) 07:21:48
できる
386デフォルトの名無しさん:2005/10/17(月) 12:35:25
>>385
専用のDOS窓でclするんですね。
ありがとうございました。
387デフォルトの名無しさん:2005/10/17(月) 16:35:15
VC2002.NETなのですが、複数のプロジェクトをまとめて管理している場合に、
ダイアログボックスのコントロールにメッセージ処理関数とか追加すると、
意図しないプロジェクトに関数が追加されたりして、
それだけでコンパイルエラーになったりして困っています。
これってバグですよね?
対応方法とか修正パッチとかあるのでしょうか?
教えてください。SP1は既にあてています。
388デフォルトの名無しさん:2005/10/17(月) 17:41:39
いるよなぁ。絶対に自分のせいだと認めない奴。
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
>>388
誰に言ってんの?
391デフォルトの名無しさん:2005/10/17(月) 18:24:41
Visual C++ で gcc の strip みたいなコマンドはありますか?
392デフォルトの名無しさん:2005/10/17(月) 18:24:54
>>389
F7押せ
393デフォルトの名無しさん:2005/10/17(月) 18:26:06
>>388は高々、単プロジェクトしか作れないから、
言ってる意味がわからないんだと思う。
394デフォルトの名無しさん:2005/10/17(月) 18:27:40
コマンドって何?
ゲームかなんかの話?
395389:2005/10/17(月) 18:29:18
xxx.exe - エラー 1、警告 0
と出てしまいます。

ちなみにxxx.cをMicrosoft Visual C++ 6.0のショートカットにドラッグ&ドロップしました。
何かxxx.cに問題があるんですね。

ありがとうございました。
396デフォルトの名無しさん:2005/10/17(月) 18:32:20
>>395
ファイル->新規作成でプロジェクト作って
プロジェクト->プロジェクトへ追加->ファイルでxxx.cを読み込ませる
397デフォルトの名無しさん:2005/10/17(月) 18:36:54
そんな適当な説明じゃかえって混乱するだろ
398デフォルトの名無しさん:2005/10/17(月) 18:50:00
わざわざプロジェクト作らなくても
>>395のやり方でビルドしたら
デフォルトのワークスペースができるね
399389: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にするようなことはできないでしょうか?
400デフォルトの名無しさん:2005/10/17(月) 19:00:15
ファイルフォーマットも提示されてないのにどうやってアドバイスすればいいんだろうな。
エスパー出番です。
401デフォルトの名無しさん:2005/10/17(月) 19:04:18
>>399
はじめに書き込まれているファイルの時間が
GMTなので9時間ずれているんだと思う

あと、その手の質問はこっち向き↓
C言語なら俺に聞け! Part 115@プログラム
http://pc8.2ch.net/test/read.cgi/tech/1127737437/l50
402389:2005/10/17(月) 19:08:38
皆さん失礼しました。
>>401
感謝です。
403デフォルトの名無しさん:2005/10/17(月) 19:10:44
>>389
補正はどうやってでも可能ではある(としか助言しようが無い)が、
ほんとにズレてんのか、あるいは標準時として処理する必要は無いのか、
なんてのも、わからないままなんだろうなあ、、、
404デフォルトの名無しさん:2005/10/17(月) 19:29:52
>>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を持っている
という状況で同じプロジェクトファイルを使えないか、ということです。

自分ひとりでテストできないのでまだ何のテストもできていません。

よろしくお願いします。
408407:2005/10/18(火) 19:19:22
すみません、解決しました(バージョン合わせることができました)。

ただし疑問としてはまだ持っていますので、教えて頂けるとうれしいです。
409デフォルトの名無しさん:2005/10/18(火) 19:39:08
なにこのエスパー
410デフォルトの名無しさん:2005/10/18(火) 22:33:02
VS.net 2002 で、WinPcap を使って、簡単なキャプチャを作りました。
pcap_handler の中でパケット毎に malloc を実行したら NULL を返してきました。
malloc() が NULL 返したとき、どうすればいいでしょうか。何か間違ってますか?
# 何度チェックしても NULL...。 Windows 再起動しても NULL...。
411デフォルトの名無しさん:2005/10/18(火) 22:42:39
>>410
引数の値がありえないほどの巨大な大きさになっていないか?
412410:2005/10/19(水) 00:36:49
帰宅しました。帰宅した環境でコンパイルしてもNULLでした。

>411
ありがとうございます。sizeof(構造体)で、28バイトです。
ソース変えながらいろいろ試してみます。
413デフォルトの名無しさん:2005/10/19(水) 13:10:38
>>410
その程度なら確保されるはずだが。

・初期化してない変数で確保したいサイズを渡している。
・mallocから受け取った変数がBuffer over writeなバグに侵食された。

と予測をたててみる。
414デフォルトの名無しさん:2005/10/19(水) 16:00:21
>>410
1. メモリリークにより、メモリを食い尽くしていないか?
パフォーマンスカウンタ等でチェックする

2. Cランタイムの初期化は済んでいるか?
済んでいなければmallocは使えない。
初期化をするかCランタイムを使わず、
Win32APIを直接使う。HeapAllocとか。
415デフォルトの名無しさん:2005/10/19(水) 21:49:17
>>412
とりあえずmallocの行を晒してみろ。
416414: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」というプロジェクトは
選択時はセーフなのですが
プロパティを見ようとすると同様に強制再起動します。

これの解決策をご教授くださいませ・・・
418デフォルトの名無しさん:2005/10/21(金) 22:47:39
PC自体が腐っているに一票。
419デフォルトの名無しさん:2005/10/22(土) 01:00:54
>>417
たったそれだけの情報で、どうやって答えればいいのだ?
420417:2005/10/22(土) 02:03:38
すみません。
これだけ示せば十分かと思ったので・・・
何を示せばいいのかもよくわかりません。
421デフォルトの名無しさん:2005/10/22(土) 03:25:46
VSSみたいなリビジョン管理ツールとか入ってる?
422デフォルトの名無しさん:2005/10/22(土) 04:11:34
VSSだけはやめとけ
423デフォルトの名無しさん:2005/10/22(土) 04:16:15
アカデミック版にVSS入れるなんて聞いたことないぞ
424デフォルトの名無しさん:2005/10/22(土) 09:33:34
VC++にソースファイル名を変更する機能はないでしょうか?
今までは、間違ったファイル名をつけてしまった場合、プロジェクトから一度削除して、名前を変更した後に再度プロジェクトに追加していたんですが、面倒なので…。
ソールファイル名変更のリファクタリング機能はVC++にはないのでしょうか(´・ω・`)
425デフォルトの名無しさん:2005/10/22(土) 11:03:54
>>424
プロジェクトファイルを編集してファイル名を変更。
それさえ面倒なら、それをするスクリプトを用意する。
426424:2005/10/22(土) 14:18:10
>>425
プロジェクトファイルを直接編集する手がありましたか(^^;
それが一番手軽そうですね。
ありがとうございます。
427デフォルトの名無しさん:2005/10/23(日) 01:14:18
それはそれでめんどくさいんだけどね・・・
428勉強中の名無しさん:2005/10/23(日) 11:31:38
「猫でもわかるWindowsプログラミング」で勉強中です
Googleでもヘルプでもわからなかったので

Visual C++ .NET 2003 standard

ファイル−新規作成−プロジェクト で Win32プロジェクトで勝手にできあがったファイルに
コード追加して勉強してたんですが OPENFILENAME 構造体のところでつまずきました。
勝手にできあがったsample.cppのグローバル変数のところに

// グローバル変数 :
HINSTANCE hInst;
TCHAR szTitle[MAX_LOADSTRING];
TCHAR szWindowClass[MAX_LOADSTRING];
OPENFILENAME ofn;                 // ためしにここに追加した。
429勉強中の名無しさん:2005/10/23(日) 11:36:02
でも、
−−−−−−−−−
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
「最新版の有無」もできないし、再インストールしてみますけども・・・
431デフォルトの名無しさん:2005/10/23(日) 11:43:54
Visual C++ 2005っていつリリースなんですかね。
もうじき2006になっちゃいますが・・・。
432デフォルトの名無しさん:2005/10/23(日) 12:06:03
>>429
それコモンダイアログだからこれが必要

#include <commdlg.h>
433勉強中の名無しさん:2005/10/23(日) 12:14:45
>>432さんありがとうございます m(_ _)m
出来ました。消すまいに確認してよかった
空のプロジェクトで作成したときには
#include <commdlg.h>
がなくても
#include <windows.h>
#include <windowsx.h>
だけで、出来たのが気になりますが...
「Microsoftだから」で納得することにします。
434デフォルトの名無しさん:2005/10/23(日) 12:48:45
>>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のさわりぐらい知ってからと思って勉強してましたが、危うく挫折するところでした。
とりあえずは、超初心者から初心者目指してがんばります。
436410: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
です。

対処法などを教えて下さい。お願いします。
438デフォルトの名無しさん:2005/10/23(日) 17:21:26
それ入れないと何か困ることがあるの?
439437:2005/10/23(日) 17:25:36
>>438
必須コンポーネットと『お使いになる前に』という冊子に書かれていたので。
これを入れないとダメなんですよね?
440デフォルトの名無しさん:2005/10/23(日) 17:48:37
>>437
2003買うっつうことは、当分2005はでないの?
2005年内は無理か?
441デフォルトの名無しさん:2005/10/23(日) 18:24:50
バグが多いのに2005が出てもらってもなぁ。。。
442デフォルトの名無しさん:2005/10/23(日) 19:00:54
開発ツールは周りに合わせるのが一番・・・

最新の技術を追っかけたい人以外は。
443デフォルトの名無しさん:2005/10/23(日) 21:57:50
たとえば2006年発売になっても2005というバージョン名で
発売するのかな。2005中止にすりゃいいのに。どうせ発売後すぐに
2006とか出されるよりかは、万全にして出して欲しいな。
444デフォルトの名無しさん:2005/10/23(日) 22:26:39
>>437
Windows XPのCDがなければ、CDの代わりにC:\i386フォルダを指定してみろ。
445デフォルトの名無しさん:2005/10/23(日) 22:55:15
質問です。
VC++をやってるのですが、
ソースの上のところに、

class XXXX;   (XXXXは、他のソースで定義されているクラス名)

と宣言してある場合、どんな意味があるのでしょうか?
446デフォルトの名無しさん:2005/10/24(月) 00:05:46
>>445
前方宣言。
とりあえずそういう名前のクラスがあることだけを示す。

そのクラスを引数に取る関数の宣言や、そのクラスへのポインタ・参照をメンバに持つクラスなどの宣言では、
クラスの宣言は要らず前方宣言だけあれば良いのでヘッダ間の依存を減らせる。
(クラスの宣言はそれらの定義時には必要)
447デフォルトの名無しさん:2005/10/25(火) 16:20:20
質問です。XP、.NET 2003 です。

プロジェクト hoge を作成した場合、ビルドしてできあがった実行ファイルは hoge.exe となりますが、
プロジェクト名はそのままで、出力する実行ファイルの名前を変える方法はありますでしょうか。
現在は、ビルドするたびにファイル名を変えて対処しています。

よろしくお願いします。
448デフォルトの名無しさん:2005/10/25(火) 16:42:43
プロジェクトのプロパティ

リンカ

全般

出力ファイル
449447:2005/10/25(火) 17:07:30
プロパティ見てたのに見つけられなかった俺って・・・orz
ありがとうございました。
450デフォルトの名無しさん:2005/10/25(火) 18:22:26
Visual C++ なんで、unsigned longとかを
typedefしてULONG とか ULONG_PTRとかにするんだ?
構造体ならわからんでもないが
関数の戻り値で混乱しそうだよ(TT; わざわざキャストしたりしてたのに結局同じじゃないか
ただでさえ構造体多くて混乱しそうなのにぃ
451デフォルトの名無しさん:2005/10/25(火) 18:29:19
根本的にわかってないみたいだな。
452デフォルトの名無しさん:2005/10/25(火) 21:31:35
>>450
ULONGはunsigned longよりもタイプ数が少なくすむ。
ULONG_PTRは64bit移行準備用。
Win32のポインタは32bit、Win64のポインタは64ビット。
ULONG_PTRは64bit VCではポインタと同じサイズの64bit符号無し整数型のtypedefになるようになっている。 
ポインタをunsigned longにキャストしていると後で対応が面倒になるからULONG_PTRを使おうということ。
453デフォルトの名無しさん:2005/10/25(火) 21:47:02
>>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で取得してきたフォルダ下で、
特定の拡張子のファイルをフルパスで取得する方法をご教授ください。
455デフォルトの名無しさん:2005/10/26(水) 00:48:43
このスレでは初めて発言するんだが、
>>446のおかげで悩みが一発で解消した。
自作のウィンドウクラスがコンパイル通らなくて悩んでたんだが、おかげで無事完了できた。
多謝!!
456デフォルトの名無しさん:2005/10/26(水) 05:11:43
>>454
まず先に小言を言わせてくれ。

問題の切り分けくらい、やってから、質問してくれ。
この問題には、SHBrowseForFolderは一切関係ない。

で、本題だが。
いきなり答えを書いても学習しないだろうから、ヒントだけにしておく。

MSDNライブラリで、
・CFileFindクラスの概要と使い方の例
・GetFilePath
・FindNextFile
この3つのページを良く読めばすぐにわかる。5秒でわかる。

ていうか、マニュアルも読まずにコーディングするなよ・・・勘弁してね。
いや、CFileFindの仕様が一風変っているのもあるんだけど、
あれはあれで、他のものよりも良い仕様だとは思うんよ・・・。
457デフォルトの名無しさん:2005/10/26(水) 09:31:45
VC++2003.Netなんですが、
プロジェクトの中にフォルダを作って小分けにしてますが、
一旦ソリューションを閉じて開きなおすと、ソリューションエクスプローラ内で
縮小表示にしてあったフォルダが勝手に展開されて、
非常に鬱陶しいです(ファイル数が多いので)
これを抑止する方法はありませんか?

・・・と思ったら(一応)解決した・・・

要するに、開いてるドキュメントを含むフォルダは勝手に開いちゃうんだな。
それもちょっと鬱陶しい動作だけど。
458454:2005/10/27(木) 01:34:59
>456

SHBrowseForFolderが別問題だってのは分かってたんですけどね。
自分の状況を出来るだけ詳しく説明しようとしたら書き方がおかしくなってしまいました。

で、今日456さんのレスを見る前にMSDNを見てたら1つ気づいたことがあって。
俺、CFileクラスのGetFilePathを見てたんですよ。
だからCFileFindクラスのGetFilePathを見てみたらFindNextFileを呼び出した後、って書いてあるじゃないっすか。
俺がアホでした。

というわけで、問題は無事に解決しました。
後はどう作り込んでいくかです。

あ、あとマニュアルについては。。。
うちの大学の研究室(電力系です)って結構いい加減なんですよね。。。
数年前の大掃除で捨てたかも、とかいわれる始末。。。
紙ベースのマニュアルがあるのかどうかも知らない状態なもんで。
459デフォルトの名無しさん:2005/10/27(木) 05:42:20
マニュアル = MSDN
だと思うけど・・・
紙ベースのマニュアルなんて必要はないでしょ

MSDNインストールしてねーのか?
460デフォルトの名無しさん:2005/10/27(木) 07:20:20
学校の試験じゃないんだから、記憶力なんていらない。
資料を見ながらやっていいんだよ。

というか、
自分の記憶や予想に頼ったコーディングはしてはいけない。
トラブルがなくても、マニュアルで確認しつつコーディングするくらいでちょうど良い。
461デフォルトの名無しさん:2005/10/27(木) 10:51:22
CTreeCtrlのアイテムそれぞれに対して
CWnd::EnableWindow(...)
関数のような、使用許可・不許可の設定を行うことは可能ですか?

環境
* WindowsXP
* Visual C++ 6.0
462デフォルトの名無しさん:2005/10/27(木) 16:21:42
皆さんは、オブジェクト指向をどのような考え方を導入して
取り入れて設計していますか?
クラス設計や関連などの設計の一端のお話など聞かせていただければと。。。
463デフォルトの名無しさん:2005/10/27(木) 18:19:58
>>462
その話題は宗教論争の元になるから
専用のスレにいって聞いてくれると助かる
464デフォルトの名無しさん:2005/10/27(木) 18:25:57
宗教論争ですか。。。
有用な設計技術なら積極的にアプローチするのもいいと思ったのですが、
宗教論争に恣意的に巻き込もうとする視野の狭い技術者が
いまだに多いと言うことのあらわれなのでしょうかね。
他のスレあたってにます。失礼致します。
465デフォルトの名無しさん:2005/10/27(木) 18:39:56
スレの選択間違えるアホにクラス設計できるかよ
466デフォルトの名無しさん:2005/10/27(木) 18:57:36
そうやって煽るヤシはC++でさえも使えないのが多いってさ。
467デフォルトの名無しさん:2005/10/27(木) 18:59:08
クラス設計をしたこともない人間が
こんなスレでいきがってますよーwww
468デフォルトの名無しさん:2005/10/27(木) 19:01:02
>>465って、Visual C++使ってるってだけで、
クラス設計だのオブジェクト指向だのの使い手だと
思い込んでいるんだと思う。
469デフォルトの名無しさん:2005/10/27(木) 19:03:41
ここはオブジェクト指向とかクラス設計とか抽象的な話をする場所じゃないから。
VC使って具体的に実装するレベルのスレ
470デフォルトの名無しさん:2005/10/27(木) 19:24:32
オブジェクト指向なんて使えなくても実装してるクソグラマーは
たくさんいるから気にすんな。
471461:2005/10/27(木) 21:18:27
再度よろしくお願いします
472デフォルトの名無しさん:2005/10/27(木) 21:57:18
>>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コントロールなんたらやら、実にいろいろな種類があります。
こんなにいろいろあるのに、ほとんど使っていない自分。
なんかものすごくもったいない気がしています。
このまま一生使わないのかな。。。と。
それぞれ他のプロジェクトのことも知りたいのですし、
もしかしたら他のプロジェクトと組み合わせることで、
もっと効率的に早く仕事が出来たり、新しい技術を身に付けられたり
と漠然と考えているのですが、実際にいろいろ使っている方たちは、
どのようなきっかけで使うようになったのでしょう。
また、その時の勉強方法など、どのように苦労されてものにされましたか?

わかりにくい質問で申し訳ございません。
477デフォルトの名無しさん:2005/10/31(月) 22:01:59
使う必要性が出て来たら使えばいいよ。
それがきっかけになる。それまでは自分が
出来るもので技術を磨いておけば良い。
478デフォルトの名無しさん:2005/10/31(月) 22:06:51
ただ、あえて言うなら、MSDNのサンプルをビルドしまくって
動かしてみることだな。そうすると、こういうコントロールは
AvctiveXを使っているのか、とか、そういうのが分かるようになる。
そこで何かひらめいたら自分のアプリで応用できないか
考える。
479476:2005/10/31(月) 22:45:55
そうですね。色々試してみることにします。
どうも。
480デフォルトの名無しさん:2005/10/31(月) 23:24:35
>>479
ていうか、あなたニセモノですけどサンクスw
481デフォルトの名無しさん:2005/10/31(月) 23:31:17
>>475
ディスクの容量に余裕があって、あんたが書き込みできるディレクトリでビルドすればいいと思うよ。
482デフォルトの名無しさん:2005/11/01(火) 01:48:53
>>475
ビルド対象のexeが実行中の可能性もある。タスクマネージャでも見れ。
483デフォルトの名無しさん:2005/11/01(火) 13:14:16
>>482
EXEが実行中なら、別のエラーが出ると思う。

>>475
プログラムデータベースというのは、拡張子pdbのファイルね。
デバッグのためのシンボル情報等々が格納されるファイルです。

エラーメッセージに書かれていることに対してチェックして、その結果くらい書こうよ。

・まずは、そのディレクトリにファイルを書きこむことができるかどうか確認する。その結果は?
・ディスク容量が十分にあることを確認する。その結果は?
・パスが有効であることを確認する。その結果は?
・十分な特権があることを確認する。その結果は?
それを確認してすべて、OKだった、ということを書かないと、誰も相手にしてくれないよ。
484デフォルトの名無しさん:2005/11/01(火) 13:57:05
たぶんデバッグ中に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
ここに晒したくなった

この会社辞めようと思ったソースコード#12
http://pc8.2ch.net/test/read.cgi/prog/1125979700/
488デフォルトの名無しさん:2005/11/01(火) 21:36:31
486
事故解決しました
489デフォルトの名無しさん:2005/11/01(火) 23:54:05
>>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
デバッグを開始できません
(中略)
アクセスが拒否されました

って出るのですがどうしたら解決できますか?
ちなみに「デバッグなしで開始」とすれば一応プログラムは正常に走ります。
491デフォルトの名無しさん:2005/11/02(水) 12:40:21
>>490
デバッグする権限がないのだと思う。

貴方はローカルのAdministratorsグループに入っていますか?
492デフォルトの名無しさん:2005/11/02(水) 13:35:38
>>486
リファクタリングしなさい
493デフォルトの名無しさん:2005/11/02(水) 20:42:57
>>490-491
AdmistratorsでなくともDebugger Usersに入れば十分。
494デフォルトの名無しさん:2005/11/03(木) 04:43:11
誘導されてきました。
エディタ等が入ってないPCで
Visual C++で作られた dllファイルに一行追加したいんだけど、
サクラを入れてみたけど、文字化けで指定のところが編集できませんでした。
なにで編集すれば文字化け解消できますか?
495デフォルトの名無しさん:2005/11/03(木) 07:36:32
むり。できるが時間がかかる。
496デフォルトの名無しさん:2005/11/03(木) 08:09:19
>>494
バイナリエディタ

そもそもなんでここに誘導されたかわからない。
497Y-D:2005/11/03(木) 09:32:05
関数内で static int a; と宣言し、
デバッグウィンドウのウォッチで
デバッグ中に a を参照しようとしても
シンボル "a" が見つかりません と表示されます。


どなたか a を参照する方法を教えてください。

VCは6.0です。
498デフォルトの名無しさん:2005/11/03(木) 11:45:14
int b=a;で可?
499Y-D:2005/11/03(木) 18:48:54
>498
可です。
あと、static でも関数の外で宣言した時は 可です。
500デフォルトの名無しさん:2005/11/03(木) 21:51:44
>>499
アセンブリ出力を見て、そのstatic変数につけられた名前を使うとか。
つーか、配置されたアドレスを得てそこを見ればいい気も。
501494:2005/11/04(金) 02:43:35
>>494 さんありがとうございます。
バイナリエディタでできそうですが、
2ビットの頭の私には
16進数は無理っぽいです。今日早めに出勤したので
会社のPCで片付けました。
今後のためにVisual C++は1台のライセンスでノートに入れたらだめですか?
502494:2005/11/04(金) 02:45:00
>>496
でした。
503デフォルトの名無しさん:2005/11/04(金) 02:48:26
グローバルフックで、キーボードをフックしようとしたのですが、対象のプログラムのウィンドウがアクティブじゃないと
フックできません。

現在、DLLファイルにフックする処理を書き出しています。ローカルフックはできているようです。
フックのインストールは以下のように記述しています。

m_hHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardProc, GetDllInstance(), 0);

#GetDllInstance()の戻り値はDllMainの第1引数です。

どのようにしたらグローバルフックできますか?
環境はVC++.net 2003です。

#http://support.microsoft.com/default.aspx?scid=kb;ja;318804#XSLTH3133121121120121120120
#あたりも少し気になっていますが。
504デフォルトの名無しさん:2005/11/04(金) 11:09:08
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をさしてるんでしょうか?
505デフォルトの名無しさん:2005/11/04(金) 11:14:12
v.begin()+1;
じゃなくて
v.begin();
でした。

やってみたらイテレータを代入したあとで要素の追加をしたらイテレータの指す場所が変わってしまうんですが、要素を追加してもイテレータを保存しておく方法ないですか?
506デフォルトの名無しさん:2005/11/04(金) 12:00:18
>>501
> 今後のためにVisual C++は1台のライセンスでノートに入れたらだめですか?

1台用のライセンスなら、2台に入れたらダメだろう。
ライセンスの内容をチェックしてみ。1台用ではなく1人用かもしれないから。
507デフォルトの名無しさん:2005/11/04(金) 12:02:21
>>505
ない。
508507:2005/11/04(金) 12:06:10
というだけじゃ冷たいか。

そういう場合には、イテレータではなく、atやoperator[]を使えばいい。


というか、イテレータが何者か、勉強してから使わないと、痛い目にあうよ。
509デフォルトの名無しさん:2005/11/04(金) 12:11:12
>>504
vectorへの要素の追加で、それまでに内部的に確保していたメモリでは足りなくなったら
新たに必要分を確保しないといけない。たいてい、これは「新領域確保→コピー→
旧領域解放」となる。
vectorでないコンテナの場合は、要素の追加でソートが発生するかもしれない。
以上から、要素の追加・削除があった場合は、期待したとおり動作するとは限らない。
従って、イテレータを保存しておいても意味のある結果は得られない。

ただし、vectorの実装が「要求された要素数の倍だけ、新たに確保する」場合、
つまり例えばvector<int> v(100);のときなら内部的に200まで確保される場合、
the_iteratorは100〜199個までの要素の追加では変化しないかもしれない。
コンパイラのバージョン変更で動作しなくなる危険はあるけど。
510デフォルトの名無しさん:2005/11/04(金) 14:31:18
構造体で
●●->
って打つとメンバの候補でてきますよね。
あれが更新されなくなってしまって(古いの
がでる)。
どうしたらなおりますかね?
511デフォルトの名無しさん:2005/11/04(金) 14:44:51
Intellisenseはマクロ使うと機能しなくなる場合あり。
プロジェクトフォルダ内の●●.ncbを一旦削除すると直る可能性もある。
512デフォルトの名無しさん:2005/11/04(金) 14:54:40
治りました!
ありがとうございます!!!!!!
513デフォルトの名無しさん:2005/11/04(金) 16:04:20
STLはよそでやれ
514デフォルトの名無しさん:2005/11/04(金) 16:19:19
>>505
イテレータを無効にしたくないならstd::listでも使えば?
515デフォルトの名無しさん:2005/11/04(金) 16:50:45
【C++】STL(Standard Template Library)相談室 4
http://pc8.2ch.net/test/read.cgi/tech/1130680264/

C++相談室 part44
http://pc8.2ch.net/test/read.cgi/tech/1128512737/

【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/
516デフォルトの名無しさん:2005/11/04(金) 17:06:07
ここも超初心者スレなんだけどなー。
517デフォルトの名無しさん:2005/11/04(金) 17:13:11
コンパイラはライブラリ(作成したやつ)を開けません(fatal error),と蹴られました。
エラーメッセージをダブルクリックしてもプログラムのある行に飛ばないのですが
ライブラリはどのように指定したらいいのでしょうか?
518デフォルトの名無しさん:2005/11/04(金) 17:23:25
簡単にみつかるはずだけど
519デフォルトの名無しさん:2005/11/04(金) 17:48:59
Visual Studio 6.0で、ファイルをコンパイルすると
fatal error インクルードファイルがオープンできません。
'ntddndis.h' : No such file or directory というエラーが
でてきます。このファイル自体は存在しており、コンパイルを
したソースのフォルダにntddndis.hを入れても、エラーが消えません。
何が原因なのでしょうか?
520デフォルトの名無しさん:2005/11/04(金) 18:26:14
プロジェクトに追加してないとか
521デフォルトの名無しさん:2005/11/04(金) 18:29:01
プロジェクトには追加されていました。
Visula Studio 2003 の時は、このようなエラーはでなかった
です。
522デフォルトの名無しさん:2005/11/04(金) 18:55:24
VC++7.1(2003.net)を使っています。

Cの時に使っていた
#define printd(...) { printf(__VA_ARGS__); }
という感じの printf の置き換えマクロがあるんですが、
... の部分が予期せぬ文字列が・・というエラーが、
__VA_ARGS__に至っては定義されていない識別子、というエラーが出て
コンパイルが通りません。

VC++では可変長引数のマクロは使えないのでしょうか?
523デフォルトの名無しさん:2005/11/04(金) 19:03:22
522の、Cの時、は別なコンパイラっていう方が正しいですね。
ぐぐってみたりしたんですが、VC++では使えないマクロのようですね・・
なんかちょっとガッカリ。

解決してませんが、自己解決ってことで。
お邪魔しました。
524デフォルトの名無しさん:2005/11/04(金) 19:05:30
それはCの標準のマクロなのか?
Cスレにでも行って確認してこい
525デフォルトの名無しさん:2005/11/04(金) 19:19:31
C99から定義されてるらしいです。> __VA_ARGS__
CWでは使えたんですがどうも使えないVC++が少数派っぽいです。
VC++用に書式が変わっちゃうのも癪なんですが、これはしょうが無いのかなぁ・・

まぁIDEのアウトプットにはprintfで出せないので書き直さないといけないですけど。
526デフォルトの名無しさん:2005/11/04(金) 20:44:02
VC++はC99を部分的にしかサポートしていない。
527デフォルトの名無しさん:2005/11/04(金) 20:46:57
C++のサポートと被ってる部分があるだけでC99なんてまったく眼中にないだろ
528デフォルトの名無しさん:2005/11/04(金) 21:08:29
ほかにもlong longと(<stdint.h>はないけれど)intptr_t/uintptr_tはあるし、
構造体の最後のメンバが配列のときその要素数を省略できる機能も独自拡張として使える。
529デフォルトの名無しさん:2005/11/05(土) 01:31:08
今、マルチスレッドのネットワークアプリを作ろうと思っています。

vc使ってデバッグをしているのですが、よくOSごとフリーズしてしまって
リセット→再起動の繰り返しで困っています。

具具って見た結果、コントロールパネルから言語設定をいじってみると
直る可能性があるということを知りましたので、その設定どおりに
設定してみましたが、なんら変わりません。

なにかほかに原因があるのでしょうか?
530デフォルトの名無しさん:2005/11/05(土) 15:23:11
OS再インスコはしたか
531デフォルトの名無しさん:2005/11/05(土) 16:02:59
>>529
リソースを食いつぶしているんじゃないか?
532デフォルトの名無しさん:2005/11/05(土) 16:24:35
急に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));
}
となっています。
533デフォルトの名無しさん:2005/11/05(土) 16:38:05
リソースリークしていないかチェックしる
534デフォルトの名無しさん:2005/11/05(土) 20:04:36
なにげに2005って英語版は完成してたんだね。
買った人いる?
535デフォルトの名無しさん:2005/11/06(日) 09:09:17
http クライアントを作りたいのですが、
DelphiにおけるIndyコンポーネントのようなライブラリはあるでしょうか?
536デフォルトの名無しさん:2005/11/06(日) 09:10:38
なんすかそれ?
537デフォルトの名無しさん:2005/11/06(日) 21:02:05
ポインタ変数にint型変数の値をメモリアドレスとして代入させることは出来ないのでしょうか?
538デフォルトの名無しさん:2005/11/06(日) 22:06:23
日本人ですか?
539デフォルトの名無しさん:2005/11/06(日) 22:26:30
>>537
ソースコードにそういう記述をすることは出来るが、それが正しく動くかどうかは別問題。
おそらく動かない。動いたら偶然であり、他の用で使っているところということになる。
(ただしWPARAM/LPARAMなどポインタを整数型にキャストしたものをポインタ型へ戻すキャストなら問題ない)
540デフォルトの名無しさん:2005/11/07(月) 00:29:17
double型で256*256などの大きい配列を取るとプログラムが落ちてしまうのですが改善する方法は無いのでしょうか?
541540:2005/11/07(月) 00:30:57
すみません、書き忘れましたが動的にではなくて静的に取る場合に落ちます
double aaa[256][256];
542デフォルトの名無しさん:2005/11/07(月) 00:36:15
>>540
スタックサイズには限りがある。
増やしたいならリンクオプションでスタックサイズを指定してやる。
もしくは素直に動的確保 or STLを使う。
543540:2005/11/07(月) 00:51:17
>>542
スタックサイズの指定でできました
ありがとうございました
544デフォルトの名無しさん:2005/11/07(月) 23:28:58
文字列を扱うのにいろいろなデータ型がありますよね。
char*でいいのかと思いきやTCHAR*とか_TCHAR*とか、
LPCTSTR(定数文字列?)にLPTSTRとかなんかいっぱい。
いろいろドキュメント読んでると、UNICODEとかMBCSとか互換性とか
あちこちちりばめられて解説されてはいるのですけど、
どういう方針でやるのが一番いいのかチンプンカンプンになってしまいました。
書籍などを探しても、この辺の話に触れている本って
いまだかつて見たことが無いです。
あっても、2,3行の説明でちっとも詳しくはありません。
一貫してこう扱えばいいよ、というような指針を示している
本とかサイトってどこかに無いでしょうか。
それとも皆さんはそれほど気にしてないのでしょうか。
545デフォルトの名無しさん:2005/11/07(月) 23:50:57
>>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++内で制御するにはどうすればいいでしょう?
547デフォルトの名無しさん:2005/11/08(火) 21:06:33
>>546
SetWindowsHookEx(WH_KEYBOARD, ・・
を使うとか
548デフォルトの名無しさん:2005/11/09(水) 02:31:18
WinXP用のアプリケーションを作ろうと思うのですが、
PlatformSDKはXP SP2ってのをインストールすればよいのでしょうか。
それとも、もっと新しい2003ってのでしょうか。
549デフォルトの名無しさん:2005/11/09(水) 07:48:40
>>548
Platform SDKは必要になってから入れればいい。
Win XP専用のアプリケーションを作るからといって最新のものを入れる必要はない。
550デフォルトの名無しさん:2005/11/09(水) 11:37:02
教えて下さい。

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にコピー。
上記の方法を全てとっても、ダメでした。

お願いします。
551550:2005/11/09(水) 14:55:01
自己解決しました。

VS2003の「プロジェクト」メニューの「apollo1のプロパティ」を選択し、「リンカ」の「入力」の「追加の依存ファイル」に「wpcap.lib」を追加したところ、リンクに成功しました。リンクするライブラリを明示的に指定する必要があるのですね。お騒がせしました。
552デフォルトの名無しさん:2005/11/09(水) 20:37:25
VCとC++の差ってなに?
553デフォルトの名無しさん:2005/11/09(水) 20:50:31
>>552
IDE(除くToolkit類)やMFC/ATLなどのライブラリ。
554デフォルトの名無しさん:2005/11/09(水) 20:52:55
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ファイルをまた書いてコンパイル、実行するにはどうすればいいのでしょうか
教えてください。
556デフォルトの名無しさん:2005/11/10(木) 20:16:09
>>555
もう一個ソリューションを作る。
または前のソースファイルを削除する。
557555:2005/11/10(木) 20:22:32
そうなんですか。ソースファイルっていうフォルダに
追加すればいいのかと思ってました。
前のソースファイルは別にフォルダに全部保存することにします。
ありがとうございました。
558デフォルトの名無しさん:2005/11/13(日) 16:08:41
VC++でWINDOWSプログラミングを練習してるのですが
BMP表示で詰まっています。

WM_PAINTでBeginPaint()を使って画像を表示するのはできたのですが、WM_CHAR
を受け取ったときにも何か表示するようにしようと、そこにもBeginPaint()を使って画像
を描写する処理を入れたところ表示してくれません。

なのでGetDCを使って表示したのですがこんどはGetDCで描写した部分が隠れ
てまた現れたときに再描写してくれません。

GetDCを使って表示した部分をWM_PAINTで再描写するために何か処理がいる
のでしょうか?それともそもそも根本的に考え方が間違ってるのでしょうか?
559デフォルトの名無しさん:2005/11/13(日) 16:09:31
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;
}
560558: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;

にするとキーを押したときに描写はしてくれるのですが、隠れてまた現れた
ときに再描写してくれません。
どなかたご教授お願いします。
562デフォルトの名無しさん:2005/11/13(日) 16:40:58
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()とか使ってみたのですが上手くいきませんでした。
どなたかご回答お願いいたします。
565デフォルトの名無しさん:2005/11/13(日) 18:33:39
>>564
GetTextExtentPoint32
566564:2005/11/13(日) 18:53:35
>>565さん
素早い回答ありがとうございます。
今は試せる環境がないので明日試してみようと思います。
ありがとうございました。
567デフォルトの名無しさん:2005/11/13(日) 19:14:20
そのためのInvalidateRectです
568558:2005/11/13(日) 23:26:57
>>567
なるほどー、その関数で無理やり無効領域を発生させて
WM_PAINTを呼び出すっていうやり方が一般的みたいですね。
覚えることいっぱい、呪文いっぱいで大変だぁ・・・
569デフォルトの名無しさん:2005/11/13(日) 23:29:28
>>568
無理やりって表現がアレだけどね。
無理やりじゃないし。
570デフォルトの名無しさん:2005/11/13(日) 23:31:11
強制的というべきかな。
571デフォルトの名無しさん:2005/11/13(日) 23:35:31
お前らって相手が素人だと見るとつまらない揚げ足取り始めるよな
572デフォルトの名無しさん:2005/11/14(月) 00:12:15
「無理やり」「ガリガリと」「フルスクラッチで」

こういう何も考えてない発言は死滅すべきである
573デフォルトの名無しさん:2005/11/14(月) 23:45:32
やれよ。勝手に。
574デフォルトの名無しさん:2005/11/14(月) 23:47:18
ガ〜リガ〜リ君ガ〜リガ〜リ君ガ〜リガ〜リ君
575デフォルトの名無しさん:2005/11/16(水) 23:41:43
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としか書いてなくて…
どうすれば良いのでしょうか。
576デフォルトの名無しさん:2005/11/17(木) 01:18:25
>>575
コンピュータの中を検索してみな。
意外と思わぬところに出力されていないかな?
577デフォルトの名無しさん:2005/11/17(木) 02:31:11
>>576
ありがとうございます。
早速VCをインストールしたドライブと、
defファイルの置いてある(Chasenをインストールした)ドライブをそれぞれ
検索してみましたが、残念ながら見つかりませんでした。

友人にも一応同じVC++ Express使いがいるので、
明日そっちの方でも試してもらおうと思います。
578デフォルトの名無しさん:2005/11/17(木) 09:37:48
vc\bin\vcvars32.bat実行してから"lib.exe /def....."ってやってみたら?
expressにあるかどうか知らないが
579デフォルトの名無しさん:2005/11/17(木) 12:02:17
>>578
朝起きて試してみたら出来ました!
3日詰まってたんですが、やっとchasenライブラリが利用できるようになりました。
本当にありがとうございました。
580デフォルトの名無しさん:2005/11/18(金) 16:50:53
ド低脳で誠に申し訳ない。
Visual C++ 2005 express Beta2を今日ダウンロードして
WIN2000SP4にインスコしたんだけど、ビルドがこける。
最初はCLSがどうたらってでたんで、それを切るようにプロジェクト
プロパティから設定したら、今度は「systemとは何ですか?」
みたいなエラーをほぼ全文に対して連発してビルド不可能。
ちなみにビルドしているのは、ウィンドウアプリの新規作成したてや
コンソールアプリ新規作成したて。
これでエラーってことは、インスコ失敗でしょうか?
581デフォルトの名無しさん:2005/11/20(日) 01:03:57
いろいろなカスタムGUIを作りたいのですが、
参考になる書籍がありましたら教えてください。
よろしくお願いいたします。
582デフォルトの名無しさん:2005/11/20(日) 09:41:54
本当に超初心者なのですが・・・
「フォームを閉じるボタン」を設置してフォームをとじようとしてるのですが。

1.イベントハンドラが右クリックから選択できない。
2.ボタンクリックして、開いた場所に「Form1.Close();」「Form->Close();」とやってもエラー

ということで困ってます。

使用言語はC++.NETスタンダードです。
本を見てもさっぱりなんで、よろしくおねがいします。
583デフォルトの名無しさん:2005/11/21(月) 00:07:04
質問です。

ウインドウでゲームを作っています。BitBltで背景マップ
を出してその上にキャラクターを表示したいのですが、
MFCやDirectXを使わずに透明色の処理を行うことは
できますか?それともAPIだけでは難しいのでしょうか。

よろしくお願いいたします。
584デフォルトの名無しさん:2005/11/21(月) 00:12:54
ANDで抜いてからORで転送だな。ナツカスィ
585デフォルトの名無しさん:2005/11/21(月) 00:13:25
今日VC++5.0 Profesional Editionを買ってきたばかりのVB厨です。
早速インストールして、サービスパックをダウンロードしようとしたのですが、
どこに行っても見つかりません。

一応ここ↓までは見つけたのですが、
ttp://www.microsoft.com/japan/msdn/vstudio/downloads/sp/download.asp
リンク先が404になっていてダウンロードできません。

他にサービスパックを手に入れる手段を知っている方がいたら、教えていただけないでしょうか?
586デフォルトの名無しさん:2005/11/21(月) 00:21:08
VC5ってあーた・・・
587デフォルトの名無しさん:2005/11/21(月) 00:22:54
VC+5かよ……
588デフォルトの名無しさん:2005/11/21(月) 00:39:36
どこで売ってたの?
589デフォルトの名無しさん:2005/11/21(月) 01:02:32
ネタに反応するの(・A ・)イクナイ!
590585:2005/11/21(月) 01:24:56
ネタじゃなくて本当に買ってしまいました。
久しぶりの秋葉原で、ちょっと財布の中身が充実してて、
路上でふと脇を見たら「Visual C++ Professional Edition」と書かれたパッケージがあったもので。



バージョンが5.0だというのはインストールするときに気が付きました。

せめてパッチぐらい当てたいんです。
手に入れる方法はないでしょうか?
591デフォルトの名無しさん:2005/11/21(月) 01:59:35
592585:2005/11/21(月) 02:51:48
>>591
助かりました。
これで衝動買いの元は取れそうです。
ありがとうございます。
593デフォルトの名無しさん:2005/11/21(月) 17:19:52
。oO(ここでVisual C++ 2005がただで手に入ると言っておくべきだろうか)
594デフォルトの名無しさん:2005/11/21(月) 23:21:02
>>583
>ウインドウでゲームを作っています。
寒くなってきたからガラス窓でやってるのかと思った。
595585:2005/11/22(火) 00:04:57
>>593
(-д- )


早速落としてみます。
Beta2でも5.0に比べれば良いものなんだろうなぁ・・・
596デフォルトの名無しさん:2005/11/25(金) 19:51:24
C/C++の Win32 なコンソールアプリを作ってます。
他のシステムに持って行くことが多いので、
ソースファイルは UTF-8 にしています。
できあがったコンソールアプリを実行しても、
コードページ 932 なコンソールの中で動くので
文字がぐちゃぐちゃになってしまいます。
コンソールアプリの起動時のコードページを
指定するって事は可能なんでしょうか?
597デフォルトの名無しさん:2005/11/25(金) 19:56:14
WriteConsoleW使うとか。 (NT・UTF16限定)
598デフォルトの名無しさん:2005/11/25(金) 20:45:20
>>597 うむ〜そういうことになりますか。
作っているアプリが Linux とソースコード共用なので
なんとかそういうことは避けたかったんですが・・・

Windows ではコードページとして UTF-8 は無いんでしょうか?
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=133659&SiteID=1
これによると 65001 は pseudo codepage で、
setlocale で指定してもはじかれるからだめよ〜って事みたいです。
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
600デフォルトの名無しさん:2005/11/25(金) 22:01:59
EUCで書けばいいじゃん
601デフォルトの名無しさん:2005/11/25(金) 22:09:53
>>600 それだと Windows のコンソールで化ける・・・
というわけで、面倒だから英語にしました、メッセージ。
602デフォルトの名無しさん:2005/11/25(金) 22:43:06
ではUTF-16は?と無責任に言ってみる。
603デフォルトの名無しさん:2005/11/25(金) 23:10:56
寧ろ2バイト文字をリテラルで使うなと。
604デフォルトの名無しさん:2005/11/25(金) 23:58:47
iconvでもつかってリテラルを変換する
プリプロセッサを仕掛ければいいじゃん。
605デフォルトの名無しさん:2005/11/26(土) 00:32:27
今日、初心者本を買ってきたばかりなのです。

MSのVisual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使うのページを見て
インストールしようと思っています。
Visual C++ 2005 Express Edition の方はできたのですが、Platform SDKのインストールのやり方がわかりません。
とりあえずcabとexeのファイルは全部落としたのですが、その先がどうしていいやら。
パスを通したいのですがインストールができないのでどうしようもありません。
どうかよろしくお願いします。
606デフォルトの名無しさん:2005/11/26(土) 00:38:39
CDイメージの方を落としてみたら?
607デフォルトの名無しさん:2005/11/26(土) 02:12:17
>>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」


608デフォルトの名無しさん:2005/11/26(土) 02:59:29
>>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"フォルダだけです。
どうすればいいでしょう?

今日はギブ。



609デフォルトの名無しさん:2005/11/26(土) 04:08:01
ググると、詳しく解説してるサイト見つかる。
610デフォルトの名無しさん:2005/11/26(土) 11:00:57
アフォ質問で申し訳ありませんが、

int a = 1;
bool b;
b = (bool)a;

とした場合、
'int' : ブール値を 'true' または 'false' に強制的に設定します (警告の処理)
という警告が出てしまいます orz

(bool)という型キャストは効かないんでしょうか。
どなたか助けてください m(__)m
611デフォルトの名無しさん:2005/11/26(土) 11:02:43
   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    | >>1.おお、
    | 凄ぇぇぇぇ
   \__  ______
        ∨
      ∧晒∧
      (・∀・ )
−−−8<−−−8<−−−

IPアドレス 61.21.153.232
ホスト名 61-21-153-232.rev.home.ne.jp
612デフォルトの名無しさん:2005/11/26(土) 11:06:12
>>611
乙です
613610:2005/11/26(土) 11:17:19

int a = 1;
bool b;
b = static_cast<bool>(a);

も駄目なんですけど・・なんで〜 (T_T)
614デフォルトの名無しさん:2005/11/26(土) 11:30:20
>>610
b = a ? true : false;
615610:2005/11/26(土) 11:33:26
>>614
おおおお、通りました!!
ググりまくっても出ないから、どうしようかと思ってました。

神よ、ホント感謝です (ノω`)・゚・。。
616デフォルトの名無しさん:2005/11/26(土) 11:38:17
>>615
そりゃぁあんた、>614を「キャストする」積もりで書く香具師はいないから検索に引っ掛からないんだろ。
キャストで誤魔化すのではなく、本来の意味を考えれば>614に思い至らないのがおかしいのだが。
617610:2005/11/26(土) 11:52:08
アフォですまそ m(__)m
618デフォルトの名無しさん:2005/11/26(土) 13:07:09
gprof みたいなプロファイラって、 Visual C++ の世界
では何が相当するんでしょうか。各関数の呼び出し回数と
そこでの消費時間などを調べたいのですが。

619デフォルトの名無しさん:2005/11/26(土) 13:38:38
プロファイラ
620デフォルトの名無しさん:2005/11/26(土) 13:50:31
自分が使っているのは
Visual Studio .NET 2003 theSpoke です。
もっと上位のVSにしかついていないみたいですね。

DevPartner Profiler Community Edition
The profiler of choice for Visual Studio.NET
http://www.compuware.co.jp/products/devpartner/dpsprofiler.html
これを試してみることにします。
621デフォルトの名無しさん:2005/11/26(土) 16:09:56
ふつーVTune、だと思っていたが
622デフォルトの名無しさん:2005/11/26(土) 16:11:10
AMDのCPUなら利用できる無料プロファイラ「CodeAnalyst」
623デフォルトの名無しさん:2005/11/26(土) 21:39:13
こんばんは、よろしくお願いします。
ダブル型の数字を誤差のないように小数以下切捨てで計算したいのですが、
char *a = "0.145";
double d = atof(a);
int m = int(d * 5000);
とかすると、誤差の出る計算式があります。
ので、いろいろ調べて、ceilを使うと、今度は、すべて、切り上げになってしまうようです
誤差の出ないような切捨てのデータ型はないのでしょうか。
624デフォルトの名無しさん:2005/11/26(土) 21:44:22
fllllllllooooooooooooorrrrrrrrrrrrrrr
625デフォルトの名無しさん:2005/11/26(土) 21:51:53
int m = int(d * 5000 + 0.1);
626デフォルトの名無しさん:2005/11/26(土) 21:55:33
データの型を聞いてるんじゃないのか?
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 のような型がないのかなとおもいまして。
629デフォルトの名無しさん:2005/11/26(土) 22:13:01
つ[long long]
630デフォルトの名無しさん:2005/11/26(土) 22:13:11
四捨五入するための特別な関数はありません。浮動小数点の変数xに対して小数点以下を四捨五入する最も簡単な方法は、
(int) (x + 0.5)

 を実行することです。ただし、この方法は負の数に対して期待した結果を得ることができないかもしれません。
631デフォルトの名無しさん:2005/11/26(土) 22:13:28
632デフォルトの名無しさん:2005/11/26(土) 22:15:07
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
みなさんに質問です!
プログラムって、独学でもいけますか?
自分文系なんですが。
635デフォルトの名無しさん:2005/11/26(土) 22:24:53
別にいけないことはない。
その手の質問はネット上にあふれてるから、調べてみると良い。
636デフォルトの名無しさん:2005/11/26(土) 22:25:11
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 のようです。
639デフォルトの名無しさん:2005/11/26(土) 22:32:50
%I64d
↑大文字の [ I ]
640デフォルトの名無しさん:2005/11/26(土) 22:38:24
>>639 ありがとうございました。
ll (えるえる) が ANSI 標準だと思っていました。
VC++ も ANSI 標準は使えるだろうとタカをくくってました。
641デフォルトの名無しさん:2005/11/26(土) 22:39:40
#define lld I64d
642デフォルトの名無しさん:2005/11/26(土) 22:41:23
>>641 文字列リテラルのなかなんで、
いくら何でもプリプロセッサでは無理かと。
643デフォルトの名無しさん:2005/11/26(土) 23:20:29
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));
645デフォルトの名無しさん:2005/11/27(日) 13:00:57
>>644
そりゃそうだ。long longは整数型だから2になって当然だ。
646デフォルトの名無しさん:2005/11/27(日) 15:54:13
もしかして、 long double にしたいんじゃね?
647デフォルトの名無しさん:2005/11/27(日) 19:49:57
小数点以下第三位までで良いのに long double 使うのか?
648デフォルトの名無しさん:2005/11/27(日) 23:53:15
結局、初心者は素直に自分が何をやりたいのか書けって事だな。
649デフォルトの名無しさん:2005/11/28(月) 10:04:22
オブジェクトブラウザで表示されるクラスの中で、
当該プロジェクトでは一度も使われていないクラスを
探す事はできるでしょうか?
「使われていない」とは「インスタンスが生成されていない」
という意味です。
650デフォルトの名無しさん:2005/11/28(月) 11:31:42
これはと思うクラスをコメントアウトしてビルド。
651デフォルトの名無しさん:2005/11/28(月) 14:57:15
どこで聞けば良いか分からないので、ここで聞かせてください。

VisualStudio.net 2003のC++でWebサービスを開発する場合、
「ASP.net Web サービス」と「ATL Server Web サービス」の2種類が
ありますが、パフォーマンスとかが違うものなのでしょうか?
それとも単純にmanagedなコードならASPの方、そうでなければATL、
というようなものなのでしょうか?

VC++6.0、ATL上で書かれたCOMのサーバをWEBサービス化することを
考えており、ATL Serverの方なら簡単に移植できるのかと思いきや、
見掛けも違うし、訳が分からない状態で困っています。
652デフォルトの名無しさん:2005/11/28(月) 15:55:53
sage
653デフォルトの名無しさん:2005/11/28(月) 16:01:44
質問です。
土曜からウインドウズプログラミングを猫でもわかる〜さんのとこで勉強してるのですが、イントロダクションからつまづきました。サンプルをビルドしたところ、

myProg.hbrBackground =GetStockObject(WHITE_BRUSH);
が'HGDIOBJ'から'HBRUSH'に変換できません。'void*'から非'void'型への変換には明示的なキャストが必要ですってエラーがでます。
猫でも〜さんには解決方法が無くて普通に進んでしまい三日目にしてわからないのでお聞きしました。
VC++2005 Express Beta2を使っております。
よろしくお願いします。
654ハクション大魔王:2005/11/28(月) 17:41:57
>653
本買えば?
655デフォルトの名無しさん:2005/11/28(月) 18:57:22
>>653
エラーだけ見て脊髄反射ですが、キャストだけが問題なら

myProg.hbrBackground =(HBRUSH)(GetStockObject(WHITE_BRUSH));

ってキャストすれば良いのでは?お行儀良くないですが。
656デフォルトの名無しさん:2005/11/28(月) 19:01:15
>>653
http://www.kumei.ne.jp/c_lang/setvc.htm
>(C言語に慣れている方には必要のないことなので読み飛ばしてください)
>エラーメッセージを読めばどこをどう直せばよいかすぐにわかると思います。

要するにエラーメッセージを読んでわからないやつは問題外ということだ

657デフォルトの名無しさん:2005/11/28(月) 19:17:55
エラーメッセージを読めばどこをどう直せばよいかすぐにわかると思います。
658デフォルトの名無しさん:2005/11/28(月) 21:46:43
C/C++をやり直してきます。
659デフォルトの名無しさん:2005/11/28(月) 21:56:51
SDI形式で作ったアプリが、起動ごとに表示位置がずれていき
ます。毎回中央に表示する方法はありますか?
660デフォルトの名無しさん:2005/11/28(月) 22:10:03
アプリ終了時にウィンドウ位置をレジストリかファイルに保存、起動時にそれを読んでウィンドウ作成後MoveWindow()
661デフォルトの名無しさん:2005/11/28(月) 22:14:29
ちなみに毎回表示位置がずれるのはWindowsの仕様。
662デフォルトの名無しさん:2005/11/28(月) 23:00:18
hInstanceに0を入れてウィンドウ作れ
663デフォルトの名無しさん:2005/11/28(月) 23:18:13
>>662
9xでも平気か教えてほしい。
NT系では無視されるとあるから安心してNULLにできるが。
664デフォルトの名無しさん:2005/11/28(月) 23:54:35
ちょっと話変わるけど
hPrevInstance 真面目に処理してる香具師いる?
665デフォルトの名無しさん:2005/11/29(火) 07:42:59
>>664
無視。引数名も与えていない。
それにどうせWin16向けにはコンパイルできないと決めてかかっている。
666デフォルトの名無しさん:2005/11/29(火) 21:22:04
一応超初心者向け
くだらない質問を受けるスレである以上
>>653見たいなのはさくっと>>655見たいに答えるだけでよくね?
そうしないと他のスレとの違いがなくなって単なる重複になっちゃうよ。

それが嫌ならレスしなきゃいいし
ってこれが出来ないやつが多いからグダグダになるんだけど。
667デフォルトの名無しさん:2005/11/29(火) 21:40:24
>>666
中途半端に希望を持たせるのはかわいそう
ダメなやつはダメとはっきり教えてあげないと
668デフォルトの名無しさん:2005/11/30(水) 11:10:41
VC6です。
wprintf(L"ABCあいう\n");
で日本語以降が表示できないのですが、
なにか設定とかあるのでしょうか?
669デフォルトの名無しさん:2005/11/30(水) 11:25:06
ABCはでるんだ
じゃ日本語つかえない環境だね
670デフォルトの名無しさん:2005/11/30(水) 12:39:50
100ms待つ、っていう動作を
Solaris/Linux/cygwin/Win32 console で
ポータブルに書くことってできますでしょうか?
671デフォルトの名無しさん:2005/11/30(水) 13:10:11
struct timeval wait;
wait.tv_sec = 0; wait.tv_usec = 100000;
sleep(0, NULL, NULL, NULL, &wait);
はどう?

Win32 以外なら
usleep(100000);
でもいいと思うけど。
672デフォルトの名無しさん:2005/11/30(水) 13:17:47
OSにタスク戻さなくても良いなら
システム時間見ながらループしてもいいんじゃないかな
673デフォルトの名無しさん:2005/11/30(水) 17:39:32
>>668
#include <locale>を書き、
main()の先頭にstd::locale::global(std::locale("japanese"));を書く。
674デフォルトの名無しさん:2005/11/30(水) 22:49:25
質問です。
今、SystemParametersInfoのSPI_SETDESKWALLPAPERを使って、リソースに組み込んだBITMAPファイルを壁紙に設定しようと考えています。
しかし、SystemParametersInfoの引数がファイル名なので、それは無理なのでしょうか?もし、他の方法で、リソースのBITMAPを壁紙に設定する方法はありますでしょうか?
よろしくお願いします。
675デフォルトの名無しさん:2005/11/30(水) 22:59:35
>>674
諦めて一旦ファイルに書き出せ。
676デフォルトの名無しさん:2005/11/30(水) 23:09:40
>>675
ありがとうございます。やってみます!
677デフォルトの名無しさん:2005/12/01(木) 01:41:10
JoytoKeyみたいなある入力を別の入力に変えてしまう
そんなツールが作りたいんですが…どうしても方法がわかりません

やりたいのはUSBの信号をMIDIInputとして入力をしたいです
USB側の信号の受け取りはさっくり出来たんですけど…

MIDIInputをプログラムで使うにはmidiInGetNumDevs()で列挙後
midiInOpenを使ってコールバックを仕掛けるみたいなので
midiInGetNumDevs()の候補になれば良さそうなんですけど、
この方法がどうやってもわかりません

いい方法がないでしょうか…
678デフォルトの名無しさん:2005/12/01(木) 10:41:10
>>673
遅くなりました。
ありがとうございます。
679デフォルトの名無しさん:2005/12/01(木) 14:00:10
エクセルのような感じの、表になっている入力インターフェースを作成するにはどうすればいいですか?
どのあたりを調べればよいか教えてください。
680デフォルトの名無しさん:2005/12/01(木) 14:13:36
MSFlexGridとかVS-FlexGridとか。
681デフォルトの名無しさん:2005/12/01(木) 14:46:32
>>680
ありがとうございます
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節自体を編集するとそれがなくなってしまいます。
なにかよい実現方法は無いでしょうか?
ヒントだけでもくれるとありがたいです。
683デフォルトの名無しさん:2005/12/05(月) 12:13:47
コピー
684デフォルトの名無しさん:2005/12/05(月) 18:34:38
>>682
無理。
rc書き換えるな。
685デフォルトの名無しさん:2005/12/05(月) 21:32:24
>>1
おいスレ違いだぞ
686デフォルトの名無しさん:2005/12/05(月) 21:33:05
1は
板違い
687デフォルトの名無しさん:2005/12/05(月) 23:24:05
VCのDLLのデバッグでクライアントアプリケーションのexeやらpdbやらを持ってきて
DLLのプロジェクトから実行してデバッグしてるんだけど
ステップ実行すると必ず何回目かで固まる。しかもctrl+alt+delもきかない。
なにこのバグ
馬鹿マイクロソフト、さっさと直せばあか
688デフォルトの名無しさん:2005/12/07(水) 21:35:26
directxを始めたばっかりの初心者なのですが、
direct3Dで3Dモデルを描くところまでできたのですが
それをbitmapで保存する方法がわかりません。
どうがご教授お願いします。

689デフォルトの名無しさん:2005/12/07(水) 22:10:57
Whileで一定のプログラムの無限ループ書いてくれ。
690デフォルトの名無しさん:2005/12/07(水) 22:51:35
>>688
流石にそのネタはこっちかな
【C++】 DirectX初心者質問スレ Part7 【C++】
http://pc8.2ch.net/test/read.cgi/tech/1132216611/
691デフォルトの名無しさん:2005/12/07(水) 23:02:06
#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になっていてこまっています。(変更できないし^;)
おしえてくださいー


693デフォルトの名無しさん:2005/12/08(木) 16:48:03
新規クラスでFormViewを追加して
TreeViewを検索してFormViewにおきかえる
694デフォルトの名無しさん:2005/12/08(木) 18:12:54
VC6使用です。
他のバージョンで作られたlibeay32.libがうまく動かないんですが
どうやったら動くようになるでしょうか?

libeay32.lib(b_print.obj) : error LNK2001: 外部シンボル "__ftol2" は未解決です
libeay32.lib(b_print.obj) : error LNK2001: 外部シンボル "__aulldvrm" は未解決です
695デフォルトの名無しさん:2005/12/08(木) 21:27:46
VC6を使ってます。
C++の勉強をしているのですが、以下のコードで、
'vector' : 定義されていない識別子です。
とコンパイルエラーが発生します。
何故でしょうか?
---------------------------------------
#include <vector>
#include <iostream>

void main(void)
{
vector<int> v1;
}
696デフォルトの名無しさん:2005/12/08(木) 21:38:10
参考書を投げ捨てて、std::の記述のあるのを買い直す
697デフォルトの名無しさん:2005/12/08(木) 21:43:21
>>694
VC6でlibをビルドする。
698694:2005/12/08(木) 21:46:06
>>696
ありがとうございます。
おかげで解決しました。
699デフォルトの名無しさん:2005/12/09(金) 02:45:33
何この流れ。
700デフォルトの名無しさん:2005/12/09(金) 23:00:13
最近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 が未解決です。

可変配列って便利そうだったので挑戦してみたんですけど
まだ使うのは早過ぎたかなぁ。

どなたかよろしければ教えてください。
701デフォルトの名無しさん:2005/12/09(金) 23:18:22
>>700
2行目「ZAKO01::ZAKO01(class ZAKO01 const &)」が未解決(1行目)と書いてあるのだから、
ようするにZAKO01のコピーコンストラクタを書いてみろ。

あと01なんてつけるな。きちんと考えろ。
702デフォルトの名無しさん:2005/12/09(金) 23:27:29
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
なのすけど名前をちゃんとつけましょうってことでしょうか?

703デフォルトの名無しさん:2005/12/09(金) 23:35:37
あう、
そういうことか わかりました。
コピーコンストラクタもちゃんと
{ }つけて処理書かないと駄目なんですね・・・
たぶん当たり前の事なんでしょうが、まだ勉強中だったので気付きませんでした。

自分はメンバ関数外に書く方法もあるみたいだけど
クラスの中でメンバ関数の処理も書いちゃってたのに
コピーコンストラクタの分だけ外に書く方式にしちゃってますね。
なのに外に書いてないから、おかしいわけですね。

ありがとうございました。
704デフォルトの名無しさん:2005/12/09(金) 23:37:52
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){
};

};

ちなみにこうしたら動きました。
馬鹿な質問だったでしょうが、ヒントをもらえてうれしいです。
705デフォルトの名無しさん:2005/12/09(金) 23:57:10
>>704
ZAKO01(const ZAKO01&):MOVOBJ("zako01.bmp",1,1,1,32,32){
}; ←このセミコロン要らない。
706デフォルトの名無しさん:2005/12/10(土) 00:05:11
うわっ恥ずかしい、これは自分でも間違いな事はわかります。 汗
なんかついたまま動いてましたけど、気付きませんでした。
ありがとう。
取っときました。
707デフォルトの名無しさん:2005/12/10(土) 00:25:38
ただのコピーならコピーコンストラクタ書かなくても本当は自動でコピーしてくれるんですね・・・
下手にコピーコンストラクタのカスみたいなものを書いていたために自動コピーが働かなかったようです。
コピーコンストラクタ丸ごと削除しても動きましたorz
708デフォルトの名無しさん:2005/12/10(土) 01:00:02
>>707
カスというかクラスの定義にコピコンの宣言だけ書いて定義してなかったんでしょ?
宣言してあったらそりゃリンカが探そうとするって。
709デフォルトの名無しさん:2005/12/10(土) 23:42:32
Windowsサービスで使えるプロセス間通信って何が一般的なの?

開発環境は Windows2000以降、VisualC++ .NET2003で、
.NET Frameworkは無しでお願いします。


710デフォルトの名無しさん:2005/12/10(土) 23:48:19
socket
711デフォルトの名無しさん:2005/12/11(日) 00:13:16
早いレスありがと。
やぱ、WinSockですか・・・
WinSockでTCP/IPサーバは作ってますが、それとは別の方法さがしてるんです。

ぐぐってんだけど、探し方が悪くてよくわからん。
メールスロット、名前付きパイプ、OLE、DDE・・いろいろありそうで混乱してます。

やりたいのは、数十バイト程度の要求内容を溜め込めて、
順次取り出して、Windowsサービス内で処理させたいだけなんだけど・・・


712デフォルトの名無しさん:2005/12/11(日) 03:38:39
RPC
713デフォルトの名無しさん:2005/12/11(日) 03:39:40
共有メモリ
714デフォルトの名無しさん:2005/12/11(日) 03:40:18
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;
} };

こういう使い方ってまずいですか?
716デフォルトの名無しさん:2005/12/11(日) 23:55:49
>>715
それ自体は問題ない。
ただしコピーコンストラクタとoperator =()をきちんと実装するか、
あるいは非公開にするかのどちらかを行うこと。
717デフォルトの名無しさん:2005/12/11(日) 23:55:54
いいんじゃないの
なぜまずいと思ったんだろ
718デフォルトの名無しさん:2005/12/12(月) 00:12:13
はじめてプログラミング言語やる者ですが
Visual C++で簡単なプログラムを書いてデバッグしようとすると
デバッグ開始→このプロジェクトは変更されています。ビルドしますか?
→はい
→ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?
→はい
→プログラム'〜〜〜.exe'を開始できません。指定されたファイルが見つかりません。
→OK
終了になるんですが、何がいけませんか?
719デフォルトの名無しさん:2005/12/12(月) 00:16:34
>>718
ビルドに成功していないのにデバッグできるわけないっしょ。
720デフォルトの名無しさん:2005/12/12(月) 00:25:09
>>716
>>717
どうもです。
C++勉強し始めたばっかりで、コンストラクタとかはじめて使ったもんで・・・。
721718: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 スキップ ==========

ビルドするとこうなります。
722デフォルトの名無しさん:2005/12/12(月) 00:51:05
>>721
Windowsアプリケーションを組もうとしてコンソールアプリケーション選んだでしょ。
723718:2005/12/12(月) 00:56:25
>>722
はい。一応教科書の通りにやったんですが。
724デフォルトの名無しさん:2005/12/12(月) 01:19:10
>>715-717
buf が NULL かどうかくらいチェックしとけ
725デフォルトの名無しさん:2005/12/12(月) 01:21:08
>>724
なんでnewでNULLチェックなんだよ。
nothrowバージョンでもなし。
726デフォルトの名無しさん:2005/12/12(月) 01:24:28
727デフォルトの名無しさん:2005/12/12(月) 01:36:48
初心者どうこう以前の問題なのですが、
質問させてください。

BorlandのC++コンパイラを先日DLしてC言語を勉強しはじめたばかりなのですが、
C及びC++のリファレンスってどこに行けば見れるのでしょうか?
それともVisual C++を買うしかないのでしょうか?

ググってもさっぱり分からず難渋しております
どうか皆様がどこでリファレンスを参照しているのか教えてください
728デフォルトの名無しさん:2005/12/12(月) 01:39:26
>>727
参考書を購入して下さい。
729デフォルトの名無しさん:2005/12/12(月) 01:51:51
>>716
operator =() ッテナニ?
730デフォルトの名無しさん:2005/12/12(月) 02:08:05
>>727
きみのハードディスクにインストールされているよ
731デフォルトの名無しさん:2005/12/12(月) 10:31:03
>>712
localなマシン内なのに、わざわざRPCするのも、なんだかイマイチな気が

>>713-714
共有メモリに要求内容をいれて、Mutexで排他同期取るのを手作りしたとして・・
起動はどうする?

なんか、こいつは便利だぜっていうAPIは用意されてないんでしょうかね〜
732デフォルトの名無しさん:2005/12/12(月) 11:14:50
>>731
>起動はどうする?
CreateProcess()
733デフォルトの名無しさん:2005/12/12(月) 11:37:50
パイプ(socket)でいいんじゃないの?
734デフォルトの名無しさん:2005/12/12(月) 13:47:09
>>732
それだと、あたらしくプロセス・スレッドが生成さてしまうんでは?
それとも、すでに常駐しているサービスを指定して、イベント起動できるの?

>>733
名前付きパイプ、今調べてるけど、これも、メールスロットと同じで、
自分で同期取るタイプだよね。だから、Windowsサービスでは使えない方式では?

プロセス間通信したいだけでもWinSockでポート開いて、
アクセス制限とかリモートからのセキュリティかけてlocalhost通信するのが流儀なの?

いろいろ調べてみてると、RPC使うのが普通?
Microsoft以外のサービスでは、iPodServiceやMcAfeeがRPCに依存してるね。
でも、RPC、コーディングしたことなくてわからん、
IDL書いて、IDLコンパイラかまして、VC++にインポート?

う〜ん、なんだかハマッテきた・・
735デフォルトの名無しさん:2005/12/12(月) 13:50:58
>>734
COMっつーか、オートメーション?
サービスはあまり作ったことないから使えるか知らないが
736デフォルトの名無しさん:2005/12/12(月) 15:43:52
タブコントロールを固定幅で使用していますが、
タブの幅はどうやって指定するのですか?
737736自決しました:2005/12/12(月) 15:47:24
SetItemSize()でした
私のことはもう、忘れてください・・・
738デフォルトの名無しさん:2005/12/12(月) 17:23:32
>>729
入門書読めば書いてある。
739デフォルトの名無しさん:2005/12/12(月) 21:37:21
>731

サービスなんだろ。Mutexが存在し無かった時点で、
net start hogeserviceで起動を掛ければいい。
740デフォルトの名無しさん:2005/12/12(月) 22:00:38
>>739
サービスの常駐開始って意味の起動じゃなくて、
要求が入ってきたよ。って意味のイベント起動って意味
741デフォルトの名無しさん:2005/12/12(月) 22:15:31
>やりたいのは、数十バイト程度の要求内容を溜め込めて、
>順次取り出して、Windowsサービス内で処理させたいだけなんだけど・・・

何?この「Windowsサービス」は、固有名(ServiceMainを使うプログラム)ではなく、
一般名(Windowsでサーバとして何かやるプログラム)なの?
742デフォルトの名無しさん:2005/12/12(月) 22:16:20
ああ、発火という意味か。Event使えば。
743デフォルトの名無しさん:2005/12/13(火) 00:43:31
聞きたいのですが、『.c』と『.cpp』はどう違うのでしょうか?
Borlandでコンパイルしてるのですが、.cppではうまくいくのに.cではうまく
いかなかったり、その逆もあるのですが。どういう事なんでしょうか?
744デフォルトの名無しさん:2005/12/13(火) 01:01:44
C言語ソースファイルとC++言語ソースファイルの違い。
というかスレ違い。
745デフォルトの名無しさん:2005/12/13(火) 08:59:40
C++ のソースコードの拡張子って何にしてます?>ALL
cpp か cc かで悩むことがある。

UNIX でプログラム書いてたときには .cc 使ってたけど、
最近 VC++ 使うようになって .cpp にした。
変わったところでは .c++ っていう拡張子使ってる人もいるらしい。

ヘッダファイルは .h .hh .hpp これまた悩む。
746デフォルトの名無しさん:2005/12/13(火) 09:00:30
迷わず、SKU
747デフォルトの名無しさん:2005/12/13(火) 09:23:03
拡張子にはASCII以外使いたくないなぁ。
Uって機種依存文字だったと思うし。
748デフォルトの名無しさん:2005/12/13(火) 10:00:54
じゃぁ .HG
749デフォルトの名無しさん:2005/12/13(火) 11:46:30
cxx
750デフォルトの名無しさん:2005/12/13(火) 12:34:57
.C
751デフォルトの名無しさん:2005/12/13(火) 13:06:24
現在、ある計算プログラムを作成しているのですが、
計算結果をダイアログに表示(グレーの部分)するにはどうすればいいのでしょうか?
現在はMessageBoxで表示しるのですが、これだと[OK]を押さなければならないので、不便です。

環境は WindowsXP 、VC++.net です
752デフォルトの名無しさん:2005/12/13(火) 13:15:05
>>751
SetWindowText()で、キャプション変えるのが一番簡単
753デフォルトの名無しさん:2005/12/13(火) 14:45:32
その辺で悩むって、どうやって計算式を入力してるんだろうね
ダイアログの上には何も存在しないんだろうか
754デフォルトの名無しさん:2005/12/13(火) 19:05:48
>>745
h, cpp以外は不自然に感じるから使わない。
hとcppは、HeaderとC Plus Plusだと思うけど、
hhとかccとか何でそうなるのかわからん。
755デフォルトの名無しさん:2005/12/13(火) 20:53:39
.hppはBoostが使っているから気にならなくなった。
けれど単独プロジェクト内でしか使わないヘッダは依然として.hを使っている。
756デフォルトの名無しさん:2005/12/13(火) 20:57:38
H++
757デフォルトの名無しさん:2005/12/13(火) 22:06:27
<iostream>とか初めて見たときは愕然とした
758デフォルトの名無しさん:2005/12/13(火) 22:15:25
そこで.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です。
760デフォルトの名無しさん:2005/12/14(水) 05:23:45
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向けのものばかりで
762デフォルトの名無しさん:2005/12/14(水) 12:32:11

次来る時は日本語も勉強しておいて欲しいです
763デフォルトの名無しさん:2005/12/14(水) 13:07:35
質問がです。
MFCを使用して、15マイクロ秒間隔で、パラレルポートからデータを送信するプログラムを
作成したいと考えています。
Windowsプログラムに関して、あまり詳しくないので、
実現することが可能かどうかしりたく質問します。

1.ウインドウズアプリで 15マイクロ秒という短い間隔で、処理を呼び出すことが可能なのでしょうか?
 TIMEイベントを使用してもイベントの発生時間の最小単位が ミリ秒なので不可でしょうか?

2. 15マイクロ秒で呼び出すことができない場合、

while(1)
{
現在の時間を取得

if( 15マイクロ秒かどうか )
{
データを送信する。
}
}
といった感じにループをまわしつづけて時間を毎ループ計測してデータを送信
するとったことは、可能でしょうか?

宜しくお願い致します。
764デフォルトの名無しさん:2005/12/14(水) 13:20:08
CSplitterWndつかって画面分割しているんすけど、
それぞれの画面領域の初期サイズの設定ってどうやったらいいすか?

CreateViewの際のCSize(100,100)とかだとなんかいまいちだめぽいんですが、
というのも、分割画面の一番下側のがなんか、異様にでかくて全部の領域をかくしちゃってる状態。。。
こいつ小さくしたいけど小さくならない。。。なぜぇ〜

765デフォルトの名無しさん:2005/12/14(水) 13:39:36
>>763
LONG t = timeGetTime();
while(timeGetTime() - t < 15) 
   ;
//送信


#winmm.libをインポートしないとtimeGetTimeは使えない 
766デフォルトの名無しさん:2005/12/14(水) 13:48:54
>>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 ;
}

>全部の領域をかくしちゃってる状態
ならなかったけど
767364: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 がでかくなっちって他の分割領域にかぶさっちゃう。
(ぶんかつすぷりったーうごかせばちゃんとそれぞれの画面はみえるです。)
769デフォルトの名無しさん:2005/12/14(水) 15:10:17
>>768
CSplitterWnd::SetRowInfo()で、どうにかする。
770デフォルトの名無しさん:2005/12/14(水) 15:41:40
SetRowInfoでどうにかできました。orz
771デフォルトの名無しさん:2005/12/14(水) 19:01:53
VC++6.0のリファレンス見ていると関数名の前にアンダーバーがついている関数があるんですけど
これはC/C++の標準ライブラリ関数ではなく処理系が独自に用意した関数ということでしょうか?
772デフォルトの名無しさん:2005/12/14(水) 20:29:25
>>765
それmsでしょ
質問はμsだったよ
773デフォルトの名無しさん:2005/12/14(水) 20:44:57
哀れなスレだ。
774デフォルトの名無しさん:2005/12/14(水) 21:41:21
>>763
インラインアセンブラでRDTSC
775デフォルトの名無しさん:2005/12/14(水) 21:57:16
>>771
そういうこと。
776デフォルトの名無しさん:2005/12/14(水) 22:24:43
QueryPerfoemanceCounterはお嫌い?
777デフォルトの名無しさん:2005/12/14(水) 22:25:01
>>775
回答有難うございました。
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 スキップ ==========

となります。エラーって何ですか?
779デフォルトの名無しさん:2005/12/14(水) 22:33:27
780778:2005/12/14(水) 22:35:52
質問変えます。
なんでエラーになりますか?(どこがいけないですか)
781デフォルトの名無しさん:2005/12/14(水) 22:39:36
お前、英語読めないのか?
782デフォルトの名無しさん:2005/12/14(水) 22:40:52
>>780
'sudio.h': No such file or directory
(そんなファイルorフォルダ無いっすよ)
783デフォルトの名無しさん:2005/12/14(水) 22:46:08
どういうエラーか、しかもエラーの原因まできちんと報告してるじゃん。英語は読む気無しか?
784デフォルトの名無しさん:2005/12/14(水) 22:49:10
>>780
お前が読んでいる本・サイトなどにあるプログラムとお前が書いたプログラムを見比べろ。
785778:2005/12/14(水) 22:56:11
すいません。エラー報告をよく読んでませんでした。
入門書につべこべ言わずこれそのまま書いてビルドしてみろ
と書いてあったのでやってみました。
sudio.hがないということは代わりにどんなファイルを指定するべきなんですか?
786デフォルトの名無しさん:2005/12/14(水) 23:12:39
>>785
×sudio.h
○stdio.h
787デフォルトの名無しさん:2005/12/14(水) 23:14:14
788778: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(構造体)の値と、計算上のサイズが違う場合ってメンバのサイズを変えるしか
ないのですか?
791デフォルトの名無しさん:2005/12/15(木) 01:33:40
>>790
メンバの順番を変えても構造体のサイズが変わるかもしれない。
まぁ、よく判らんのだったら気にするなと。
792デフォルトの名無しさん:2005/12/15(木) 01:35:21
struct aho {
  char baka[5];
  long shine;
};

sizeof(struct aho) の値が 9 じゃなくて 10 になるって話?
793デフォルトの名無しさん:2005/12/15(木) 01:36:57
12 かな
794デフォルトの名無しさん:2005/12/15(木) 01:38:06
>>790
計算上のサイズとはなんですか?
メンバー変数のサイズの合計は必ずしも構造体のサイズではないですよ。
コンパイラーまたはそのオプションによって、メンバー変数はある一定の
バウンダリー上に配置されます。つまり、メンバー変数とメンバー変数の
間に隙間ができます。
構造体のサイズとはこれらの隙間も足した合計です。
795デフォルトの名無しさん:2005/12/15(木) 01:46:26
>>794-793
8/16bitなら10
32bitなら12
64bitなら16
796デフォルトの名無しさん:2005/12/15(木) 01:53:56
VCのデフォルトのアラインメントは8だったかな?
だから、デフォルト設定だと10
797デフォルトの名無しさん:2005/12/15(木) 01:56:37
>>795
思い込み乙。
798790です: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
>>798
アクセスできないデータとは?
800790です:2005/12/15(木) 02:29:41
確認する前に間違えて送信を押してしまいました・・・orz

paho AHO= new aho;
ですね。

ネットワーク関係のプログラムの勉強をしていて、受信バッファを構造体にコピーして扱いたい
と思っています。
801790です: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つ出力されないのかと
思ったのですが。。。
802デフォルトの名無しさん:2005/12/15(木) 02:39:16
aho->baka[5]
これでアクセス可能
803デフォルトの名無しさん:2005/12/15(木) 02:42:52
>>800
はいはい、なんとなく趣旨がわかりました。
電文に構造体をコピーしたいということですね。
それなら、構造体のコピーは×です。

電文のレイアウトに
char baka[5];
long shine;
とあって、そこにpahoをmemcpyでコピーするのは駄目です。
bakaとshineをそれぞれ別にコピーすべきです。
あと、longの場合はネットワークバイトオーダーというものがありますから、
それも意識する必要があります。(電文仕様による)これにも注意してください。

ネットワークバイトオーダー↓
http://wisdom.sakura.ne.jp/system/winapi/winsock/winSock4.html
804デフォルトの名無しさん:2005/12/15(木) 02:47:31
>>800
>801の例だと、メンバの隙間は出力されないからそういう意味では、「一つ出力されない」と言える。

実際に構造体がどう配置されるか自分で調べることができないレベルならば、
構造体に直接コピーするのではなく1バイトずつきちんとコピーした方がいいよ。
ネットワークを介した両端で同じように構造体にパックされることが保証されているなら
中身を気にせず構造体のまま送るのも手ではあるけど。
805デフォルトの名無しさん:2005/12/15(木) 02:48:08
メンバの数が多いときはどこにすき間がくるかわかるのか?
806803:2005/12/15(木) 02:52:39
>>803はあくまで一般的なことを言ったまでで、あくまで電文の仕様によります。
構造体のコピーでよい場合もあります。電文の仕様にあってればの話ですけど。
807デフォルトの名無しさん:2005/12/15(木) 02:53:30
>>805
(環境が特定できるなら)全て予測可能だし、必要ならコンパイル時に確定できる。
808デフォルトの名無しさん:2005/12/15(木) 02:54:47
809デフォルトの名無しさん:2005/12/15(木) 02:57:18
>>805
コンパイルオプションの構造体メンバーのアラインメントが何バイトになっているか
で、わかりますけど、このオプションを変更すると動作が不定になってしまう
コードはどうかと思います。
810790です :2005/12/15(木) 02:58:16
みなさん本気にありがとうございます!
頑張って勉強してみます!
811デフォルトの名無しさん:2005/12/15(木) 02:59:06
どうでもいいけど、間違いだらけなページだ。
812デフォルトの名無しさん:2005/12/15(木) 03:00:06
自演乙でした
813デフォルトの名無しさん:2005/12/15(木) 03:03:37
どっちかというと
#pragma pack()

socketのソース見てみれ
814デフォルトの名無しさん:2005/12/15(木) 09:53:12
一度作ったプログラムに
ウインドウをもうひとつ追加するのって
どうやったらいい?
815デフォルトの名無しさん:2005/12/15(木) 10:00:52
ウインドウといわれてもいろいろあるから
816デフォルトの名無しさん:2005/12/15(木) 10:19:38
本体から離れたところにできるウインドウが
後から追加でホスィです
817デフォルトの名無しさん:2005/12/15(木) 11:27:45
作ればいい
誰も止めない
818デフォルトの名無しさん:2005/12/15(木) 20:03:01
windows XPでもポインタでもエラーがでますか?
819デフォルトの名無しさん:2005/12/15(木) 20:17:56
>>818
それ以前の問題として日本語にエラーが出てるよ。
820デフォルトの名無しさん:2005/12/15(木) 23:13:42
ファイルを読み込んで処理を行うプログラムを作ったのですが、
デバッグ->開始 とやると最後まで動きますが、
デバッグ->デバッグなしで開始 とやると途中でエラーがでてしまいます(・・`

同じプログラムなのにこうなる原因は何なんでしょうか?
821デフォルトの名無しさん:2005/12/16(金) 00:04:56
>>820
おまいさんのコーディングが悪い。
つーか、エラーが発生してるのなら、その内容くらい書こうね。
822デフォルトの名無しさん:2005/12/16(金) 09:37:40
LPTSTRとPTSTRのように、Lの付いているのと付いていないのとで
どう違うのでしょうか?
823デフォルトの名無しさん:2005/12/16(金) 11:34:14
>>822
LはlongのLだ
ロングポインタか、ポインタかの違いだ
824デフォルトの名無しさん:2005/12/16(金) 13:26:08
>>823
レスありがとうございます。
すみません。ロングポインタとポインタの違いがわからないです。。。
825デフォルトの名無しさん:2005/12/16(金) 13:40:07
俺も分からない(笑
FAR ポインタと NEAR ポインタの違いなら分かる(笑
826デフォルトの名無しさん:2005/12/16(金) 15:03:58
くだらない事なのですが、マウスを2つ接続(あるいは
マウスとタッチパッドを接続)し、それらの機器別に
マウスのイベントをフックするといった芸当はできるの
でしょうか?
827デフォルトの名無しさん:2005/12/16(金) 15:30:17
すいません、質問です。
printf("%f\n",Is[j]);
でIsに格納した値を出力しようとして
コンパイル時にエラーも警告も出ないのに
1.#QNANO
と出力されてしまいます。
↑これって何なんでしょう??
Isはdouble型です。
828普通はムリ:2005/12/16(金) 15:35:08
>>826
そういうことに対応したドライバを使えばできるんじゃない?
829826:2005/12/16(金) 15:45:13
普通はできないんですかね。

グローバルフックとかを頑張って調べてみたんですが、
どうもマウスの判別といった事ができるわけではないようで・・・。
830デフォルトの名無しさん:2005/12/16(金) 15:46:40
>>827
計算結果が数値じゃないとそう出力される。
例えばその値は0割り算の結果だとか、その値の入っているはずのメモリが破壊されたか、scanf()系で間違って"%f"で入力しようとしたか、その辺だろう。
831デフォルトの名無しさん:2005/12/16(金) 16:05:25
上下に画面分割していて
上のListView(レポートタイプ)部分で選択されたアイテムの内容を
下のFormViewに配置されているEditBox等に表示させたいのですが、

ListViewのアイテムが選択されたこと&データをどうやってFormViewにわたせばいいでしょうか。。。
832827:2005/12/16(金) 16:05:25
>>830
レスありがとうございます!
そうですか…scanf()系は使ってないので
式がどこかおかしいっぽいですね。
sqrt()
でルートの中がマイナスになっても
そう出力されるでしょうか??
833デフォルトの名無しさん:2005/12/16(金) 16:15:52
>>825
ロングポインタとただのポインタの違いはfarポインタとnearポインタと同じ。

>>824
そんでこれらの違いは昔の名残で、今のVC++にロング・FARポインタは存在しない。
834デフォルトの名無しさん:2005/12/16(金) 16:34:14
>>832
>ルートの中がマイナス
そりゃぁ、計算不可能な値が返されるだろうねぇ。
835827:2005/12/16(金) 17:32:37
>>834
じゃあそこの式がおかしいっぽいですね。
もう一度洗い直してみます。
ご指導ありがとうございました!
836デフォルトの名無しさん:2005/12/16(金) 18:23:42
>>831
ListViewのアイテムが選択された時の処理で直接EditBoxに書いてもいいし
FormViewに処理を作ってそれを呼んでもいい
837デフォルトの名無しさん:2005/12/16(金) 19:52:27
Visual C++ 2005 Expressでincludeとかのパスを
はじめの状態に戻すにはどうすればいいですか?
838デフォルトの名無しさん:2005/12/17(土) 00:12:01
Visual C++とVisual C++.NETって何がどう違うんでしょうか?

Visual C++.NETは、Visual C++ プラス .NET Framework

というふうに単純に考えていいんですか?
839デフォルトの名無しさん:2005/12/17(土) 06:16:12
Visual C++ 2005 は元の名前にもどった
840デフォルトの名無しさん:2005/12/17(土) 09:29:53
>>837
再インストール
841デフォルトの名無しさん:2005/12/17(土) 12:30:31
本体のウインドウから離れたところに
できるウインドウってなんていうのがあるの?
842デフォルトの名無しさん:2005/12/17(土) 13:17:25
>>841
多分、お前がやりたいのは、ダイアログ
きっとそう
843デフォルトの名無しさん:2005/12/17(土) 13:42:55
この場合ダイアログではなくて
別にウィンドウを作りたいと解釈してみる

SDI -> ウィンドウが1つしかない
MDI -> 親ウィンドウの中にウィンドウが入ってしまう

マルチインスタンス -> ウィンドウが複数ある(SDIを複数起動)
844デフォルトの名無しさん:2005/12/17(土) 13:56:43
SDIはドキュメントひとつにウインドウひとつというだけで
そのアプリのウインドウの数とは関係ないよ
845デフォルトの名無しさん:2005/12/17(土) 13:57:44
訂正
SDIはドキュメントひとつにビューひとつ
846デフォルトの名無しさん:2005/12/17(土) 21:09:28
>>838
Visual C++ .Netは.Netをアピールするため、
Visual C++の特定のバージョンの製品名に.Netをつけただけ。
847デフォルトの名無しさん:2005/12/17(土) 23:05:45
VisualC++6.0を使っているのですが、この関数はここから呼ばれてるなどと解りやすく図にしてくれる機能とかっていうのはないんでしょうか?
結構長いソースを読む時に苦労しているので・・・
848デフォルトの名無しさん:2005/12/18(日) 03:34:57
>>847
ttp://docs.sun.com/source/806-4836/lint.html

あとVC6もProfessionalとかEnterpriseならアナライザがあったと思う
849デフォルトの名無しさん:2005/12/18(日) 05:00:24
DirectX 9.0 SDKのサンプルをリビルドしてみたんだけど(Release - Win32)

1>dxutmisc.obj : error LNK2019: 未解決の外部シンボル __imp__DialogBoxIndirectParamW@20 が関数 "void __cdecl DXUTDisplaySwitchingToREFWarning(void)" (?DXUTDisplaySwitchingToREFWarning@@YAXXZ) で参照されました。

なんて感じのが山ほど出てしまった。
VC2005 Express Editionではビルドできないの?
MFCないからダメとか?
850デフォルトの名無しさん:2005/12/18(日) 05:12:42
851デフォルトの名無しさん:2005/12/18(日) 05:32:16
>>849

必要なライブラリを探して追加して自己解決した。
スマンコ。
852デフォルトの名無しさん:2005/12/19(月) 09:46:58
>>839 >>846
6.0 + .NET = Visual C++ .NET or 2005
ってことな訳ですね。

ドーモ(´∀`)アリガトー!!
853デフォルトの名無しさん:2005/12/19(月) 11:38:11
実行したらすぐ閉じちゃうんだけど。
どうやったら閉じなくなるの?
854デフォルトの名無しさん:2005/12/19(月) 11:47:20
>>853
入力待ちにするか、無限ループにするか(ぉぃ)、コマンドプロンプトから実行するか、適当にどうぞ。
855デフォルトの名無しさん:2005/12/19(月) 12:24:32
コマンドプロンプトから実行すると閉じない!おぉ。
そうだったのか。
856デフォルトの名無しさん:2005/12/19(月) 12:27:10
Ctrl + F5 で実行するんじゃなくて F5 だけでやってみるのもいいかも
857デフォルトの名無しさん:2005/12/19(月) 16:36:13
すいません質問です.某社のカウンタボードを使っていて,
カウントが一致したときに割り込みをメッセージとしてアプリ側に
通知できる設定があるのですが,そのときに通知メッセージのメッセージ番号
を指定してやらなくてはなりません.
どうやってメッセージ番号がきまるのですか?任意の番号じゃだめなんですよね?
教えてください.
858デフォルトの名無しさん:2005/12/19(月) 16:56:59
ウインドウに送られてくるなら WM_USER+α とか
WM_COMMAND で WPARAM とか LPARAM が考えられるけど
>某社のカウンタボード
某社に聞くかマニュアル嫁
859857:2005/12/19(月) 17:26:33
マニュアルというかサンプルプログラムを見たところWM_USER+100
と定義していました.まねしてやってみたのですが動かず...
100ってのはなんでもいいんですかね.
860デフォルトの名無しさん:2005/12/19(月) 17:45:10
概ね大丈夫だけど、WM_APP以降を使う事を推奨する
WM_USER〜はなんかで(忘れた)バッティングする事がある

0x0000 〜 WM_USER-1 システムで使われるメッセージ用
WM_USER(0x4000) 〜 WM_APP-1 それぞれのウィンドウクラスで使われる整数メッセージ用
WM_APP (0x8000) 〜 0xBFFF アプリケーションで使う整数メッセージ用
0xC000 〜 0xFFFF アプリケーションで使う文字列メッセージ用
861デフォルトの名無しさん:2005/12/19(月) 17:51:32
>メッセージとしてアプリ側に通知できる設定
これに100または1024+100を設定すると
WM_USER+100で受け取れそう?
受け取れなければ別の原因と思われる。(文面からはどのウインドウを指定するとかないし)
862857: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()辺りが違うので、判定したいと思っています。
864デフォルトの名無しさん:2005/12/19(月) 18:31:24
GCCなら__GNUC__
VCなら_MSC_VERがバージョン込みで
WindowsのバージョンはWINVERで定義されてる。
865デフォルトの名無しさん:2005/12/19(月) 18:34:00
追加
__GNUC__がメジャーバージョン
__GNUC_MINOR__がマイナーバージョン
で定義されてる。
866デフォルトの名無しさん:2005/12/19(月) 18:49:22
#ifdef WIN32
#ifdef _CONSOLE //?
_MSC_VER 1310 //のときVC7.1
普通NT,2000,Xp と Win98 Meはexeを分けないので
必要ならランタイムに
GetVersion();
する。
867デフォルトの名無しさん:2005/12/19(月) 19:00:56
>>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の間違い。
868デフォルトの名無しさん:2005/12/19(月) 19:09:21
某Contec社のライブラリは、WM_USERからWM_APPまでに制限がかかってた。
RegisterWindowMessageしたのや、WM_APP+Nを渡したら、エラーになった。
869857:2005/12/19(月) 19:18:15
なんとなくですが,わかりました.皆さんどうもありがとうございました.
870デフォルトの名無しさん:2005/12/20(火) 10:04:41
C#で利用できるdllをつくりたいんだけど、
普通にWin32 Dynamic-Link Libraryで作っていいのかな?

871デフォルトの名無しさん:2005/12/20(火) 14:25:10
Mapを使いたいんですがエラーが出てコンパイルできないっす〜!
なにがいけないのかおしえてください;;

#include <map>

CMap<int, int> map;
872デフォルトの名無しさん:2005/12/20(火) 14:55:46
#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?
874デフォルトの名無しさん:2005/12/20(火) 23:03:55
>>873
cppファイルの先頭に#include "stdafx.h"を書く。
875デフォルトの名無しさん:2005/12/20(火) 23:06:58
>>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

ってして於きたいの。
877デフォルトの名無しさん:2005/12/20(火) 23:10:22
プリコンパイル済ヘッダを使用しない
でもおk
878873:2005/12/20(火) 23:10:48
>>876>>874へのレスですの。
お礼を言うのを忘れてたわ、ごめんなさいね。
>>784様 ご親切にありがとうございます。
879デフォルトの名無しさん:2005/12/20(火) 23:14:01
#if defined(_MSC_VER)
/*ネカマキモイ*/
#endif
880873:2005/12/20(火) 23:56:56
>>879 様、お忙しいところありがとうございます。
試してみたのですが
fatal error C1020: unexpected #endif
って怒られちゃって悲しくなりました。
google先生に聞いてみても上手く解決できそうになかったので
cppファイルのプロパヘーから/Yuオプションを外して全て忘れることにします。

それでは、ごきげんよう。
881デフォルトの名無しさん:2005/12/21(水) 00:48:50
なんともったいない。
882デフォルトの名無しさん:2005/12/21(水) 02:14:27
lib 作ったんだけど
中覗いたら作成時のパス情報が入ってて鬱なんです
作成時の環境情報を入れないオプションって無いでしょうか?
883デフォルトの名無しさん:2005/12/21(水) 07:55:17
ありますよ
884882:2005/12/21(水) 08:34:34
へー、そうなんだ。ありがと。
885デフォルトの名無しさん:2005/12/21(水) 09:12:15
キーボードで$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があれば教えてください。

よろしくお願いします。
887デフォルトの名無しさん:2005/12/21(水) 09:27:43
SHFileOperation
888デフォルトの名無しさん:2005/12/21(水) 16:55:59
画面分割してて上にListView下にFormViewをつくってて
上のListViewの内容を下のFormViewに表示させたいんだけど

ListViewのリストが選択されたら
FormViewのcppのほうでSetWindowTextしようとおもったんだけど
ウインドウハンドルが空っぽでセットすることができないんですが、どうしたらいいでしょう
889デフォルトの名無しさん:2005/12/21(水) 18:01:46
どこで、どのようにして、どのウインドウハンドルを取ってきたんだ?
890デフォルトの名無しさん:2005/12/21(水) 19:30:46
質問です。
VC++2005Express Edition のIDEでビルドした後、
指定したファイルを自動的に別の場所にコピーするにはどうすればいいのでしょうか?

makefile 書いてコマンドラインからとか、
バッチファイル作れってのは無しの方向でお願いします。
891デフォルトの名無しさん:2005/12/21(水) 19:43:48
2003なら[プロジェクト]-[xxxのプロパティ]で表示されるダイアログで
リンカの出力ファイルで設定するか、ビルドイベントのビルド後のイベントでも
なんかできそうだけど2005はしらない
892デフォルトの名無しさん:2005/12/21(水) 19:52:46
プロパティ マネージャ→プロパティ→ビルド後のイベント→copyコマンド入れ
893デフォルトの名無しさん:2005/12/21(水) 20:27:27
>>891>>892
でけました。
ありがとうございます。
894デフォルトの名無しさん:2005/12/22(木) 00:21:27
unixにはシンボル情報などを削除してexeをダイエットするstripコマンド
があるんですが、VC++にはこういうコマンドってあるんでしょうか。
895デフォルトの名無しさん:2005/12/22(木) 01:42:24
>>894
コンパイラとリンカのオプションをいじってそもそもそういった情報を着けないようにすれば良いと思う。
コンパイラオプションではデバッグ情報の形式とかリンカオプションのデバッグ情報の生成とか。
別にビルドの構成を作ったほうが良いと思う。
896デフォルトの名無しさん:2005/12/22(木) 01:59:15
>>894
gccのstripつかう
897デフォルトの名無しさん:2005/12/22(木) 08:54:49
リリースビルドするだけ
898デフォルトの名無しさん:2005/12/22(木) 10:34:28
VC++超初心者会議室
http://www.mtakahashi.com/

ここよく使ってたんだけど最近つながらない。
移転とか閉鎖?等の事情知ってるかたいたら教えてください。
899デフォルトの名無しさん:2005/12/22(木) 11:25:38
質問です。
visual C++ 6.0でインターネットのHPを表示するソフトをつくりたいのですが
条件が日付によって表示するHPを変えるというものです
要は、365日(閏年で366日分)毎日ちがうHPを表示するものを組めと言われたのですが
IEと連動させることすらできません
時間取得で日付判定までは作ったのですが、、、
WEBから情報取得の方法を教えていただけませんか?
900デフォルトの名無しさん:2005/12/22(木) 12:04:40
>インターネットのHP
先ずこれを解説してください。インターネットのヒットポイントですか?
901デフォルトの名無しさん:2005/12/22(木) 12:31:54
ShellExecute( NULL, "open", "www.google.co.jp", NULL, NULL, SW_SHOW );
902デフォルトの名無しさん:2005/12/22(木) 12:55:02
ShellExecute()が出たところで関連質問。
ShellExecute(hWnd, "print", "foo.txt", NULL, NULL, SW_HIDE);
しても印刷ダイアログが開いてしまうわけだが、確認なしに印刷させる方法ってないもんかな。
903デフォルトの名無しさん:2005/12/22(木) 15:24:49
>>889

ListViewから、FormViewにあるEditBoxのウィンドウハンドルってどうやったら取得できますか?
GetDlgItemしても、hWndが空っぽっていわれるし
904デフォルトの名無しさん:2005/12/22(木) 16:41:06
ListView→app→FormView→DlgItem
905デフォルトの名無しさん:2005/12/22(木) 17:04:38
Appを経由しないとむり?
906デフォルトの名無しさん:2005/12/22(木) 17:05:32
分割って書いてあるからCSplitterWndでね?
ListView.GetParent()をCSplitterWndにキャスト
split->GetPane()をFormViewに(ry
DlgItem

キャストがいやならメンバー変数にデモして
907デフォルトの名無しさん:2005/12/23(金) 13:28:29
初歩的な質問なんだけど。

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
>>907 なんのためのデバッガだよ・・・
909デフォルトの名無しさん:2005/12/23(金) 15:02:00
ずっと再帰的に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となる
910デフォルトの名無しさん:2005/12/23(金) 16:05:32
fputcに関する質問です。

FILE *fout;
int gyou;. /*行数のカウント*/
.
.
.
fputc(gyou,fout);

のようにして、行数をファイルに整数で出力したいのですが、asciiコードに対応した文字でファイルに出力されてしまいます。
gyouに入っている整数そのままをfputcで出力するにはどうすればいいでしょうか?
fprintfは使ってはいけないとのことです。
911デフォルトの名無しさん:2005/12/23(金) 16:20:00
>>910
sprintf()などで文字列にしてからfputc()をループで回してはダメ?
つーか、fputc()一発じゃ無理だと思うけど。
#行数が高々一桁で表せると言う前提があるなら話は別だが。
912デフォルトの名無しさん:2005/12/24(土) 07:54:03
メッセージボックスを表示するだけのプログラムはどこまでサイズを小さく出来るのですか?
バイナリエディタで見るとNULLばっかりで無駄なところが多そうなんだけど、
その部分を削ると動かなくなる・・・
913デフォルトの名無しさん:2005/12/24(土) 09:04:45
>>912
リンク->入力->すべての既存のライブラリの無視を「はい」
にすると、2kbくらいになる。
914デフォルトの名無しさん:2005/12/24(土) 17:26:22
>>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関数と同じようなものを自分で書くことが
出来たらもっと小さなサイズでメッセージボックスを書けるのですか?
916デフォルトの名無しさん:2005/12/24(土) 23:23:56
>>915
いや、かえってサイズが大きくなるだろう。
メッセージボックスだけでもそれなりの量のコードになると思う。
917デフォルトの名無しさん:2005/12/25(日) 04:23:45
セクションの結合、アライメントの変更でもちっと小さくなるけどな…
918デフォルトの名無しさん:2005/12/25(日) 09:53:47
DOSスタブを小さいものに変えるという方法もまだある。
919デフォルトの名無しさん:2005/12/25(日) 14:04:13
どこに書いてよいのやらわからんかったのでここで

VS6.0+PlatformSDK+DX9SDK(Oct2004)の環境なんですが、DX9SDK付属のDXUTをビルド
しようとするとやれ何とかが定義されていないだの予期せぬEOFがでたのなんだのと
まったくビルドできません。取り敢えず検索パスは設定してるんですが…
他にも何か足らんのでしょうか?
920デフォルトの名無しさん:2005/12/25(日) 14:06:04
何とかが定義されていない
921デフォルトの名無しさん:2005/12/25(日) 14:15:19
VC++2005にばじょんあぷ
922デフォルトの名無しさん:2005/12/25(日) 14:17:49
>921
DXUTがビルドできない件をしらべるとよくそう言われてるようで…
真面目に買い換えないと駄目か…
923デフォルトの名無しさん:2005/12/25(日) 18:23:21
>>919
ttp://pc8.2ch.net/test/read.cgi/tech/1067396098/391-395
を見ること
391の環境:
Platform SDK (February 2003)
DirectX SDK (Summer 2003)
Processor Pack (SP5用のからファイル抽出して利用)

DirectXは 2003 Summerまでじゃねーか?
924910:2005/12/25(日) 20:47:12
>>911,>>914
c= 49;を代入してみたところ、しっかり整数'1'出力されました。
これを基にしてやってみます。どうもありがとうございました。
925919:2005/12/25(日) 23:45:18
>>923
マジデΣ(゚д゚lll)

もう古いPSDKは手にはいらんし、こりゃ買い替えケテーイか… orz
926デフォルトの名無しさん:2005/12/25(日) 23:46:32
>>925
買い換えなくともとりあえずExpress Editionでなんとかならないか?
927919:2005/12/25(日) 23:59:28
>>926
いまisoイメージ落としてます
いつの間にこんなのが出たんだか
浦島太郎な気分…
928デフォルトの名無しさん:2005/12/26(月) 00:17:26
PlatformSDK February 2003
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

DirectXSDKはVC6はOct2004までで良かった希ガス。
929デフォルトの名無しさん:2005/12/26(月) 00:50:20
なにかすっきりしないので教えてください。
次のように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ですよね?
930919:2005/12/26(月) 00:59:03
何から何までマリガトウ
今入ってるPSDKのバージョンがわからんので環境再構築してみる
931デフォルトの名無しさん:2005/12/26(月) 01:02:12
戻り型がCStringなら、charの配列を返してもいい。
returnそれ自体に、戻り型のオブジェクトを構築する効果がある。
932デフォルトの名無しさん:2005/12/26(月) 01:17:33
>>929
そういった処理で何度コンストラクタ・デストラクタが呼ばれるか
知らないとCに比べてとんでもなく遅いプログラムになる。
933929:2005/12/26(月) 02:04:49
有り難うございます。すっきりしました。
呼ばれる回数が多い場合は戻り値ではなく、引数にポインタを使う様にしてみます。
そう言う場合はCStringではなくて、LPTSTRがいいのでしょうね。
934デフォルトの名無しさん:2005/12/26(月) 02:24:09
>>932
この話でCとスピードを比べるのはお門違い

>>933
ポインタのサイズは CString でも LPTSTR(char*) でも同じだよ
値渡し ポインタ渡し 参照渡し コピーコンストラクタ、この辺りを勉強したらいいよ
935デフォルトの名無しさん:2005/12/26(月) 03:56:23
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();
速度にこだわる必要がなければ、これでもいいんじゃねーの? 見やすいし
まぁ、初心者なら色々やってみるのもいいと思う。
936デフォルトの名無しさん:2005/12/26(月) 09:19:51
>>933
メモリ管理が楽になるようにCStringなどを使っているのにそんなんでLPTSTR使うなんておいおい。
(LPCTSTRなら話は別だが)
937919:2005/12/26(月) 11:20:14
DXUTってUNICODE専用なんすね('A`)
サンデープログラマだった事もあり、今までUnicodeと縁が無かったのでいきなり躓いてます。

VS6.0でUnicodeを使う場合、”プロジェクトの設定”→”<C/C++>タブ”を選択し、
プリプロセッサの定義で_MBCSを削除して、替わりに_UNICODEを入れたんですが、
ビルドしようとするとまたUnicodeにしると怒られます。
Unicode使う場合の設定を教えて下さい。 orz コノトオリ
938デフォルトの名無しさん:2005/12/26(月) 11:44:12
>>906
ん〜やっぱわからないっす〜


void CTestListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
CCardInformationView View;
View.DisplayCardInformation( cardinfo );

}





939デフォルトの名無しさん:2005/12/26(月) 11:47:58
う、途中で投稿してしまった。。。

ん〜やっぱわからないっす〜
void CTestListView::OnClick(NMHDR* pNMHDR, LRESULT* pResult)
{
 CTestFormView FormView;
 FormView.SetData( "aaa" );
}

void CTestFormView ::DisplayCardInformation( CString str )
{

このstrをこのFormViewにあるEditBoxにセットしたいんですけど
どないしたら〜ええんでそ。。。

ここでふつうにSetWindowTextやっても、Wndがnullでつ

}
940デフォルトの名無しさん:2005/12/26(月) 12:07:21
>>938
>>906
> GetParent()をCSplitterWndにキャスト
人の話を全然聞いていないだろ。
941デフォルトの名無しさん:2005/12/26(月) 13:03:37
>>940
いや、それしてもできんとです。。。
画面を複雑に6分割とかしてるから
GwtPaneがうまくいってないだけなのかなぁ。。。
942デフォルトの名無しさん:2005/12/26(月) 13:05:30
Webアプリケーションにおけるコントロールについてですが
「Webフォーム」カテゴリにある「ボタン」「ラベル」と
「HTML」カテゴリにあるこれらはどう違うのですか?
943デフォルトの名無しさん:2005/12/26(月) 14:03:54
>>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 って表示されるとうれしいんだけど・・・
945デフォルトの名無しさん:2005/12/26(月) 17:23:37
これで MYNAME って表示されるってことは・・・
「#演算子」について俺は間違った理解をしている orz
946デフォルトの名無しさん:2005/12/26(月) 17:24:48
>>944
C言語の仕様上の理由で二重にマクロを挟まないといけない。
#define MYNAME vipper 
#define TT(macro) #macro
#define macro_to_string(macro) TT(macro)
947デフォルトの名無しさん:2005/12/26(月) 17:37:01
質問です。

size = fread(data, 1, 128, imgfp );

printf("%d byte読み込みました。\n", size);

でバイナリファイルを読み込みしようとしてるのですが、
毎回size = 0となってしまっています。
ファイルはちゃんと開けている保障はあるのですが、何が原因と考えられますでしょうか?
948デフォルトの名無しさん:2005/12/26(月) 17:37:34
>>946 ほんとだ、ありがとう。
何でこうなるのか、プリプロセッサになった気分で考えてみたけど、
頭がこんがらがってきて分からなくなった。
949デフォルトの名無しさん:2005/12/26(月) 17:41:50
>>947
ファイルを開くところからソースを晒せ。
950デフォルトの名無しさん:2005/12/26(月) 17:50:35
>>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);

よろしくお願いします。
951デフォルトの名無しさん:2005/12/26(月) 17:50:36
>>948
文字列化演算子 (#) は引数を展開することは出来ない。
なので、さらにマクロの引数にすることで強制的に展開させるのが>>946のコード

......とは言ってもこんな腐った技法を覚えるくらいなら
素直にboostを導入して、BOOST_PP_STRINGIZEを使いましょうとなるんですけどね
952デフォルトの名無しさん:2005/12/26(月) 17:55:52
imgfpの宣言も晒せウンコ
953デフォルトの名無しさん:2005/12/26(月) 19:48:12
>>950

feof()とferror()でのチェック結果は?

と書き逃げ
954デフォルトの名無しさん:2005/12/26(月) 21:30:20
>>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ファイル)
それが出てればうまくいっていると思ったらいい。
955953:2005/12/26(月) 22:37:50
>>950
追加でファイル名を疑ってみる。

"test.bmp"の代わりに違うファイルが開かれていないか?
imgfilenameは十分な大きさを持っているか?
printf("%s\n", imagefilename);の結果は?
956デフォルトの名無しさん:2005/12/26(月) 22:59:36
>>950
に物申す。
自分の悩んでいる点を単純化して可能なら丸まま書けよと。
> printf("%d byte読み込みました。\n", size);
以降はfclose以外不要だろと。
その他の部分を書き足しても >>954 で十分だろうと。
>>954のソースでも結果が想定外なら原因は限られる。
957デフォルトの名無しさん:2005/12/27(火) 01:07:11
コンソールプログラムでバイナリファイルを開いて表示したいんですが、

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]);
}
958デフォルトの名無しさん:2005/12/27(火) 01:19:54
すいません。事故解決しました。
959デフォルトの名無しさん:2005/12/27(火) 03:38:53
1000
960デフォルトの名無しさん:2005/12/27(火) 15:15:13
変数のアドレスというのは、
仮想的なアドレスなんですか?
それともアドレス0x1234は他のプログラム
から見てもアドレス0x1234なんですか?
961デフォルトの名無しさん:2005/12/27(火) 15:22:37
>>960
仮想的
OS様が管理されてる
962960:2005/12/27(火) 16:51:18
>>961
ありがとうございました。
963デフォルトの名無しさん:2005/12/27(火) 17:01:21
オーナードローでタブコントロールを描画しているのですが、
アクティブなタブの「浮き出る用に見せている描画部分(TCS_BUTTONならへこんでいる)」
も自分で描画したいのですが、もしくは自動的に描画させないようにしたいのですが、
何かいい方法がありますか?
964デフォルトの名無しさん:2005/12/27(火) 19:18:22
オーバーフローはするんですか?
965デフォルトの名無しさん:2005/12/27(火) 20:27:20
>>964
何の? 何のオーバーフローの話がしたいんじゃね?
966デフォルトの名無しさん:2005/12/28(水) 11:29:36
質問です。
リソースエディタでダイアログを編集していましたところ、

配置されているテキストボックスなどのタブストップ順番が
しっちゃかめっちゃかになってしまいました。

製作された順番にタブストップするっぽいのですが、今後も拡張などをするかもしれませんし作り直すわけにはいきません。
何かタブストップの順番を明確に定義できる方法はありませんでしょうか
967デフォルトの名無しさん:2005/12/28(水) 11:55:51
>>966
*.rc内での順番が、タブストップの順番。
GUIで変更したいなら、リソースエディタでCtrl+Dして変更。
968デフォルトの名無しさん:2005/12/28(水) 12:27:32
>>966
メニューの<書式>→<タブオーダー>
クリックした順にタブオーダーが決定する
969968:2005/12/28(水) 12:28:35
ああ、Ctrl+Dと同じか・・・
970デフォルトの名無しさん:2005/12/28(水) 13:01:24
あと、意外に知られてないけどShift+クリックでその番号から変更できる。
971デフォルトの名無しさん:2005/12/28(水) 14:46:11
>>970
うぉ!!知らなかった・・・
今まで、クリック踏み外した時、泣く泣く最初からやってたorz
thx!
972963:2005/12/28(水) 15:06:45
CodeGuruにちょうどいいサンプルがありました。
おさわがせしました。
973デフォルトの名無しさん:2005/12/28(水) 15:38:30
>>967-968
ありがとうございました!
メニューの<書式>というのが見当たらなかったのでCTRL+Dを使わせていただきました。
私のVS、でてないメニューがあるんですかね…。ちょっとそっちも探してみます。
974デフォルトの名無しさん:2005/12/28(水) 16:18:09
キャッシュ的な使い方をするために一時的にアプリ内で
メモリを確保するとき、「スワップを発生させいで
確保できる最大メモリの半分くらい」つーノリで、
メモリを確保したいんですが、そのサイズって
どうやって見積もればいいんでしょうか?

やっぱそういうのは標準的な関数には無くて、
直接何らかのWINのAPIをたたく事になるんでしょうか?
975デフォルトの名無しさん:2005/12/28(水) 16:57:11
>スワップを発生させい
どこぞのお殿様?
 
976デフォルトの名無しさん:2005/12/28(水) 17:39:03
あ〜「スワップを発生させないで」の間違いでした。
スマソ
977デフォルトの名無しさん:2005/12/29(木) 00:33:21
vc++8ってどこで手に入りますか?
vc++6とか、vc++Net2003とかいうやつしか
売ってるのを見たことないのですが。

あと、c++の開発環境としてvc++6の次に
普通の後継バージョンとして買うなら
今のところvc++Net2003ってやつでいいのでしょうか?
978デフォルトの名無しさん:2005/12/29(木) 01:20:42
>>977
expressはただ
979デフォルトの名無しさん:2005/12/29(木) 01:31:25
>>798
expressはリソースエディタとか使えないらしいので
検討の対象外です。
980デフォルトの名無しさん:2005/12/29(木) 06:20:00
>>979 じゃ、Visual Studio 2005 Professional
買えばいいじゃん。何をそんなに迷ってるの?
981デフォルトの名無しさん:2005/12/29(木) 06:21:15
>>979
そこまで調べてなぜ他のEditionのリリース情報を調べない?
982デフォルトの名無しさん:2005/12/29(木) 07:12:27
>>980
ですからVC++8っていうのがあるっぽいんで
それはなんなのかなと。。
983デフォルトの名無しさん:2005/12/29(木) 07:21:02
>>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」っていう製品もでてるんですか?
どこにも売ってなさげなんですが。。
986デフォルトの名無しさん:2005/12/29(木) 07:52:48
Visual Studio 2005 Professional インストールして、
バージョン情報見ると、インストールされている製品
の欄に Visual C++ 2005 って表示されてるよ。
987デフォルトの名無しさん:2005/12/29(木) 07:55:58
C++: .NET Framework プログラミング最良の言語
http://www.microsoft.com/japan/msdn/vs05/visualc/VS05Cplus.asp
適用対象:
Microsoft Visual C++ 2005
Microsoft Visual C++ .NET
Common Language Runtime (CLR)
Microsoft Visual Studio 2005

普通に製品として Visual C++ 2005 ってあるけど・・・
なんで無いと思ったの?>>985は。
988デフォルトの名無しさん:2005/12/29(木) 08:02:47
Visual C++ 2005 って単品で手に入らないのでしょうか
989デフォルトの名無しさん:2005/12/29(木) 08:15:39
VS2005はまだパッケージ販売されてないよ。
ちなみに単品では買えない。
990デフォルトの名無しさん:2005/12/29(木) 08:23:08
そうですか。わかりました。ありがとうございました。
今2万だしてc++.net2003買うなら
6をしばらく使って
VS2005スタンダードがでたら3万でそっちを買おうと思います。

で、、、
vc++8ってどれのことですか?
2003のほうのことでないですか?
991デフォルトの名無しさん:2005/12/29(木) 08:28:21
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.
992デフォルトの名無しさん:2005/12/29(木) 09:04:35
んでも、C++ 使うならそんなに VC++ 8 に
こだわる必要ないと思うんだがなぁ。
C++/CLI 使いたいならしらんが。

ちなみに、C++/CLI って結構面白いな
993デフォルトの名無しさん:2005/12/29(木) 09:08:50
GetSafeHdcでハンドル取得し、使い終わったらReleaseしないとダメですか?
GetDCとReleaseDCが対になっている様に、GetSafeHdcもリリース用の関数が
存在するのでしょうか?
994デフォルトの名無しさん:2005/12/29(木) 09:47:34
次たててみた。

くだすれVisual C++(超初心者用)
ttp://pc8.2ch.net/test/read.cgi/tech/1135817069/
995デフォルトの名無しさん:2005/12/29(木) 10:07:00
>>992
正直、それならC#をお勧めする。
996デフォルトの名無しさん:2005/12/29(木) 10:17:16
>>995 C#は普通に使ってるんで。
それにこのスレの話題でもないし。

Managed C++ と比べてって話で面白いと。
正直 Managed C++ は面白いと言うよりは
「むりしてんなぁ」って感じだった。
997デフォルトの名無しさん:2005/12/29(木) 10:23:35
>>993
MFCならMFCのところに行ったほうがいいかも。
http://pc8.2ch.net/test/read.cgi/tech/1131958904/l50

GetSafeHdcは多分、m_hDCを返すだけだからReleaseとは関係ないと思うよ。
998デフォルトの名無しさん:2005/12/29(木) 11:44:01
>>994
ふざけてんのか?
999デフォルトの名無しさん:2005/12/29(木) 12:05:49
で、上の新スレが正式な新スレでいいんだよね?
それとも次スレはVIP行き?
1000デフォルトの名無しさん:2005/12/29(木) 12:31:27
ヽ  / _  ───┐   |
 / ̄| /      /  |
    ∧      /    |
/  / |    /\     |    /
  /  \ /   \  |_/

    人       匚二二|
   /  \    ┌──┐
 /─┬─ \  ├──┤
   ─┼─     ├──┤
   ─┴─     └──┘
            丿  \
   |    ___
 ー十ー  |  |  ー――十―――  __|_  |ーー
 __|_   |__|    ,ーー十ーー   __|_|_ |___
 |___|  |  |  .ー――亠―――  ___ ___|
 |___|  ..|__|     |――――|    |___| |__
   |    .|   |     ト―――-|    |___| |__
 ー十ー  ノ   |     ト―――‐|    |   .| |__
   |  /   ..J     |     .J    |   J L__」

      _ノ  ノ_
     / ヽ   / \
    〈    | ̄|    〉
     \ 丿 |  /
         ̄
http://pc8.2ch.net/test/read.cgi/tech/1135817069/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。