★初心者にVisual C++を教えるスレ★ Part22

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html
  http://myu.daa.jp/osiete/

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

過去スレ、関連スレなどは>>2-5
2デフォルトの名無しさん:2005/11/08(火) 19:11:35
3デフォルトの名無しさん:2005/11/08(火) 19:43:37
  _  ∩
( ゚∀゚)彡 おっぱい!
 ⊂彡
     _  ∩
   ( ゚∀゚)彡 おっぱい!
    ⊂彡
        _  ∩
      ( ゚∀゚)彡 おっぱい!
       ⊂彡
4デフォルトの名無しさん:2005/11/08(火) 20:00:21
【関連スレ】
■MFC相談室 mfc14d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1121200124/l50
Win32API質問箱 Build36
http://pc8.2ch.net/test/read.cgi/tech/1128951330/
鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50
C言語なら俺に聞け! Part 117
http://pc8.2ch.net/test/read.cgi/tech/1131282679/
C++相談室 part44
http://pc8.2ch.net/test/read.cgi/tech/1128512737/
C/C++の宿題を片づけます 52代目
http://pc8.2ch.net/test/read.cgi/tech/1130431335/
【初心者歓迎】C/C++室 Ver.20【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1121644782/l50

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/
5デフォルトの名無しさん:2005/11/08(火) 20:01:47
6デフォルトの名無しさん:2005/11/08(火) 20:11:03
すまん、間違えた。
関連スレ修正
【初心者歓迎】C/C++室 Ver.22【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1128872687/
7デフォルトの名無しさん:2005/11/08(火) 21:47:03
8デフォルトの名無しさん:2005/11/10(木) 19:58:32
VC++.NET 2003 のWindowsフォーム アプリケーション(.NET) で
CAsyncSocketを使って通信のクライアント処理を作ろうとしていますが、

 CAsyncSocket socket;
 socket.Create();

で、socket.Create()の返り値が 0(異常終了) で返ってきます。
Windowsフォーム アプリケーション(.NET)では、CAsyncSocketは使えないのでしょうか?
また、Windowsフォーム アプリケーション(.NET)の通信の実装は、CAsyncSocketを使う以外に
あるのでしょうか?
知っている人がいれば、よろしくお願いいたします。
9デフォルトの名無しさん:2005/11/10(木) 20:09:45
おまえそれMFCだろうが
10デフォルトの名無しさん:2005/11/10(木) 20:39:55
>>9
VC++.NET 2003 の MFCベースの場合
socket.Create()の返り値が 1(正常終了)でした。
Windowsフォーム アプリケーション(.NET) の標準的なクライアント通信機能の
実装方法のご教示よろしくお願いいたします。
11デフォルトの名無しさん:2005/11/10(木) 20:51:22
>>10
自分でMSDN調べろや
それでも解らんかったらその時教えてやるよ
12デフォルトの名無しさん:2005/11/10(木) 23:12:48
なんだか、聞くのも怖いですが・・・

実家にあったMicrosoftVC++6.0 をインストールして、プログラミング勉強してみようと始めたんです

とりあえず、dialogを作ろうとしてリソースエディタで新規で作ったんです。
で、コントロールを足していこうとしてるんですけど、 コントロールボックスが出てきません。
解説サイトを見ても、コントロールボックスからbuttonとかeditboxとかを選んでるんですが、
その選ぶボックスがでてこないのは何でなんでしょうか? だれか教えてください。
13デフォルトの名無しさん:2005/11/10(木) 23:23:42
>>12
表示メニューからツール バーをON/OFFする項目を探すか、
ツールバーの開いているところで右クリックする。
メニューが出てくるから必要なツール バーにチェックを入れる。
ボックスみたいになっているが当然ツール バーの一種だ。
14デフォルトの名無しさん:2005/11/10(木) 23:24:24
ツールバーの上で右クリックして、リストの中にコントロールってあるからそれ選択してみな
1512:2005/11/10(木) 23:31:16
>>13 >>14
早い反応でありがとうございます。
すぐ↑の質問への殺伐とした反応から こんな初歩(ってかソフトの操作法)を質問したら
どんなこと言われるかと思いましたw

>>14 のツールバー右クリックの方法で無事にボックスが現れました。解決です。

また勉強して、次はちゃんとプログラムについての質問できるように頑張ります。
16デフォルトの名無しさん:2005/11/11(金) 00:39:22
Microsoftから無償でダウソしたやつでやり始めました
クラスとか構造体とかまったくわかりません
17デフォルトの名無しさん:2005/11/11(金) 07:41:46
>>16
勉強してください。
18デフォルトの名無しさん:2005/11/11(金) 09:18:10
タブオーダについて教えてください。

タブオーダって1から順にクリックして決めますよね。
これって途中からできないんでしょうか。

たとえば、100個のコントロールを貼り付けたダイアログで、99と100を入れ替えたいだけの場合にも
1から順に100までぽちぽちクリックするのはあまりにもひどいですよね。

うまいやり方をご存知の方、よろしくお願いします。

19デフォルトの名無しさん:2005/11/11(金) 09:20:58
いったい何のタブオーダーだ
20デフォルトの名無しさん:2005/11/11(金) 09:33:08
メニューの 「書式 - タブオーダー」で設定するやつです。
21デフォルトの名無しさん:2005/11/11(金) 09:36:33
おまえ情報が少なすぎ
バージョンも使用フレームワークも書かんで何を察しろと言うのか
22デフォルトの名無しさん:2005/11/11(金) 10:00:06
Shift + クリック

#これくらい察すれば?
23デフォルトの名無しさん:2005/11/11(金) 10:03:15
あるフォルダの中にエクセルファイルが100個くらいあったとして
そのファイルの中身を一つ一つ検索かけて「ちんこ」って書いた行があるとしたら
その行を抽出して新たにそれをまとめたエクセルファイルを作るような
仕組みにしたいんですが、なにぶん初心者なもんでして
どういったあたりから手がけていったらいいのか・・・。
エクセルファイルの中身を見て検索するあたりがどうしたらいいのかが
わからんもんでして。便利な関数かなんかがあるんでしょうか?
24デフォルトの名無しさん:2005/11/11(金) 10:15:30
「ちんこ」でググレ
2523:2005/11/11(金) 10:17:30
>>24
さっそくのレスありがとうございます!!








il||li _| ̄|○ il||li
26デフォルトの名無しさん:2005/11/11(金) 10:21:13
>>22

それです。
できました。
どうもありがとうございました。
2710:2005/11/11(金) 15:05:40
>>11
フレームワークは、全然使い慣れていないので、
フレームワークを使わずに解決いたしました。
28WinXPにて:2005/11/11(金) 15:13:31
#include "stdafx.h"
#include <stdio.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
BOOL bRet; STARTUPINFO si; PROCESS_INFORMATION pi; FILE* fpredir;
if (( fpredir = freopen("OUTPUT.txt", "w", stdout)) == NULL){
fprintf(stderr, "標準出力へのリダイレクトエラー\n");
}
ZeroMemory(&si, sizeof(si)); ZeroMemory(&pi, sizeof(pi));
si.cb = sizeof(si);
// コマンドウインドウを非表示にする
si.wShowWindow = SW_HIDE;
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpDesktop = NULL;
si.lpTitle = NULL;
si.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
si.cbReserved2= 0;
si.lpReserved2= NULL;
si.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
si.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
si.hStdError = GetStdHandle(STD_ERROR_HANDLE);
// プロセスを起動する
bRet = CreateProcess(NULL, "ipv6.exe if", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);
if(0 == bRet){ // エラー}
Sleep(1000);
fclose(fpredir);
return 0;
}

"OUTPUT.txt"ファイルに"ipv6.exe if"の結果が出力されません。
ご指導よろしくお願いいたします。
29デフォルトの名無しさん:2005/11/11(金) 21:29:23
初心者です。環境はWin2kでVC++6.0proです。
WinAPIプログラミングを誠意勉強中です。

スタティックライブラリを使ってみようとしてるところです。
ライブラリにしたダイアログ(lib_test.lib)とリソース(lib_test.rc)を、リンクしようとしてます。

ヘッダ(lib_test.lib)をプロジェクトにもってきてインクルードして、
VC++のプロジェクトの設定から リンクするライブラリに lib_test.libを追加したんですが、

このlib_test.libとlib_test.rcは どこに置いたらいいんでしょうか?

プロジェクトファイルと同じディレクトリに置いたら
・外部シンボルが未解決
・外部参照が未解決      って出ました。
実行ファイルができるディレクトリ(debug版なので \Debug です)に置いたら
・入力ファイル(lib_test.lib)がオープンできません。   って出ました。

libファイル自体に変な属性(アクセスコントロールとか読取専用とか)はつけてません。
なのでオープンできないってのはリンカが見つけてないのかな・・・
どなたかご指南お願いします
3029:2005/11/11(金) 22:10:59
ヘッダはlib_test.hでした。 エロイ人降臨期待age
31デフォルトの名無しさん:2005/11/11(金) 22:16:33
>>29
プロジェクトファイルと同じフォルダにlibなどを置くのが正解だと思う。
入力ファイル(lib_test.lib)がオープンできませんのエラーが出ませんということは、
リンカーはとりあえずLIBファイルを開けたということだから。
32デフォルトの名無しさん:2005/11/11(金) 22:46:53
> 入力ファイル(lib_test.lib)がオープンできませんのエラーが出ませんということは、
> リンカーはとりあえずLIBファイルを開けたということだから。

言ってることが意味不明。
>>29は 「入力ファイル(lib_test.lib)がオープンできません。   って出ました。」って言ってるが?


いちいちlibファイルをコピーするのは面倒だから、どこかlibの出力用ディレクトリを決めて、
そのディレクトリを参照するような設定にしとくのがいいかとおもうが。
33デフォルトの名無しさん:2005/11/11(金) 22:51:13
> 言ってることが意味不明。
> >>29は 「入力ファイル(lib_test.lib)がオープンできません。   って出ました。」って言ってるが?

言ってることが意味不明。
「実行ファイルができるディレクトリ(debug版なので \Debug です)に置いたら」って言ってるが?
34デフォルトの名無しさん:2005/11/11(金) 22:51:32
オープンできませんって言ってるのに開けたとかばかじゃね
35デフォルトの名無しさん:2005/11/11(金) 22:53:19
>>32
プロジェクトのディレクトリに置いた→シンボル・参照の未解決
debugに置いた→入力ファイルがオープンできません
と29は書いてあるだろ。
俺は入力ファイルが〜のエラーが出なかった前者にLibを置くのが良いと書いたまでだ。
入力が見つからないというのは論外だから。
36デフォルトの名無しさん:2005/11/11(金) 22:58:39
自分でlib作る前に既存のlibでビルドできるようになれ
37デフォルトの名無しさん:2005/11/11(金) 23:05:17
>>35
31の書き方がなんかおかしいだろ
> 入力ファイル(lib_test.lib)がオープンできませんのエラーが出ませんということは、
この書き方じゃ質問者が「エラーが出ません」と言ってるように聞こえるぞ
38デフォルトの名無しさん:2005/11/11(金) 23:15:48
LIBの使い方もしらないのにLIB作ってもしょうがないだろ
39デフォルトの名無しさん:2005/11/11(金) 23:17:36
>>29
>プロジェクトファイルと同じディレクトリに置いたら
>・外部シンボルが未解決
>・外部参照が未解決      って出ました。

この時点では

>VC++のプロジェクトの設定から リンクするライブラリに lib_test.libを追加したんですが、

この作業をしてなかったということはないよな。
40デフォルトの名無しさん:2005/11/12(土) 00:44:39
VCの開発環境が無い人でもプロジェクトに使用するデータの改変ができるように
外部のテキストファイル(test.txtとします)に5 7 10と書くと
VCプロジェクトのほうで実行時に変数xに5、yに7、zに10を代入するようなコードはどう書くのでしょうか?
41デフォルトの名無しさん:2005/11/12(土) 00:52:05
( ゚д゚)ポカーン
42島野:2005/11/12(土) 01:18:08
SN比の求め方がわかりません。
pgmファイルの求め方がわかりませんのでプログラムお願いします。
/* SN比*/
g = 0.0;
f = 0.0;
for (y = 0; y <= ysize ; y++){
for (x = 0; x <= xsize ; x++){
g = g + a[x][y] * a[x][y];
f = f + (a[x][y] - b[x][y]) * (a[x][y] - b[x][y]);
}
}
h = 20 * log(sqrt(g/f));
printf(" %lf\n",h);
exit(0);
}
まではわかります
急いでます
43デフォルトの名無しさん:2005/11/12(土) 01:33:51
マルチポストにも程があるw
4429:2005/11/12(土) 01:49:13
なんか、私の質問で荒れてしまってごめんなさい。
>>38
> LIBの使い方もしらないのにLIB作ってもしょうがないだろ

はい。まさにそのとおりなんですよね。
ライブラリつくるのって、汎用っぽいオブジェクトファイルをまとめたもの って解釈なんですが
まずここが間違ってますか?

>>36
>自分でlib作る前に既存のlibでビルドできるようになれ
既存のlibは、システムの標準ライブラリが入ってるところからリンクするんですよね?
それはビルドできます。

>>39
した後でした。
lib_test.lib自体が間違ってるんでしょうかね・・・
4529:2005/11/12(土) 01:57:44
というか ネタバレすると
ttp://www7.plala.or.jp/keny01/windows/win32/#sub3-6  ここで順番通りやってみて
ライブラリを作るってので立ち止まってる状況です。

ライブラリを作るにあたってプロシージャが
WM_COMMANDのメッセージ処理で IDC_CHK_1を2回やってるのは違うなってくらいで
あとは一応書いてあるとおりにやってみてるんですが。  著者のコードミスも疑ってみたんですが、
.libがまず動いてみないと どうしようもないです。

実際のエラーメッセージは 以下

LINK : warning LNK4075: /EDITANDCONTINUE は /INCREMENTAL:NO の指定によって無視されます
static_test.obj : error LNK2001: 外部シンボル ""int __cdecl ShowSubDialog(struct tagConfData *)" (?ShowSubDialog@@YAHPAUtagConfData@@@Z)" は未解決です
Debug/statictest.exe : fatal error LNK1120: 外部参照 1 が未解決です。
46デフォルトの名無しさん:2005/11/12(土) 02:00:14
>>44
libを作るとき.cで。
.cppのやつにリンクとかじゃないよなぁ・・・
47デフォルトの名無しさん:2005/11/12(土) 02:07:33
えーと、ヘッダのインクルードガードより内を
#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif
で囲む。で良いのかな?
4829:2005/11/12(土) 02:38:11
>>47
プログラム自体は異常な動きですが、リンカは通りました。
多分解決です(あとはコーディングをチェックです^^;)
ありがとうございます。

>>46 >>47
えっと、C++(.cpp)はC(.c)で書いたLIBをリンクするときに変数の名前の変更をさせないオプションとして
extern "C"
と指示するようですね。
【参考URL】
ttp://www.med.osaka-u.ac.jp/pub/cl-comp/saito/cppintro/cppintro14.html
>>47さんのtipsはとても便利ですね。というか常識レベルなんでしょうね。     ものすごくありがとうございました。
4916:2005/11/13(日) 00:40:46
C言語すら知らない俺がC++に手を出すのは無謀ですか?
50デフォルトの名無しさん:2005/11/13(日) 08:41:27
うん
51デフォルトの名無しさん:2005/11/13(日) 10:19:51
んなこたぁない
52デフォルトの名無しさん:2005/11/13(日) 11:01:38
たとえばいわゆるベターCの部分だったら実質Cと何も変わらない。
53デフォルトの名無しさん:2005/11/13(日) 11:04:55
質問です。
コンパイルしたexeファイルを実行しようとすると、
それに関連付けられた、テキストファイルなどは、
どうも、探すことができないようなのです。
同じフォルダで実行すると、大丈夫ですが、
プロジェクトを実行していた別のフォルダーで、実行させると、
テキストファイルを探すことができません。
皆さんは、どうされているのでしょうか
54デフォルトの名無しさん:2005/11/13(日) 11:08:58
>それに関連付けられた、テキストファイルなどは

意味不明。
勘で答えるとGetModuleFileName()。
55デフォルトの名無しさん:2005/11/13(日) 11:10:01
フルパスかカレントディレクトリ
56伝説新人タクシ:2005/11/13(日) 11:13:40
>>53
郵便配達を考えろ。地元の町なら「鈴木さんち」と言えば
場所がわかる。ところがただ「鈴木さんち」と言われても
見当もつかないだろう。だから、絶対パスか相対パスで
指定してやる。例) C:\WINDOWS\programfiles\a.txt
57デフォルトの名無しさん:2005/11/13(日) 12:05:59
>>53です
>>54-56さんありがとうございます。
フルパスで、できました。
詳しい説明まであり
皆様どうもありがとうございました。
58デフォルトの名無しさん:2005/11/13(日) 13:31:22
VC++って日本語のヘルプないの?
59デフォルトの名無しさん:2005/11/13(日) 13:36:04
アルヨ
6058:2005/11/13(日) 13:45:01
>>59
どうやれば見れる?
61デフォルトの名無しさん:2005/11/13(日) 14:03:49
F1
62デフォルトの名無しさん:2005/11/13(日) 15:32:58
CreateWindow関数使おうと思って、パラメータヒントを見たら
nWidthはあるのにnHeightがありません。
仕様ですか?
63デフォルトの名無しさん:2005/11/13(日) 15:34:50
IDEのバグ
6458:2005/11/13(日) 19:45:16
F1押すと英語のヘルプが出る
65デフォルトの名無しさん:2005/11/13(日) 19:48:31
>>64
ヒント: 英語を読む
66デフォルトの名無しさん:2005/11/13(日) 20:03:06
それヒント違っw
67デフォルトの名無しさん:2005/11/13(日) 20:17:04
ヒント:翻訳する
68デフォルトの名無しさん:2005/11/13(日) 20:41:55
>>58
ケース1:
日本語版をインストールする
ケース2:
英語版ヘルプのチェックボックスをはずす
ケース3:
志村!それエラーメッセージ!!
6958:2005/11/13(日) 21:47:42
>>68
ケース2のやり方わがんね
70デフォルトの名無しさん:2005/11/14(月) 23:27:56
Visual C++でビルドしエラーがある場合は、エラーがある行数を指摘してくれるのですが、
作業画面に行数を表示させてくれることは可能なのでしょうか?

あと、特にエラーがなくてもたまにビルドをし続けてそのまま止まってしまうという事が
多いような気がしますがコンパイラ(Visual C++だけ?)とはそのようなものなのでしょうか?

初心者といってもいいわけにしかならない事は十分承知の上ではありますが、最近はじめたばかりという事もあり
自分なりにいろいろ調べてみてもわからないので質問させて頂きました。
71デフォルトの名無しさん:2005/11/14(月) 23:45:59
>Visual C++でビルドしエラーがある場合は、エラーがある行数を指摘してくれるのですが、
>作業画面に行数を表示させてくれることは可能なのでしょうか?
可能です。しかしエラーメッセージをダブルクリックすると自動的に
エラー発生地点にジャンプしてくれるので行数表示してない人が多いようです。
ときたま指定行にジャンプしたいときはCTRL+Gを使うのが楽でしょう。

>あと、特にエラーがなくてもたまにビルドをし続けてそのまま止まってしまうという事が
>多いような気がしますがコンパイラ(Visual C++だけ?)とはそのようなものなのでしょうか?
そのようなものではありません。今のPCが購入して4年以上なら買い替え時です。
72デフォルトの名無しさん:2005/11/15(火) 05:36:47
自分は70じゃないですが、行番号を表示させたいけど操作がわかりません。

>>71
>一応可能です。

[ツール]-[オプション]-[エディタ]タブ あたりにチェック項目があると思ったのですが 見当たらないです。
どこから操作すれば表示できるのでしょうか?Ctrl+Gでもいいのですが、そんな大規模なコードじゃないので
行番号を表示させていたほうが、(今のところ)便利なもので。
73デフォルトの名無しさん:2005/11/15(火) 06:11:17
行番号は可能な場合と不可能な場合が(ry
74デフォルトの名無しさん:2005/11/15(火) 06:33:45
どんな場合は表示できて、どんな場合は表示できないんですか?
75デフォルトの名無しさん:2005/11/15(火) 08:24:04
>>71
>そのようなものではありません。今のPCが購入して4年以上なら買い替え時です。
VC++.NETしか知らない人はお帰りください
たぶん>>70はVC++6.0じゃろ
76デフォルトの名無しさん:2005/11/16(水) 00:30:03
Microsoft Visual C++ .NETなんですが、
コンパイルすると
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(222) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(222) : error C2501: 'PVOID64' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(5940) : error C2146: 構文エラー : ';' が、識別子 'Buffer' の前に必要です。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(5940) : error C2501: '_FILE_SEGMENT_ELEMENT::PVOID64' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Platform SDK\Include\WinNT.h(5940) : error C2501: '_FILE_SEGMENT_ELEMENT::Buffer' : 識別名を宣言するのに、型が指定されていません。
というエラーが発生します。
どうしたらなおるでしょうか?
再インスコは無しで。
77デフォルトの名無しさん:2005/11/16(水) 00:49:03
#include <windows.h>
してる行より上で

あやしいヘッダーをinclude してたり
あやしい定義があったりするとか。
78デフォルトの名無しさん:2005/11/16(水) 07:54:50
再インスコしる
79デフォルトの名無しさん:2005/11/16(水) 08:07:08
>>75
あなたの意見をみると安定度は
VC++.NET>>>>>VC++6.0
ということでOKなのかな?

実際は同じくらいじゃね?
80デフォルトの名無しさん:2005/11/16(水) 09:57:52
VBから利用できるOLEオブジェクトがVCから利用できません。
VBからは参照設定とか一切しないで下記のコードで動きます。
Dim obj as Object
Set obj = CreateObject("Hoge.Document")
obj.Property = "test"
obj.Function()
OLEを提供しているアプリケーションはHoge.exe, Hoge1.ocx Hoge2.ocxといった構成です。

VCで「タイプライブラリからクラスの追加」でHoge1.ocxやHoge2.ocxからスタブクラスを生成しても
VBのソースで参照しているプロパティやメソッドが抽出されません。
僕はHoge.exeにこれらプロパティが含まれている気がしてならないのですが
VCで「タイプイブラリからクラスの追加」でHoge.exeを選択すると、
「LoadTypeLibでエラーが発生しました。指定されたファイルがタイプライブラリではない可能性があります。」と出ました。
でもVBのソースを実行するとタスクマネージャのプロセス一覧でHoge.exeが立ち上がっているんですよね。
regeditでProgIDが"Hoge.Document"を検索すると下記のエントリが見つります。
マイコンピュータ\HKEY_CLASSES_ROOT\CLSID\{0000-0000-0000} <- 実際はクラスID
InprocHandler32 REG_SZ ole32.dll
LocalServer32 REG_SZ Hoge.exe
ProgID "Hoge.Document"
VC付属のOLE Viewで上記のプロパティやメソッドを持つタイプライブラリを探したのですが見つかりませんでした。
なにか別のやり方があるのでしょうか?それともVCから利用することは無理なんでしょうか?
81デフォルトの名無しさん:2005/11/16(水) 18:35:49
GetRTTAndHopCount 関数について教えてください。

以前に作成したソケット関連のモジュールで、GetRTTAndHopCount関数を
使用しているのですが、WindowsXP SP2でそのモジュールを試したところ
GetRTTAndHopCount関数でフリーズしてしまいます。
何分待てども帰ってきてくれません。
SP2以前のOSでは、正常に返ってきてくれます。

どうやらネットワーク上に存在しないIPアドレスを指定するとフリーズしてしまうみたいです。
SP2以前の環境では、なんともなかったので、SP2でこの関数に手を加えられたのかと思いぐぐってみましたが、
見つけられませんでした。

環境は、VC++6.0 です。

長いので余計なコードは省略しています。(cHostNameがIpアドレス)

IPAddr  DestIpAddress;
ULONG HopCount;
ULONG MaxHops = 64;
ULONG Rtt;

DestIpAddress = inet_addr(cHostName);
GetRTTAndHopCount(DestIpAddress, &HopCount, MaxHops, &Rtt);

SP2環境でGetRTTAndHopCount関数を使用してこの現象を回避できないのでしょうか?
使い方が変わったのでしょうか?
また、参考になるサイトなどあればお教えください。よろしくおねがいします。
82デフォルトの名無しさん:2005/11/16(水) 19:49:44
>>80
VBのObject型はC++ではIDispatchに相当するので、
最悪でもIDispatchからプロパティやメソッドを呼び出すラッピングクラスを自分で作れば絶対にできる。
#そこには果てしない棘の道が待ち構える。
83デフォルトの名無しさん:2005/11/17(木) 00:36:11
>>82
VBでActiveX DLLを書いてVC++アプリとOLEオブジェクトの間のプロキシー役をさせることにしました。これが一番手っ取り早かったので。
本当はVCのみで実現したかったのですが棘の道はイヤだったので諦めました。レスどうもです。
84デフォルトの名無しさん:2005/11/17(木) 01:16:48
>>83
中々賢明な手段ではないか。
85デフォルトの名無しさん:2005/11/17(木) 03:50:38
自分の実行ファイルのForm1のハンドルを取得して色々したいのですが、
↓以外にいい方法はありませんか?

SendMessage(GetForegroundWindow(), WM_SYSCOMMAND, SC_MOVE | 2, 0);
86デフォルトの名無しさん:2005/11/17(木) 03:52:37
吹いた
87デフォルトの名無しさん:2005/11/17(木) 08:45:06
アホ過ぎる
8881:2005/11/17(木) 12:35:27
いろいろと検証してみたので報告とまた質問をさせてください。

>ULONG MaxHops = 64;
と、書いていましたが実は200でした。

どうやら最大ホップカウントを変えるとタイムアウトに差がでるようです。
しかし、Win2k、XP(SPなし)で行ってみた結果、最大ホップカウントが、30でも200でも
約5秒でタイムアウトしてました。
SP2の場合は、30では約2分半。200では約17分というかなりの差がでました。

この状況はなにが原因でOSで差がでるかまったく検討つきません。
ぐぐってみてもOS(SP2)について書いてあるサイトを見つけられませんでした。

なぜSP2ではこんなに差が出るのでしょうか?
また、参考になるサイトなどあればお教えください。よろしくおねがいします。
8981:2005/11/17(木) 15:08:33
>>81 >>88

自己解決しました〜
DLLのバージョンが違っていたので仕様が変わったのだと判断しました。

スレ汚しすんませんでした
90デフォルトの名無しさん:2005/11/17(木) 17:37:54
質問です。
コンボボックスで、ドロップダウンされたリストから選択した後、
選択したものと異なる文字列をエディットボックス部分に表示させるには、
どうしたらよいですか?

リストの中から、「apple」を選ぶと、「りんご」とエディットボックス部分に表示させたいのです
91デフォルトの名無しさん:2005/11/17(木) 17:49:40
エディットボックスに文字列を設定すればよろしいかと。
9290:2005/11/17(木) 18:10:12
>>91
リストを選択「CBN_SELCHANGE」のタイミングで文字列を書き換えても、
コンボボックスの制御で、すぐに選択リストの文字列にされちゃうんです・・・
93デフォルトの名無しさん:2005/11/17(木) 18:16:39
CBN_EDITUPDATEではどう?
94デフォルトの名無しさん:2005/11/17(木) 18:50:10
VK_AやVK_Bってどこかに定義されてないの?
VK_TABとかはwinuse.hにあるんだが、VK_0〜9、VK_A〜Zがどこにあるか分からん
95デフォルトの名無しさん:2005/11/17(木) 18:52:45
winuser.hだ
96デフォルトの名無しさん:2005/11/17(木) 19:09:57
>>94
たしかVB限定。
0〜9、A〜Zの仮想キーコードはASCIIコードの値と同じ。
C/C++では直接'A'や'B'と文字定数を書けば済むので定義されていないのだと思う。
97デフォルトの名無しさん:2005/11/17(木) 19:34:36
C++Builderから移住してきました。
なんか使いにくいです。
本当にありがとうございました。
98デフォルトの名無しさん:2005/11/17(木) 19:41:54
>>94,96つーか、そのwinuser.hのVKのとこにその旨表記してありますがね
99デフォルトの名無しさん:2005/11/17(木) 19:43:03
シラネーヨ、つーか常識
10090:2005/11/17(木) 21:33:07
>>93
それも駄目でした・・・
10190:2005/11/17(木) 21:41:08
オーナードローしかないですかね・・・><
102デフォルトの名無しさん:2005/11/17(木) 21:44:45
エディットボックス部分をサブクラス化してWM_SETTEXTメッセージが来た時に
書き換えればいいんじゃない?
103デフォルトの名無しさん:2005/11/18(金) 00:02:52
>>90
CBN_SELCHANGEでいいと思うが?
10490:2005/11/18(金) 00:15:10
>>102
エディットボックスにWM_SETTEXTが飛んで来ませんでした・・・
(サブクラス化は知りませんでした)

>>103
void xxx::OnCbnSelchangeComboExpand(){
   m_combo.SetWindowText("りんご");
}

じゃ駄目っぽいです。。。
105デフォルトの名無しさん:2005/11/18(金) 01:00:22
はじめまして。
CSimpleStringTのGetLength()とstrlenの動作の違いではまっています。
過去にも
79 名前: デフォルトの名無しさん 投稿日: 2001/05/20(日) 09:11
CStringってstrlenで調べるとちゃんとした値が出るのに、
GetLengthだとたまに変な値が帰ってくるのは何故?
特に400byteとか大きな文字列を入れているとき起こりやすいような。

80 名前: デフォルトの名無しさん 投稿日: 2001/05/20(日) 12:12
>>79
GetLength()がNUL文字までの文字長を返すわけではないからです。
文字列バッファの前方に長さ等を保持しているんですが、詳細は
MFCのソースを読んでください。

と言うのがあったようですが、GetLengthのソースって
int GetLength() const throw()
{
return( GetData()->nDataLength );
}
↑ですか?どうしてこの二つは動作が異なるのでしょうか。
GetLengthを使うのはまずいのでしょうか。
よろしくお願いします。
106デフォルトの名無しさん:2005/11/18(金) 01:04:43
>>105
その違いが問題になるような最低限のソースを貼ってみるといいかもしれない。
107105:2005/11/18(金) 01:32:50
すみません。
会社じゃ2chに書き込みできないのでソースを持って帰ってきます。

それにしても普通は同じように動く…。ん。ポインタの問題かもしれないですね。
確認してみます。失礼しましたm(__)m
108デフォルトの名無しさん:2005/11/18(金) 04:58:01
Win32、これは事件だ!
109デフォルトの名無しさん:2005/11/18(金) 13:34:44
すみません、CTreeCtrlに大量にアイテムを追加したいのですが、
VBみたいに BeginUpdate 〜 EndUpdateみたいに、高速化でき
ないんでしょうか。1000アイテムくらいでも、あまりにも遅くて。

コンパイラはVC6.0です。よろしくお願いします
110デフォルトの名無しさん:2005/11/18(金) 13:38:49
できます。
111デフォルトの名無しさん:2005/11/18(金) 14:32:50
どうやってでしょうか?
112デフォルトの名無しさん:2005/11/18(金) 15:30:57
>>109
ぐぐったらモノは違うけど、こんなの見つけた。
ttp://forums.belution.com/ja/vc/000/075/69.shtml
113デフォルトの名無しさん:2005/11/18(金) 16:22:01
あ、ありがとうございます。>>112
まだ遅いけど、前よりはずいぶん早くなりました。
助かりました。
114デフォルトの名無しさん:2005/11/19(土) 15:11:43
すいません
質問です

eMbedded Visual Tool 3.0をインストールすると
次の画像にあるエラーが出てしまいインストールが強制終了してしまいます。
http://f42.aaa.livedoor.jp/~imawaka/imgboardphp/src/1132379880306.jpg

なぜなのでしょうか?
115デフォルトの名無しさん:2005/11/20(日) 09:58:29
>eMbedded Visual Tool 3.0をインストールすると
>次の画像にあるエラーが出てしまいインストールが強制終了してしまいます。

インストールする→インストールしようとする
インストールが強制終了→インストーラが強制終了

という解釈で宜しいか?
116114:2005/11/20(日) 17:13:31
>>115
OKです
117デフォルトの名無しさん:2005/11/20(日) 17:25:29
>>116
想像の域を出ませんが、空白を含むディレクトリ名を対象としていませんか?
或いはそのようなディレクトリで作業していませんか?
118デフォルトの名無しさん:2005/11/20(日) 20:48:43
そうです山脈
119デフォルトの名無しさん:2005/11/21(月) 18:33:01
int a = Int32::Parse(textA->Text);
これを実行してtextAっていう入力ボックスから取得した文字列を整数に変換するとき
中身がヌルだとエラー出るんですがどう回避したらいいですかね
120デフォルトの名無しさん:2005/11/21(月) 18:45:25
何かと思ったら、managedか・・・
121デフォルトの名無しさん:2005/11/21(月) 18:53:55
>>119
中身がヌルだったらParse()を呼ばなければいい。
中身がヌルかどうかの判定は自分で探してくれ。
122デフォルトの名無しさん:2005/11/21(月) 20:23:53
if ( textA->Text != NULL )
int a = Int32::Parse(textA->Text);

ってやってみたけどどうもうまくいきません。
!= ""もやってみたんだけどなぁorz
123デフォルトの名無しさん:2005/11/21(月) 20:35:17
文字列の長さでも判定しる
124デフォルトの名無しさん:2005/11/21(月) 20:56:00
どうでもいいけど、アンマネードならGetDlgItemIntがあるのにな。
125デフォルトの名無しさん:2005/11/21(月) 21:31:12
アンマネージドでも関係無いだろそれ
126デフォルトの名無しさん:2005/11/22(火) 07:31:22
>>122
通報しますた。
127デフォルトの名無しさん:2005/11/22(火) 07:50:40
直前にブレークしかけて、値がどうなってるのかみてみたら?
128デフォルトの名無しさん:2005/11/22(火) 09:23:22
質問です。Visual studioのテキストエディタにて、カーソル位置から文字を打つと全て上書きされてしまいます。
文字を打ったらきちんと押し出しして欲しいのですが・・

設定の方法がわかりません。助けて下さい
129デフォルトの名無しさん:2005/11/22(火) 09:26:55
>>128
上書きモードになってるんじゃないかな。
Insertキーで挿入モードに切り替わるよ。
130デフォルトの名無しさん:2005/11/22(火) 09:45:10
>>129さん
トンクスです
131デフォルトの名無しさん:2005/11/22(火) 10:50:02
Visual Studio .net 2003を使っているのですが、
それで作ったhoge.exeを他のpcに持っていって実行すると、MFC71.dllとmsvcr71.dllがないと怒られて実行できません。
仕方がないので、MFC71.dllとmsvcr71.dllをコピーしてやったら実行できました。

こういうのっておそらくうまい処理の仕方があると思うのですが、どうやるのでしょうか?

ご教授のほどよろしくお願いします。
132デフォルトの名無しさん:2005/11/22(火) 10:51:38
いつからここは「ぱそこん」初心者に教えるスレになりましたか。
133デフォルトの名無しさん:2005/11/22(火) 11:08:53
ずいぶん昔からです
134デフォルトの名無しさん:2005/11/22(火) 12:20:41
(数値地図から)200×200の数の行列?を読み込まし、iと、i+1と、j、 j+1で四点をとり、その4点の一番大きい値から小さい方へいくプログラムがつくれません
参照できるサイトありますか?わかる人いますか?ヒントください><
もう三ヶ月悩んでます、助けて
馬鹿な為ほんとプログラムわからないんです
135デフォルトの名無しさん:2005/11/22(火) 12:31:57
>>131
プロジェクトメニュー → プロパティ → MFCの使用「スタティック ライブラリでMFCを使用する」
Standard版にもスタティックライブラリが使えたかどうかは不明・・・
136デフォルトの名無しさん:2005/11/22(火) 12:34:06
>>134
日本語でおk
137デフォルトの名無しさん:2005/11/22(火) 12:55:13
>>134
>その4点の一番大きい値から小さい方へいく
なにが行くのかね。
138137:2005/11/22(火) 12:56:48
139134:2005/11/22(火) 16:36:43
矢印(ベクトル↑)をその、四点の一番高いとこから低い所へと次々と書くようなプログラムです、なんか説明するのも下手ですみません。
140デフォルトの名無しさん:2005/11/22(火) 16:41:27
>>139
小学校からやり直せ。
141デフォルトの名無しさん:2005/11/22(火) 18:47:58
>>131
135の方法で静的リンクにするのが嫌なら131で言った元の状態で良い。
mfc71.dllやmsvcr71.dllはEXEと一緒に再配布できる(というよりしなければならない)。
(そのままEXEと同じフォルダに置いておくこと)
142デフォルトの名無しさん:2005/11/24(木) 21:59:24
Visual Studioでネットワークプログラミングを勉強しているのですが、
・Winsock
・MFCのCAsyncSocketクラス
の2つがあるとわかりました(違ったらごめんなさい・・・)

初心者はどちらを使用して勉強したほうがよいのでしょうか?
143デフォルトの名無しさん:2005/11/24(木) 22:00:28
「初心者」なら止めてください
144デフォルトの名無しさん:2005/11/24(木) 22:02:44
WinInetにしとけ
145デフォルトの名無しさん:2005/11/24(木) 23:00:02
CInternetSession
146デフォルトの名無しさん:2005/11/24(木) 23:02:22
CHttpConnection
147デフォルトの名無しさん:2005/11/25(金) 01:54:54
新しいダイヤログを開く際に、
座標指定をすることは可能ですか?
148デフォルトの名無しさん:2005/11/25(金) 06:14:46
はい
149デフォルトの名無しさん:2005/11/25(金) 07:34:59
>>142
WinSock or WinSock2
150デフォルトの名無しさん:2005/11/25(金) 08:05:37
「初心者」なら止めてください
151デフォルトの名無しさん:2005/11/25(金) 09:14:13
152デフォルトの名無しさん:2005/11/25(金) 11:33:56
「初心者」なら止めてください
153デフォルトの名無しさん:2005/11/25(金) 20:37:53
ちと教えてくださいませ
MFCでスレッドを使ったプログラム書いています。
DialogAppを書き換えたものでプログラム自体はWndクラスとAppクラスのみで動いてます。
そいでCXXApp::InitInstance()にてWindowを生成
生成後に
m_pThread = ::AfxBeginThread(ThreadProc, this) ;
AutoDeleteはfalseに設定
見たいな感じでスレットを開始しています。
呼び出されたスレッドでは
UINT CXXApp::ThreadProc(LPVOID pParam)
{
CXXApp*pApp = (CXXApp*)pParam ;
CWnd* pWnd = pApp->m_pMainWnd ;
while(pApp->m_isActive == true)
{
  pWnd->SetWindowText(FPSの数値) ; //ここが問題の場所です。
  描画処理
}
return 0 ;
}
これでとりあえずは意図した動作はしているのですが
閉じるときにAssertErrorが出てしまいます。
プログラムを閉じる際にExitInstanceにてループしながらスレッドの終了を待つように
しています。実際エラーは、スレッドが終える前に起きています。
SetWindowTextをコメントアウトすると出なくなるのでどうやらこれが問題みたいです。
その他の関数は問題ないみたいなんですがこれだけがどうしてもわからないです。
なにか特別な事が必要なんでしょうか?よろしくお願いしまう。
154デフォルトの名無しさん:2005/11/25(金) 20:51:49
MFCスレへどうぞ
155デフォルトの名無しさん:2005/11/25(金) 20:53:04
assertというのは何が悪いのか教えてくれるためにあるんだが
156デフォルトの名無しさん:2005/11/25(金) 21:24:23
>>154
移動します。
>>155
そうでした。良く見たらソースと行数が書いてありました。
157デフォルトの名無しさん:2005/11/25(金) 23:09:19
>assertというのは何が悪いのか教えてくれるためにあるんだが
>153が使うと、常に「あんたの頭」と表示されるとか?
158デフォルトの名無しさん:2005/11/25(金) 23:15:44
質問です。XP、.NET です。

かなり基本的で申し訳ないのですが・・・。
空のプロジェクトを作成し、リソースビューから「追加」→「リソースの追加」→「ダイアログ」としました。
ダイアログ作成画面になったのですが、ツールボックスのダイアログエディタを見ると、
「ポインタ」しかなく、ボタン、チェックボックス、などが全て灰色表示で選択でません。

何か根本的に間違っている気がしますが・・・よろしくお願いします。
159デフォルトの名無しさん:2005/11/25(金) 23:42:38
そのプロジェクトに限った現象なんだろうか
160158:2005/11/26(土) 00:08:24
試しに、過去の他の適当なプロジェクトを開いてダイアログを作成すると、
きちんとボタンなどを貼り付けることができました。

プロジェクト作成時に何か設定ミスったのかもしれません。
もういちど作り直してみます。
161158:2005/11/26(土) 00:12:43
連続ですみません。
新しく空のプロジェクトを作成すると、正常に動きました。
少々気持ち悪いですが、とりあえずはこのまま行って見ようと思います。ありがとうございました。
162デフォルトの名無しさん:2005/11/27(日) 13:08:32
質問させてください。
使ってるの環境はVC++6.0 SP6です。

#include<stdio.h>

int main(int argc, char *argv[])
{
printf("引数の数は%d個です。\n",argc);
printf("引数の値\n");
for(int i=0; i < argc; i++)
{
printf("%d %s\n",i, argv[i]);
}
return 0;
}

上のプログラムがコンパイル通りません。
forの中で int i と宣言してるのが嫌らしいのですが、できるはずですよね?
ためしにforの外でint i;
を宣言して、
int main(int argc, char *argv[])
{
int i;
(略)

for(i=0; i < argc; i++)
(略)
}
としたらちゃんと通りました。forの中でintを宣言するのは今まで何度もやってきたのですが、
今回にかぎってなぜかだめらしいのです。理由を教えてください。
163デフォルトの名無しさん:2005/11/27(日) 13:26:52
ファイルの拡張子が.cだったら.cppに変更してみる
164デフォルトの名無しさん:2005/11/27(日) 13:33:53
>>163
Σ(゚Д゚)
それで解決した。
そうか、、、for内で宣言できるのはC++からの仕様なんですか。
C++大学の授業とかでやって、最近Cをやりはじめたんでごちゃごちゃですorz
165デフォルトの名無しさん:2005/11/27(日) 13:39:49
>>164
forの初期化式での宣言はC99からの仕様
.cのままでやりたいなら、gcc使ってるなら -std=c99 でできる
他はシラネ
166デフォルトの名無しさん:2005/11/27(日) 13:47:46
VCは対応してない
167デフォルトの名無しさん:2005/11/27(日) 13:55:21
対応してないどころかfor文で宣言した変数が
スコープ外でも使えちゃう親切仕様☆
168デフォルトの名無しさん:2005/11/27(日) 14:17:47
>>167
使えてねーじゃん>>162
169デフォルトの名無しさん:2005/11/27(日) 14:18:09
>>167
それバグだろw
170デフォルトの名無しさん:2005/11/27(日) 14:56:05
スコープ外で使えるのは仕様。
171デフォルトの名無しさん:2005/11/27(日) 15:52:33
つ #define for if (0) ; else for
172デフォルトの名無しさん:2005/11/27(日) 16:55:26
ViewプロパティをDetailsにしているListViewで各項目の値を取得するには
どうすればよいでしょうか。やさしいお兄ちゃん教えて。
173デフォルトの名無しさん:2005/11/27(日) 18:55:18
表示形式がなんだろうと全て同じ方法だよ
174デフォルトの名無しさん:2005/11/27(日) 21:48:52
>>168-169
ARMではそれが正しかったのさ。
175デフォルトの名無しさん:2005/11/28(月) 00:54:13
visualC++を学びたいので無償で手に入れられるっぽい
Visual C++ 6.0をインストールしようとするのですが、いつも
「インストールは正常に終了しませんでした」
となりインストールが実行されません。
OSはMe、MDAC2.8もインストールして必要なものは
揃っていると思うのですが何が原因なんでしょうか
176デフォルトの名無しさん:2005/11/28(月) 01:02:21
制限ユーザでインストールしようとしてない?
177175:2005/11/28(月) 01:13:41
>>176 ダウン元のサイトは一通り目を通してましたが
制限ユーザというのついてはよく分かりません。
6.0でも料金が発生したりユーザ登録が必要なのでしょうか?
それと、「インストールが・・・」ではなく「セットアップが・・・」でした
178デフォルトの名無しさん:2005/11/28(月) 01:21:45
MEならユーザ権限関係なかったね。
空きメモリは足りてる?
そのメッセージが出る一つ前の操作は何をやったの?
179175:2005/11/28(月) 01:31:07
起動中のものを終了させてセットアッププログラムを起動して
使用承諾契約に同意したあとにいつも終わってしまいます。
再インストールや再起動も何度かしましたが変わりありません。
メモリは足りています
180デフォルトの名無しさん:2005/11/28(月) 06:00:18
レジストリがあふれてる
181デフォルトの名無しさん:2005/11/28(月) 07:07:33
Meなんて捨てちまえ
182デフォルトの名無しさん:2005/11/28(月) 08:50:09
Visual C++ 6.0無償になったの?
初耳だな

>>177
ダウン元のサイトってどこ?
183デフォルトの名無しさん:2005/11/28(月) 14:52:19
プップクプーwww
もうインストゥールできたから
おまえらなんかに用はないよ
プギャ
184デフォルトの名無しさん:2005/11/28(月) 23:40:17
ママのおっぱい飲んで早く寝ろ
185デフォルトの名無しさん:2005/11/29(火) 11:42:38
>>184
偶然セブンイレブンでB.Bって漫画読んだけど、大人がママのおっぱいをしゃぶるシーンがあった。
186デフォルトの名無しさん:2005/11/30(水) 03:48:58
おっぱいはしゃぶるためにあるんだよ
187デフォルトの名無しさん:2005/11/30(水) 10:35:38
生成されたプログラムを実行するときに押す「!」ボタンで
予めリダイレクトするファイルを指定することはできませんか?
プロレクトのオプションで引数を指定することはできたのですが・・

例えば生成された実行ファイルが TEST.exe のとき,「!」ボタンを押すことによって

TEST < data.dat

を実行したいのです.
188デフォルトの名無しさん:2005/11/30(水) 10:36:22
あぁしまった;
×プロレクト
○プロジェクト
189デフォルトの名無しさん:2005/11/30(水) 10:51:17
>>187
VC.NETなら、プロジェクト→プロパティ→コマンド引数に"< data.dat"
190デフォルトの名無しさん:2005/11/30(水) 17:59:03
>>189
返信ありがとうございます.
できました!
191デフォルトの名無しさん:2005/12/01(木) 09:27:19
int型のデータをファイルに保存したいんですが、
将来、このファイルを64bitOSでも正しく開けるようにしたいんです。
どのように保存したら良いでしょうか?
192デフォルトの名無しさん:2005/12/01(木) 09:41:04
ネタだろうか?
OS変わるとファイルが読めなくなるんだ
へー
193191:2005/12/01(木) 09:47:34
>>192
いや、intのサイズが変わるんです
194191:2005/12/01(木) 09:49:34
保存はバイナリで書き込みたいのです
195デフォルトの名無しさん:2005/12/01(木) 10:10:17
へー
2000年問題みたいだね
へーへー
見ものだね
へーへーへー
196デフォルトの名無しさん:2005/12/01(木) 10:51:53
>>191
OSでintサイズが変わるわけではない。
コンパイラの種類やそのオプションで決まる。
197デフォルトの名無しさん:2005/12/01(木) 11:02:06
>>194
4バイトintでも2バイトintでも、好きなもので書き込めばいいだろう。
読む方は必要なだけ読むようにプログラミングすればいいだけだ。
何れにしろ、int型のサイズで制限されることはない。
198デフォルトの名無しさん:2005/12/01(木) 12:01:31
つ<boost/cstdint.hpp>
199191:2005/12/01(木) 12:31:03
4バイトで書いたら、4バイトで読め
って事ですね

ありがとうございました
200デフォルトの名無しさん:2005/12/01(木) 19:02:00
当然のことだし
201デフォルトの名無しさん:2005/12/01(木) 20:24:16
int32_tとか環境依存しそうな部分はヘッダでtypedefして吸収する
202デフォルトの名無しさん:2005/12/01(木) 23:28:07
そういうのにint使うな ぼけ
203デフォルトの名無しさん:2005/12/02(金) 10:25:31
PlatformSDKって何?どうやってつかうの?
204デフォルトの名無しさん:2005/12/02(金) 10:31:53
必要になるまで無理に使わなくていいよ
205デフォルトの名無しさん:2005/12/03(土) 11:06:29
>>203
Platform SDKはSDK、インストールして使う。
206デフォルトの名無しさん:2005/12/04(日) 02:29:39
VC++2005ExpressとPlatformSDK入れてみたから
http://www.kumei.ne.jp/c_lang/index_sdk.html
ここ見てWindowsプログラム練習してみようとおもったら、
イントロダクションのサンプルがいきなりコンパイル通らない。
ここ古くて使えませんか?
お勧めなサイトとかあったら教えてください。
207デフォルトの名無しさん:2005/12/04(日) 02:31:42
何回かビルドして実行してると、
ビルドエラーを表示するウィンドウ左下にあるタブ「タスク一覧」を
押しても無反応になるんですが、これMSのバグ??
環境はWindows2000で.net 2003。
XPの場合は全く起こらない気がする。
再インストール何回かしてるんだけど、しばらくするとこの症状が起こる...
208207:2005/12/04(日) 02:34:15
訂正)
再インストール → システムのリストア
リストア後はもちろん症状治るけど、しばらくすると再発するって意味です。
209デフォルトの名無しさん:2005/12/04(日) 02:46:04
210デフォルトの名無しさん:2005/12/04(日) 10:59:43
いつもはLINUXでC言語をやっているのですが、WINDOWSにVC++2005EEβを導入してみました。
かろうじてコマンドラインではコンパイルして実行することはできたんですが、VC++本体では操作がさっぱりわかりません。
比較的単純なファイルをコンパイルして実行するだけなので、そこらへんの操作の仕方が書いてあるサイトあれば教えていただけないでしょうか?
もしなければ教えていただければ幸いです。
どなたかお願いします。
211デフォルトの名無しさん:2005/12/04(日) 12:17:57
比較的単純なファイルならコマンドラインでやってろ
212デフォルトの名無しさん:2005/12/04(日) 12:22:33
ベータは初心者が使うもんじゃないから
213210:2005/12/04(日) 12:50:19
BCC使うことにします・・・。
インストールする前の状況にしたいのですが、
アンインストールはFramework等も行ったほうが良いでしょうか?
214デフォルトの名無しさん:2005/12/04(日) 12:52:13
>>213
諦めが早いな。
215デフォルトの名無しさん:2005/12/04(日) 13:12:25
その調子その調子、諦めて諦めて
216210:2005/12/04(日) 13:29:45
あ、なんとかコンパイルできました。
でも、めっちゃ汚してる気がするなぁ。
217デフォルトの名無しさん:2005/12/04(日) 16:42:27
スレが汚れたね
218210:2005/12/04(日) 16:59:56
そんなこと言わないでくださいよ。
初心者に教えるスレなんだからさぁ。
219デフォルトの名無しさん:2005/12/04(日) 17:12:28
俺Linuxでやってたんだ
ベータ版落としたんだけど
どっかサイト教えて
  ↑
こいうのはマジ死んでほしい。
本ぐらい買って勉強しろよ
220210:2005/12/04(日) 17:15:41
そこまで言われる筋合い無いんですが・・・。
221デフォルトの名無しさん:2005/12/04(日) 17:22:34
>>220
ここがどこだか理解した上での発言かな?
222デフォルトの名無しさん:2005/12/04(日) 17:29:30
もうちょっと具体的にやりたいことを提示すればいいんじゃねーの?
223210:2005/12/04(日) 17:41:42
すみません、アンインストール中です。消すのがいっぱいで大変ですよ・・・。
もしかして超初心者スレで聞くべきだったんですか?
224デフォルトの名無しさん:2005/12/04(日) 17:45:01
初心者以前の問題だな
225デフォルトの名無しさん:2005/12/04(日) 18:37:54
質問っす!
cout.writeってもしかしてwin32上では使えないんですか?
226デフォルトの名無しさん:2005/12/04(日) 18:57:49
Windowsでも使えるよ
227デフォルトの名無しさん:2005/12/04(日) 19:34:16
>>226
あれ?ほんとっすか?
consoleでは問題ないんですけどwinmainで始まる奴だと
空っぽのままです。
228デフォルトの名無しさん:2005/12/04(日) 20:29:28
ハァ?
229デフォルトの名無しさん:2005/12/04(日) 20:54:57
コンソールもWin32上ですので悪しからず
230デフォルトの名無しさん:2005/12/04(日) 20:55:17
あ、すんません、つまり何も値が入らないでwriteが終了します。
LPTSTR lpBuf = _T("") ;
std::cout.write(lpBuf, 0) << _T("Test") << std::flush ;
Consoleアプリならちゃんと"Test"がlpBufに入ってるんですけど
MFC等やその他winmainから始まる奴だとlpBufは空のままで
その後SetWindowText(hWnd, lpBuf)やその他いろいろやってみたんですが
文字が所得で来ていませんでした。

なにか別に必要なことでもあるのかと思っていろいろ探してみたんですが
やってる人がいないみたいなのでわからんです。
231デフォルトの名無しさん:2005/12/04(日) 21:42:05
Form1のハンドルを得るにはどのようにすればいいのですか?
232デフォルトの名無しさん:2005/12/04(日) 21:50:24
>>192
CPUが変わるとエンディアンの問題が出るよね。
233デフォルトの名無しさん:2005/12/04(日) 22:00:11
ファイルが読めなくなるんだ
234デフォルトの名無しさん:2005/12/04(日) 22:22:40
エンディアンの問題が出てもファイルが読めないわけではないな
235デフォルトの名無しさん:2005/12/04(日) 22:58:51
>>230
コンソールアプリ以外では闇に葬り去られる。
というのは嘘で,あらかじめ自分でリダイレクトして置けばstd::coutへの出力は捕獲できる。
それは面倒だから普通はstd::ostringstream(std::basic_ostringstream<TCHAR>)を使う。
236デフォルトの名無しさん:2005/12/04(日) 22:59:46
>>234
「読めない」の定義にもよるかな。
237デフォルトの名無しさん:2005/12/04(日) 23:48:49
>>235
出来たー!ありがd!
238コンパイルどーてー:2005/12/04(日) 23:52:01
入門書によって、ウインメインに、メインの部分を書いていたり
ウインドウプロシージャに書いているみたいですが
どちらでもいいのですか?
それとも利点があるのですか?
私の書いてる事じたいが、おかしな事でしたらスルーしてください
239デフォルトの名無しさん:2005/12/05(月) 01:37:56
スルーする。
240デフォルトの名無しさん:2005/12/05(月) 05:06:27
241デフォルトの名無しさん:2005/12/05(月) 06:08:54
WinMainはAPIじゃないと思うが
242デフォルトの名無しさん:2005/12/05(月) 06:46:54
>>238
自分は、大きいプログラムでstatic変数を
使いたくないときは、メイン部分(非プロージャー部分)に書いて、
テスト用とか、小さいプログラムの時はプロージャーに書いている。
243デフォルトの名無しさん:2005/12/05(月) 06:53:01
プロージャー
244デフォルトの名無しさん:2005/12/05(月) 08:09:42
プロシジャー
245デフォルトの名無しさん:2005/12/05(月) 08:31:48
プロスィデュア
246デフォルトの名無しさん:2005/12/05(月) 08:51:29
プロ信者って書いてある本があったな
247デフォルトの名無しさん:2005/12/05(月) 08:52:50
テラアリエナス
248デフォルトの名無しさん:2005/12/05(月) 08:58:34
249コンパイルどーてー:2005/12/05(月) 22:24:35
>>242
レスさんきゅーでつ

つまり、好みしだいって事かな
入門書また読み直しまつ
250デフォルトの名無しさん:2005/12/06(火) 21:45:06
質問します、
VC6のSP6を使っているのですが、
const float PI = 3.14159;
float fHoge, fHuga;
〜略〜
float fPugya = ((2.0f * PI * fHoge / fHuga) / (60.0f * 75.0f)) * 1.5f;
みたいなコードを、最適化をかけるとどんなアセンブリコードになってるのか
確認して最適化の勉強をしようと思ったのですが、
デバッグでアセンブリコードを見れるようにして、なおかつ
リリースビルドと同じような最適化をかけてビルドするというのが
どうやればいいのかわかりません。

実行速度優先の最適化を選択し、なおかつデバッグのオプションをつけた構成で
ビルドしようとすると、/GZと/O2を一緒には指定できませんとか言われたので
カスタマイズの最適化でグローバルの最適化や最大限の最適化を外すと
ビルドできたのですが、アセンブリコードを見ても、上記の部分は最適化無しと
同じものでした。
ビルドのオプションの設定の仕方が悪いのか、それともfloatは最適化がかからないとか
そういった理由なのか、よくわからないのでどなたか教えて頂けませんでしょうか。
よろしくお願いします。
251デフォルトの名無しさん:2005/12/06(火) 22:05:59
アセンブリコードみれるならデバッグビルドする必要ないのでは?
252デフォルトの名無しさん:2005/12/06(火) 22:21:23
>>250
デバッグのオプションとは別にアセンブリコードをはくだけのオプションがあるはず。
253デフォルトの名無しさん:2005/12/06(火) 22:23:43
>>251
あ、リリースビルドでも見れるのは見れるんですね、
知りませんでした・・・(;´Д`)
でもブレークポイントの設定等ができないのですが、
これは最初から追っていくしかないということでしょうか?
254デフォルトの名無しさん:2005/12/06(火) 22:25:40
>>250
デバッグしたいのなら兎も角、アセンブリ出力を見たいだけなら出力の設定だけ変えてReleaseビルドでよかろう。
255デフォルトの名無しさん:2005/12/06(火) 22:30:27
デバッグ実行させながらアセンブリ出力を見たいのかな?
Releaseビルドでもブレークポイントは張れると思うけど。
#但し、最適化の影響で順序は変わるし行は消えるしで、あまり意味はないけど。
256250=253:2005/12/06(火) 22:34:41
なるほど、ブレークポイント置く行が悪かったのですね。
色々試してみます、どうもありがとうございました。
257デフォルトの名無しさん:2005/12/06(火) 22:37:47
誰もブレークポイントの話なんかしていない。
258デフォルトの名無しさん:2005/12/06(火) 22:40:02
だからそもそも、なんで実行しながらアセンブリ出力を見たいのかと。
259デフォルトの名無しさん:2005/12/06(火) 22:43:55
実行しながらアセンブリみたいなら軟氷でも使えばいいんでないかな
260250:2005/12/06(火) 22:50:38
ゲームのコードなんで、計算が結構大量になったり特に当たり判定なんかは
かなりの回数のループになると思ったので、速いか遅いかを完全に無視という
わけにはいかないので、今のうちから最適化されたコードを
ブレークポイント置いて確認する方法を知りたいと思ったのです。
説明が足りなくてすみません。
問題のコードだけ十行くらいで書いてビルド、というのもありかもしれませんが
恐らくそれでは実際にゲームの中で書いてビルドした場合とかなり異なると
思ったのです。だからブレークポイント置いて、そのコードがどうなるか
知りたいのです。
261デフォルトの名無しさん:2005/12/06(火) 22:50:45
学部で研究しています。
交通工学分野で、料金所混雑について調べています。
料金所利用車を、ETC利用車と人による料金支払いをする車に分けて、後者の車による渋滞にETC利用車が
巻き込まれる事象をシミュレートしたいと思っています。
到着率やETC普及率を変化させ、車の平均滞在時間がどのように変化してゆくのかを調べるために、プログラム
を書こうとしているのですが、Visual C++で表現できるのでしょうか?
滞在時間を2次元のグラフィックで表したいのですが。


262デフォルトの名無しさん:2005/12/06(火) 22:57:27
「〜でできるのでしょうか?」というのは愚問だな。
263デフォルトの名無しさん:2005/12/06(火) 22:58:12
>>261
出来る出来ないでいうなら出来る
後はおまい次第。研究なら自力でがんがれ


ところで交通工学って学部的には何処になるんだ?
264デフォルトの名無しさん:2005/12/06(火) 22:59:16
>>260
[リンカ]->[デバッグ情報の生成]を[はい]に。
適当にブレークポイントを設定して実行。
[デバッグ]->[ウインドウ]->[混合モード]で機械語が表示される。
265デフォルトの名無しさん:2005/12/06(火) 23:00:29
1-pの確率で職員が轢かれるのも考慮に入れたいのです
266デフォルトの名無しさん:2005/12/06(火) 23:03:21
工学部3年です。数理工学分野でORを扱ってます。
待ち行列理論を勉強してて、理論構築はできるのですが
プログラムが書けなくて、、
確かに、研究なので自力でやるべきです。
267デフォルトの名無しさん:2005/12/06(火) 23:03:26
専門課程で研究してる人間がこんな所で質問しなきゃなんないなんて
よほどの事情があるんだろう
268250:2005/12/06(火) 23:17:32
>>264
なるほど、出来ました!
どうもありがとうございました。
でも10行くらいブレークポイント入れてみましたが
全部「設定できませんでした」になりました・・・
全然違うコードになってしまうのですかね(;´Д`)
ともあれ色々試してみて勉強します。
教えてくださった皆様どうもありがとうございましたm(_ _)m
269デフォルトの名無しさん:2005/12/06(火) 23:23:56
混乱しているなぁ。
・最適化されたコードのアセンブリ出力を読みたい
・最適化されたコードのデバッグをしたい
では全然話が違うぞ。
後者を本格的にやりたかったらICEに頼らないといけないと思うし。
270デフォルトの名無しさん:2005/12/06(火) 23:24:02
>>268
アウトオブオーダーとかやっちゃういまのCPUでは勉学のため
参照にする程度ならともかく、手作業での最適化は難しいでしょう。
どうしても少しでも高速化したいならIntel最適化コンパイラの
導入を検討するか、並列化可能ならばSSE2等を使用するのが
現実的な選択肢かと。
271デフォルトの名無しさん:2005/12/06(火) 23:32:12
float fPugya = ((2.0f * PI * fHoge / fHuga) / (60.0f * 75.0f)) * 1.5f;

これに、最適化のしようが無いと思われるが。
272デフォルトの名無しさん:2005/12/06(火) 23:41:40
定数は全てまとまるべさ。
273デフォルトの名無しさん:2005/12/06(火) 23:45:14
>>267
テーマが見つかったのはいいんですが、プログラム書くのにつまずいて、
先が見えなくなったので、何か助言をもらいたくてきました。
274デフォルトの名無しさん:2005/12/06(火) 23:51:21
>>273
まずは、コンソールアプリケーションから作るのがよいのでは?
275250:2005/12/07(水) 00:05:29
>>269
誤解されやすかったですね、明確な説明でなくてすみませんでした。
目的は前者です。
デバッグの方は、いつも最適化無しのデバッグビルドでやってますし、
今後もそれで問題ないと思います。

>>270
なるほど〜・・・CPUの高速化技術とかは聞いた程度にしか
知らなかったので、あまり深く考えていませんでした。
なるべく、「意味がわかりやすいけど遅くならない」コードが書ければ、と
常々思っていたのですが、そのためにはそういうことを扱った
サイトを見た方がいいですかね。SSE2等もいずれ使ってみますm(_ _)m

>>272
ありがとうございます!
今回、float fPugya =の行のように書いて、
整数の定数がまとまることは知っていたのですが浮動小数点数でも
そうなるのか不安があったので、調べるついでに高速化の勉強のため・・・とか思って
質問しました。でもそう簡単にアセンブリコードを見てわかるものでは
ないのですね・・・・。アプローチを変えて勉強してみます。
276デフォルトの名無しさん:2005/12/07(水) 00:06:00
>>268
プロファイラ使って最適化したほうがいいと思うぞ
277デフォルトの名無しさん:2005/12/07(水) 00:17:29
>でも10行くらいブレークポイント入れてみましたが
>全部「設定できませんでした」になりました・・・

まさかCのコードにブレーク設定してるとか
278デフォルトの名無しさん:2005/12/07(水) 00:22:05
>>274 まずは、コンソールアプリケーションから作るのがよいのでは?

Windowsアプリケーションとの違いがあるのですか?コンソールアプリケーション
を用いる利点がいまいち分からないのですが、、
279274:2005/12/07(水) 00:38:41
>>278
コンソールアプリケーションはCやC++の言語の知識だけで作れる。
WindowsアプリケーションはCやC++の言語、それにWindowsの知識(APIやらMFCやら)
が必要。そういうことです。

まずは、CやC++の言語の知識を取得してコンソールアプリケーションをつくる。
Windowsではコンソールアプリだけでは物足らなくなるでしょうから、CやC++
の言語の知識を習得したら、APIやらMFCやらの勉強をしてWindowsアプリを作るのが
良いのではないでしょうか?

>>278さんがCやC++の言語の知識をすでに習得しているのであれば、Windowsアプリを
いきなり作っても良いです。
280デフォルトの名無しさん:2005/12/07(水) 01:10:27
VB(Visual Basic)もいいよ!
281デフォルトの名無しさん:2005/12/07(水) 01:13:12
>>278
>>279が書いてくれてるように、GUIアプリとCUIアプリじゃ
必要とされる知識レベルが数段違う
282デフォルトの名無しさん:2005/12/07(水) 01:13:56
質問です。
他のプログラムがアクティブになっている状態で
Ctrl+Aなどで一定のキーボード操作を自動で行う。
というソフトを作りたいのですが、JavaとC++とどちらが簡単にできそうですかね?

Javaで作ろうと試みてみたのですが
「他のプログラムがアクティブになっている状態で」という機能が困難なため
C++で作り直すか迷っています。。
283デフォルトの名無しさん:2005/12/07(水) 01:33:22
>>282
>Ctrl+Aなどで一定のキーボード操作を自動で行う。
ここんとこがいまいち不明。とくに「自動」ってところ。
何をきっかけにCtrl+A(=全選択)を自動で行うの?
284デフォルトの名無しさん:2005/12/07(水) 02:21:58
>>282
Java/C++関係なくフォーカスのないウインドウはキーボードイベント
取得できないでしょ。
本気でやりたいならドライバ書くしかないんじゃ?
285284:2005/12/07(水) 02:28:04
ああ、C++ならフック使えばできるかな…Javaはしらね。
286デフォルトの名無しさん:2005/12/07(水) 02:39:27
自分をA、他のプログラムをBとして
Bがアクティブになっている状態で、AがBに対してCtrl+Aを
送るってことでは?
287284:2005/12/07(水) 02:52:25
アクティブなアプリに、ctrl+A等をトリガにして
自作アプリから任意のキー操作を発行するってことだと理解した。
288デフォルトの名無しさん:2005/12/07(水) 03:10:05
あ、なるほど(;´Д`)
APIならWM_SETHOTKEYあたりじゃないかな。自分は使ったことないけど。
289デフォルトの名無しさん:2005/12/07(水) 07:38:41
ゲームのチートツールでも作ろうってんなら鼬害。
290デフォルトの名無しさん:2005/12/07(水) 08:49:21
初めまして
最近VC++が楽しくなってきました
291デフォルトの名無しさん:2005/12/07(水) 12:09:44
それはそれは良かったですね。
292282:2005/12/07(水) 15:38:18
レスありがとうございます。

>>283
別に処理開始のタイミングを決めるだけなんでキーはなんでも良いです。

>>284,285
常駐プログラムなら他のアプリケーションがアクティブになっている状態でも
処理開始のタイミングを伝えられるかと思ったんですが、無理ですかね?

>>286
ブラウザで一定の処理をしたいんですけど
ブラウザにメッセージを送っても、ブラウザを変更するほど技術がありません・・・

>>287
そういう事になりますね。

>>288
WM_SETHOTKEYは自プログラムをアクティブにするだけなんで
とあるキーを押したらブラウザで処理というのは難しそうです。。

>>289
NO!

>>290
これからも頑張ってください。
293デフォルトの名無しさん:2005/12/07(水) 19:16:49
CSimpleArrayをwatchしたいんだけど、どうやって記述すれば見れますか?

とりあえず、次の条件のとき、
CSimpleArray<CAtlString> strArray ;
配列の3番目をwatchしたいときに、入力フィールドどう記述したらいいですか?

strArray[3]
こんなふうにしてみましたダメでした。。。
294デフォルトの名無しさん:2005/12/07(水) 19:24:12
MFCスレ行ってら
295デフォルトの名無しさん:2005/12/07(水) 20:27:03
一定のプログラムをWhileで無限ループさせる文書いてくれません?
296デフォルトの名無しさん:2005/12/07(水) 20:41:09
それくらい自分で書け
297デフォルトの名無しさん:2005/12/07(水) 20:46:03
CSimpleMap<LPTSTR,CSimpleArray<LPTSTR>> map ;
こんな事したいんだけど、どうやって記述したらいいの?
298デフォルトの名無しさん:2005/12/07(水) 20:51:55
無限ループ漏れも知りたい( ゚∀゚)
299デフォルトの名無しさん:2005/12/07(水) 20:53:12
>>297
CSimpleMap<LPTSTR, CSimpleArray<LPTSTR> > map;
>>と書くと現在のC++の仕様上右シフト演算子と解釈されてしまう。

typedefを使って回避する方法もある。個人的にはこっちがお薦め。
typedef CSimpleArray<PTSTR> PTStrArray;
CSimpleMap<LPTSTR, PTStrArray> map;
300デフォルトの名無しさん:2005/12/07(水) 20:55:20
C++とかオシエレナイテコトナノデスカ
301デフォルトの名無しさん:2005/12/07(水) 21:35:54
ここはプログラムを教えるスレではありません まる
302デフォルトの名無しさん:2005/12/07(水) 21:39:12
>299
「>>」の演算子疑って「> >」こんなふうにもしてみたんだけど、ダメだったもんで
違う問題化と思ってた。。。
ありがとう!!!
303デフォルトの名無しさん:2005/12/07(水) 23:02:13
Goto文でnotepad開き続ける文書いてくれよ。
304デフォルトの名無しさん:2005/12/08(木) 02:27:12
ジャスティスキタ━(゚∀゚)━!
305デフォルトの名無しさん:2005/12/09(金) 15:12:32
すいません、質問です。

>>187と同じような質問なんですが、
標準入力のリダイレクトができません。

デバッグで開始すると、
「プログラムを開始できません。
出力をリダイレクトできません。指定されたファイルが無効です。」
と表示されます。

>>189にあるように、コマンド引数に < test.dat
と書いているんですが、
何か他に設定するべき所とかあるのでしょうか?
306デフォルトの名無しさん:2005/12/09(金) 17:11:48
>>305
<でのリダイレクトはコマンドプロンプトが行っているのであり、Windowsの機能ではない。
だからコマンドライン引数に指定してもリダイレクトはできない。

だからほかの方法を考えろ。たとえばfreopen(stdinとかさ。
307デフォルトの名無しさん:2005/12/10(土) 15:14:48
Visual C++6.0でCのコンソールアプリを勉強用に作ってます。

ビルドも上手く行って思った通りに動いているソースがあるんですが
これをステップインでデバッグしてみるとfopen.cやfprintf.cなどの
標準ライブラリの関数のソースのパスを入力しろというダイアログが出てきてエラーになってしまいます。
回避するにはどうしたらいいんでしょうか?
308デフォルトの名無しさん:2005/12/10(土) 15:50:14
crtソースコードも一緒にインストールする
309デフォルトの名無しさん:2005/12/10(土) 16:39:39
必要もないのにfopen.cやfprintf.cの中まで入らない
310デフォルトの名無しさん:2005/12/10(土) 17:34:00
>>307
エラーにはならない。
ちゃんとfprintf()の中もデバッグできる。
#ただし混合モードで。
311デフォルトの名無しさん:2005/12/10(土) 18:13:37
理解しました。
エラーでもなんでもなかった。
関数の中の処理を飛ばしたければステップオーバー使うってことですね。
312デフォルトの名無しさん:2005/12/11(日) 01:37:04
最近C言語を勉強し始めた者です。
卒研のためVC++.NETを研究室で購入してもらう事になりました。
で、VC++.NETでWebアプリケーション(ホームページに載せて動かす)を作りたく、
入門書を立ち読みしたりネットで勉強しようと思ったのですが、どれもWindowsプログラムの事は書かれているのですが
Web上で動かす方法については見つけることが出来ません・・・。
ホームページ上でプログラムを動かす勉強をするのにオススメな書籍やサイトがあれば教えていただきたいです。
ちなみに目的のプログラムはコマンドプロンプト上で動くものを作るのは成功し、
あとはそれをWeb上で動かせるようにしたい、という状況です。
313デフォルトの名無しさん:2005/12/11(日) 01:51:41
コンソールで動いているなら、
apacheとかのサーバープログラムをセットアップすれば
目標が達成される気が…
314伝説新人タクシ:2005/12/11(日) 02:09:43
使えない暇教授なんだな
315デフォルトの名無しさん:2005/12/11(日) 02:33:53
>>312
CGIってことなら細かいことは忘れたがヘッダはき出すようにすればいいだけだろ
XMLサービスって事ならシラネ。まぁググれば大量に出てくるだろ


つーか卒研するぐらいならこれぐらい自力で調べるとか教授に聞くとか出来るだろ
もし教授がそういうのやってないなら自分所の情報系の学部・学科の教授捕まえるなり
メールするなりして聞くとかさ
316デフォルトの名無しさん:2005/12/11(日) 03:50:46
Webプログラミング
http://pc8.2ch.net/php/
317デフォルトの名無しさん:2005/12/11(日) 08:33:27
俺でも教授になれるような気がしてきたよ
318デフォルトの名無しさん:2005/12/12(月) 19:59:48
VC7ってメモリダンプ見れないんですか?
319デフォルトの名無しさん:2005/12/12(月) 22:29:44
関係ないけどこの板のアップローダされたときのPASSって決まってるの?
320デフォルトの名無しさん:2005/12/12(月) 23:20:50
PASSかける必要あるのか?
321デフォルトの名無しさん:2005/12/12(月) 23:43:58
他スレで放置でしたのでこちらで質問させていただきます。
VC++.NET2003 でVBなどから参照できるクラスライブラリ作成しております。
基本的には機嫌良く動いているのですが、同じクラスライブラリ内のクラスを
継承した派生クラスでデストラクタを記述しようとするとエラーが出ます。
継承関係のないクラスのデストラクタは成功します。
中身を空にしたりvirtual や void を付けたり取ったりしても同じです。
また普通にFormのプロジェクト内で作成したクラスの継承では問題ありません。

error LNK2001: 外部シンボル ""void __cdecl __CxxCallUnwindDtor(void
(__thiscall*)(void *),void *)" (?__CxxCallUnwindDtor@@・・・・)" は未解決です。

クラスライブラリ内で継承したクラスにデストラクタをつけるにはどうしたらいいでしょうか?
322デフォルトの名無しさん:2005/12/13(火) 08:03:54
>>312
VB.NETやC#用の資料を見ろ。それを元にVC++.NETに置き換えろ。
文法が違うだけで、使用するフレームワークは同じなんだから、それで十分だろ。

それも出来ないようなら、中学校からやりなおせ。
323323:2005/12/13(火) 11:36:07
こちらで質問していいのかわかりませんが
よろしければお願いします。
環境はWinXP・VC++6.0です。

IEコンポーネント(CWebBrowser2)をフォームに表示し
それを編集モードにしたいと思っています。

ttp://www.nitoyon.com/vc/tips/ie_component.htm
こちらを参考にしてサンプルソースをDLし、
put_designModeで編集モードに出来ることは確認できました。

自分はMFCAppウィザードで作ったSDIのプログラムで
同様の事を行いたいのですがうまくいきません。

サンプルではWinMainでAtlAxDialogBoxを使ってダイアログを表示していて
どうも自分がこれを使ってないことが原因のひとつに考えられるのですが
WinMainが無いプログラムの場合、AtlAxDialogBox、あるいは
それに変わる処理というのは何処で記述すればいいでしょうか?
よろしくお願いします。
324323:2005/12/13(火) 11:36:32
こんな感じにしてます・・・

BOOL CXXXXView::PreCreateWindow(CREATESTRUCT& cs)
{
_Module.Init(0, cs.hInstance);
AtlAxWinInit();
return CFormView::PreCreateWindow(cs);
}
void CXXXXView::FuncA(){
CWnd* pIE = (CWnd *)GetDlgItem(IDC_EXPLORER1);
if (pIE == NULL) return;

// コントロールのハンドルを得る
HWND hWnd = pIE->GetSafeHwnd();

// 使えるかどうかチェック
if (hWnd != NULL && ::IsWindow(hWnd) != 0) {
CComPtr<IUnknown>punkIE;

if (AtlAxGetControl(hWnd, &punkIE) == S_OK){
CComQIPtr<IWebBrowser2> pWB2 = punkIE;
if(pWB2 != NULL){//ここにNullが入ってきてしまう
CComPtr<IDispatch> pDisp ;
pWB2->get_Document( &pDisp) ;
CComQIPtr<IHTMLDocument2> pDoc = pDisp ;
pDoc->put_designMode(L"On");
}
}
}
}
325デフォルトの名無しさん:2005/12/13(火) 12:33:22
ダイアログににActiveXコントロールがはっついてるだけだろ
326デフォルトの名無しさん:2005/12/13(火) 15:27:43
ツリーコントロールのアイテムをドラッグ出来るようにするにはどうすればいいのでしょう?

ツリーコントロールの『プロパティ』→『拡張スタイル』→『ドラッグドロップを許可』にチェックを付けたのですが、
ドラッグ出来ず、OnBegindragのイベント内にも入ってきてくれません。

環境は
WindowsXP Home
VC++6.0
です。

どうかよろしくおねがいします。
327デフォルトの名無しさん:2005/12/13(火) 19:12:33
>>326
自分で実装
328デフォルトの名無しさん:2005/12/13(火) 19:22:18
MFCのサンプルならあるけど
MFCじゃないかもしれないな

気になるけど時間ないからまた来週来ます。
329321:2005/12/14(水) 17:29:11
ありがたくも元スレの方にレスがありましたので再び移動します。
すいませんでした。

マネージドやってる人、少ないのか・・・orz
330デフォルトの名無しさん:2005/12/14(水) 18:02:34
あんな思いフレームワーク使うくらいならまだMFC使った方がマシじゃわ
331デフォルトの名無しさん:2005/12/14(水) 18:12:28
思い×
重い○
332デフォルトの名無しさん:2005/12/14(水) 23:30:46
どうせフレームワークを使わざるを得ないならC#でやったほうが楽だしな。
333デフォルトの名無しさん:2005/12/16(金) 00:36:45
質問です。XP、.NET 2003 です。

HOGE.h / HOGE.cpp で定義されている関数 Hoge() を、
複数のプロジェクトで使いまわすことを考えています。

ヘッダの方は、HOGE.h を適当な場所に置き、
ツール→オプション→Projects→インクルードファイル でそのフォルダを追加すれば、
後はプロジェクトの適当なソースファイルで #include "HOGE.h" とすればOKです。

cpp ファイルはどうすればよいでしょうか?
ツール→オプション→Projects→ソースファイル で、HOGE.cpp をおいたフォルダを指定してみましたが、
プロジェクトをビルドすると、HOGE() の定義が見つからず、リンクエラーが起きてしまいます。
現状では、プロジェクトごとに、ソリューションエクスプローラにて HOGE.cpp を追加しています。
使いまわせているといえば言えるのですが、プロジェクトごとにコンパイルする必要がある上に、
HOGE.cpp のようなファイルが複数ある場合、いちいち全て追加しなければなりません。

#include <stdio.h> とするだけで、printf が定義されている c ファイルを自動的に検索してくれるのを思い、
同じことが実現できるのではないかと思って質問しました。

よろしくお願いします。

334デフォルトの名無しさん:2005/12/16(金) 00:51:51
HOGE.cpp をプロジェクトに追加する

ソリューションエクスプローラのフォルダを右クリックして「既存項目を追加」なり
ソリューションエクスプローラにエクスプローラから直接D&Dするなり
335333:2005/12/16(金) 00:58:41
>>334
ありがとうございます。
>>333 にありますように、現状はその方法で行っていますが、それだといくつか問題が生じています。
他に何か方法はないでしょうか。
336新人:2005/12/16(金) 01:42:51
333>
汎用化したいプログラムをDllのプロジェクトにしてワークスペースに追加すればいいんじゃないでしょうか?
Dllを使いたいプロジェクトの実行ファイルの直下に置けばそのDllを参照してくれます。
もちろんインクルードファイルの参照もしといてください。
337デフォルトの名無しさん:2005/12/16(金) 06:34:30
>#include <stdio.h> とするだけで、printf が定義されている c ファイルを自動的に検索してくれる
これは誤解
338デフォルトの名無しさん:2005/12/16(金) 11:01:02
>>333
>>336
別にDLLじゃなくてスタティックライブラリで委員で内科医?
デバッグビルド用とリリースビルド用を用意する必要はあるけど。
339デフォルトの名無しさん:2005/12/16(金) 12:28:32
教えてください。 .Net 2003 WinXP です。
F1キーヘルプでAPIを調べようとすると英語ヘルプが優先されてしまします。
日本語ヘルプをはじめに表示するにはどうしたらいいのでしょう?
340デフォルトの名無しさん:2005/12/16(金) 15:43:05
>>339
マルチポストはお帰りください
341デフォルトの名無しさん:2005/12/16(金) 15:44:02
まるぽ
342デフォルトの名無しさん:2005/12/16(金) 16:52:46
Baseクラスから派生してDerivedクラスを作成したとします。

class Base
{
public:
virtual func(int n){処理}
virtual func(int* p){ func(*p);} //オーバーロード
};

class Derived : public Base
{
public:
virtual func(int n){処理}  //オーバーライド
};

以上のように、派生クラスのオーバーロード元のメンバ関数をオーバーライドしたとき
基本クラスでオーバーロードした関数は派生クラスで呼び出せないのでしょうか?

int* p;
〜処理〜
Derived* derived = new Derived;
derived->func(p);

↑これでコンパイルエラーが出ます。
やっぱり基底クラスでオーバーロードした関数もオーバライドしなければいけないのでしょうか?
343デフォルトの名無しさん:2005/12/16(金) 17:24:10
>>342
そんなオーバーロードなんてやるほうがおかしいからやめろ。

一応解決策を書くけどさ。
たとえばこうすればいい。
class Base
{
protected:
    func_(int n) {処理}
public:
    func(int n) {return func_(n);}
    func(int* p) {return func_(*p);}
};

class Derived : public Base
{
protected:
virtual func_(int n) {処理}  //オーバーライド
};
ほかにDerivedのpublicなところでusing Base::func;を書く方法でも
一応コンパイルは通るが、これは一時しのぎのつもりで使え。
344デフォルトの名無しさん:2005/12/16(金) 17:24:47
すまん。Base::func_ももちろんvirtualだ。
345333:2005/12/16(金) 20:11:03
>>336-338
ライブラリというのを全く思いつきませんでした。ありがとうございます。
346デフォルトの名無しさん:2005/12/17(土) 08:04:05
グラはファミコン以下ですが、
個人的には結構面白いサッカーゲームです。
一人用ですが。

某雑誌に掲載されてた記事
「一試合3分から楽しめる本格派サッカーゲーム。
グラフィックは簡素だが、やり込み派にはオススメしたい一本。
 
こだわりのカスタマイズが面白い。
簡素なグラフィックとは逆に、戦術面は細部まで作りこまれている。
システムやプレスのON/OFFから、なんと選手一人一人のポジショニングまで設定可能だ。
こだわりのチーム作りが楽しめる。」

フリーゲームなんですが、管理人がいないらしいので、
サッカー好きでプログラムのできる方居たら助けてやってください。
このゲームで対戦できたら面白いと思うので

RolePlaying Eleven
http://ime.st/www.geocities.co.jp/Bookend-Kenji/2279/

最近立った2chスレ
http://game10.2ch.net/test/read.cgi/netgame/1134392861/
347342:2005/12/17(土) 08:46:58
>>343
なるほど。
ありがとうございました。
348デフォルトの名無しさん:2005/12/21(水) 04:17:58
えーどもども。Visual Studio .NET 2003で、

[Nullpo.h]
---------------------------
#ifndef ___Nullpo_h
#define ___Nullpo_h

namespace Nullpo {
  // 宣言
  void Ga();
}

#endif ___Nullpo_h


[Nullpo.cpp]
---------------------------
namespace Nullpo {
  // 定義
  void Ga() {
    ...
  }
}

で、クラスビューにGa(void)が二重に表示されるんですが、なんででしょう。
349デフォルトの名無しさん:2005/12/21(水) 21:16:58
Windowsプログラミングを始めたところなんですが、アホみたいなところで躓いています…
ダイアログバーを使いたいのですが、Createの
virtual BOOL Create(
CWnd* pParentWnd,
UINT nIDTemplate,
UINT nStyle,
UINT nID
);

nIDTemplateとnIDがわかりません
IDというと、リソースエディタでつけたIDD_DialogBarしかわからないのですが、
どちらがこれに当たり、もう一つには何を与えればよいのでしょうか。
350デフォルトの名無しさん:2005/12/21(水) 22:30:49
VisualStudio.NETを使っています
リソースビュー→Dialog→リソースの追加→Dialogを選択。
OKとキャンセルボタンがついたダイアログが出来ますが、
これをプログラム中から呼び出すと、ダイアログエディタで表示されていたOK,キャンセルボタンとは別に
OK、キャンセルボタンがもう一組表示されています。
これはなんでしょうか。また、消し方についてもお願いします。
351デフォルトの名無しさん:2005/12/21(水) 22:41:10
>>349
どっちも同じIDD_DialogBarでいいんぢゃねーか?

CDialogBar m_wndDBar;

m_wndDBar.Create( this, IDD_DialogBar, CBRS_xxx , IDD_DialogBar );

みたいな感じ
352349:2005/12/21(水) 22:59:00
>>351
ありがとうございます。とりあえず表示できました。
でも、よく意味がわからないのですが、追々勉強します…
353デフォルトの名無しさん:2005/12/22(木) 12:07:03
>>350
自前でボタンを生成しているとか、ダイアログIDが混乱しているとか、そういう落ちじゃないよな。
354デフォルトの名無しさん:2005/12/22(木) 19:17:05
VC++6.0で、リストコントロールで表示スタイルを「レポート」にした場合、
行をドラッグするような事はできるのでしょうか?

それとも、「アイコン」スタイルでないとできないのでしょうか?
355デフォルトの名無しさん:2005/12/22(木) 19:44:08
行をドラッグしても選択範囲が変わるのが関の山。
356デフォルトの名無しさん:2005/12/23(金) 20:21:04
ボタンを押すと、あるエディットボックスにあるCStringのデータを
Ctrl+Cしたいと考えているのですが、可能なのでしょうか?

ご教授宜しくお願い致します。
UpdateData(TRUE);
CString copydata;
copydata = m_text1;

このcopydataを自動でCtrl+Cしたいと考えております。
357デフォルトの名無しさん:2005/12/23(金) 21:25:06
エスパー、仕事!仕事!
358デフォルトの名無しさん:2005/12/23(金) 21:38:04
>>356
Ctrl+C という「アクセラレータ・キー」に機能を割り振るのは、プログラマの仕事だ。
というわけで、したい事をお好きなように……








クリップボードにテキストをコピーしたいのなら、
 1) OpenClipboard(), SetClipboardData() などの標準クリップボードAPI
 2) MFC の COleDataSource クラス
 3) CLI では System::Windows::Forms::Clipboard クラス
のどれかを使え。
359デフォルトの名無しさん:2005/12/23(金) 22:06:59
ありがとうございます。
解決しました
360デフォルトの名無しさん:2005/12/23(金) 23:15:05
スゲエ本物のエスパーを見たお
361デフォルトの名無しさん:2005/12/24(土) 17:46:23
質問です。XP、.NET です。

ダイアログにリストビューを配置しようとしたのですが、
ツールボックスからリストビューを見つけられません。

似たようなものとして List Box、List Control があったのですが、どうも違うようです。
LVM_INSERTCOLUMN を用いてコラムを追加したり、
LVS_EX_GRIDLINES を用いてグリッドを引いてみたりしようとしてみましたが、どちらも無理でした。
Visual Studio 6.0 を使っていたころはあったのですが・・・。
.NET ではインターフェイスが違いすぎて困っています。

よろしくお願いします。

362361:2005/12/24(土) 17:49:39
ビューをレポートにしたらいけた・・・
自己解決です。お騒がせしました。
363デフォルトの名無しさん :2005/12/26(月) 20:08:52
Viewクラスで、GetDocumentを実行すると、
Debug Asseriton Failed
Program: ***********
File: objcore.cpp
Line: 39
とエラーが出て止まってしまいます。
OnDraw関数内にはじめからある CDocumentClass* pDoc = GetDocument(); ではエラーは出ないのですが、
その他の関数中で同様に書くと、上記のエラーが出て実行できません(ビルドは通ります)。
GetDocumentは、OnDrawの中でしか使えないわけではないですよね?

よろしくお願いします。
364デフォルトの名無しさん:2005/12/26(月) 22:00:37
>>363
objcore.cppの39行目を見る気は無いわけだな
365363:2005/12/26(月) 22:34:09
39:ASSERT(this != NULL);
40:// it better be in valid memory, at least for CObject size
41:ASSERT(AfxIsValidAddress(this, sizeof(CObject)));

すいません、見ても意味がわかりませんです…
366デフォルトの名無しさん:2005/12/26(月) 22:36:39
ASSERTがどういう役割をするか調べる気は無いわけだな
367363:2005/12/26(月) 22:57:30
それ検索してわかったなら書き込まないよ…
足りない知識で考えると、this==NULLとは、GetDocumentでドキュメントクラスのポインタが取得できなかったと言うことですか?
あってます?
だとしたら、それが何でかわからないのでお聞きしたかったのですが。
ビューとドキュメントの関連づけは問題ないと思います(OnDraw関数内では使えてる)。
368デフォルトの名無しさん:2005/12/26(月) 23:00:02
思考停止乙
369デフォルトの名無しさん:2005/12/26(月) 23:00:38
ぶっちゃけMFCのソース貼り付けは無断転載でライセンス違反だと思うんだが。
370デフォルトの名無しさん:2005/12/26(月) 23:07:02
>>367
ドキュメントクラスのオブジェクトが作成される前に、GetDocumentしてるのでは?
OnDrawでうまくいくのはOnDrawの段階ではドキュメントクラスのオブジェクトが存
在するからではないの?
371デフォルトの名無しさん:2005/12/26(月) 23:09:37
追加で、
ドキュメントクラスのコンストラクタ抜ける直前と、問題のGetDocumentに
ブレーク張って前後関係確かめたら?
372363:2005/12/26(月) 23:26:28
>>370,371
ビューのコンストラクタから呼んでいたので怪しいかと思い、
ご指摘のブレークポイントを設定してみました。
しかし、ドキュメントクラスのコンストラクタのほうが先に呼ばれているようです。

>>369
以後気をつけます…
373デフォルトの名無しさん:2005/12/26(月) 23:34:09
CView::OnInitialUpdate
virtual void OnInitialUpdate( );

解説

ビューが初期表示される前で、ドキュメントが最初にビューに関連付けられた後にフレームワークが呼び出します。
374デフォルトの名無しさん:2005/12/26(月) 23:36:27
>>372
じゃビュークラスのコンストラクタからGetDocumentしてるとか。
この場合のthisがどのオブジェクトのポインタなのか良く知らないで
書いてるもんで・・・
詳しい人のレスを待ったほうがいいかな。
375デフォルトの名無しさん:2005/12/26(月) 23:41:07
>>372
オブジェクトが完成するのはコンストラクタ抜けた直後だよ。
376130:2005/12/26(月) 23:45:36
がっ、
>ビューのコンストラクタから呼んでいたので怪しいかと思い
って思い切り書いてあった。
377363:2005/12/26(月) 23:53:28
>>373
つまり、ビューのコンストラクタの段階では関連づけされてなくて、
コンストラクタを抜けて関連づけられた後に
OnInitialUpdateが呼ばれるということですか。
OnInitialUpdateから問題の関数を呼んだらうまくいったようです。ありがとうございます。

レスをくださった皆様ありがとうございました。
378デフォルトの名無しさん:2005/12/27(火) 06:58:44
>>377
違う。
379デフォルトの名無しさん:2005/12/28(水) 10:26:17
質問です。

VC6.0で動的に配列を作ると
時たま破棄するときにエラーになります。
例えば関数内で以下のようなものを書くと
Debug Assertion Failed!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
などと出てエラーとなってしまいます。
delete[] array;
を削除すると一応は通ります。
このようなエラーが頻発するのですが、
どのようにすれば解決するのでしょうか?
詳しい方宜しくお願いします…



int *array;
array = new int[100];

処理

delete[] array;
380デフォルトの名無しさん:2005/12/28(水) 10:41:51
>>379
恐らく、その「処理」の間にメモリ管理領域をぶち壊している。
delete[]しないと通るのは、その(ぶち壊していると言う)事実に直面しないで済んでいるだけ。
381デフォルトの名無しさん:2005/12/28(水) 10:43:33
>>380
ヒント有難う御座います。
これから調べてみます…
382デフォルトの名無しさん:2005/12/28(水) 18:58:55
リストコントロールから項目をドラッグして、
他のコントロール(リストボックス)上でドロップする処理をつくっているのですが、
ドロップされた場所がリストボックスのどのインデックスか取得する方法が分かりません。

ドロップした瞬間は↓のイベントでわかるのですが、
 void CDlg055::OnLButtonUp(UINT nFlags, CPoint point)
引数のpointからリストボックスのどのインデックスか取得はできるのでしょうか?

環境はVC++6.0 WinXP Homeです。
383デフォルトの名無しさん:2005/12/28(水) 19:46:54
マウスの位置はわかるな
384デフォルトの名無しさん:2005/12/28(水) 22:46:20
CListBox::ItemFromPoint
385382:2005/12/29(木) 17:55:57
>>384
そんな関数があったんですね。
ありがとうございます。
386デフォルトの名無しさん:2005/12/29(木) 22:09:37
double型の精度は何桁ですか?
387デフォルトの名無しさん:2005/12/29(木) 22:12:21
↑あ、VC++7.0の話です。
388デフォルトの名無しさん:2005/12/30(金) 00:47:39
>>386
52ビットだから約16桁だね。
389デフォルトの名無しさん:2005/12/30(金) 01:30:02
<float.h>
#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */

かな?
390デフォルトの名無しさん:2006/01/04(水) 16:45:47
2003で/GLオプションつけてビルドしたライブラリを使って、
2003で自作アプリを/GLオプション付でコンパイルするとどう見ても
ソースが要求する動きをしないコードが出来上がるんだがどういうこっちゃ。
391デフォルトの名無しさん:2006/01/04(水) 17:52:14
>>390
ライブラリにするからじゃん
392デフォルトの名無しさん:2006/01/04(水) 18:31:44
>>390
ライブラリには/GLを使うなと言うようなことが書かれている。
http://msdn.microsoft.com/library/ja/vccore/html/vcgrfglwholeprogramoptimization.asp
393デフォルトの名無しさん:2006/01/04(水) 22:50:57
>>392
使うなじゃなくてバージョン合わせろって事だろ。
同じ環境でコンパイルしてるんだからそれは問題ないはずじゃないの?
394デフォルトの名無しさん:2006/01/04(水) 23:27:21
ランチャを作ろうかと思っています。

他のアプリからリソースを取り出す方法まではわかりました。
そこで、アイコン確認するためダイアログの背景に取得したアイコンを表示してみようと思ったのですが、
その方法がわかりません。

わかる方、御教授お願いします。
395デフォルトの名無しさん:2006/01/04(水) 23:45:21
>>393
/GLオプションの意味わかってんのか?
396デフォルトの名無しさん:2006/01/04(水) 23:45:58
>>393
バージョンじゃなくて同一PCでやれって書いてないか?
397デフォルトの名無しさん:2006/01/04(水) 23:53:21
>>395
わかってるつもりだけど、俺のレスのどこら辺からわかってないと思ったのか教えて欲しい。
何でもいいから問題解決の糸口がほしいんだ。

>>396
プリコンパイル済みヘッダー使った場合だろ?
そもそも使ってないし、同一PCでやってる。
398394:2006/01/05(木) 10:53:31
CDCクラスのDrawIcon使って自己解決。
399デフォルトの名無しさん:2006/01/05(木) 13:14:47
MFCerは帰れ
400デフォルトの名無しさん:2006/01/05(木) 14:21:49
>>399
MFCでもええやん。
401デフォルトの名無しさん:2006/01/05(木) 14:27:50
ここはMFCプログラムを教えるスレではありません故
つーかプログラムを教えるスレでもねぇがな
402デフォルトの名無しさん:2006/01/05(木) 15:30:31
>>399
MFCスレが他にあるけどapiスレもあるし、
それをやるなと言ったらここで何をやれと?
403デフォルトの名無しさん:2006/01/05(木) 15:33:53
プログラムに関することだけがVC++のことではないと思うがな
404デフォルトの名無しさん:2006/01/05(木) 15:35:05
上の/GLなんかMFCでもAPIでもないけどVC++のことですが?
405デフォルトの名無しさん:2006/01/05(木) 17:12:03
ならこのスレは祖父板に立てるべきだな。
406デフォルトの名無しさん:2006/01/05(木) 18:59:20
「初心者にVisual C++を教えるスレ」だから、
MFC、API、コンパイラ等、幅広く教えるんじゃないのか?
407デフォルトの名無しさん:2006/01/05(木) 19:18:55
だがMFCの質問はMFCスレへ行けと言ってるこの現状
408デフォルトの名無しさん:2006/01/05(木) 19:23:40
初心者にコンパイラスイッチまで教える必要ない。
やりたきゃ自分でやれ
409デフォルトの名無しさん:2006/01/05(木) 19:29:00
何言ってんのコイツ?
410デフォルトの名無しさん:2006/01/05(木) 21:30:46
>>409
たまにだけど自分の守備範囲外だってだけで拒否反応する香具師いるんだよ
MFCが使えない399とかコンパイラスイッチが苦手なやつとかさ
411デフォルトの名無しさん:2006/01/05(木) 21:46:40
インラインアセンブラとかやられたら迷惑
412デフォルトの名無しさん:2006/01/06(金) 00:14:30
結論:
(話に加われないから)俺にわからない話はするな

ってことだな。
413デフォルトの名無しさん:2006/01/06(金) 08:29:24
初心者スレだってこと忘れてないか?
414デフォルトの名無しさん:2006/01/06(金) 08:55:17
コンパイラスイッチはここで良いんじゃ?
VC++のスレって事は、環境やコンパイラとか固有の物についてのスレでそ?

MFCやAPIは専用スレがあるんだから、そっちでやるのがいいんじゃね?
415デフォルトの名無しさん:2006/01/06(金) 09:03:50
>>414
とりあえず過去ログぐらい読もう
そんなこと言ってるのお前だけだ
416デフォルトの名無しさん:2006/01/06(金) 13:44:21
>>414
MFCもVC++固有だけど・・・・・・
417デフォルトの名無しさん:2006/01/06(金) 15:15:58
>>416
で?
418デフォルトの名無しさん:2006/01/06(金) 16:33:35
>>415
過去がそうだったからといって今後も続けなきゃいけないとは限らない。
419デフォルトの名無しさん:2006/01/06(金) 16:36:58
へんなやつがわいてきたな
420デフォルトの名無しさん:2006/01/06(金) 19:40:28
へーんとへーんを集めてー
421デフォルトの名無しさん:2006/01/06(金) 20:01:04
もっとへんにするのか?
422デフォルトの名無しさん:2006/01/07(土) 22:15:34
なんでソフトやる奴はこんなのが多いのだらうか。
423デフォルトの名無しさん:2006/01/08(日) 01:19:23
2chのカキコで判断されてもなぁ
424デフォルトの名無しさん:2006/01/09(月) 03:35:17
すみません。vc++で警告が出てしまい日本語文字が化けてしまいます。すいませんが助けてください。
2005でコンパイルすると上手くいかないのです。

34 wc.lpszClassName = (LPCSTR)szClassName;

警告warning C4133: '=' : 'LPCSTR' と 'LPCWSTR' の間で型に互換性がありません。 34
425デフォルトの名無しさん:2006/01/09(月) 03:38:35
WNDCLASSEX構造体wcのメンバの型と
グローバル変数char szClassName[] = "template";の型に互換性がなくなってるらしいのですが、、
426デフォルトの名無しさん:2006/01/09(月) 03:39:58
まとまりのない文章ですみません。
427デフォルトの名無しさん:2006/01/09(月) 03:41:08
互換性がなくなってるんじゃなくて、もともと無いの。
428デフォルトの名無しさん:2006/01/09(月) 03:49:50
>>427
有難うございます
明日また、考えたいと思います。今日はもうメモリリークしそうなので寝ます
429デフォルトの名無しさん:2006/01/09(月) 04:23:44
ヒント:雲丹コード
430デフォルトの名無しさん:2006/01/09(月) 06:28:36
答え:undef _UNICODE; undef UNICODE
431デフォルトの名無しさん:2006/01/09(月) 08:30:15
>>425
TCHAR szClassName[] = TEXT("template");
432デフォルトの名無しさん:2006/01/09(月) 12:32:01
リソースってvisual c++上でテキストファイルみたいに編集できないのでしょうか?
もし、手書きで編集するにはvisual c++を終了してメモ帳などで別に開くしかないのですかね?
433デフォルトの名無しさん:2006/01/09(月) 12:39:37
>>432
ソリューションエクスプローラ
右クリック
434デフォルトの名無しさん:2006/01/09(月) 12:42:07
>>433
できました!ありがとうございました。
435デフォルトの名無しさん:2006/01/09(月) 18:01:44
CreateWindowEx()を使って、ボタンコントロールを作ったはいいものの、
複数配置した場合、メッセージを拾うとき、
BN_CLICKED指定だけではどのボタンか特定できませんよね?
そこでIDC_xxxxとかそのあたりのIDを使っているのだと思いますが…

コントロールのIDってどこで追加するのですか?

VC++6.0使用です。ものすごい初歩的な質問で恐縮です。
ダイアログベースならどこかで追加できた気がしますが、
そうでない場合の追加の仕方がわからなくて…。
436435:2006/01/09(月) 18:30:56
あ…あぁ…もうちょっとで自己解決しそう…。
437435:2006/01/09(月) 18:39:10
あぁッ…ぁふん…自己解決しちゃったかも。

.rcファイルを開いて手動で追加すればいいのですか?

あぁでも書式がわからん…。
438デフォルトの名無しさん:2006/01/09(月) 18:49:04
リソース使わないならrc関係ないよ
439435:2006/01/09(月) 19:04:19
あれ?これもしかしてソース内で適当に#defineしちゃっていいものなのですか?

#define IDC_BUTTON1   1
#define IDC_BUTTON2   2

のような感じで。
さらにenumなんか使っちゃてもOKですか?
440デフォルトの名無しさん:2006/01/09(月) 19:31:13
全然だめ
441デフォルトの名無しさん:2006/01/09(月) 19:37:01
IDで識別しか頭に無いのか
442デフォルトの名無しさん:2006/01/09(月) 19:45:50
別に特殊なことでも何でもないし
サンプル探せば簡単にみつかる
443デフォルトの名無しさん:2006/01/09(月) 20:31:46
>>435
CreateWindowExの引数でIDを指定できる。
そのIDは439のように#defineやconstやenumを使って名前をつけて良い。
444デフォルトの名無しさん:2006/01/09(月) 20:35:46
CreateWindowExじゃなくてCreateWindowを調べてみれ
445デフォルトの名無しさん:2006/01/09(月) 21:01:15
>>443,444
ありがとうございます。
どうも自分で指定してよかったみたいですね。

予めどこかで、一定の手順に従って定義されているIDを渡すものだとばかり思っていたので、
(でないと重複などが問題になると思ったから)
こんがらがっていたようです。
webで調べてもダイアログベースでプロパティから弄る場合や、
自動的についてる場合などしか見当たらなくて。

失礼しました〜。
446428:2006/01/09(月) 23:18:26
>>427-431
CreateWindow関数とMesageBox関数の2番目の引数が文字化けします。
447428:2006/01/09(月) 23:19:55
2003だったら何の問題も無いんですけど。
これは漏れに2005を使うなという意味ですか?
448デフォルトの名無しさん:2006/01/09(月) 23:26:29
自分で何も調べない奴は、何も使うな
449デフォルトの名無しさん:2006/01/10(火) 00:12:38
直りました。俺だけ文字化けしてるのかと思った
450デフォルトの名無しさん:2006/01/10(火) 02:24:16
いままで使っていたソースとリソースを使って新しく同じようなプロジェクトを作ったのですが
'IDC_COMBO' : 定義されていない識別子です。
というエラーが出て困ってます。
'IDC_COMBO'はコンボボックスのIDでIDはきちんとIDC_COMBOになっているし
ソースファイルにも
#define IDC_COMBO 101
というように定義してあります。
いろいろ調べたのですが、わからなかったのでお願いします。
451デフォルトの名無しさん:2006/01/10(火) 02:45:40
プロパティウィンドウの簡略ヘルプが出なくなったのですが、
どうやったら元に戻せるのですか?説明にはチェックがついてます
452451:2006/01/10(火) 02:47:26
すいません、戻りました
453デフォルトの名無しさん:2006/01/10(火) 03:21:28
Visual Basic なんだけど、
Sub ex2()
Dim x As Integer, s As Integer
s = 0
For x = 1 To 100
s = s + x
Next x
If x Mod 2 Then

End If
MsgBox "合計=" & s
End Sub

ってのに奇数だけの和を求められるようにするにはどう変形すればよいですか?


454デフォルトの名無しさん:2006/01/10(火) 03:52:01
>>453
スレ違い
455デフォルトの名無しさん:2006/01/10(火) 05:10:06
>>453
禿げ上がるほどスレチガイだが教えてやる。
算数をもう一度勉強しなおせ。以上
456デフォルトの名無しさん:2006/01/10(火) 06:53:04
キショ
457デフォルトの名無しさん:2006/01/10(火) 10:56:19
PostMessageで独自のメッセージUM_UNKOを飛ばし、処理させたく存じます。
PreTranslateMessage関数では、ちゃんとメッセージが飛んできて、処理可能ですが、
メッセージマップで追加設定した関数OnUnko()には、処理が飛んで来ません・・・
なにがいけないのでしょうか??
ちなみに、メッセージはPostMessage(UM_UNKO)で飛ばしております
(SendMessageでは、PreTranslateMessageに飛んでこない・・・)


BEGIN_MESSAGE_MAP(Cxxx, CDialog)
ON_MESSAGE(UM_UNKO, OnUnko)
END_MESSAGE_MAP()

BOOL Cxxx::PreTranslateMessage(MSG* pMsg)
{
switch (pMsg->message){
case UM_UNKO:
・・・ // 飛んでくる
break;
}

LRESULT Cxxx::OnBnSetfocusPictEditor(WPARAM wParam, LPARAM lParam)
{
・・・ // 飛んでこない
return 0;
}
458457:2006/01/10(火) 10:57:29
関数名訂正

LRESULT Cxxx:OnUnko(WPARAM wParam, LPARAM lParam)
{
・・・ // 飛んでこない
return 0;
}
459デフォルトの名無しさん:2006/01/10(火) 10:57:46
デバッガで追えばぁ〜
460デフォルトの名無しさん:2006/01/10(火) 11:05:35
>>457
MFCスレ行った方がいいんじゃね?
461457:2006/01/10(火) 11:27:09
MFCスレ行ってきますm(_ _)m
462チラシの裏:2006/01/10(火) 12:03:40
ON_MESSAGE
ユーザー定義メッセージは、通常、WM_USER から 0x7FFF の範囲で定義します。
463デフォルトの名無しさん:2006/01/10(火) 18:06:20
現在はユーザー定義メッセージはWM_APPから。
4641/2:2006/01/11(水) 00:49:59
・環境
XP SP2
Visual Studio 6.0(VC++6.0)

・現象
ExcelVBAから呼び出す収束計算用のWin32DLLを作成しています。
問題の箇所は

y = (x - a) / b;

変数はすべてdouble型です。
VBAでマクロを繰り返し実行する際、1回目で当該箇所を実行すると
右辺と左辺は等しくなるのですが、2回目以降では左辺の値が異なっていることがあります。
有効桁数が16桁とごくわずかな誤差ですが、最終的に大きくなってしまうので無視できません。
対処方法(できれば原因も)をご教授ください。
4652/2:2006/01/11(水) 00:50:34

a = 4.047;
b = 1.8413;
x = 0.052;
// 中略
y = (x - a) / b;

ウォッチウィンドウにて、以下の値となりました。
【1回目】
a 4.0469999999999997
b 1.8412999999999999
x 0.051999999999999998
(x - a) / b -2.1696627382827347  …右辺
y -2.1696627382827347  …左辺
【2回目以降】
a, b, x 同上
(x - a) / b -2.1696627382827347  …右辺
y -2.1696627382827351  …左辺

※1
y = (0.052 - 4.047) / 1.8413;
を実行した場合は、2回目以降も現象は再現しません。
ただし、y = (x - 4.047) / 1.8413; のように右辺の項のどれか1つでも変数の場合は再現します。
※2
上の例で x = 0.056; のときは(a、bはそのまま)、再現しません。
466デフォルトの名無しさん:2006/01/11(水) 01:10:27
>>465
念のため、全部明示的にdoubleにキャストして試してみては?
467デフォルトの名無しさん:2006/01/11(水) 01:34:38
原因:恐らく変換誤差。
対処法:
・doubleの精度ギリギリまで使おうとせずに丸める
・long doubleを使う。

まぁ、ソース晒して味噌。
468デフォルトの名無しさん:2006/01/11(水) 02:12:46
やっぱり問題の箇所のソース出した方がいいかもね。
その部分だけconsoleで試してみたけど、再現しなかったよ。

#include <stdio.h>

int main(int argc, char *argv[])
{
double a=4.047;
double b=1.8413;
double x=0.052;
double y=0.;
int i;

for(i=0;i<=1;i++){

y=(x-a)/b;

printf("y =%.16lf\n",y);
printf("raw =%.16lf\n",(x-a)/b );
}
getchar();

return 0;
}
469デフォルトの名無しさん:2006/01/11(水) 05:56:40
やっぱ精度の問題じゃね?
gccの場合そのままだと再現しなかったけどlong doubleにキャストしたら再現したから。
16桁の精度が必要なら、long doubleを使うしかないと思うよ。

(long double) y =-2.1696627382827351
(x - a) / (long double) b =-2.1696627382827349
470デフォルトの名無しさん:2006/01/11(水) 07:59:03
__int64使え
471デフォルトの名無しさん:2006/01/11(水) 08:24:53
プログラミング以前の問題では?

http://www.geocities.co.jp/SiliconValley/5634/t82DC_0005.html
> まるめごさ
> 丸め誤差
> 【現象】
> ・2進数では小数以下が正しく表現できない事がある為に発生する問題。
> ・誤差の一つ一つは小さいけれど、「チリも積もれば山となる」で
> 当然の如くさまざまな問題を引き起こす。
> ・2進数も分からずに、「C言語できます」「VBできます」
> てな人が何も考えずに作ったプログラムでは良くある事です。
> ・あ〜恐ろしい。
472デフォルトの名無しさん:2006/01/11(水) 08:29:16
下2つは個人的な感情でどうでもいいな
473デフォルトの名無しさん:2006/01/11(水) 08:52:11
> まるめごさ 
> 丸め誤差 
> 【現象】 
> ・あ〜恐ろしい。 
474デフォルトの名無しさん:2006/01/11(水) 12:33:46
>>471
折角の用語辞典も下2つを入れてるだけで台無しだよな
475デフォルトの名無しさん:2006/01/11(水) 13:19:27
別に2進数に限らずとも正しく表現できないと思うのだが。
476デフォルトの名無しさん:2006/01/11(水) 14:12:51
http://www.fuka.info.waseda.ac.jp/~kozo/suuchi/value/value_2.html
10進数から2進数への変換誤差
整数値の場合、全ての10進数は2進数に変換できますが、
小数の場合、10進数を2進数に変換できないことがあります。
例えば、2進数では10進数の0.1を表現できません。

丸めの指定
2進数では表現できない小数を扱うとき、通常、コンピュータは適当な2進数に変換します。
このように近似値に変換することを丸めといいます。丸めの方法には幾つか種類がありますが、
Visual C++では丸めの種類を明示的に指定することが可能です。
477デフォルトの名無しさん:2006/01/11(水) 14:29:16
ttp://www.fuka.info.waseda.ac.jp/~kozo/suuchi/value/value_1.html
>32bit計算機ではintには-2^-16 < int < 2^16-1の範囲の数値しか入りません。
#「^」は補った。

すげぇ、-2^-16が整数だって。
478デフォルトの名無しさん:2006/01/11(水) 14:30:41
>>477
いや、等号で結ばれていないから 0 < int < 65535 と解釈するべきだろ。
#どっちにしても蛸だが。
479デフォルトの名無しさん:2006/01/11(水) 14:51:35
>>477
細かいこと言うと、これはC99の場合だが負数の表現は
・符号と絶対値
・2の補数
・1の補数
の3つの内、どれかである事は規定されてるがどれを使うかは処理系定義な上
例えば2の補数において符号ビットが1、他は0の物をどう扱うかも処理系定義

だから32bit計算機=-2^16<int<2^16-1だとは言い切れないわけだが
480478:2006/01/11(水) 15:15:13
>>479
いや、>477は-16乗を指摘したいのだろうよ。恐らくは31乗なのだろうから。
481デフォルトの名無しさん:2006/01/11(水) 15:25:44
>>480
いやそれは分かってる
482477:2006/01/11(水) 15:34:31
>>478
あーそうか、確かにw

>>481
判ってたら何で>>479みたいなこと書くかなぁ。
2の-16乗って0.00000152587890625でしょうが。
それに、仮に2の16乗だとしても65536だよ。
32ビット計算機でそんなint幅(高々17ビット分)を仮定するようなコンパイラがあったら逆に凄いと思うぞ。
483デフォルトの名無しさん:2006/01/11(水) 16:18:34
>>482
面倒だったのでその辺は無視した
6行目までからで分かると思うが、下限が2^○とは限らないぞってことが言いたかっただけ
484464:2006/01/11(水) 19:06:08
会社で聞いてみたところ、「最初にVBAから呼び出したときに、CPUの2次キャッシュにゴミが残ってしまい
2回目以降の呼び出しのときに代入された値が変わってくるのでは」と言われました。
VC++側のコーディングでは回避不可能かも、とのことです…

ちなみにP4 2.4Gです。
485デフォルトの名無しさん:2006/01/11(水) 19:09:16
>>484
いいか、そいつが同僚か上司かは知らんが












そいつを窓から投げ捨てろ
486デフォルトの名無しさん:2006/01/11(水) 19:33:44
投げ捨てろー!
487デフォルトの名無しさん:2006/01/11(水) 20:00:33
488464:2006/01/11(水) 21:22:01
>>487
long double型へのキャストは試しましたが解決しませんでした。

サンプル作ったので帰ったらうpします。
489464:2006/01/11(水) 23:11:43
サンプルです。
・Win32DLLを新規作成して以下の関数をエクスポートします。
extern "C" __declspec(dllexport) int __cdecl Gosa()
{
double a = 4.047;
double b = 1.8413;
double x = 0.052;
double y = 0;

y = (x - a) / b;

return 0;
}
(続く)
490464:2006/01/11(水) 23:23:07
>>489補足 return 0; にブレークポイント設定します。

・関数を呼び出すExcelマクロを作成します。
Excelファイルはdebugフォルダに置きます。
Option Explicit

Public Declare Function Gosa Lib "GosaTest.dll" () As Integer

Sub main()
ChDir ThisWorkbook.Path
Gosa
End Sub
・VC++のデバッグオプションで実行ファイル:Excel.exe、コマンド引数:上記Excelファイルのパス、として
デバッグ実行します。
・Excelファイルが開いたら上記マクロを実行します。

で、結果は>>465の通りです。
491デフォルトの名無しさん:2006/01/11(水) 23:49:18
>>489-490
Debugモードだと確かに再現するね。
Releaseモードだと再現しない(2回目以降も同じ値が出てくる)。

最初>>464-465を見たときは最適化オプションの中の/Opの問題かなと思ったけど、
どうやら違うようだ。
なんでだろうね?
492デフォルトの名無しさん:2006/01/12(木) 00:39:47
EXCELがFPUを拡張精度にしてしまうからだと思う。
何で2回目からかはわからないが。(ウチの環境では1回目から拡張精度で計算の数値)
ウォッチの (x - a) / bはVC++側で計算してるので倍精度で計算の結果になっていると思われ。
_controlfp等でで制御してやればいいと思ふ。精度戻すの忘れずに。
493デフォルトの名無しさん:2006/01/12(木) 02:27:24
そういえばVCの浮動小数点数の連続した演算をFPUレジスタ内で済まして拡張精度になる最適化がある。
/Opでそれを無効にできる。
http://msdn.microsoft.com/library/ja/vccore/html/_core_.2f.Op.asp
494464:2006/01/12(木) 11:34:22
>>492
それが原因だったようです。
http://support.microsoft.com/default.aspx?scid=kb;ja;883881
_controlfp(_PC_53, _MCW_PC); で解決しました。ありがとうございました。
495デフォルトの名無しさん:2006/01/12(木) 21:30:54
マルチスレッド初挑戦でいきなりはまってしまいました。
_beginthreadで起動した2つのスレッドに対し、
WaitForMultipleObjectsで終了待機させているのですが
スレッドの実行が一瞬で終わってしまうケースで
WaitForMultipleObjects呼出時点でスレッドが既に
終了していると、戻り値がWAIT_FAILEDになってしまいます。
このような状況に、どのように対処したらよいのでしょうか。

Visual C++ 6.0です。よろしくお願いします。
496デフォルトの名無しさん:2006/01/12(木) 22:07:13
>>495
_beginthreadexでCREATE_SUSPEND
497デフォルトの名無しさん:2006/01/12(木) 22:38:42
>>496
CREATE_SUSPENDにしなくても、_beginthreadexならスレッドが終了しても
CloseHandleするまでハンドルが生きてるから大丈夫。
498デフォルトの名無しさん:2006/01/12(木) 22:50:25
CREATE_SUSPENDじゃなくてCREATE_SUSPENDEDなんだな。
MSDNが間違ってる。

ちなみにCloseHandleするなって書いてあるけど
ホントにしなくていいんだよな。
499デフォルトの名無しさん:2006/01/12(木) 22:51:35
というか、_beginthreadはインターフェースが脳死なので使うな、
ってどっかに書いてあったような。
500デフォルトの名無しさん:2006/01/12(木) 22:52:54
>>498
begintheadなら本当に要らない。exなら要る。
501デフォルトの名無しさん:2006/01/14(土) 22:38:42
VC++.NETです
DLLを作成するプロジェクトから出力されたhoge.libを
別のプロジェクトで#pragma comment( lib, "hoge.lib")したのですが
『fatal error LNK1104: コンパイラは、ファイル 'hoge.lib' を開くことができません。』
になってしまいました・・・
環境変数LIBはちゃんと書き換えました、PCの再起動もしました
hoge.libのアクセス権が問題なのかと思い同じソリューションで動かしていた
DLLを作成する側のプロジェクトをソリューションから削除して再起動しましたが、
同じエラーがやはり発生してしまいます。
どなたかご教示お願いしますです
502デフォルトの名無しさん:2006/01/15(日) 00:10:16
>>501
もう1度絶対パスで指定してみては?
503デフォルトの名無しさん:2006/01/15(日) 02:44:53
>>502
絶対パスのときはうまくいきました。
環境変数の書き方は
D:\Hoge_a\Lib\;D:\Hoge_b\Lib\;
見たいな書き方でいいはずですよね…
あ、OSはXPです。
504デフォルトの名無しさん:2006/01/15(日) 07:52:37
>>503
パスの最後の円マークはいらんようような希ガス
505デフォルトの名無しさん:2006/01/15(日) 11:03:22
ツール>オプション>project>VC++ディレクトリ>ライブラリファイル
でいけました
LIB書きかえるだけじゃだめなんですね・・・
506デフォルトの名無しさん:2006/01/15(日) 13:34:51
classって便利?
507デフォルトの名無しさん:2006/01/15(日) 15:51:24
>>506
そんなこと聞いてるようじゃ便利には使えない。
508デフォルトの名無しさん:2006/01/17(火) 07:20:05
>>507
なぜ?
509デフォルトの名無しさん:2006/01/17(火) 08:10:08
>>508
そんなこと聞いてるようじゃ便利には使えない。
510デフォルトの名無しさん:2006/01/17(火) 15:26:34
ぜな?
511デフォルトの名無しさん:2006/01/17(火) 16:18:13
ぜ〜な、ぜ〜な、ぜ〜ながっ効くー
512デフォルトの名無しさん:2006/01/19(木) 20:41:58
ビットマップファイルのRGB値を見るような関数ってあるんでしょうか?
教えてください。
513デフォルトの名無しさん:2006/01/19(木) 20:57:29
あるよ。
514デフォルトの名無しさん:2006/01/19(木) 21:08:38
ありがとうございます。
できれば具体的な関数を教えてもらえないでしょうか。
ぐぐってみたり、ランゲージリファレンスを調べてみたんですが、
わかりませんでした。
宜しくお願いします。
515デフォルトの名無しさん:2006/01/19(木) 23:29:46
516デフォルトの名無しさん:2006/01/19(木) 23:52:09
ありがとうございます。
グーグルの検索も参考になりました。
本当にありがとうございました。
がんばってRGB値ゲッツします。
517デフォルトの名無しさん:2006/01/20(金) 01:05:39
常駐するDLLって作れるのでしょうか。
と言うのは、DLLに定義した関数をコールしたときに、
内部でrand()を使いたいのですが、どこでsrand()して
よいか分からないので、DLLを常駐プログラムのように
できれば解決するのかなと思ったからです。
518デフォルトの名無しさん:2006/01/20(金) 01:06:33
関数の頭でsrandすりゃいいじゃん
519デフォルトの名無しさん:2006/01/20(金) 01:11:19
>>518
srand(time(NULL))とかsrand(GetTickCount())とかは
入れてみたのですが、1秒以内や1m秒以内にDLLが
呼ばれるとrand()の値が同じになってしまうので、それを
なんとか回避したいのです。
520デフォルトの名無しさん:2006/01/20(金) 01:24:46
よく分からんがstatic付けたらどうなる?
521デフォルトの名無しさん:2006/01/20(金) 01:26:43
>>520
本当に分かっていない。
522デフォルトの名無しさん:2006/01/20(金) 01:28:32
>>520
色んなプログラムから呼ばれるDLLなので(?)
関係なさそうです。
523デフォルトの名無しさん:2006/01/20(金) 01:33:52
つまり複数のアプリケーションから呼ばれるわけ?
DllMainでGetTickCountでもして乱数の種を一回だけ設定すればどう?
524デフォルトの名無しさん:2006/01/20(金) 07:21:58
>>523
やってみました!
結局プロセス毎にDllMainが呼ばれてしまうので、
srand()が1回だけ、というのはムリみたいです。

MMFを使ったりとか別の方法を考えてみます。
525デフォルトの名無しさん:2006/01/20(金) 08:52:50
>>524
おまえは一ミリ秒毎にプロセスからアタッチするのか?
526デフォルトの名無しさん:2006/01/20(金) 12:43:36
もうQueryPerformanceCounter()でも何でも好きなもの使え。
527デフォルトの名無しさん:2006/01/20(金) 18:01:16
>>524
DLLでは全プロセスで共有されるグローバル変数を作れる。
528デフォルトの名無しさん:2006/01/20(金) 18:22:16
別々のプロセスで同じ乱数系列になるのが不都合な理由がわからん。
そんな変わったことしたいなら自分で乱数関数作れば?
529デフォルトの名無しさん:2006/01/20(金) 19:14:21
乱数 = 適当な値でありゃいいんだから、
各プロセスが、srand(::GetTickCount()) すりゃ事足りると思うんだが。
530デフォルトの名無しさん:2006/01/20(金) 19:46:15
#pragma data_seg()
SECTIONS SHARED
辺りが肝かも。
531デフォルトの名無しさん:2006/01/21(土) 01:57:04
なんだ。srandを一回だけしか呼びたくないのか。
532デフォルトの名無しさん:2006/01/21(土) 09:39:02
>>528
マシンスペックが高くなったら動かなくなるかもしれない
プログラムで満足なあなたは気にしなければいいでしょう。
533デフォルトの名無しさん:2006/01/21(土) 10:32:55
>>532
イミフメイw
534デフォルトの名無しさん:2006/01/21(土) 10:59:39
>>532
そんなの作れるのか
ぜひ見せてほしい
535デフォルトの名無しさん:2006/01/22(日) 16:58:25
>>533-534
え?まじで言ってる?
536デフォルトの名無しさん:2006/01/22(日) 18:06:35
>>535
まじなのでばかな>>533>>534>>536に説明してやってください。
537534:2006/01/22(日) 18:45:56
>>535
>マシンスペックが高くなったら動かなくなるかもしれないプログラム
まじです。どうやったら作れるのか教えてください。お願いします。
538デフォルトの名無しさん:2006/01/22(日) 19:00:14
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/mt.html
乱数って言えば、コレ使ってみてる?
539デフォルトの名無しさん:2006/01/22(日) 19:55:22
>>538
使ってみない。

>>537
教えてやってもいいけど、「そんなのこうすればいいじゃん」って
反論はなしだぜ。お前はどうやったら作れるのか、って聞いてるんだから。


ここまでヒントを出してもお前には作れないか?
540デフォルトの名無しさん:2006/01/22(日) 19:56:33
>>537
アホ?Sleepでムリヤリタイミングずらして動かしてるプログラムとか
srand(GetTickCount())と1ミリ秒以上かかることを前提とした
ロジックの組み合わせとか、考えりゃいくらでもできるでしょ。
541デフォルトの名無しさん:2006/01/22(日) 20:53:59
>>540
Sleepのほうはなんとなくだが理解できる。

でもsrand(GetTickCount())のほうはやっぱりわからない。
DllMainに置けば十分としか思えない。
そんな頻繁にロード・アンロードされるほうこそ異常だ。
542デフォルトの名無しさん:2006/01/22(日) 22:34:58
そもそも複数のプロセスで同じ乱数系列になることの不都合が分からん
543デフォルトの名無しさん:2006/01/22(日) 22:58:26
528の指摘もそれだったんだが、532は真性のアフォなので噛み合わんわけだ
もう放置しようぜタコな質問しておいて上から物を言える奴にまともなやつは居らん
544デフォルトの名無しさん:2006/01/23(月) 02:54:45
std::vector v;の中身をウォッチウィンドウで見るには
v._Myfirst,5
とやればいいと知ったのですが、mapやsetも同じように
簡単に見る方法はないでしょうか?
545デフォルトの名無しさん:2006/01/23(月) 22:34:14
>>541
どしてDllMainに置けば十分なの?
546デフォルトの名無しさん:2006/01/23(月) 22:35:47
>>543
>>534のように話をすりかえた人に丁寧にご対応して差し上げているわけです。
あなたはただ単に話しについていけていないようなので、
書き込むのをやめるのは正解です。
547デフォルトの名無しさん:2006/01/23(月) 22:49:56
VCってプロジェクト配下のディスク容量があまりにも大食いするじゃないか。
それにIDEでデバッグ実行できずに固まるし。
自分の会社のOS上の製品なのに、何でこんなぼろい物になるのかね。
他のどのベンダーよりも、OSを開発した会社自身が一番OSを知り尽くしてるから、
一番まともな物を作れて当たり前なのに。
548デフォルトの名無しさん:2006/01/23(月) 23:02:54
>>547
ここで言っても意味ないですけど。同意すればいいの?
549デフォルトの名無しさん:2006/01/23(月) 23:05:28
ただの一時ファイルだから気にするな
パソコン初心者スレじゃないんだし
550デフォルトの名無しさん:2006/01/23(月) 23:08:09
>>547
自社のOSを知り尽くしていないと作れないようなソフトを自社で作ると
独禁法的に司法省から睨まれてしまうんだろう。
15年以上前からそう言われている。

MSのソフトはある程度のバグをわざと入れているとしても全く驚くに値しないね。
551デフォルトの名無しさん:2006/01/23(月) 23:13:36
ステップ実行中にOSごと飛ぶのもわざとか。やるな。
552デフォルトの名無しさん:2006/01/24(火) 00:01:03
>>550
同意すればいいの?
553デフォルトの名無しさん:2006/01/24(火) 00:09:34
>>546
そりゃそうだよ脳タリンの糞話についていってやる気は無いスキにしろや
554デフォルトの名無しさん:2006/01/24(火) 00:24:21
>>552
同意しなくていいからC++ BuilderかDelphiに移行すればいいのかも試練。
555デフォルトの名無しさん:2006/01/24(火) 00:48:46
>>553
書き込むのをやめるのが正解だったのに。本格的な脳タリンさんですねw
556デフォルトの名無しさん:2006/01/24(火) 01:13:11
VC++.netのダイアログベースで画像を撮影するソフトを作っています。
現在、撮影ボタンを押すとカメラに写っている画像を1枚だけ保存します。
これを、ボタンを押したら1秒毎に自動で保存し、停止ボタンを押したら、
保存するのを終了させたいと思っています。
しかし、ボタンを押して自動保存し、停止を押すと終了のしかたがわかりません。
どうやったら、いいでしょうか?
557デフォルトの名無しさん:2006/01/24(火) 01:25:32
>>556
タイマー使う。
詳細はぐぐれ。
558デフォルトの名無しさん:2006/01/24(火) 02:19:01
VC2005Expressでステップ実行にてスレッドを使っているプログラムをデバックすると
高頻度でハングアップしたような状態になります。
解決方法はありますでしょうか?
OSはMCE2002sp2です。
コード自体に問題があるのかと思い簡単なものにして見たのですが
やはり同じ現状が起きました。スレッドを使用しないプログラムでは
まったくその現象は起きないようです。
スレッドは_beginthreadexを使用してます。

解決方法があればよろしくお願いします。
559556:2006/01/24(火) 04:18:27
言葉足らずですみません。
タイマーを使えば1秒間ずつ、というのはわかるのですが、
停止を押すまで同じ処理を繰り返す方法、および停止させる方法が
わからないのです。
whileなどでループさせると、ループしている間はボタンが押せない状態
となってしまいますし・・・・
560デフォルトの名無しさん:2006/01/24(火) 07:34:18
そのボタンで、タイマの起動、終了をすればいいんだろ。
whileでループさせる必要は無い。
561デフォルトの名無しさん:2006/01/24(火) 08:29:48
タイマーが解って無い希ガス
562デフォルトの名無しさん:2006/01/24(火) 08:33:54
>>556
SetTimer
563デフォルトの名無しさん:2006/01/24(火) 19:27:34
>>545
srandは1度だけ呼べば良い。
DllMainはDLLのロード時に呼ばれるからちょうど良い。
564デフォルトの名無しさん:2006/01/24(火) 19:42:34
すみません。今学校でVC.net使ってる房ですが、win32プロジェクトで作った
データ上で(画像切り替えとかそんなレベル)Formで作った別のプログラムを
別ウィンドウで起動させたいのですが、呼び出し?とかリンク?の仕方がわかりません
何冊か参考書を見たのですがわからないので詳しい方、ご教授お願いできませんか?
565デフォルトの名無しさん:2006/01/24(火) 19:53:10
何冊も参考書みてわからない奴に教える自身は無い。
566デフォルトの名無しさん:2006/01/24(火) 20:06:21
何冊か見てわからない。というより、「該当する項目がわからない」
もしくは「そう言った技術が乗ってない(確認できた範囲で)くらい
初級の本」だったりするので、お手数ですが、ご教授お願いします
567デフォルトの名無しさん:2006/01/24(火) 21:49:27
学校で習ってるんなら先生に聞けよ。
568デフォルトの名無しさん:2006/01/24(火) 21:57:30
外部プログラムの起動でいいのか?
それだったら簡単だから誰か教えてくれるはず。
569デフォルトの名無しさん:2006/01/24(火) 22:04:49
>>564
CreateProcessかな
570デフォルトの名無しさん:2006/01/24(火) 22:17:12
COM interopと言う話なのかもしれない
571デフォルトの名無しさん:2006/01/24(火) 23:15:14
>>563
アホか
572デフォルトの名無しさん:2006/01/24(火) 23:42:30
アホか
って言うのは簡単だけど具体的に何がアホなのかを説明しないのは
やっぱりほころびが出るのを恐れてるから?
573デフォルトの名無しさん:2006/01/25(水) 00:00:06
>>572
この場合さすがに説明するのもアホらしいってだけじゃないかな?
574デフォルトの名無しさん:2006/01/25(水) 01:20:17
VCの右クリック−>定義位置の表示などで使う、.bscファイルをコピーするプログラムが作りたいのですが、
読み込むことすら出来ません。
普通のテキストとは違うような感じなんのですが、
何かヒントをいただけないでしょうか?
やりたいことは、単にコピーの練習なのですが。
間違っているだけで、普通にできるのでしょうか?

int c;
if ((fp = fopen("E:\\Exercise\\BDDownVer\\Debug\\BDDownVer.bsc", "r")) == NULL) {
printf("file open error!!\n");
exit(1);
}
if((fout = fopen("E:\\Exercise\\BDDownVer\\Debug\\out.bsc","w")) == NULL){
printf("file open error!!\n");
exit(1);
}
while (c = fgetc(fp) != EOF) {
fputc(c,fout);
}
fclose(fp);
fclose(fout);

こんな感じでやってみたのですが・・・。
575デフォルトの名無しさん:2006/01/25(水) 02:13:46
MSDNに加入するとCD-Rが送られてくるけど
オンラインドキュメントと内容は違うの??
576デフォルトの名無しさん:2006/01/25(水) 02:31:08
>>574
バイナリモードで開け。
あと、もしかしたらプロジェクトを開いている間はVC++がファイルを排他アクセスしていて、
他のプログラムは読み書きできないようになっているかもしれない。
577デフォルトの名無しさん:2006/01/25(水) 04:12:10
>>574
> while (c = fgetc(fp) != EOF) { 
これをもう一度確認すること。


ちなみに CopyFile でぐぐると幸せかもしれん。
578デフォルトの名無しさん:2006/01/25(水) 07:14:44
>>572
「やっぱり」の使い方が意味不明だし、そこまで的をはずしてると
反論しにくいよね。うまい!
579デフォルトの名無しさん:2006/01/25(水) 07:16:28
>>563

DllMain()
srand(〜)

func()
rand()

しても意味ないでしょ?ってこと。
580デフォルトの名無しさん:2006/01/25(水) 10:36:54
(゚д゚;;;;;;)
581デフォルトの名無しさん:2006/01/25(水) 13:31:08
VC++6.0で質問です。
非常に初歩的なことなんですが、VBでフォームに部品を貼り付けていくように
VC++でウィンドウに部品(ボタンなど)を貼り付けるにはメインウィンドウの
他にダイアログを作成すれば良いようですが、ダイアログを作成せずにメイン
ウィンドウ1枚のみで同じことをするにはどうすれば良いのでしょうか?
582デフォルトの名無しさん:2006/01/25(水) 13:34:50
メインウィンドウをダイアログで作成すればよい
583デフォルトの名無しさん:2006/01/25(水) 13:58:29
そんな簡単な方法があったとは・・・
今メインの環境が壊れてて復元中なので後で試してみます。
ありがとう。
584583:2006/01/25(水) 15:56:42
駄目だぁ、やっぱりわからん・・・
ネット見ても欲しい情報がまったく見つからない。

Windows3.1+MS-CでWindowsアプリ作った経験が有って
VB5〜VB.netの開発環境に慣れてる人間は、どんな本を
読めば参考になるでしょうか?
MSDNでは何の役にも立ちそうに無いです。。。
585デフォルトの名無しさん:2006/01/25(水) 16:04:09
本屋行けよ
586デフォルトの名無しさん:2006/01/25(水) 16:17:13
>>584
MFCならプロジェクトの作成のときにウィザードでダイアログアプリが(ry
587デフォルトの名無しさん:2006/01/25(水) 16:20:11
もちろん本屋には探しに行きますが、
近所の本屋にはろくな本が無かったので2時間かけて大きな
本屋に行くつもりですが、似たような境遇の方が居れば
どの本が良いかアドバイスいただきたいと思いまして。
最悪、本屋で1日粘ることになりそうですね。
588デフォルトの名無しさん:2006/01/25(水) 16:37:39
Winmainから直接ダイアログ出すだけ
他になにもいらない
589デフォルトの名無しさん:2006/01/25(水) 16:54:18
>>586
ありがとう。何とか取っ掛かりが掴めました。
MFCについては本買って読んでみます。

>>588
MS-CではWinmainとイベントループでプログラミングしてたと
思いますが、VBの様にGUI環境で部品の微調整をしたかったんです。
590デフォルトの名無しさん:2006/01/25(水) 17:13:32
質問ですが、親ウィンドウの外に出ない子供ウィンドウをアクティブにし、アクティブ状態のバーの色に出来ないのでしょうか?

http://www.kumei.ne.jp/c_lang/sdk/sdk_50.htm
猫などのページを見ても非アクティブになっています。
591デフォルトの名無しさん:2006/01/25(水) 17:19:31
excelとかMDIのアプリならアクティブになるだろ
MFCでMDIのやつ作ってもなるし
592:デフォルトの名無しさん:2006/01/25(水) 17:23:14
DISC2をいれてみたのですが「現在CDにあるファイル」
とでてでうすればいかわかりません
593:デフォルトの名無しさん:2006/01/25(水) 17:38:01
すいません、わかりました592

594デフォルトの名無しさん:2006/01/25(水) 22:16:38
CWndBaseという、有名らしいお決まりの書き方をしているのですが、モーダレスダイアログの場合はどう使ったら良いのでしょうか?

ここのCWndBaseを見てます
http://techtips.belution.com/ja/vc/0009/

モーダルじゃないとLPARAMに値が入らず、Attach出来ません。
どーしたらいいんですかあああああ
595デフォルトの名無しさん:2006/01/25(水) 23:33:16
>>579は通じたのかな。>>563
596デフォルトの名無しさん:2006/01/26(木) 00:14:44
>>577
今もういちど見てみました。
ボケていました。while( (c=fgetc(fp) !=EOF )ですね。
やってみたところ問題なくコピーできました。
ありがとうございました。
597デフォルトの名無しさん:2006/01/26(木) 00:15:22
ああ、while( (c=fgetc(fp))!= EOF)の間違いです。
598デフォルトの名無しさん:2006/01/28(土) 14:10:25
VCのアウトラインを制御したいんだけど、例えばC#でいうところの#regionみたいなやつ。
いい方法ありませんか?
あんまりいじらない部分のソースを簡単に折り畳みたい。
クラス毎に折り畳んだりしたいのよ。
599デフォルトの名無しさん:2006/01/28(土) 20:54:24
簡単に折り畳めるけど
C#知らんし何言ってんだか意味不明
600デフォルトの名無しさん:2006/01/28(土) 21:11:06
クラス毎に折りたたむって普通に出来るだろ
まぁ#region使えば便利だとは思うがな
601デフォルトの名無しさん:2006/01/28(土) 23:20:13
SQLExecDirectで複数行をUPDATEするSQLを実行させて
コミットしているのだけど、なぜかDBに反映されない。
デバッグモードだとうまく実行される。


これってコミット完了前にプログラムが終了してしまうと
ダメってことなんだろうか。対策あるのかな。Sleep?
602598:2006/01/29(日) 00:25:39
>>599-600
自分の「好きな範囲で」折り畳みたいんだ。
例えば

class A {
#region
 class A(){};
 void hoge();
public:
#endregion
 // アクセッサ
getA();
 setA();
}
という感じで書いて折り畳むと
class A {
+...
 // アクセッサ
getA();
 setA();
}
という感じで見ることができるんだ。よく使う機能だけを表示させたりできる。
調べた限りではC#とVBにはあるがVC++にはねーな(´・ω・`)
603デフォルトの名無しさん:2006/01/29(日) 00:35:24
プログラマー板から誘導されてきました

VisualC++ ExpressEditionをダウソして、本を読みつつ勉強しているのですが
VisualC++6.0用の教材なせいかerrorが発生してしまいサンプルソースのビルドができないです。
エロイ人いたら解決法を教えてくださいです

<ソース>
#include "windows.h"

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
SYSTEMTIME tm;
char s[80];
int iRet;

GetLocalTime(&tm);

if ((tm.wHour >= 0) && (tm.wHour < 12)) {
lstrcpy(s, "おはようございます");
} else if (tm.wHour < 17) {
lstrcpy(s, "こんにちは");
} else {
lstrcpy(s, "こんばんは");
}

iRet = MessageBox(NULL,s,"MsgBox",MB_OK);

return 0;
}
604603:2006/01/29(日) 00:36:31
<エラー>

------ ビルド開始: プロジェクト: Vc, 構成: Debug Win32 ------
コンパイルしています...
Msg.cpp
e:\program\winapp\vc\msg.cpp(15) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(17) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(19) : error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
e:\program\winapp\vc\msg.cpp(22) : error C2664: 'MessageBoxW' : 2 番目の引数を 'char [80]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
ビルドログは "file://e:\program\winapp\Vc\Debug\BuildLog.htm" に保存されました。
Vc - エラー 4、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========


こんな感じです。
605デフォルトの名無しさん:2006/01/29(日) 00:47:03
>>603
プロジェクトのプロパティで
「構成プロパティ」を選びプロジェクトの既定値「文字セット」を”マルチバイト文字セットを使用する”
606603:2006/01/29(日) 00:53:55
>>605

即レス感謝です。
無事ビルドすることができました。
本当に親切にどうもありがとう
607デフォルトの名無しさん:2006/01/29(日) 01:05:01
クラスライブラリをリンクさせようとして
外部シンボルが未解決と言われて
エラーになっています。

ライブラリ側が上手く作成されていない為に
メソッドがリンクされないと思うのですが、
ライブラリ(.lib)内のメソッドを参照する方法は
ありませんか?(unixのnmみたいなの)

環境はwin2k、VC++6.0です。よろしくお願いします。
608デフォルトの名無しさん:2006/01/29(日) 07:56:09
>>598
-適当に選択範囲を作る
-右クリック -> アウトライン
-選択範囲を非表示
609607:2006/01/29(日) 11:34:31
追記、ライブラリにダイアログを1つ持たせているのですが、
ダイアログのないクラスライブラリではリンクできています。
ダイアログをライブラリに持たせられないのでしょうか...
アドバイスありましたらよろしくお願いします。
610デフォルトの名無しさん:2006/01/29(日) 11:59:53
つまり自作のダイアログを含むクラスをlibにしてリンクしたら
なにやらリンクエラーがでて、ダイアログをはずしてlibを作ってみたら
リンクエラーがでないってこと?
エラーメッセージを書いたほうがいい。
611デフォルトの名無しさん:2006/01/29(日) 12:07:02
>>601みたいな現象って俺だけかな。
ちなみにDBはMSDE2000で
開発環境は
Windows2000、Visual C++ 6.0
612デフォルトの名無しさん:2006/01/29(日) 12:27:58
>>607
libはリソースをもてない。
dllにしろ。
613デフォルトの名無しさん:2006/01/29(日) 13:58:38
WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
って出るんですけどどういう意味ですか?
またどのようにwarningを消すのが正しいのですか?
614デフォルトの名無しさん:2006/01/29(日) 14:06:57
>>613
Windowsプログラミングの際にはWindowsのどのバージョンを
想定しているかを指定してやる必要がある。
それがないのでふざけんじゃねぇデフォルトにあわせっぞゴルァといっている。
怖くてガクブルならwindows.hをincludeする前にWINVERを適切な値でdefineする。
615デフォルトの名無しさん:2006/01/29(日) 15:08:08
>>614
アプリを動かすターゲットのWindowsのバージョンをコンパイラに教えてあげるんですね。
ありがとうございます。
大変よくわかりました。
616デフォルトの名無しさん:2006/01/29(日) 20:44:40
2005で作られたMPCを.NET2003でビルドしたらエラーが出ますた

MainFrm.cpp(180) : error C2440: 'static_cast' : 'LRESULT (__thiscall CMainFrame:
:* )(CPoint)' から 'UINT (__thiscall CWnd::* )(CPoint)' に変換できません。
スコープ内でこの名前を持つ関数でターゲット型に一致するものはありません。

エラーはこれだけっぽいのですがへるぷみぃ
617デフォルトの名無しさん:2006/01/30(月) 17:10:21
共通関数(dll)はどう呼び出すのですか?
618デフォルトの名無しさん:2006/01/30(月) 17:24:06
>>617
配布されているDLLならヘッダーとインポートライブラリがあるだろ。
自分で作ったのならインポートライブラリはDLLのリンク時に作られているはず。
ヘッダーがなければ__declspec(dllimport)をつけて関数宣言すればよい。
インポートライブラリはリンカに渡してやればよい。
あるいは明示的リンクと言う方法もある。

ActiveXやCOMのDLLなら#import、.NetのDLLなら#using。

これ以上詳しく知りたければお前も詳しく書け。
619デフォルトの名無しさん:2006/01/30(月) 20:10:49
超初心者です
VisualC++ ExpressEdition2005のCLRって
Common Language Runtimeのことですか?
だとしたら.NETってことでつか?
620デフォルトの名無しさん:2006/01/30(月) 21:28:26
>>619
Yes
621デフォルトの名無しさん:2006/01/30(月) 21:31:49
なんか面白いこと書こうと思ったら、
>>620 が素で答えやがった。氏ね
622デフォルトの名無しさん:2006/01/30(月) 21:48:56
もしかして、SQLExecDirectで実行できるSQL文の長さって
制限ありますか?
623デフォルトの名無しさん:2006/01/31(火) 02:12:03
Visual C++ Express Edition 2005

クラス"class"のメンバに
char string[30+1];
と宣言すると

'string' をマネージ 'class' のメンバとして定義できません。混合型はサポートされていません
とコンパイル時に警告が出ます。
何がいけないのでしょうか・・・
624デフォルトの名無しさん:2006/01/31(火) 02:23:20
バカばかりだな
625デフォルトの名無しさん:2006/01/31(火) 19:03:50
VisualC++ ExpressEdition2005入れたんですけどコンパイルするとwindows.hがないって怒られます
MinGWのwindows.hを引っ張ってきてもいいですか?
626デフォルトの名無しさん:2006/01/31(火) 19:13:42
根本的に解決しなくても良いならどうぞ。
627デフォルトの名無しさん:2006/01/31(火) 21:12:38
>>625
SDK入れろや
628デフォルトの名無しさん:2006/01/31(火) 21:25:25
自己解決しましたPlatform SDK入れればいいようです
629デフォルトの名無しさん:2006/02/01(水) 17:44:35
Visual Studio .NET 2003 で C++ の勉強しているのですが質問です。
System::Stringクラスを使って2つの文字列結合したいのですが
やり方がどうにもわかりません。
joinメソッドが臭いのですがMSDNみても難しくてわかりません・・・
ご教授をお願いします。
630デフォルトの名無しさん:2006/02/01(水) 18:07:14
C++の勉強するんなら.NET Framework使わんと、アンマネージドでやれ
631デフォルトの名無しさん:2006/02/01(水) 18:37:23
>>629
String.Concat (Object, Object) 指定した 2 つのオブジェクトの String 形式を連結します。

思いっきり書いてあるじゃねーか
つーか、MSDNが難しいなんて言うような奴には向いてないだろ
回線切って首吊って氏ね
632デフォルトの名無しさん:2006/02/01(水) 18:43:32
×MSDNみても難しくてわかりません
○MSDNみるのがめんどくさいです
633デフォルトの名無しさん:2006/02/01(水) 18:50:28
それを言っちゃお終いよ
634デフォルトの名無しさん:2006/02/01(水) 18:53:35
実際>>629はいろいろと終わってる。
635デフォルトの名無しさん:2006/02/01(水) 19:31:27
なんで C++ なのに std::string つかわないんだ?
636デフォルトの名無しさん:2006/02/01(水) 19:32:00
もしかして、 C++ と C++/CLI の区別を理解してないとか。
637デフォルトの名無しさん:2006/02/01(水) 19:36:05
C♯から適当に乗り換えたリア厨だな
638デフォルトの名無しさん:2006/02/01(水) 20:05:51
なんでお前らはそんなに必死こいて.netの存在を否定してんだ?w
639デフォルトの名無しさん:2006/02/01(水) 20:08:25
この内容で.netの存在を否定してると言えるなんてすげーなw
640デフォルトの名無しさん:2006/02/01(水) 21:13:11
ソフト屋は性格悪いの多いというのは俺の思い込みだろうか
641デフォルトの名無しさん:2006/02/01(水) 21:14:34
>>640
オマイ性格悪いな
642デフォルトの名無しさん:2006/02/01(水) 21:21:06
ソフト屋は性格悪いの多いというのは俺の思い込みだろうか
643デフォルトの名無しさん:2006/02/01(水) 21:27:32
>>642
オマイ思い込み激しいな
644デフォルトの名無しさん:2006/02/01(水) 22:24:42
>>631
まず、俺は君みたいに頭が良くないのは確実だが、超低脳というほどではなく、ごく標準的
なレベルだと思っています(思い込みかも知れんが)。
MSDNって一度本や何かで勉強したことのある関数ならば非常に分かりやすいと思うけど、
いきなりMSDNだけで使用方法を編み出そうとすると難解なもの(というか簡単なんだけど回
答にたどり着けないもの)が数多く存在するように感じます。
MSDNってそんなに分かりやすいですか?
645デフォルトの名無しさん:2006/02/01(水) 22:29:14
>使用方法を編み出そうとすると
何故編み出す必要が?
646デフォルトの名無しさん:2006/02/01(水) 22:34:40
すごく卑近な例ですが、少し前に下記の仕様の関数を作成する必要がありました。
 現在実行されているスレッドの内、ウインドウを持つスレッドをピックアップして表示する。
これをMSDNから得られる情報だけで実装できる人は俺の想像を超えますね。
647デフォルトの名無しさん:2006/02/01(水) 22:45:51
MSDNはリファレンスだろ?
実装が載ってるわけが無い。

それに、使用してるクラスのメソッドを検索するなり順番に見ていくなりすれば見つかる。
頭なんてつかわない。
オマイはその手間を惜しんだだけ。
648デフォルトの名無しさん:2006/02/01(水) 22:49:41
>>647
あなたは646の関数をMSDN以外を見ることなく実装できるタイプの人ですか?
もしそうであればあなたはかなり限られた頭のいい人の部類だと思いますよ。
649デフォルトの名無しさん:2006/02/01(水) 22:51:58
>
650デフォルトの名無しさん:2006/02/01(水) 22:52:56
誤爆した・・シツレイ

>System::Stringクラスを使って2つの文字列結合したいのですが
なんでこれが、>>646になるんだw
651デフォルトの名無しさん:2006/02/01(水) 22:59:34
  ∩∩
  ( ・(x)・) < 出番?
652デフォルトの名無しさん:2006/02/01(水) 23:00:35
>つーか、MSDNが難しいなんて言うような奴には向いてないだろ
というコメントに対する反論です。
「難しい」という表現が何を意味するかは分かりませんが、普通は
やりたいことが先にあって、それを調べるためにドキュメントは存
在すると思います。
やりたいことを実現する関数を知っていて、それのリファレンスを
調べるという意味ではMSDNは分かりやすいですが、やりたいこと
を実現するために何が必要かを調べるという意味ではMSDNは難
解だと思います。
俺は629ではないですが、629は「2つの文字列結合したい」というや
りたいことがあって、それを実現するには何が必要か分かっていな
い状況です。そういう人物にとって「MSDNみても難しくてわかりませ
ん」というのは当然だと思うのです。
653デフォルトの名無しさん:2006/02/01(水) 23:03:38
> Visual Studio .NET 2003 で C++ の勉強しているのですが質問です。
> System::Stringクラスを使って2つの文字列結合したいのですが
> やり方がどうにもわかりません。

MSDNみりゃいいじゃん
654デフォルトの名無しさん:2006/02/01(水) 23:13:12
>>652
もちつけ。
> System::Stringクラスを使って2つの文字列結合したいのですが
これだけわかっているなら、MSDNは有効じゃろ?
655デフォルトの名無しさん:2006/02/01(水) 23:13:31
>>652
MSDNをいきなり読んでも分からないのは当然。
それを読めるように努力する気の無い奴は、あきらかに向いて無いでしょ。
唯一の公式リファレンスなんだから。

MSDNみても難しくてわかりません

誰か教えて

というのは当然だと?
656644:2006/02/01(水) 23:37:28
白いものを黒というディベートの練習です。
ちと失敗か・・・
657デフォルトの名無しさん:2006/02/01(水) 23:46:17
MSDNだけでプロセス列挙できたよ。
658デフォルトの名無しさん:2006/02/02(木) 00:31:15
>>630
意味が分かりません。筋が通るように説明するか
死んでください。
659デフォルトの名無しさん:2006/02/02(木) 00:36:38
>>652
既に>>653が書いてくれてるのが全てだが
System::Stringを使って2つの文字列を結合したいと分かってるなら
MSDNのSystem::Stringクラスのメンバを見るなんてのは
至極当然の発想だし、またそれをすれば見つからない筈がない
だって書いてあるんだから

メンバ一覧を見るというのが思いつかないならどうしようもない低脳だな
660デフォルトの名無しさん:2006/02/02(木) 04:50:46
>>658 なんで筋が通らないの?
C++ を勉強したいのに、
C++/CLI のコードを書こうとしているから、
>>630 はそういってるだけじゃん。
661デフォルトの名無しさん:2006/02/02(木) 07:16:20
>>660
意味が分かりません。筋が通るように説明するか
死んでください。
662661:2006/02/02(木) 07:17:23
もしレスするなら、どの部分が筋が通っていないかをよーく
考えてからレスしてください。全く的がはずれています。
分からないならレスしないでください。
663デフォルトの名無しさん:2006/02/02(木) 07:44:34
>>662
「Visual Studio .NET 2003 で C++ の勉強している」
って書いているのに std::string を使わずに
「System::Stringクラスを使って2つの文字列結合したい」
って言っているから、>>630 はそれは C++ じゃなくて
マネージドC++でしょ、って指摘している。
C++ の勉強するならマネージドC++を前提に勉強するのは
あまり賢いとは言えないよ、って親切に指摘してくれているだけ。

それにマネージドC++ はすでに C++/CLI に置き換えられて
いるので、マネージドC++に慣れることにはあまり意味がない。
664661:2006/02/02(木) 07:51:29
>>663
言ってる事が分かりません。
訳の分からないレスはやめて!
665デフォルトの名無しさん:2006/02/02(木) 08:12:20
>>664 分からないなら死ねよ、低能
666デフォルトの名無しさん:2006/02/02(木) 08:24:15
>>664
意味が分かりません。筋が通るように説明するか
死んでください。
667デフォルトの名無しさん:2006/02/02(木) 08:58:04
ようするにSystem::Stringクラスは過去の遺物だし
あんまり使われなかったから考古学的な価値もない。
668デフォルトの名無しさん:2006/02/02(木) 14:52:46
おまいらやさしいな。
よくつき合ってられるな。
669デフォルトの名無しさん:2006/02/02(木) 16:52:15
C/C++のお薦めの解説本ないでしょうか?
670デフォルトの名無しさん:2006/02/02(木) 17:07:07
スレ違いだ
671デフォルトの名無しさん:2006/02/02(木) 18:17:30
超初心者です。ご教授願えますか?
昔作られたシステムを、新たに作り変える事になりました。
VBで作られた元ソースがあり、なるべくそれ本体には触れずに
呼び出されているOCXやDLLを作り変えようとしております。

VBのソースを見ていると、OCXからユーザが独自で作ったイベントが発行され
VBがそのイベントをキャッチして処理が行われている箇所が
あります。

VC++(もしくはC)で、OCXをつくり、同様の名称を持つ
イベントを発生させて、VB側でキャッチできるようにしたいのですが
ネットで調べても、調べきれておりません。
(VBでは、RaiseEventという関数を使って、外側にイベントを発生させておりました)

何かサンプルになるHPなどありましたら
ご教授願います。
672デフォルトの名無しさん:2006/02/02(木) 18:40:55
>>671
超初心者ならそんな作り変えをするべきではない。
673デフォルトの名無しさん:2006/02/02(木) 19:03:32
StyleをWS_POPUP | WS_VISIBLEにして、
CreateWindow()を呼んでいるのですが、
ウィンドウがタスクバーに表示されてしまいます。
CreateWindowEx()の拡張スタイルでWS_EX_TOOLWINDOWをつければ
タスクバーに表示させないようにすることは可能なのですが、この方法ですと細いタイトルバーができてしまいます。
タイトルバーを表示させたくないのでポップアップウィンドウとして作りたいのです。
環境はVC++6、MFCは使っていません。
674デフォルトの名無しさん:2006/02/02(木) 19:13:39
>>673
お話はわかりました。それで?
675デフォルトの名無しさん:2006/02/02(木) 19:15:33
>>674
チラシに向かって何話しかけてんだ?オマイ・・・
676673:2006/02/02(木) 19:34:39
すみません。肝心な質問が抜けていました。

タイトルバーを表示させずにタスクバーに表示されないようなウィンドウをつくりにはどのような方法があるのでしょうか。

どなたかご教授くださいませ。
677デフォルトの名無しさん:2006/02/02(木) 19:38:22
WS_CAPTION付けずにCreateWindowしなさい
678デフォルトの名無しさん:2006/02/02(木) 19:40:30
そのようなウィンドウをつくりにはWS_EX_TOOLWINDOWを指定しなければいいだけでは?
679デフォルトの名無しさん:2006/02/02(木) 20:02:52
hWnd = CreateWindowEx(WS_EX_TOOLWINDOW, szWindowClass, szTitle, WS_POPUP | WS_VISIBLE,CW_USEDEFAULT,
0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
とCreateWindowExを呼んでみたところ、タイトルバーなし、タスクバーに非表示が実現できました。
お騒がせして申し訳ありません。
レスをくださった方々、ありがとうございました。
680デフォルトの名無しさん:2006/02/02(木) 22:09:15
なんでWIM32APIを使おうとすると
こんなに殺伐とするのか、あぁーマンドクサイ
681デフォルトの名無しさん:2006/02/02(木) 22:10:56
×  WIM32API
○  WIN32API
682デフォルトの名無しさん:2006/02/02(木) 22:40:09
>>676
ちなみに「ご教示」な。
683デフォルトの名無しさん:2006/02/02(木) 23:35:25
>>663>>665>>666が死ねば解決するよ。
684デフォルトの名無しさん:2006/02/02(木) 23:36:00
>>682
ここにもアホがいる。ご教授でもいいんだよ。
本読めよな。
685デフォルトの名無しさん:2006/02/02(木) 23:53:39
>>683
いや、683が癒されることなど永遠にないだろう
686デフォルトの名無しさん:2006/02/03(金) 00:04:54
>>685
でも根拠とかはないんだよね。
687デフォルトの名無しさん:2006/02/03(金) 01:15:22
>>686
いらないねそんなもん
688根拠とかw:2006/02/03(金) 01:19:04
>>687
だって、癒されないのは本人の問題でしかないからね。ここでそんなもん議論する必要は無い。
(しかし、683は粘着を繰り返す、それだけのことだよ)

689デフォルトの名無しさん:2006/02/03(金) 07:14:43
>>688の後半は正解
>>687-688
でも根拠とかはないんだよね。
690デフォルトの名無しさん:2006/02/03(金) 20:32:29
>>689
>>687

以下スタックが溢れるまで再帰しましょうw
691デフォルトの名無しさん:2006/02/03(金) 21:03:28
そろそろスタックが溢れそうです
692デフォルトの名無しさん:2006/02/03(金) 21:05:43
なんだかよくわかりませんが、とりあえずスタックポインタをリセットしておきますね。
693デフォルトの名無しさん:2006/02/03(金) 21:06:45
>>690
アホ
694デフォルトの名無しさん:2006/02/03(金) 21:19:45
>690
ざんねん。末尾再帰が最適化されてしまった。
695デフォルトの名無しさん:2006/02/04(土) 08:49:39
>>694 じゃ、無限ループだな。
696デフォルトの名無しさん:2006/02/04(土) 09:20:59
693=689
697デフォルトの名無しさん:2006/02/04(土) 13:25:52
>>696
違うけど?
698デフォルトの名無しさん:2006/02/06(月) 18:26:35
---終了---
次の質問者どうぞ
699デフォルトの名無しさん:2006/02/07(火) 19:41:13
始めまして。
本当に初心者です。
Visual Studio .NET 2003の入門本を片手にVisual Studio .NET 2005の勉強を
本日始めました。
本の通りにやってみたのですが、ビルドするとエラーが出てしまいます。
【ソース】
void Cvcsmp1View::OnDraw(CDC* pDC)
{
Cvcsmp1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDC->TextOut(0,0,"1111");
if (!pDoc)
return;
// TODO: この場所にネイティブ データ用の描画コードを追加します。
}
【エラー】
BOOL CDC::TextOutW(int,int,LPCTSTR,int)' : 3 番目の引数を 'const char [5]'
から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照)

【MFCアプリケーション】でプロジェクト作成後「pDC->TextOutW(0,0,"1111");」
以外は一切変更していません。
最初の1歩目ですので自力解決の道筋さえ見えない状況です。
どなたかご教授ください。
700デフォルトの名無しさん:2006/02/07(火) 20:03:02
L
701デフォルトの名無しさん:2006/02/07(火) 20:11:45
>>699
"1111"をTEXT("1111")にする。
702デフォルトの名無しさん:2006/02/07(火) 20:24:43
>>701
ありがとうございます。
解決しましたm(._.)m

ちなみに>>605の方法でもうまく動きました。
このあたりの意味合いは、これから勉強してみます。
ありがとうございましたm(._.)m
703デフォルトの名無しさん:2006/02/08(水) 11:59:14
ダイアログのスタティックテキストに変数を割り当て、
プログラム中でその変数を書き換え、UpdateData(FALSE) を行っています。

一応、書き換えること自体はできたのですが、高速で書き換えると、文字が点滅してしまうのです。

理想としては、ダイアログ上で数値が10000から0までキレイにカウントダウンしてほしいのですが、
書き換えるたびにチカチカして、どうしても汚いんです。

対処法はあるのでしょうか。よろしくお願いします。
704デフォルトの名無しさん:2006/02/08(水) 12:43:28
>>703
DDXに頼らず自分で変えたら?
705仕様書無しさん:2006/02/08(水) 13:54:09
>>703-704
DDX使う/使わないに関係なく、SetDlgItemText(IDC_TEXT1,strText);等、
を使っても、画面のリフレッシュレートと非同期に頻繁に描画すれば、
ちらつきが見えてしまうのは当然のこと。
706デフォルトの名無しさん:2006/02/08(水) 15:45:25
始めまして
>>699の方と同じように、2003の入門書で2005の勉強を始めましたが、本の通りに
書いていきなりエラーが出ました。・゚・(ノд`)・゚・。
<ソース>
String *name = textName->Text;
<エラー>
error C3699: '*' : この間接指定を型 'System::String' で使用できません
コンパイラは、解析を続行するために '*' を '^' で置き換えます。

textNameというテキストボックスのTextプロパティをnameというポインタに
入れると理解していますが、なぜエラーになるかわかれば教えてください。
Windowsフォームアプリケーションでプロジェクトを作成しています。

本では「.NET」の中の「Windowsフォームアプリケーション」と書かれていましたが
「.NET」が無かったので、「CLR」にあった同名で作成しています。
長文で申し訳ありませんm(._.)m
707デフォルトの名無しさん:2006/02/08(水) 15:50:01
>>706
使いたい言語は C++ ?
それとも C++/CLI ?
まずはそれをはっきりさせないと。
見ている本はおそらく managed C++ の本だと思われ。
この3つの違いがもし分からなければ、
その辺調べてからの方がいいと思われる。
708デフォルトの名無しさん:2006/02/08(水) 15:56:53
>>703
結論、無理
709デフォルトの名無しさん:2006/02/08(水) 16:15:10
>>703
どうしても実現したければ、
メモリデバイスコンテキストに描画して、それをWM_PAINTのタイミングでダイアログ上にコピー
710デフォルトの名無しさん:2006/02/08(水) 16:16:02
俗に言うダブルバッファリングという手法です
711706:2006/02/08(水) 16:23:31
>>707
VC.NETにはネイティブとマネージがあって、今回わたしが使おうとしているのは
マネージの方だと思ってます。
またマネージの方はCLR上で動作すると説明があったので「CLR」からプロジェクト
を作成しました。

Windowsアプリを作成したいと思っているので、マネージの方を勉強して行けば良いのかな?
と思ってますが、間違えでしょうか・・・
712デフォルトの名無しさん:2006/02/08(水) 17:30:58
>>711 間違いです。
managed C++ は C++ の文法に違反しないように配慮しつつ
なんとか CLR 上で動く安全なコードを書けるように
拡張しようという試みです。しかしこれには限界があったため
C++ の文法を変更してあらたな言語 C++/CLI が出来ました。
Visual Studio 2005 からは C++/CLI を使います。
managed C++ はもはや使うべきではありません。

C++/CLI は新たな言語ですから、C++ には無い演算子
やキーワードなどもあります。例えば単項演算子^ や
gcnew がその例です。

というわけで、managed C++ は C++/CLI が生まれるための
あだ花だったと思い、あきらめてその本はポイしましょう。
managed C++ も C++/CLI も、CLR上で動くという点では
「マネージド」なので騙されがちです。
混乱しないようにしましょう。
713デフォルトの名無しさん:2006/02/08(水) 17:32:35
>>711
ManagedC++ ≠ C++/CLI
オプションでManagedC++も使えるはず。

>Windowsアプリを作成したいと思っているので
NativeでもWindowsプログラミングは可能。
714デフォルトの名無しさん:2006/02/08(水) 17:33:50
俺が書くよりはるかに簡潔でわかりやすい説明がありました。
http://ja.wikipedia.org/wiki/Microsoft_Visual_C++

あと、Windows アプリを作りたいということだったら、
純粋に C++ と MFC & Windows API でシコシコ作るという手も。
って、これはたぶん >>711 が望んでいることじゃないよね。
715デフォルトの名無しさん:2006/02/08(水) 17:34:32
>>713 が先に書いてた orz
716706:2006/02/08(水) 18:00:27
みなさんありがとうございます。
皆さんの説明でよく分かりましたm(._.)m
初歩的な質問で申し訳ありませんでした。

>>714さんがおっしゃってる方法はきっと手間がかかるんですよね?
それでも将来的に沢山の機能が実現できるのであれば、ネイティブ
を頑張ってみるつもりですが、とりあえず2005の本が出るまではVB
やVC#で勉強することも検討してみようと思います。
717デフォルトの名無しさん:2006/02/08(水) 18:09:59
>>716 なんだ、C# が嫌じゃないんなら、
とりあえず C# で遊んでおけば無駄にはならないよ。
C# で使えるクラスはそっくり C++/CLI でも使えるわけだから。

俺は VB はほとんど使ったことないから
そっちはおすすめも止めもしない。
718706:2006/02/08(水) 18:20:45
>>717
アドバイスありがとうございます。
VC#嫌いじゃないので、考えて見ます^−^
719デフォルトの名無しさん:2006/02/08(水) 19:49:11
ちと質問なんですけど
■環境:vc++6.0 SDI

ウィンドウ背景色を設定するために
OnEraseBkgndとOnDestroyをオーバーライドして
背景色をプライベートで以下のように宣言しました。
といってもあるサイトのコピーなんですけど。

CBrush m_BkgndBrush;//背景色を保持するブラシ
HBRUSH m_hOldBkgndBrush;//以前の背景色のバックアップ

HELP->キーワードからグラフィック オブジェクトを見たんですけど
CBrushとHBRUSHの違いがよく意味わからんですたい。
720デフォルトの名無しさん:2006/02/08(水) 20:40:02
HBRUSHはGDIオブジェクトのブラシをWin32APIで扱う識別子
CBrushはそれらの関連する(であろう)Win32APIをラッピングして
使いやすく?したMFCのクラス。
721デフォルトの名無しさん:2006/02/08(水) 21:50:19
VS2003を使用していいます

CWindowというクラスを作り、そのメソッドとして下記のようにCreateWindowを定義しました
それをコンパイルすると、ヘッダのその定義のところで「error C2059: 構文エラー: '定数'」が発生します
何もエラーになるようなことはしてないと思うのですが、サッパリわかりません

virtual BOOL CreateWindow( LPCTSTR lpszClass,
  LPCTSTR lpszTitle,
  DWORD dwStyle,
  int x = 0,
  int y = 0,
  int nWidth = 640,
  int nHeight = 480,
  HWND hWndParent = NULL,
  HMENU hMenu = NULL);
722デフォルトの名無しさん:2006/02/08(水) 23:46:19
あっそ
723デフォルトの名無しさん:2006/02/09(木) 02:00:50
>>721
いまいちだな。
724721:2006/02/09(木) 08:21:32
>>722
うん、そう
725デフォルトの名無しさん:2006/02/09(木) 09:40:22
CreateWindow がどう定義されてるか調べてみれ
726デフォルトの名無しさん:2006/02/09(木) 09:44:22
HWND CreateWindow(LPCTSTR, LPCTSTR, DWORD, int, int, int, int, HWND, HMENU,, HINSTANCE, LPVOID);
ですが、それが何か?
727721:2006/02/09(木) 09:44:52
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;
728デフォルトの名無しさん:2006/02/09(木) 10:04:17
CreateWindowって存在しないのな。
729デフォルトの名無しさん:2006/02/09(木) 13:01:43
関数名変えれば通る。CreateWndとか。
730デフォルトの名無しさん:2006/02/09(木) 13:03:46
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;
731デフォルトの名無しさん:2006/02/09(木) 13:38:45
ほんまや・・・
CreateWindowってマクロだったんか・・・
732デフォルトの名無しさん:2006/02/09(木) 13:41:13
user32.dll覗いたけどマジでないでやんの。
733デフォルトの名無しさん:2006/02/09(木) 13:47:49
マクロなら、MSDNにマクロだって書いとけよMSめ・・・
734デフォルトの名無しさん:2006/02/09(木) 14:14:23
構文エラーならその前にエラーがあるんじゃないの?
735デフォルトの名無しさん:2006/02/09(木) 14:19:14
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;
736デフォルトの名無しさん:2006/02/09(木) 14:20:17
で、本当の721はまだいるの?
WinUser.hの中で、CreateWindowはマクロとして定義されているので、
コンパイル時にはCreateWindow[AW]に置き換えられてしまうのがエラーの原因。
だから関数の名前変えなきゃだめ。
737デフォルトの名無しさん:2006/02/09(木) 14:25:28
CreateWindowEx[AW]に置き換えるための、引数あわせでトラぶってるんじゃないの?
738デフォルトの名無しさん:2006/02/09(木) 15:27:39
BCBを使い続けてきました
Borlandは見捨てるそうです
そんな僕に、やさしくVisual C++を教えて下さい
教えてくれるのなら、移行の決心が付きます
739デフォルトの名無しさん:2006/02/09(木) 15:30:09
まずはExpressをDLしてみては。
今なら1年限定でただだから。
740738:2006/02/09(木) 15:31:53
ありがとうございます
早速調べてきます
741デフォルトの名無しさん:2006/02/09(木) 16:53:15
VC6なんですけど、
#define PRINT(...) (printf("%s:%d ", __FILE__, __LINE__), printf(__VA_ARGS__))
こんな感じでデバッグマクロを定義したいんですけど、
「...」の部分でコンパイルエラーになります。
VC6だとマクロに可変長引数は使えないんですか?
742デフォルトの名無しさん:2006/02/09(木) 17:16:50
>>741
はい。C99対応コンパイラじゃないと使えません。
レガシーなCコンパイラで似たようなことがしたいなら、
PRINT(("%d", 10))のように二重に囲むこと前提で
#define PRINT(x) printf x
とするくらいしかありません。
743デフォルトの名無しさん:2006/02/09(木) 17:21:35
>>742
そーなのですか。。残念です。
ファイル名、ライン番号入れるのはすっぱりあきらめます。
744デフォルトの名無しさん:2006/02/09(木) 18:26:33
.netで猫でもわかるのVC++のスクリーンセイバーのプログラムをコンパイルするのに
・scrnsave.lib
・comctl32.lib
をリンクした訳ですが。以下のエラーが出て上手くいきません。

エラー1 error LNK2019: 未解決の外部シンボル _DefScreenSaverProc@16 が関数 _ScreenSaverProc@16 で参照されました。screen.obj
エラー2 error LNK2001: 外部シンボル "_hMainInstance" は未解決です。screen.obj
エラー3 error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib
エラー4 fatal error LNK1120: 外部参照 3 が未解決です。C:\Documents and Settings\Owner\My Documents\Visual Studio 2005\Projects\screen\Debug\screen.exe

環境はVS2005です orz助けてください
745デフォルトの名無しさん:2006/02/09(木) 18:37:57
猫はいつの間にか、VC2005のマネージドにまで手を伸ばしていたのか・・・
746デフォルトの名無しさん:2006/02/09(木) 18:59:36
#include <scrnsave.h>
747デフォルトの名無しさん:2006/02/09(木) 19:09:23
ヘッダファイルをインクルードしても駄目でした
748デフォルトの名無しさん:2006/02/09(木) 19:26:09
エラー3 error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib

WinMainすらエラーじゃないか
アホか
749デフォルトの名無しさん:2006/02/09(木) 19:29:29
>>748
猫見てこい
750デフォルトの名無しさん:2006/02/09(木) 19:30:34
scrnsave.libが正常にリンカに渡ってないような反応だなー。
751デフォルトの名無しさん:2006/02/09(木) 21:06:38
pragmaかな
752デフォルトの名無しさん:2006/02/09(木) 21:22:17
#pragma comment(lib, "パス/SCRNSAVE.LIB")
753デフォルトの名無しさん:2006/02/13(月) 11:13:58
初心者にもお勧めのVC++解説HPはありますか?
いろいろググって見たもののいまいちしっくりくるところがありません。
理想としては画像解説付きでVC++の基礎の基礎からサンプルプログラムを交えて解説され、
進んで行くにつれ電卓やテキストエディタ、ブラウザなど定番のアプリを作っていくようなところ。
つまり用語や用法の解説ではなく実際にプログラミングしながら学べるところです。
ちなみに私のスキルはVC++歴数日、解説書に一通り目を通した程度。
C、C++でなら一通りのプログラムは書ける程度です。
754デフォルトの名無しさん:2006/02/13(月) 11:19:08
本買え
755デフォルトの名無しさん:2006/02/13(月) 11:26:18
当然本屋は真っ先に探しています。
756デフォルトの名無しさん:2006/02/13(月) 11:27:38
>>755
ならその結果も報告しろよ
757デフォルトの名無しさん:2006/02/13(月) 12:28:17
ん?いや本屋で探し回ったけど良いのが見つからなかったからWEB検索してたのです。(数冊買いましたが)
いや、特にそういうHP無いのなら諦めて今あるもので勉強しようと思います。
758デフォルトの名無しさん:2006/02/13(月) 13:41:30
今は頭が悪いのを、本のせいにするのが流行です。
759質問です!!:2006/02/13(月) 14:28:22
CString ss;
wchar_t wc = 'あ';

とある時、wc経由でssの文字列を"あ"としたいのですが、
× ss = wc;
× ss.Format("%c", wc);
いずれも、上手くいきませんでした。
ssは"?"が入ってる・・・

他に方法はありますでしょうか?
CStrnig::Format()に、マルチバイト文字を明示する方法とか・・・?
Unicodeビルドではなく、マルチバイトビルドで実現したいです。


760デフォルトの名無しさん:2006/02/13(月) 14:31:39
printf 関数の型フィールド文字
761デフォルトの名無しさん:2006/02/13(月) 14:35:43
>>757
数冊買ったのをまずはやれ。分からなかったら、調べろ。
楽して覚える方法なんてねーからな。

それができなきゃプログラム諦めれ。そっちのが幸せだ。
762質問です!!:2006/02/13(月) 14:36:09
ss.Format("%C", wc);
だと、ss=""になってしまいましたよ・・・
763デフォルトの名無しさん:2006/02/13(月) 14:39:02
コンストラクタ
764質問です!!:2006/02/13(月) 14:43:05
CString ss;
wchar_t wc = 'あ';
CString ts(wc);

ss = ts;
だと、ss= "・"になってしまいましたよ・・・

765デフォルトの名無しさん:2006/02/13(月) 14:44:06
( ・ω・)
766デフォルトの名無しさん:2006/02/13(月) 14:56:58
>Unicodeビルドではなく、マルチバイトビルドで実現したいです。

>wchar_t wc = 'あ';
この時点でマルチバイトじゃないか?
767質問です!!:2006/02/13(月) 15:11:54
すみません・・・説明が及びませんでした・・・
プロジェクト→プロパティ→文字セット→「マルチ バイト文字セットを使用する」
でお願いしたいという意味でした。
768デフォルトの名無しさん:2006/02/13(月) 15:13:58
デバッガでどの段階で思い通りの動作をして無いか追ってみ。
769質問です!!:2006/02/13(月) 15:26:20
CString ss;
wchar_t wc = 'あ'; // wc = 0x82a0 ss = ""
ss = wc; // ss = "?"

デバッガで追った時、この部分で ss = "あ"とならず
思い通りの動きになっていません
770デフォルトの名無しさん:2006/02/13(月) 15:30:59
デバッガをUnicodeを表示にチェック
771デフォルトの名無しさん:2006/02/13(月) 15:37:41
お前らいつまでマジボケ続ける気なの?
772デフォルトの名無しさん:2006/02/13(月) 16:37:37
UNICODE使わねぇのにwchar_tかよ
773デフォルトの名無しさん:2006/02/13(月) 16:41:32
L'あ'
774デフォルトの名無しさん:2006/02/13(月) 16:44:52
>>761
買ったものは実践してます。
わからないところもありません。
特に問題はないです。
「楽して」ではなく「楽しく」出来たらいいなと思っただけです。

たとえば物理や数学でも演習がなく定義や法則ばかり書いてある参考書よりは
演習問題が豊富でソレを解きながら覚えた方が楽しいと思います。
そういうの(実際にアプリを作りながら解説)を実践しているHPなどご存じでしたら
紹介していただけたらなぁ。と思っただけです。
特にそういうところがないのなら別に良いです。

昔BASICを覚えたのはBASICマガジンなどでゲームプログラムを打ち込み、そしてソレを
弄ってあ〜でもないこ〜でもないやって理解していき、その過程が楽しいかったので
そういうものを求めていました。
775質問です!!:2006/02/13(月) 16:49:35
wchar_t型の文字からchar型の文字列に変換する自作関数へ投げるから
もういいもん!><
776デフォルトの名無しさん:2006/02/13(月) 16:55:45
そうとうテンパってきてるな
777デフォルトの名無しさん:2006/02/13(月) 16:58:22
質問です。
現在WinXP ProSP2 + VC++6.0環境下で、
MFCベースにて一定時間ごとに処理を行うプログラムを作っています。

その中で100msecごとに処理を行いたいのですが、
settimer( 1, 100, 0 )
void Chogehoge::OnTimer(UINT nIDEvent){
〜処理〜
}
では、
処理が正確に回らず、1msecずつ遅れ最終的に100msecの単位が飛んだりします。

なので、マルチメディアタイマーを利用しようと思っているのですが、

TIMECAPS timeCaps;//分解能格納
timeGetDevCaps(&timeCaps, sizeof(timeCaps));//分解能取得
timeBeginPeriod(timeCaps.wPeriodMin);//分解能の最小値

FTimerId = timeSetEvent(100, timeCaps.wPeriodMin, TimerProc, (DWORD)this, TIME_PERIODIC );

でタイマーを生成し

void Chogehoge::TimerProc( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2 ){
〜処理〜
}
とやっても、マルチメディアタイマー使用以前と同様、処理が遅れてしまいます。
実際100msec周期で正確に処理を行いたいとき、どのようにすればよいのでしょうか?
# 優先度をリアルタイムに変更してもうまく回りませんでした。
778デフォルトの名無しさん:2006/02/13(月) 16:58:44
最初からchar使えよ
779デフォルトの名無しさん:2006/02/13(月) 17:01:28
>>777
ラッキーおめ

とりあえずタイマー部分だけをマルチスレッド化して、
100-10〜15msくらいのときに通達すればいいのではないかと。

もしくはただのループ
780質問です!!:2006/02/13(月) 17:02:22
>>776
もっといい方法あったら、教えて下さい

>>778
wcahr_tが一文字ずつ飛んでくるから、それをCString型にスタックしたかったの!><
781デフォルトの名無しさん:2006/02/13(月) 17:04:53
782デフォルトの名無しさん:2006/02/13(月) 17:07:39
>>780
そんなこと一言もいってないじゃねぇか
783質問です!!:2006/02/13(月) 17:12:32
>>781
Unicodeじゃダメなの!><

>>782
知りたかったのは、wchar_t→CString & 非Unicode
でしたので、噛み砕いちゃいました・・・
784デフォルトの名無しさん:2006/02/13(月) 17:14:50
はなしがつうじない ただのちしょうのようだ
785デフォルトの名無しさん:2006/02/13(月) 17:17:17
Unicode受け取っておいてUnicodeじゃダメなのもないもんだ
786質問です!!:2006/02/13(月) 17:19:33
受け取るの、Shift-JISだもん><;
787デフォルトの名無しさん:2006/02/13(月) 17:21:39
すんまそん、プリコンパイル済みヘッダについて教えてください。

/Yc プリコンパイル済みヘッダーを作成する
/Yu プリコンパイル済みヘッダーを使う

というのが有るのですが、毎回 stdafx.h の内容を変更するたびに
一度 *.pch を削除して /Yc に変更してコンパイルして
/Yu に戻してビルド、という手順を踏む必要があるのでしょうか?

stdafx.h を書き換えたら勝手にそいつから *.pch を作成して
以後それを使ってくれるようにはできますか?
788デフォルトの名無しさん:2006/02/13(月) 17:22:11
>>786
じゃあcharにしとけ
789デフォルトの名無しさん:2006/02/13(月) 17:22:15
SJISはマルチバイト

はい次の方どうぞ
790デフォルトの名無しさん:2006/02/13(月) 17:23:09
自分で試せばいいだろ
なんでわざわざ聞く必要が?
791デフォルトの名無しさん:2006/02/13(月) 17:23:16
>>786
wchar_t使うのにUNICODEじゃないなんてねぇよ、Windowsでは
792デフォルトの名無しさん:2006/02/13(月) 17:24:07
>>787
いちいちオプションいじらないでリビルドするだけだろ
793デフォルトの名無しさん:2006/02/13(月) 17:25:07
おまいらつくづくバカだなぁ
794デフォルトの名無しさん:2006/02/13(月) 17:25:31
>>792 そのとき /Yc にしておくべきですか?
それとも /Yu にしておくべきですか?
795デフォルトの名無しさん:2006/02/13(月) 17:25:59
>>794
VC++2003だと思うが/YXな
796デフォルトの名無しさん:2006/02/13(月) 17:26:26
>>792
ええ、あなた程度でも思いつくような事はさすがにやってます^^;;;
797デフォルトの名無しさん:2006/02/13(月) 17:26:41
いえいえとんでもない!
>>793の逝きっぷりには到底及びもつきませんよ!!!
今後ともよろしくお願いしますね!
じゃぁ氏ね
798質問です!!:2006/02/13(月) 17:27:41
>>789
だから、マルチバイトって最初っから言ってるじゃないですかぁ

>>791
お兄さん、VS2005でデフォルトがUNICODEなんでしょ?

でも、みなさんありがとう
もういいです><;
799デフォルトの名無しさん:2006/02/13(月) 17:29:04
(        ゚Д゚)
800デフォルトの名無しさん:2006/02/13(月) 17:29:55
(           ゚Д゚)
801デフォルトの名無しさん:2006/02/13(月) 17:30:24
(             ゚A゚ )
802デフォルトの名無しさん:2006/02/13(月) 17:31:07
(´Д`          ゚A゚      ´Д`)
803デフォルトの名無しさん:2006/02/13(月) 17:31:08
>>795 VC++ 2005 です。ヘルプには /YX という
オプションは有りませんでした。
804デフォルトの名無しさん:2006/02/13(月) 17:31:12


  .__
 .Z|・∀・|
  |__|Z
   / <
   .図

805デフォルトの名無しさん:2006/02/13(月) 17:31:26
伸びてくんな
こっちみんな
キモチワルイ
806デフォルトの名無しさん:2006/02/13(月) 17:32:21
伸びてくんな
こっち(´Д`          ゚A゚      ´Д`) みんな
キモチ(          ゚Д゚ )ワルイ
807デフォルトの名無しさん:2006/02/13(月) 17:33:30
>>779
レスありがとうございます。
タイマー用のスレッドってどういったものなんでしょうか?
settimerなど使用すればkillするまで、一定時間ごとにメッセージを投げてくれる。
メッセージはOnTimerで自動的に受け取れるという感じだと思うんですが
スレッドで実際やるとしたら…
void Chogehoge::OnOK()
{ 〜前処理〜
AfxBeginThread( TimerThrd, this, THREAD_PRIORITY_NORMAL);
}
UINT Chogehoge::TimerThrd ( void * ){
settimer(1,100,0 ); //?????
}
void CProtDlg::OnTimer(UINT nIDEvent)
{ 〜処理〜
}
これじゃ変わってませんよね…orz
どうすればいいんでしょう?

早めにまわして・・・
void CProtDlg::OnTimer(UINT nIDEvent)
{
SYSTEMTIME st; // 現在時刻
GetLocalTime(&st); // 現在時刻取得
if ( m_mill != ( st.wMilliseconds / 100 ) ){
〜処理〜
m_mill = st.wMilliseconds / 100;
}
}
# m_millはメンバ変数
これだと処理が重くなりますし…。
808デフォルトの名無しさん:2006/02/13(月) 17:38:22
>>803
VC++2005からは/YXが廃止されたから/Yuでおk
ただし、ちゃんとファイル名を指定するか、#pragma hdrstopを使うこと。
809デフォルトの名無しさん:2006/02/13(月) 17:38:31
いちいち聞くより、ヒント貰ったら後は自分で調べた方が速いぞ
810デフォルトの名無しさん:2006/02/13(月) 17:45:08
VC6.0ってアセンブラ使えますか?
811デフォルトの名無しさん:2006/02/13(月) 17:47:05
>>780
CStringW
812デフォルトの名無しさん:2006/02/13(月) 17:49:16
>>810
インラインアセンブラのことだったら使える。
ただし拡張命令はSP6だとMMXどまり。
SP5にProcessorPackを当てると3DNow、SSE/SSE2まで。
813デフォルトの名無しさん:2006/02/13(月) 18:00:13
>>807
100ms毎になにやりたいんか知らないが、きっかり100msやるとしたら
専用ハードが無いと無理じゃないのかな。
そこそこの精度ならスレッド作って、GetTickCount()やパフォーマンスカウンタ見ながらループさせるとか。(負荷かかるけど)
814807:2006/02/13(月) 18:53:51
100msec周期というのは、そこそこの精度で十分です。
オシロからのデータをもれなく収集を行いたいというプログラムです。
現状は秒単位+msec単位を記述するとこんな感じです。

 10.597
 10.698
 10.799
 10.900 ←0.1sec飛んでる
 11.001

という感じで間が飛んでしまうのを、何とかしたいというのが本題です。
時間は100msecまでしか、保存を行わないのでそれ以下は問いません。
難しく解釈してしまった方申し訳ないです。

スレッド内でループで時間判定…
UINT Chogehoge::TimeThrd( void * param ){
SYSTEMTIME st; // 現在時刻
mill_tmp = 0;

while(終了条件){
GetLocalTime(&st); // 現在時刻取得
if ( st.wMilliseconds / 100 ){
〜処理〜
mill_tmp = st.wMilliseconds / 100;
}
Sleep(50); // 負荷を下げたいので
}
}
# 上に書いたやつの2番煎じです…
これだといやでも負荷かかりますし…orz
815デフォルトの名無しさん:2006/02/13(月) 18:54:57
> 10.799
> 10.900 ←0.1sec飛んでる
( ゚Д゚)( ゚Д゚)( ゚Д゚)  ( ゚Д゚ )
816デフォルトの名無しさん:2006/02/13(月) 19:04:33
きょうは何かあったの?
大地震のまえぶれだろうか?
817デフォルトの名無しさん:2006/02/13(月) 19:33:12
>>814
そのデータだと、そこそこの精度がでているが。どこが0.1[s]
飛んでいるんだ?10.799はほぼ10.8だぞ。
タイマーは、別スレッド作られるはず。MSDN読め。
学部か修士ぐらいだろうが、自分で少しは調べろ。ためにならん。
818デフォルトの名無しさん:2006/02/13(月) 19:34:17
>>814
ms単位の経過時間が欲しければ、わざわざGetLocalTimeせんでもGetTickCount()でいいだろ。
819デフォルトの名無しさん:2006/02/13(月) 19:37:13
>>818
gettickcountは評判悪い
820デフォルトの名無しさん:2006/02/13(月) 19:53:02
ループしまくって
RDTSCで読み続けるんだ!
821デフォルトの名無しさん:2006/02/13(月) 19:54:34
こんばんは、
EPSファイルを、GIFファイルに、変更するフリーのDLLないでしょうか。

できれば、EPSを読み込んだあと、GetPixel()とかできるのがよいです・・。
822デフォルトの名無しさん:2006/02/13(月) 21:09:00
823デフォルトの名無しさん:2006/02/13(月) 21:20:31
VS2003を使ってます

VC++で、MFCのダイアログベースでテスト用のプログラムを作って色々試してたんですが
今しがた突然、デバッグをしようとF5を押すと、
「デバッグを開始できません プログラム 'EXEのフルパス' を開始できません。 アクセスが拒否されました。」
というメッセージボックスが出てデバッグができなくなりました。
プログラムを変更したのがいけなかったかと思い、Ctrl+Zで元に戻してリビルドしたりしても一向に直りません
Debugフォルダごと削除してビルドしなおしたりしてもダメでした

解消方法なと、どなたか心当たりありませんか?
824デフォルトの名無しさん:2006/02/13(月) 21:21:06
>>819
なんで?
825デフォルトの名無しさん:2006/02/13(月) 21:23:03
>>823 リブート
826デフォルトの名無しさん:2006/02/13(月) 21:24:42
確かに、リブートはしてません・・・(ファイル送信してるもので・・・)
後でやってみます
827デフォルトの名無しさん:2006/02/13(月) 21:29:24
>>826
リブートしても直らない、に3000点
828デフォルトの名無しさん:2006/02/13(月) 21:29:38
>>826 ほら、空っぽのディレクトリなのに
削除できなかったりすることあるだろ?
再起動すると削除できるけど。
まぁ、あれみたいなもんだ。
829デフォルトの名無しさん:2006/02/13(月) 22:41:23
>>828
リブートしても直らない、に3000点
830デフォルトの名無しさん:2006/02/13(月) 22:48:47
ちょwwwwww
何でこんなに大盛況なの??
831デフォルトの名無しさん:2006/02/13(月) 23:06:47
VS2005をWin2000SP4で使用しています。
今度DirectXを使ってゲームを作ろうと思い、DirectX9 UpdateSummerをインストールしました。
ヘッダとライブラリのパスは設定したのですが、プログラムでDirectXのメソッドを呼び出そうとすると
外部参照エラーが発生します
-----------------------------------------------------------
リンクしています...
main.obj : error LNK2019: 未解決の外部シンボル _Direct3DCreate9@4 が関数 _WinMain@16 で参照されました。
D:\Visual Studio 2005\Projects\DXTEST\Debug\DXTEST.exe : fatal error LNK1120: 外部参照 1 が未解決です。
-----------------------------------------------------------
解決法がありましたら、どなたかお願い致します。
832デフォルトの名無しさん:2006/02/13(月) 23:11:02
libをリンクしろや
833デフォルトの名無しさん:2006/02/14(火) 07:15:21
libをリンクしても直らない、に3000点
834823:2006/02/14(火) 08:23:35
>>825
リブートしたら動きました
お騒がせしました

>>827,829
残念w
835デフォルトの名無しさん:2006/02/14(火) 13:44:19
起動時のワンポイントをひょうじするようにしたいのだけどどうしたらいいですか?
836デフォルトの名無しさん:2006/02/14(火) 13:45:13
そのように作ればいい。
837デフォルトの名無しさん:2006/02/14(火) 13:47:55
838デフォルトの名無しさん:2006/02/15(水) 00:13:11
>>834
なんでリブートしたら直ったのかは突き止めたの?
839デフォルトの名無しさん:2006/02/15(水) 08:36:26
リブートしたら直るようなもん、どうやって突き止めるんだよ
840デフォルトの名無しさん:2006/02/16(木) 19:02:16
フリーってことでvisual c++のエキスプレスエディションつっこんでみたが、
有名な
1 #include <stdio.h>
2
3 main()
4 {
5 printf("Hello!\n");
6 }

が上手くできない・・・
新規プロジェクト作成でどこえらんでいいかもわからんしww

とりあえずオレにはC++無理ってことでFA???
841デフォルトの名無しさん:2006/02/16(木) 19:07:19
>>840
FA
842デフォルトの名無しさん:2006/02/16(木) 19:08:08
FAK
843デフォルトの名無しさん:2006/02/16(木) 19:10:43
>>840
ところでそれはC++ではなくCなんだが・・・
844デフォルトの名無しさん:2006/02/16(木) 19:22:33
C++でもコンパイル通る
845デフォルトの名無しさん:2006/02/16(木) 19:23:20
( ゚д゚)
846デフォルトの名無しさん:2006/02/16(木) 19:36:38
>>840
void main() に汁!または int main() にして最後に return 0; に汁
C++ 風にしたいなら <iostream.h>に汁!
847デフォルトの名無しさん:2006/02/16(木) 20:22:30
>>846
うそおしえるなよ。
848デフォルトの名無しさん:2006/02/16(木) 21:20:31
正解はこちら↓
849デフォルトの名無しさん:2006/02/16(木) 21:25:36
以上が正解です↑
850デフォルトの名無しさん:2006/02/16(木) 21:27:33
(1) void main()だめ。int main()にする。

(2) <iostream.h>は古い。
#include <iostream>してusing namespace std;
851デフォルトの名無しさん:2006/02/16(木) 21:40:14
馬鹿よけのためにはint main(void)で。
852デフォルトの名無しさん:2006/02/16(木) 22:39:18
>>840
まともな解答が欲しければ何がどううまくいかないのか、どこで躓いているのか書け。
853デフォルトの名無しさん:2006/02/17(金) 00:30:53
VC++7(.net)のデバッガって、開発中のアプリケーションを、デバッガ上ではなく
単体で起動してcrashさせてからアタッチすると、どこからともなくプロジェクトを見つけてきて、そのうえソースまで表示してくれませんか?
あれってどうやってるんでしょう?どっかにexeの名前とソリューションの場所のテーブルでも持ってるんでしょうか?
854デフォルトの名無しさん:2006/02/17(金) 00:31:46
>>853
アセンブリキャッシュにでも書き込まれてるんじゃね?
855デフォルトの名無しさん:2006/02/17(金) 06:14:40
バイナリにパスがはいってたような
856デフォルトの名無しさん:2006/02/17(金) 09:58:21
Visual C++ で作った(リリース用の)バイナリって、
どこまで情報埋め込まれているか分からないから不安。
例えば何らかのフルパスが入ってるとすれば当然
Document and Settings\俺の名前\Visual Studio Projects\
みたいな情報も含まれているわけで、別に何か
困るわけでもないけど会社のPCだとそこは社員番号だったりして・・・
ちょっと嫌。
857デフォルトの名無しさん:2006/02/17(金) 10:04:10
(°д ゚)ハァ?
858デフォルトの名無しさん:2006/02/17(金) 10:06:33
リンカ設定のデバッグ情報の生成をONにしておくと
pdbファイルのフルパスがバイナリに突っ込まれるよ。
VC++8は何故かReleaseビルドまでONがデフォルトなので注意。
859デフォルトの名無しさん:2006/02/17(金) 10:16:09
Expr、Negative、Literalというクラスがあります。
Exprはabstract classで、Negative、LiteralはExprをinheritしたものです。

たとえばMainの中で、
Expr* e = new Negative( new Literal(3) ); と表記すると、
e = -3 となります。

質問ですが、この状況でdelete eとやれば、newで作られたNegativeとLiteralもちゃんとdeleteされるんでしょうか?
もしされないのならどうすればいいのか教えてください。
Exprのデストラクタをvirtualにすればいいのかと思いましたが、どうやればいいのか分かりません。
よろしくお願いします。
860デフォルトの名無しさん:2006/02/17(金) 15:21:00
何故そこでeが-3になるのか判らんが、
少なくともそのように設計されているなら、
それでいいだろ。
861デフォルトの名無しさん:2006/02/17(金) 15:23:07
>e = -3 となります。
?

>Exprのデストラクタをvirtualにすればいいのかと思いましたが、どうやればいいのか
virtual ~Expr() ;
862デフォルトの名無しさん:2006/02/17(金) 15:56:45
ぬるぽ
863859:2006/02/17(金) 16:23:48
なんとか解決しました。
有難うございました >>860-861
864デフォルトの名無しさん:2006/02/17(金) 16:55:59
>>856,858
注意も何も、そんなオソロシイ場所にプロジェクトを作成するヤツが悪い
865デフォルトの名無しさん:2006/02/17(金) 17:01:07
>>864 そこしかいじれないようにIT部門が管理している。
866デフォルトの名無しさん:2006/02/17(金) 17:03:54
>>865
管理も何も、そんなオソロシイ会社に就職するヤツが悪い
867デフォルトの名無しさん:2006/02/17(金) 17:05:26
>>866 そこまで言われたらもう返す言葉がない。
868デフォルトの名無しさん:2006/02/17(金) 17:20:36
実際オソロシイな
そのIT部門のヤツらはバカ揃いか

つーか、おめぇはIT部門じゃねぇのかよ
869デフォルトの名無しさん:2006/02/17(金) 17:23:09
イット部門
870デフォルトの名無しさん:2006/02/17(金) 17:49:42
イっとるね
871デフォルトの名無しさん:2006/02/17(金) 19:13:34
思いついたギャグをすぐ書き込むのは止めたほうがいいよ。
オッサンからのアドヴァイスです。
872デフォルトの名無しさん:2006/02/17(金) 21:01:59
>>856
そのフォルダの俺の名前は、VCをインストールする時に
入力する名前がフォルダ名になるって事?
873デフォルトの名無しさん:2006/02/18(土) 00:10:55
>>872
856に書いてある「俺の名前」(Document and Settingsの直下)は
Windowsのユーザー名が当てはまるところ。VC++とは何の関係も無い。
874デフォルトの名無しさん:2006/02/18(土) 01:45:19
やヴぁい。俺のリリースしたexeにしっかり俺の名前が!?!?!
俺がテストデータに使った得ろ動画もプロジェクトのどっかに残っていて
あとで納品後に見つかったらどうしようガクブル
875デフォルトの名無しさん:2006/02/18(土) 02:17:25
>>874
通常は表に出てこないから大丈夫では?
876デフォルトの名無しさん:2006/02/18(土) 04:08:00
初歩的な質問ですんまへん、今って#include<iostream.h>とヘッダファイルの引用の .h をつけないで
#include<iostream>にするのが常識なんですか?
877デフォルトの名無しさん:2006/02/18(土) 04:15:34
あと>>851に書かれているint main(void)と括弧の中にvoidを入れるのも常識ですか?
878デフォルトの名無しさん:2006/02/18(土) 04:35:06
850,851じゃないけど・・・
<iostream.h>は古い書き方なので、.hつけないのが推奨。
int main(void)は、C++は型にうるさいのでつけた方がいいってことだろう。
879デフォルトの名無しさん:2006/02/18(土) 05:50:29
僕のはVC6だけど、バイナリエディタで見たが、
Debugは作った位置のパスがあったが、
Releaseの方は何も無い感じだった。

>>873
サンクス。そこで作品を作るとヤヴァイという事か。
デスクトップとか、ドライブのトップ辺りがいいのかな。
880デフォルトの名無しさん:2006/02/18(土) 06:47:56
だから、人に渡したりするときは、ビルドの設定変えればいいだけだろ・・・
881デフォルトの名無しさん:2006/02/18(土) 06:55:41
いや、リリースの方で出るって言っていたので。
882デフォルトの名無しさん:2006/02/18(土) 06:59:06
883デフォルトの名無しさん:2006/02/18(土) 07:10:42
>>876
ヘッダファイルをインクルードする時のこと全般で言えば別に .h を書かないのが常識なんて無いよ
C++のSTL等一部のヘッダファイルが、そもそものファイル名自体に .h がつかなくなってるだけ
884デフォルトの名無しさん:2006/02/18(土) 10:06:56
むしろヘッダ名がそのままファイル名そのものであるとは限らないというのが規格の立場。
VC++のヘッダ名 == ファイル名は実装方法の1つに過ぎない。
885デフォルトの名無しさん:2006/02/18(土) 11:20:05
>>882
あっw。すまん。
886デフォルトの名無しさん:2006/02/18(土) 14:28:41
VS 2005 C++だす
× String str = "Hello";
○ String ^str = "Hello";
いちち^付けないといけないみたいですね、
^ってどういう意味よ?
くだすれVisual C++(超初心者用)で聞いたら
該当スレで聞いてみたら? って言われたんで
ここでよかったかな?
887デフォルトの名無しさん:2006/02/18(土) 14:34:44
>>886
【.NET】 C++/CLI について語ろうぜ 【最適】
http://pc8.2ch.net/test/read.cgi/tech/1126450441/
888デフォルトの名無しさん:2006/02/18(土) 14:47:11
↑サンクス
889デフォルトの名無しさん:2006/02/18(土) 16:44:24
カスが
890デフォルトの名無しさん:2006/02/18(土) 17:36:59
質問させてください。
今コマンドラインからサーバにアクセスするクライアントプログラムを作っていて、
コマンドラインから動かす時にいろんなオプションをつける事が必要なのでgetoptを使っています。

int option = getopt(argc, argv, "p:s:r:f:");
switch(option)
case 'f' : filename = optarg; break;

の様に使っているのですが、引数が複数ある場合にどうすればいいかわかりません。
例えば、 prog -s 1.1.1.1 80 とコマンドラインから動かした場合、
optargに1.1.1.1は入ってるのですがどうやって80を取り出せばいいのか分かりません。

よろしくお願いします。
891デフォルトの名無しさん:2006/02/18(土) 17:39:58
getopt()なんて非標準関数を使わなければいいと思うよ。
まぁ、仕様をよく確認しろって話な訳だが。

・引き数つきオプションの取れる引き数は一つだけ。
・オプションではないパラメータはオプション処理後にargvから取り出す。
892デフォルトの名無しさん:2006/02/18(土) 17:46:45
ちょっと質問なんですが、通常のアプリケーション製作についてです。

WinMainで渡されてくるパラメータ(特にHINSTANCE)って、どこかに保存してますか?
俺はグローバルにコピーして置いてるんですが、こんなやり方でも問題無いですよね?
(↑グローバルはあんまり使うなと言われているので)

それとも何かお勧めの方法があったら参考までに教えて下さい。よろしくお願いします。
893890:2006/02/18(土) 17:53:59
>>891
うーん、やっぱり自分で作らないと駄目かな。
返答ありがとうございました。
894デフォルトの名無しさん:2006/02/18(土) 17:57:59
>>892
<windowsx.h>のGetWindowInstanceを使えば、
ウィンドウハンドルから関連するインスタンスハンドルが手に入るから、それを俺は使っている。
895デフォルトの名無しさん:2006/02/18(土) 18:00:26
>>894
そんなAPIあったんだね。ありがと。
896デフォルトの名無しさん:2006/02/18(土) 18:13:24
C++/CLIを使っているんですが、
自分のクラスライブラリのシングルトンのクラスにあるSystem::Drawing::Size型のプロパティを変更しようとしたら
p->Size = System::Drawing::Size(64, 64);
と設定はできるのですが、
p->Size.Width = 64;
のように個別に設定しようとしたら必ず0になってしまいます。

どうすれば個別に設定できるようになりますか。
897デフォルトの名無しさん:2006/02/18(土) 18:17:23
898デフォルトの名無しさん:2006/02/18(土) 19:02:55
次スレからはタイトルに「非CLI」って入れなきゃだめかな
899デフォルトの名無しさん:2006/02/18(土) 19:24:57
C++/CLI はマイナーだから特に注意書きはいらんだろ

> 637 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/18(土) 17:01:58
> GUI でモノを作りたければ、素直に MFC に進んだ方がいいと思われ
> C++/CLI はちと初心者にはお勧めできない。普通の方法では満足できなくなった玄人向け
> だから
> あとは、635 の進めるとおり、C# でモノを作ってみて満足できなくなったら、またこちらに
> 出戻ってくると言うのもいい
900デフォルトの名無しさん:2006/02/18(土) 19:37:09
必要だとすれば非GUI(コンソール)のスレ
立て逃げでよければ俺が立ててやってもいいけど
901デフォルトの名無しさん:2006/02/18(土) 19:42:52
C++/CLI スレも初心者は来て欲しくないそうだ
902デフォルトの名無しさん:2006/02/18(土) 19:51:33
そこで、質問。CLIってなんすか?C++は知ってましたが・・・
903デフォルトの名無しさん:2006/02/18(土) 19:52:04
CommonLanguageInfrastructure
904デフォルトの名無しさん:2006/02/18(土) 20:42:49
>>903
略された単語をしっかり見ると分かるもんですね
905デフォルトの名無しさん:2006/02/18(土) 20:59:30
Visual Studio 2005 C++です
秀和システム発行VisualC++逆引き大全 500の極意から
一部抜粋のプログラムなのですがコンパイルできません
プログラムの振る舞いとしては,を!に変換するだけの事なのですが
.\list_2.cpp(9) : error C2440: '=' : 'const char [2]' から 'char' に変換できません。
この変換が可能なコンテキストはありません。

2005のC++ではchar型の変数を定数として扱っているのでしょうか?


#include "stdafx.h"
#include <iostream>
using namespace std;

int main(void)
{
 char buf1[13]="Hello, world";

 buf1[5]="!";

 cout << buf1 << endl;

return 0;
}
906デフォルトの名無しさん:2006/02/18(土) 21:07:52
"!"と'!'の違いをわかった上で言ってるのか?
907デフォルトの名無しさん:2006/02/18(土) 21:09:17
>>905

buf1[5]="!";



buf1[5] = '!';

にしてみてくれ。
上のコードだと、!とぬるぽが入るから2文字になちゃーうよ
908896:2006/02/18(土) 21:10:40
指定されたスレに行ってまいります。
909デフォルトの名無しさん:2006/02/18(土) 21:11:28
>>907
'\0' はヌルポではない!
910デフォルトの名無しさん:2006/02/18(土) 21:18:49
>>909
うん知ってるw
誰かにガッされたかったんだ。

今は反省している。
911デフォルトの名無しさん:2006/02/18(土) 21:24:02
>>907
スマソbuf1[5] = '!'; でやっても同じです秀和システムのHPからソースDLしてもやっぱり一緒でしたガ━━(;゚Д゚)━━ン!!
因みそのソース貼らせてもらいます本では
  char buf1[13]="Hello, world"; //文字の配列を確保します。
  char buf2[]="Hello, world"; //これでもOKです。
でしたが下記の様に変わっていました
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
//char buf1[13]="Hello, world"; //文字の配列を確保します。
  const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
  const wchar_t* buf2[]="Hello, world"; //これでもOKです。
  buf1[5]='!'; // 6文字目を!に変えます。
  cout << buf1 << endl;
// 6文字目をヌル文字にすると、文字列はそこで終わりになります。
  buf1[5]=0;
  cout << buf1 << endl;
//文字列を全部1から作成することもできます。
  char buf3[10];
  buf3[0]='H';
  buf3[1]='e';
  buf3[2]='l';
  buf3[3]='l';
  buf3[4]='o';
  buf3[5]=0; //最後の0(ヌル文字)を忘れずに
  //要素数が余る分には問題はありません。
  cout << buf3 << endl;
}
912905:2006/02/18(土) 21:32:32
Borland C++ではコンパイルできました
なんでだろう?
913デフォルトの名無しさん:2006/02/18(土) 21:33:20
>>911
> const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
> const wchar_t* buf2[]="Hello, world"; //これでもOKです。
全然良くない。

あと、ヌル文字は0でも問題ないが、'\0'が一般的。
914デフォルトの名無しさん:2006/02/18(土) 21:42:21
たぶんC++スレで質問した方がまともな回答が得られる。
このスレでその辺の低レベルな質問に答えてるのは初心者だから
915デフォルトの名無しさん:2006/02/18(土) 21:46:57
それっぽいソース探してきたが、(chapter2\p51-2.cpp)
const wchar_t* ってどっからでてきたんだw

#include <iostream>
using namespace std;

int main(void)
{
char buf1[13]="Hello, world"; //文字の配列を確保します。
char buf2[]="Hello, world"; //これでもOKです。

buf1[5]='!'; // 6文字目を!に変えます。
cout << buf1 << endl;

// 6文字目をヌル文字にすると、文字列はそこで終わりになります。
buf1[5]=0;
cout << buf1 << endl;

//文字列を全部1から作成することもできます。
char buf3[10];
buf3[0]='H';
buf3[1]='e';
buf3[2]='l';
buf3[3]='l';
buf3[4]='o';
buf3[5]=0; //最後の0(ヌル文字)を忘れずに
//要素数が余る分には問題はありません。
cout << buf3 << endl;
}
916905:2006/02/18(土) 21:49:13
'\0'にしても、VS2005C++ではなんも変わりません
.\list_2.cpp(8) : error C2440: '初期化中' : 'const char [13]' から 'const wchar_t *[13]' に変換できません。
この変換が可能なコンテキストはありません。
こんな調子です(;´∀`)
Borland C++は
#include "stdafx.h"
をコメントアウトして
  const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
  const wchar_t* buf2[]="Hello, world"; //これでもOKです。

  char buf1[13]="Hello, world";
  char buf2[]="Hello, world";
こうしたらすんなりコンパイルできました

917デフォルトの名無しさん:2006/02/18(土) 21:53:19
要するに>>915そのまんまなわけだ。
VC++でもそうしたら?
918905:2006/02/18(土) 21:54:35
>>915
ここですが
ttp://www.shuwasystem.co.jp/books/7980/1096-0/1096-0.html
Visual C++ .NET 逆引き大全 500の極意

サポート項目 > 【ダウンロード】
この度は、「Visual C++ .NET 逆引き大全 500の極意 」をお買い上げいただきありがとうございました。
本書には以下のサポートがあります。 (2005/6/27更新)

919デフォルトの名無しさん:2006/02/18(土) 21:55:17
わざと間違い探しでもやってるんだろ
気づけよ
920905:2006/02/18(土) 21:58:40
おや?
>>915のソースに
#include "stdafx.h"
を足したらデキマスタ
921デフォルトの名無しさん:2006/02/18(土) 21:59:27
>>905のソースでbuf1[] = "!"にしとけ
922915:2006/02/18(土) 22:00:33
>>918
ええ、そこですよ。
で、>>911のおかしなソースのファイル名は何ですか。
923デフォルトの名無しさん:2006/02/18(土) 22:02:24
>>920
足さんでもいいと思うんだが。
924905:2006/02/18(土) 22:09:18
>>922
解凍して、p51-2.cppのファイルをWクリックしてVisual Studioを起動したら
確かに、
  const wchar_t* buf1[13]="Hello, world"; //文字の配列を確保します。
  const wchar_t* buf2[]="Hello, world"; //これでもOKです。
に変わっていました、今再解凍して確かめたら、
char buf1[13]="Hello, world"; //文字の配列を確保します。
char buf2[]="Hello, world"; //これでもOKです。
だったYO
>>923
確かにそうですね藁
925デフォルトの名無しさん:2006/02/18(土) 22:43:03
---------------環境---------------
VC++6.0、WindowsXP HomeEdition SP2
----------------------------------
習作でMIDIを解読、線形リストに登録するプログラムを作成したのですが、
データの多いMIDIを扱った場合エラーも無くプログラムが終了してしまうことがあります。

for(int i=0;i<tracks;i++)
{
printf("[%02d]トラックを読み込み...",i);
pnt = trackdata[i].Init(pnt);
printf("完了\n");
}

上記の部分で、「〜読み込み...」まではでるのですが、「完了」の文字が出る前に
exit() でもやったかのようにプログラムが終了してしまいます。
ファイルサイズの少ないMIDIファイルでは問題なく動作しています。


ひょっとしたらと思うのですが、メモリを使いすぎると勝手にプログラムが終了してしまうということはあるのでしょうか?
926デフォルトの名無しさん:2006/02/18(土) 23:28:37
ここは初心者が初心者の質問に答えるスレ
927デフォルトの名無しさん:2006/02/19(日) 00:27:40
VC++6.0で自作したアイコンにハンドラを作成する際には「表示」→「ClassWizard」でいけるのですが、.net2003ではどのようにするのでしょうか?
右クリックでも「イベントの追加」が出てこないのですが。
928デフォルトの名無しさん:2006/02/19(日) 01:56:19
http://www.microsoft.com/japan/msdn/visualc/
Visual C++って今では
Visual C++ 2005
Visual C++ .NET 2003
とありますが、それより前のVisual C++ 6.0で
Windows用のアプリを作っていくことにおいて
今後問題があるようなことってありますか?
929デフォルトの名無しさん:2006/02/19(日) 01:58:35
>>928
それ以前はC++標準への準拠度が低く、STLすら完全に使えない。
Cを使うのなら別に問題ないだろうけど。
930デフォルトの名無しさん:2006/02/19(日) 02:07:26
>>929
>STLすら完全に使えない。
なるほど、レスありがとうございました。やっぱす最新版を買い直すかな・・・
931デフォルトの名無しさん:2006/02/19(日) 03:54:57
メモリダンプで ?? と表示されているアドレスは何を意味しているのでしょうか?
ヘルプを読んでみても記述されている箇所が見当たりません。
932デフォルトの名無しさん:2006/02/19(日) 06:09:18
ゆとりゆとり
933デフォルトの名無しさん:2006/02/19(日) 14:14:52
Win32SDK、VC++6.0で開発しています。

WinMain関数の最後にreturn msg.lParam; を行いますが、この後またWinMainに戻って来るというバグが出ました。
Debugモードだと出ないのに、Releaseモードでだけ出る現象なのでどうやって追えば良いか解らないのですが、Releaseモードでコンパイルした
exeをIDE側のソースコードと連動させるにはどうしたら良いのでしょうか。

そもそも、WinMainにまた戻ってくるというのはどういう原因が考えられるでしょうか?
934デフォルトの名無しさん:2006/02/19(日) 15:05:56
戻り値はwParamの方。
935デフォルトの名無しさん:2006/02/19(日) 15:53:40
>>933
デフォルトではリリースでもデバッグできる。
936デフォルトの名無しさん:2006/02/19(日) 16:03:58
>>934
あれ、マジっすか。ポカやってしまいましたか。

>>935
付属してるMSDN見ながらやってるんですが、どうも最適化でぐちゃぐちゃになるっぽくてうまくいかんのです。
コードの実行速度の最適化 だけで出る現象なんですよねぇ。。。。。
サイズの最適化やデフォルトだと出ないと言う。


ぐぐりながらいろいろ施行してみます。
937デフォルトの名無しさん:2006/02/19(日) 17:40:44
>>936
最適化したコードでブレークポイントを設定しているとデバッガが混乱することがあるけど大丈夫?
938デフォルトの名無しさん:2006/02/20(月) 05:52:31
BC++より移行中なのですが、コンパイラがBC++かVC++を判定するにはどのようにしたらよいですか?
939デフォルトの名無しさん:2006/02/20(月) 06:04:59
>>938
VC++は _MSC_VER というマクロシンボルを定義してる
Borlandのが何を定義してるかは知らんが、同じように
何か固有の物を定義してるはず。
それを#ifdefで調べろ
940デフォルトの名無しさん:2006/02/20(月) 16:21:43
__BORLANDC__
941デフォルトの名無しさん:2006/02/20(月) 18:25:48
つーか、BC++かVC++かのどちらかだけなら、Borlandのが何を定義してるかとか気にせんでも
#ifdef _MSC_VER
#else
#endif
でいいべ?
942デフォルトの名無しさん:2006/02/21(火) 02:10:01
_MSC_VERは駄目だろう
VC++でなくても定義されるはず
BOOST_MSVCでいけ
943デフォルトの名無しさん:2006/02/21(火) 02:19:58
>>942
されてないされてない。
それに生のVC++使ってもBOOST_MSVCなんか定義されないし。
944デフォルトの名無しさん:2006/02/21(火) 02:35:06
>>943
されているされている
君はもうレスするな。

BOOST_MSVC
Defined if the compiler is really Microsoft Visual C++, as opposed to one of the many other compilers that also define _MSC_VER.
945デフォルトの名無しさん:2006/02/21(火) 02:47:53
で、生のVC++では定義されないBOOST_MSVCに
どれほどの意味があるわけ?
946デフォルトの名無しさん:2006/02/21(火) 03:26:56
VC以外で _MSC_VER が定義される環境って何処か知っておきたい。
947デフォルトの名無しさん:2006/02/21(火) 07:48:41
BOOST_MSVC ってどこで定義されてるの?
948デフォルトの名無しさん:2006/02/21(火) 08:47:33
949942=944=948:2006/02/21(火) 08:55:08
ごめんなさい、俺が愚か者でした
950デフォルトの名無しさん:2006/02/21(火) 12:20:27
無料でwindows DLL作れますか?
951デフォルトの名無しさん:2006/02/21(火) 12:35:57
BOOSTって思いっきり書いてあるのに
どんな思考回路なら素のVCで定義されてると思えるんだろうな
952デフォルトの名無しさん:2006/02/21(火) 14:38:55
>>949
おーい、逃げるな。せめて>>946には答えていけ。
953デフォルトの名無しさん:2006/02/21(火) 19:52:01
ICCのWin版のIA-32だと定義されてるな<_MSC_VER
954デフォルトの名無しさん:2006/02/21(火) 21:46:30
INITCOMMONCONTROLSEXと書く時ドキッとします
955デフォルトの名無しさん:2006/02/21(火) 22:04:13
そういや、InitCommonControlsは何もしない関数だって話があったなー。
あれをみたときはへー、と思ったものだ。
956デフォルトの名無しさん:2006/02/21(火) 23:48:04
呼び出すことによって、コントロール使用前にDLLが確実にロードされるようにするだけだからな
957デフォルトの名無しさん:2006/02/22(水) 20:35:04
>>956のレスを見て、>>955の気持ちを理解した
958デフォルトの名無しさん:2006/02/22(水) 23:41:55
質問です。Windows 2000、SP4 です。

VC++ 6.0 で動いていたプロジェクトを 2005 でビルドすると、libc.lib が見つかりませんというリンクエラーがおきました。
コンパイルオプションでは /ML ではなく /MT を指定しており、他に libc.lib とリンクしている箇所が見当たらないのですが、
なぜか自動的にリンクしようとします。

廃止されたライブラリがデフォルトでリンクされるというのも考えづらいのですが、
とりあえず現在は、「特定のライブラリを無視する」 に libc.lib を入れてエラーを回避しています。
が、何かが間違っている気がします。

なぜ libc.lib にリンクしようとするのか、もっとスマートにエラーを解決する方法はないのか。
よろしくお願いします。


959デフォルトの名無しさん:2006/02/22(水) 23:47:43
はいはいFAQFAQ
960デフォルトの名無しさん:2006/02/23(木) 00:34:43
少し重めのプログラムを書いているのですが、最適化のために
コードのプロファイルをしたいと思っています。

Visual C++.net standard version 2003を使っているのですが、
そもそも、そんな機能はあるのでしょうか?

プロファイラに手をだそうと思ったのがはじめてで、いろいろ検索してみたのですが
いまいちよくわかりません。

何か参考になるweb等あれば教えていただければ幸いです。

よろしくお願いします。
961デフォルトの名無しさん:2006/02/23(木) 08:28:42
>>959
お教えいただけないでしょうか・・・。
libc.lib で検索しても、/ML を指定して標準 C++ ライブラリのヘッダをインクルードすれば libc.lib にリンクされる、
2005 では /ML は廃止された、までの情報しか取得できませんでした。
962デフォルトの名無しさん:2006/02/23(木) 10:23:01
VC++2005を昨日入れたばっかりです。

Cfileでバイナリファイルを扱おうと、afx.hをincludeしたら、エラーが山のように出ました
Form1.hの#pragma onceの上に入れたんですけど間違い?

10年以上前にTurbo Cで組んでた時とは環境が全然違うので戸惑ってます
963デフォルトの名無しさん:2006/02/23(木) 12:59:35
Form1.h
そもそもMFCプロジェクト?
964デフォルトの名無しさん:2006/02/23(木) 13:27:21
仮想リストビューでチェックボックスって使えるの?
965デフォルトの名無しさん:2006/02/23(木) 17:30:30
すいません、マルチスレッドアプリでの動作について質問があります。

1CPUのWindows XP Pro環境で、VC++.NET(MFC)にてアプリを作成しています。

A,B,Cの3つのスレッドから参照される、Xというクラスがあります。

Xクラスは、配列構造のデータ領域を持ち、以下の3つのメソッドでその
データ領域にアクセスすることができます。
 ・Add   配列の次の要素にデータを入れる
 ・Get   配列の次の要素のデータを返す
 ・Remove  配列の次の要素のデータを削除する
 ※それぞれのメソッドは、内部的に次の要素のインデックスを管理して
  おり、データ領域の前から順に操作を実行します

このXクラスは、アプリのメインスレッドでインスタンス化され、スレッド
A、Bはそのポインタを使ってアクセスしています(つまり、Xクラスオブジェ
クトは1つ)。

スレッドA,Bからは、次々にAddメソッドでデータを投入されます。
スレッドCからは、次々にGetメソッドで要素を取得し、Removeで削除して
いきます。

↓続く
966デフォルトの名無しさん:2006/02/23(木) 17:31:44
このとき、スレッドAでAddメソッドコール中に、スレッドBからのAddメソッド
コールは起きうるでしょうか?

気にしているのは、Addメソッドが同時に処理されてしまうと、内部で管理
しているインデックス値が、それぞれの処理で重なってしまい、片方のAdd
データが他方のAddで消されてしまうのではないかということです。

CPUが1つで、オブジェクトも1つなので、このような現象は発生しないと
考えているのですが、どうでしょうか?

みなさんのお知恵をお貸しくださいm(_ _)m
967デフォルトの名無しさん:2006/02/23(木) 18:01:51
>CPUが1つで、オブジェクトも1つなので、このような現象は発生しないと
スレッドAがAddの途中でCPUの処理が他のスレッドに移ることがあるのは当然。
スレッドAがAddしているときにスレッドBにCPUが移ってAddするのは確率の問題。
968デフォルトの名無しさん:2006/02/23(木) 18:02:46
マルチスレッドについて全く調べてないに1票。
969デフォルトの名無しさん:2006/02/23(木) 18:03:46
多分次につまずくのはデッドロック
970デフォルトの名無しさん:2006/02/23(木) 18:06:04
つか、スレッドをスイッチのときに、オブジェクトうんぬんなんて関係ないだろ。
そんなこと考慮してたら、他のスレッドに切り替えられないだろ!
971965:2006/02/23(木) 18:31:06
色々とご意見ありがとうございます。

Windowsのマルチタスクは、タイムスライスではないと思っていたので
すが、タイムスライス方式なんですか?
処理をOSに戻すまでは、別のスレッド・プロセスに処理が移ることは
ないと思っていたのですが・・・
どうやら、私の勘違いだったようで...
972デフォルトの名無しさん:2006/02/23(木) 18:41:57
>>971
Win95からそうだけど…そうじゃなかったのは、Win3.1だよ。
973デフォルトの名無しさん:2006/02/23(木) 18:42:16
Windowsは10年前からプリエンプティブだよ。
974デフォルトの名無しさん:2006/02/23(木) 18:42:24
お前はWindows3.1でも使っているのかと。
975965:2006/02/23(木) 18:43:54
私の認識は、初期Windowsのマルチスレッドだったようです。
#お恥ずかしいm(_ _)m

969さんの指摘に注意しつつ、セマフォをぶち込むことにします。
ありがとうございました。
976デフォルトの名無しさん:2006/02/23(木) 18:44:20
>>971
昔の16ビットWindowsはたしかにノンプリエンプティブなマルチタスクだった。
今の32/64ビットWindowsはプリエンティブなマルチタスクになっている。
977デフォルトの名無しさん:2006/02/23(木) 18:45:34
>>971
なんてAPIで処理をOSを戻してたの?
978デフォルトの名無しさん:2006/02/23(木) 18:47:39
GetMessageとか。
979デフォルトの名無しさん:2006/02/23(木) 18:47:47
>>975
わかっているとは思うがスレッドCからGetするときも気をつけるように。
古いインデックスを頼りに範囲外アクセスなんていったら泣きだからな。
980デフォルトの名無しさん:2006/02/23(木) 22:04:32
掛け算のプログラムだす
配列宣言をこうすれば巧くいきますが
int a[9]={1,2,3,4,5,6,7,8,9};
int b[9]={1,2,3,4,5,6,7,8,9};
向学心から、C++では配列のコピーが出来ないのだろうかと
考え小一時間、答えが出せません
コピーの仕方があれば教えてください、
具具ってみたらJAVAにはあるみたいなんですが、C++には無いのかな?

// p99.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//掛け算九九JR━―━―━(゚∀゚)━―━―━― !!

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(void)
{
 int a[9]={1,2,3,4,5,6,7,8,9};
 int b[9];
 a[9]=b[9];//コンパイルは通るが、実行したら、わけわかめのエラーがでる
 //int b[9]={1,2,3,4,5,6,7,8,9};

 for(int j=0; j<9; j++){
   for(int i=0; i<9; i++){
     cout << a[j]*b[i] << " ";
     }
   cout << endl;
   }
}
981デフォルトの名無しさん:2006/02/23(木) 22:26:31
あぁ?
バカかおめぇ?
そんな配列要らねぇし
仮に配列使うとして、配列1つでいいし
982デフォルトの名無しさん:2006/02/23(木) 22:32:52
そんな事は、分かっているんだが
っていうか、配列のコピーの仕方教えてくれろ
こうだろ↓
#include "stdafx.h"
#include <iostream>
using namespace std;

int main(void)
{
int a[9]={1,2,3,4,5,6,7,8,9};
  for(int j=0; j<9; j++){
    for(int i=0; i<9; i++){
     cout << a[j]*a[i] << " ";
  }
 cout << endl;
  }
}
983デフォルトの名無しさん:2006/02/23(木) 22:34:36
>>980
a[9]=b[9];
これが何をしているのか理解できないのなら、C/C++の基本がなってないという事。
最初から勉強しなおす事をお勧めする。
984デフォルトの名無しさん:2006/02/23(木) 22:42:53
こうだよ低脳

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(void)
{
  for(int j=1; j<10; j++){
    for(int i=1; i<10; i++){
     cout << j*i << " ";
  }
 cout << endl;
  }
}
985デフォルトの名無しさん:2006/02/23(木) 22:43:44
>>980
・STLのコンテナを使う。
・配列をメンバに持つ構造体を使う。
・配列の要素を一つずつコピーする。
986デフォルトの名無しさん:2006/02/23(木) 22:47:54
それも、わかってるんだがな
( ・∀・)アヒャ
int a[9]={1,2,3,4,5,6,7,8,9};
を構造体宣言すれば、配列bにコピー出来るのも、既に分かっている
っていうかもっと、簡単なコマンドってないのかなと
聞いてみる
987デフォルトの名無しさん:2006/02/23(木) 22:53:28
>>985
ん?
コンテナなるものがあるのか
>>・STLのコンテナを使う。
これ(・∀・)イイ!!
>>・配列をメンバに持つ構造体を使う。
漏れでも使える
>>・配列の要素を一つずつコピーする。
これも使える
どう書くの?
教えて( ゚д゚)クレー
988デフォルトの名無しさん:2006/02/23(木) 22:58:52
C++スレ行け
989デフォルトの名無しさん:2006/02/23(木) 23:03:00
そういうな、教えてくれ
STLのコンテナ
<ノ丶`Д´>ノ マンセー
990デフォルトの名無しさん:2006/02/23(木) 23:04:25
教えてクン(*´Д`)ハァハァ
991デフォルトの名無しさん:2006/02/23(木) 23:04:46
>>980
memcpyじゃだめなの?
992デフォルトの名無しさん:2006/02/23(木) 23:06:15
やっぱバカの臭いがするな
993デフォルトの名無しさん:2006/02/23(木) 23:12:29
C++スレ行けばいいのに
994デフォルトの名無しさん:2006/02/23(木) 23:15:37
memcpyはint型の変数でもコピーできるのかな
ちょっとやってみよう、だめだったらC++行きたいが
ねもいしな
995964:2006/02/24(金) 00:04:15
int a[9] = {1,2,3,4,5,6,7,8,9};
int b[9];
memcpy(b, a, sizeof(a));

C言語初心者スレに行ってくださいm(__)m
996デフォルトの名無しさん:2006/02/24(金) 00:05:29
>>995
( ´Д`) 黙れリストビュー
997デフォルトの名無しさん:2006/02/24(金) 00:05:55
>>995
( ´Д`) 黙れチェックボックス
998958:2006/02/24(金) 00:44:50
無理ですかね・・・。どなたか分かる方がいらっしゃればお願いします。
/MT、/MTd、どちらにしても libc.lib とのリンクエラーが出ます。(libcd.lib ではない)
何度かフルコンパイルも行ってるのですが・・・。
999デフォルトの名無しさん:2006/02/24(金) 00:47:12
埋め
1000デフォルトの名無しさん:2006/02/24(金) 00:47:43
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    1000
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。