★初心者にVisual C++を教えるスレ★ Part16
1 :
デフォルトの名無しさん :
04/11/21 16:27:31
2 :
デフォルトの名無しさん :04/11/21 16:28:20
3 :
デフォルトの名無しさん :04/11/21 16:29:11
4 :
デフォルトの名無しさん :04/11/21 16:29:47
C や C++ の初心者はここじゃなくて、 C や C++ のスレに行った方が適切な回答がもらえるよ
おぉ、ようやく立ったか。 乙!>>1
7 :
デフォルトの名無しさん :04/11/22 09:39:58
8 :
デフォルトの名無しさん :04/11/23 08:42:24
ファイルサイズの取得で困っています。 void CbitDlg::OnBnClickedButton3() { CString ss; OPENFILENAME ofn; char fn[MAX_PATH]; CFile f; int r; DWORD filesize; UINT *d; fn[0] = '\0'; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize = sizeof(ofn); ofn.Flags = 0; ofn.lpstrFile = fn; ofn.nMaxFile = sizeof(fn); ofn.lpstrFilter = "テキストファイル(*.txt)\0" "*.TXT\0" "すべてのファイル(*.*)\0" "*.*\0"; ofn.nFilterIndex = 1; r = GetOpenFileName(&ofn); if (r) { if (ofn.Flags & OFN_READONLY) { } else { if(fn == "") return; if(!f.Open(fn,CFile::modeRead | CFile::typeBinary)) { AfxMessageBox("読み込みファイルをオープンできません"); return; } filesize = FileSize(fn); ss.Format("%d",filesize); Edit1.SetWindowText(ss); } } }
9 :
デフォルトの名無しさん :04/11/23 08:43:30
DWORD CbitDlg::FileSize(LPSTR lpszFileName) { DWORDdwFileSize = 0; HANDLEhFile = CreateFile( lpszFileName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile != INVALID_HANDLE_VALUE ) dwFileSize = GetFileSize( hFile, NULL ); CloseHandle( hFile ); return dwFileSize; }
10 :
8-9 :04/11/23 08:47:37
上記を実行するとfilesizeが、自分で実行した限り、必ず0になってしまいます。 void CbitDlg::OnBnClickedButton3() { char path[MAX_PATH]; CString fs; DWORD filesize; Edit1.GetWindowText(path,MAX_PATH); filesize = FileSize(path); fs.Format("%d",filesize); Edit2.SetWindowText(fs); return; } こういうやり方だと正常に取得できるんですが、もう何がなんだかよくわかりません…
HANDLEhFile = CreateFile( ファイル壊してねえ?
12 :
8-9 :04/11/23 11:48:23
>>11 あんまり意味を理解しないでやっていたのでよく分からないのですが、
>HANDLEhFile = CreateFile
のところで
GENERIC_READ,
OPEN_EXISTING,
と指定しているので、既存のファイルを読み取りアクセスする、
という風に捉えていたのですが、違うんでしょうか?
こんなことしなくても別のやり方で取得するやり方があるんでしょうか…?
とりあえず、 if(fn == "") return; // ほぼ確実にfalse あと、CFile が ファイルオープンしてるから、(共有フラグを立ててないから) FileSize() の CreateFileが失敗しているのではないかと思ってみる。
コンパイルしたファイルをインクルードされたヘッダファイル 等全て展開されたモノを見ることってできないのでしょうか? それを見てエラーを特定したいのですが。 その見る行為に当たる専門用語が分からなくて検索しても 見つからないです。(有るのかさえも分からないのですが。。。) 検索語句だけでも教えて頂けませんでしょうか。
>>14 コンパイラのオプションで設定する。
VC6 なら /P /EP とかそういうのだったかな。
お前が書いたコードが間違ってるに1億ペソ ライブラリのヘッダまで追いかけてもしょうがないと思う
17 :
デフォルトの名無しさん :04/11/23 21:43:13
教えてげそ 漏れのVCのデバッグウィンドウにいつも間にか プロジェクト名: WndProc: hwnd=0x430360, msg = WM_DESTROY (0x0000, 0x00000000) みたいな出力が出まくって、本来のトレース文が埋もれてしまってデバッグできなくなったの でつが、これって何が原因なのでつか(´・ω・`) 特に何かした覚えはないのでつが。。。
>>15 コンパイラのオプションなんて使った事無かったです。
警告レベルもここで設定できるようで。
他にも興味深そうなことがいろいろある。なんか得した感じです。
下手な説明なのに適切なレスに感謝です。ありがとうございました。
引数に文字型って使えますよね…
使えますよ…
21 :
8-9 :04/11/25 07:30:53
>>13 遅レスですがレスありがとうございます!
CFileをオープンする前にCreateFileしてみたら
ちゃんと成功しました。
外部で作ったツールバー用のビットマップ(24ビット)をインポートして使おうとしたんですけど ビットマップのほうにインポートされてしまってツールバーとして認識しないんですが VCは付属のやつで作ったやつでしかツールバーって作れないんでしょうか? ちなみにVC++6.0、MFCは使っていません
>>22 24ビットはやったことないけど
ビットマップは好きなの使えるよ
デフォルトだとtoolbar.bmpとかいうのがあるから
それを置き換えるとか
HDCのサイズを取得しようとしているのですが、 そもそもHDCにはサイズという概念が無いのでしょうか。 無かったら諦めて別の方法にします。
HDCはDCのハンドルだからポインタだろう
>>24 サイズという概念は無い。
ウィンドウのならGetClientRectとかが代わりになるかも。
>>25 そういう問題じゃないだろう。
>>25 >>26 レスどうもありがとうございました。
不可能のようなのでサイズデータを直接持ってきて
取得しました。単純な解決方法ですが...
>>23 ありがとうございます
けど、まだうまくいってません・・・
29 :
デフォルトの名無しさん :04/11/26 13:49:39
VisualC++6.0でDDKに含まれているヘッダファイルをインクルードしたのですが、 インクルードディレクトリの指定は何処でするのでしょうか? -Ic:\ddk\inc みたいな指定です。 アドバイスお願いします。
ハンドルだからポインタ ハンドルだからポインタ ハンドルだからポインタ ハンドルだからポインタ ハンドルだからポインタ ハンドルだからポインタ
VC++.netについて超初心的な質問です。 OSはXPでWindowフォームアプリケーションってのを使ってるんですが buttonを押して指定した文字をLabelに表示するプログラム教えてください。 おながいしますorz
>>31 めんどくさいからチュートリアル載せてるサイト探すことをお勧め。
33 :
デフォルトの名無しさん :04/11/26 17:48:45
ツールバーのアイコンを押した後、そのアイコンの背景が凹んで、今アイコンが 選択されてるとわかるようにしたいのですが。 教えてください。
UPDATE_COMMAND_UIハンドラに次の2行を追加する。 pCmdUI->Enable( TRUE ); pCmdUI->SetCheck( TRUE ); ハンドラがなければMFCクラスウィザードで作成。
もしツールバーボタンとメニュアイテムが同じ コマンドID使ってたらチェックつく。
はじめまして〜 .net のC++で画面付のDLLの作成をすることになったのですが、 画面呼び出しのexe(MFCアプリ)と画面付DLL(拡張MFCDLL) を作成したのですが、うまく表示することができません。 どうすればいいか教えてください。 私がしたのは、exeはボタンだけ配置して、DLLの関数の呼び出しを行いました。 呼び出しはこんなかんじ __declspec(dllexport)void _main_show(void); DLLの方は画面を作って、 void main_form::main_show(void) { main_form::ShowWindow(1);//よくわからないので、とりあえず、1入れてみました } この状態で、画面がでてきません。 一応、私がしたことを書きます。 変なことしてると思いますが・・・ DLLの方は、新規作成して、リソースの追加でダイアログを追加して、 エディットボックスを右クリックして、クラスの追加でmain_formを追加しました。 このとき、コンパイルすると、main_form.cppに#include "test1.h" (プロジェクトの作成時名前がtest1です) でエラーがでたため、test1.hは新規にMFCアプリをつくってできた ヘッダーをコピーして貼り付けたら動くようになりました。 basicはちょっとしたことあるけどC++は初めてなのでわからないです。 解決方法をおしえてください。よろしくおねがいします。
救いようが無い
ものすごく初歩的なことで困ってます・・・ Visual Stdio.netを何故か知らないけど買っちゃったのですが、学校でやる初歩的なプログラム(?)の実行方法がわかりません こんな感じのプログラムです #include <stdio.h> main() { /*変数の宣言*/ int ten; printf("点数を入れてください "); scanf("%d", &ten); if( ten>=60 ) printf("合格"); else if(ten>=30) printf("再試験"); else printf("不合格"); } どうしたらいいか教えてください
マニュアルを読め、F5を押せ、吊ってこい
>>39 そんなゴミつくるのにわざわざ金出して買ったのか
そのレベルなら無料のやつでおつりが来るぞ
「とりあえず、1入れてみました」っていう発想が面白い...
iという変数をファイルに保存したいのですが int i; HFILE hfl; DWORD readsize,writesize; hfl=CreateFile("D:\\fl",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ, NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); ReadFile(hfl,&i,sizeof(i),&readsize,NULL); (この間にiの値をいじる) WriteFile(hfl,&i,sizeof(i),&writesize,NULL); CloseHandle(hfl); とやると初めてプログラムを終了したときのiの値は保存されるのですが 2回目以降の終了時の値が保存されない(1回目のまま)のですがどこが間違っているのでしょうか?
>>43 全然関係ないがCreateFileはHANDLE型を返すからhflもHANDLE型にしろ。
ああ、書き間違えました。ちゃんとHANDLE型にしてます。
>>43 > (この間にiの値をいじる)
でiが変わってないと予想
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL" #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" #import "C:\U\Office10\Office10\EXCEL.EXE" \ rename("DialogBox", "DialogBoxForExcel") \ rename("RGB", "RGBForExcel") のように記述し、VC でExcel 操作のツールを作成しています。 これを会社で使いたい(単に自分用に)と思うのですが、実は環境が ・自宅のPC:OfficeXP ・会社の自分のPC:Office2000 なのです。 このツールは、会社のPC でも動くのでしょうか? それとも会社のPCでコンパイルし直さないと動かないでしょうか? 現在、会社の自分のPCはまだ来ておらず、試せない状況です。 また、この自作ツールを会社のPCで使うこと自体はOKですが、 コンパイラ(VC)を入れるのはNGといわれました。
<補足> vbs や js などでは、 ExcelApp = new ActiveXObject("Excel.Application"); のように記述すれば、Office のバージョンを問わすにある程度は動くと思います。 VC でもこのような、Office のバージョンを問わすに記述することは 可能でしょうか? 上記の #import に書く方法だと、Office10(XP)限定のような気がして、 Office9(2000)の環境で動くか心配だというのが質問の主旨です。 長くなりすみません。
>>46 いや、それだと一回目(の保存)はうまくいく説明がつきません。
>>49 2回目以降も書いてるが、値が変わってないので変化が無く
保存されているように見えない、ってことじゃないのか?
ウィンドウプロシージャってどこ呼ばれているんですか? CALL BACKって割り込みのことだろうと思うんですが、いつ割り込んで来るんでくるんでしょうか。 猫でも分かるプログラミング見たけど、流れがつかめない僕は猫以下かもしれません。
DispatchMessage?
>>52 ウィンドウプロシージャはWindowsが呼び出す。だからCALLBACK
猫以下も猫以上も無いと思う。人間と動物の比較なんて無意味。 プログラムのことで猫を持ち出すなんて、 話のネタにされた猫族は陰口を叩かれているようなもの。 ネコクン「プログラムやるのは勝手だけど、それをボクら とくらべるなんてあんまりだよ。」 独り言なんで、気を悪くしないで。。。
>>55 けど、DispatchMessageでウィンドウプロシージャに送るって書いてあったよ。
>>57 postされたメッセージはそうだけどsendされたメッセージは違う。
んー・・・今一つ分からないんですが、メッセージキューってのは、 各ウィンドウに領域が確保されているんものなんですか?
英語がわかるほどの頭なら、ここまで苦労してません。 誰か和訳お願いします。
>>61 アメリカ人ならガキでも読める。つまりあんたはガキ以下か。
アメリカ人のガキは読めても理解できないがな。
VC++.NET2003です。 MFCアプリケーションを作ろうと思うのですが、 ウィザードからプロジェクトを生成すると必ずウィンドウが ついてきますよね?(SDI or MDI or ダイアログ) ウィンドウを無くすのにいい方法はありませんか?
ここは★初心者にVisual C++を教えるスレ★じゃなかったの?
>>66 だから入門書の範囲内で質問しろ
子供電話相談室じゃないんだぞ
>>57 DispatchMessageはWindowsが用意している物なんだから、
「DispatchMessageがウィンドウプロシージャを呼ぶ」ってことは「Windowsがウィンドウプロシージャを呼ぶ」と言えるんだよ。
SendMessageも同様。
>>65 まじでありがとうございました。
無事ダイアログをスマートに消せました。感謝。
>cl : コマンド ライン error D2016 : コマンド ライン オプション '/QI0f' と '/arch:SSE' は同時に指定できません SSEを有効にするときはPentiumのバグに目をつむれということでしょうか。 よろしくおねがいします。
>>70 SSE使えるプロセッサに例のバグはないからいいんじゃないの?
すみません、マウスでクライアント領域をクリックして、 クリックされた2箇所のポイントを線で結ぶプログラムを 作っているのですが、 その点と点を結んだ線がクライアント領域内に書かれた 他の閉じた図形の内部を通過しているかどうかを調べるには どうすればよいでしょうか。PtInRect等で 少しずつ調べるしかないのでしょうか。
>>73 その「閉じた図形」がどんなデータ構造してるのかわかんないのでハッキリ云えないけど
「線分が図形を通過してる」っていえば数学的には
二つ以上の交点求まればよさそうじゃない?
多角形相手に内包まで認めたりすると少々うっとうしそうな気がするけどそこは気合いで。
VCと関係ないな。
あっ 星型図形のひだりあし内部始点のみぎあし内部終端とかだと通過したことになんないか 交点が2の場合始点が図形の外部であるチェックが必要だ …なんかそんな話じゃないような気もしてきた
>>74 レス有難うございました、VisualC++固有の質問じゃなかったですね。
出直してきます、失礼しました。
.NET 2002です。 エディタ上でユーザー定義の型やクラスに色をつける方法を教えていただきたいです。
それを知ってるということは、 やりかた忘れたけど調べるのめんどくさいということか? そこまで知ってたら調べればすぐわかるはず
いまさらですが解決したので報告します。 はじめにファイルをreadしたあといったんCloseHandleで閉じて writeの前にもう一度開きなおすとうまくいきました。 何故これでうまくいくのかはよくわかりませんが(汗
1日前の日付、2日前の日付とかを算出するのってどうやるんでしょうか? 日付を数値データとして除算してもできませんよね 例) 2004年12月1日 int a = 20041201; a - 1 ←これやっても20041130とはなりません。当たり前ですが(汗)
>>80 SYSTEMTIME構造体を使えばいいんじゃない?
>>80 #include <stdio.h>
#include <time.h>
int main(void)
{
time_t before;
time_t now = time(NULL);/* 現在時刻 */
struct tm tm;
struct tm * tmp;
char buf[12];
tm = * localtime(& now);/* ばらし */
tm.tm_mday -= 5;/* 今日の5日前 */
before = mktime(& tm);/* 組み立て */
tmp = localtime(& before);/* もっかいばらし */
strftime(buf, sizeof(buf), "%Y%m%d", tmp);/* 文字列に変換 */
printf("%s\n", buf);
return 0;
}
>>81 >>82 無事できました。
#カレンダーを内部でもって・・・とか
#頭の悪いことを考えていました。
ありがとうございました!
VC++6.0 proを使っています。 ファイル >> 新規作成 >> プロジェクト で、プロジェクトの種類(Win32アプリとかコンソールとかMFCアプリだとか)を選択できますよね? このリスト&生成されるワークスペースのファイルを追加・編集するにはどうしたら良いでしょうか。 インストールディレクトリ全体から、「Win32 Application」等の文字列を探せばひっかかるかなー? とか思ってたんですけど、無理っぽ。
Custom AppWizard
>>85 サンクス。
これから色々試してみます。
……と思ったら、けっこうマンドクセ
まあ、やるしかないわけだが。
VC++6.0でビルドを行うとwarningはありますが、 エラーは出てない状態で「cl.exeの実行エラー」と 表示されビルドできません。どのような原因が考えられますか? 心あたりのある方、是非教えてください。
エラーでてんじゃん(ぼそ cl.exeってリンカだっけ? externとかそっち系だったりしてね。 ていうかエラーメッセージ全部出してみたら?
>>87 それだけだと答えようがない。
「cl.exeの実行エラー」でググれば原因がいくつか出てくる。
>>88 アホは黙ってろ
Visual C++とC#は違う言語ですか? Visual C++の勉強にはどの本がお勧めですか
ソース探せ 検索すればいくらでも出てくる そこから違うかどうかわかるだろ あと、そのくらいの違いもわからなけりゃ"VisualC++というソフト"を使い切れないだろう 関連書籍を買ったとしても途中で挫折が目に見えてる まずはC言語からはじめるべし
93 :
デフォルトの名無しさん :04/12/04 19:10:42
VisualC++6を使っているのですが、sambaで共有したドライブにソースを置いて コンパイルしようとすると、コンパイルできないのですが、 どなたか解決方法をご存じないでしょうか。 エラーは次のようなものです。 d:\cpp_qt\qt-2.3.0win\include\qvaluelist.h(415) : fatal error C1001: 内部コンパイラ エラー (コンパイラ ファイル 'E:\8966\vc98\p2\src\P2\p2symtab.c', 行番号 932) Qtというライブラリを使ってプログラミングしているのですが、Qtは直接的には関係ありません。 STLライブラリが関係してるような気がしますが、 ローカルドライブだとコンパイルできるので、やはり共有ドライブの問題なのでしょう。 環境は次のようなものです。 Windows機:Windows2000sp4 VisualC++6sp5 Linux機:PlamoLinux3.3 samba2.2.8
UNC
>>93 頭わるすぎ
こういう馬鹿が作ったプログラムを使う人間がかわいそう
初心者なんだから頭が悪いのは仕方ないだろ。 だいたいここは、そういう人間に教えてくれるスレじゃないのか?
初心者だって頭のいい香具師はいる。 それはさておき、ディレクトリのパーミッションがないなんて落ちはないよな?
質問する前に自分で確認出来ることあるだろ samba疑ってたりSTL疑ってるならそれらを変えるなりなんなりできるだろうが そもそもVC6を疑ってないようにも見えるが、 それがそもそもの間違いだと思うが
>どなたか解決方法をご存じないでしょうか。 >ローカルドライブだとコンパイルできるので、やはり共有ドライブの >問題なのでしょう。 自力で問題解決しているのでは?
&H64
質問です。 VBのShellの様にMFCアプリケーションから別EXEを立ち上げたいのですが、 それは可能ですか?
>>101 CreateProcessなりShellExecuteなりなんなり。
ありがとうございます。 調べてみます。 また、別EXEを起動してそれのプロセスが停止したかどうかを監視 したいのですがそれも出来るのでしょうか?
CreateProcessで起動し、終了したか確かめるだけならWaitForSingleObjectのタイムアウトを0にして呼び出す。
ありがとうございます。 タスク常駐プログラムを作成しようと思うのですが、それで行って みようと思います。
>>93 お前まさかイニシャルがT.Kじゃないよな?
107 :
デフォルトの名無しさん :04/12/06 10:47:08
VC.NETでCのstrlen()を使っているのですが、 なぜか値を返してくれません。 デバッグしてクイックウォッチで見てみると "CXX0017: エラーです : シンボル "strlen" が見つかりません" と表示されます。原因わかるかたいますか? string.hはインクルードしています。 ビルドしてもエラーや警告はでないです。
>>107 ビルドの出力見ている?
少なくとも成功か失敗かは出力されているわけだが。
>>108 はい、見ています。
ビルド : 1 正常終了、0 失敗、0 スキップ
と出力されており警告もでていません・・・。
strlen()ってstring.hをインクルードすれば普通使えますよね?;
関数と変数を混同してる予感 Cを勉強しなおせ
式エバリュエータ エラー CXX0017 シンボルが見つかりません 式中で使用されているシンボルが存在しません。 このエラーは、デバッグ中に変数を監視しようとして 変数の型キャストを試みると発生することがあります。
>>111 strlenの戻りがsize_t型でウォッチに失敗していたんですね・・・
ためしにstrlenの結果をint型の変数に代入させたら
ちゃんと取得できていました・・・。
お騒がせしました。ありがとうございました。
113 :
デフォルトの名無しさん :04/12/06 16:27:49
DDK初心者です。 USBデバイスを取り外すプログラムを、 CM_Request_Device_Eject関数を使用して作成しました。 スタンドアロンでは問題ないのですが、サービスから起動すると、 CM_Request_Device_Eject関数がエラーを返してきます。 エラーメッセージをみると、 "ネットワーク パスが見つかりません。ネットワーク パスが正しく、宛先のコンピュータがビジー状態ではなくオンになっていることを確認してください。それでもネットワーク パスが検出されない場合は、ネットワーク管理者に問い合わせてください。"と表示されています。 どなたか現象がわかる方はいらっしゃいませんか?
VC++6.0 ビットマップリソースを読み込んでDIBとして扱うにはどうすればよいのでしょうか?
115 :
デフォルトの名無しさん :04/12/06 18:30:55
VC++6.0 ビットマップリソースを読み込んでDIBとして扱うにはどうすればよいのでしょうか?
116 :
デフォルトの名無しさん :04/12/06 18:32:00
VC++6.0 ビットマップリソースを読み込んでDIBとして扱うにはどうすればよいのでしょうか?
118 :
デフォルトの名無しさん :04/12/06 21:51:54
VC++について1から詳しく教えてください。
このスレを「1〜」よく嫁ばいいんじゃないかな?
某所でも質問したのですが回答が得られなかったので・・・ VisualC++.netでプログラミングの勉強をしているのですが「変数の追加」で 追加した変数を簡単に削除するにはどうしたらいいのでしょうか? 6.0だと表示メニューのClassWizardから削除できるみたいなのですが.netだと見つからないので・・・
.net2003をカスタマイズしているのですが メニューバーに分類を追加するにはどうすればいいのでしょうか?
VC6.0(SP6)を使っています。 これで普通にビルドするとCPUが2個あっても1個しか使ってくれません。 Linuxのように2個のCPUで倍速でビルドする方法はありませんか?
>>125 そんなに遅いなら新しいパソコンに買い替えな
(´・ω・`)ショボーン あきらめます。
つーか、コンパイル単位がでかいのが問題だったりしない? 毎回毎回フルビルドし直すわけじゃないだろうし、その辺見直したら?
131 :
デフォルトの名無しさん :04/12/09 01:20:45
ここでのいいのかわかりませんが、質問させてください。 ある文字列をCStringArrayに追加していきます。 でも、同じ文字列は追加したくありません。 そのため、追加する際に CStringArrayの要素を頭から1個ずつ比較しています。 この時に線形検索しているのですが、 前提条件無しで最も早い検索方法はやはり線形でしょうか? もし、前提無しで早い検索があれば教えてください。 お願いします。
デカいプログラムだったらコンパイル何時間も掛かったりするの?
134 :
デフォルトの名無しさん :04/12/09 01:48:12
VC++6.0ってもう古いですか? VC++netに買い換えようか迷ってます。
VC++netに買い換えたら VC++6.0に戻ろうか迷うよ。
数年前、やっとVC++6.0を手に入れたのに 分け蟻で初心者のまま今日まで過ごしてしまったのでどうしようか迷ってましたが。 やっぱpさおdthれ90あhsth
>>131 要素数が少ないなら、開き直って全部舐めてしまうのが、かえって速いことも。
要素数が多いなら、とりあえずCMapを使ってみるのはどう?
すでにあるかどうかのチェックだけに使うのでもいいし、ついでに要素を指すポインタを格納すればウマー
>>134 VC6が欲しくて、MSDN付きのVS.NETを買いましたが何か。
なんでまたCStringArrayだとかCMapだとか…
使いたいから
141 :
デフォルトの名無しさん :04/12/09 20:45:03
すみません。 VC++.NETってSTLのstringとかvectorを 使えなくなったんでしょうか? #include <vector>しただけでも結構エラーがでてしまいます。
.NETアプリならね
>>139 100% pure MFC なんだよ。
テンプレートライブラリって意外と難しい。
使うのは簡単だけど使いこなすのはね・・・。
やたらオブジェクトサイズが大きくてパフォーマンスの悪いプログラムがあって、
調べてみたらテンプレートの使い方が不適切だった、なんてのがあったよ。
無理に背伸びして問題を起こすよりは、古いものを使うのも場合によってはあり。
とくに
>>131 さんのような質問をするレベルではね。
無難な方法を選ぶと成長しにくい罠 まぁ社会人で製品の納期守らなきゃいけないなら冒険できないんだろうけど…
>>144 CObArrayに(newした)ポインタ突っ込んだままdeleteしない阿呆の尻拭いする羽目になったときは、
全部vectorに書き換えた。
vectorだってnewしたポインタ突っ込んだらdeleteしなきゃいけないじゃん。
>>146 関係ないけど、ポインタを格納した場合、ついつい何時もの調子で
こう書いて、不正アクセスしてしまう漏れ…
for(vector<int*>::iterator i = v.begin(); i != v.end(); ++i){
delete *i;
}
for(vector<int*>::iterator i = v.begin(); i != v.end();){
delete *i++;
}
>>149 CObArrayに実体は突っ込めない。
(つД⊂)シクシク またわけわからいくなったので教えてください return 0L ; の0Lってどういう意味ですか・・・?
>>151 long(0)に同じ。関数の戻り値の型がlongなのだろう。
>>150 だからMFCにも実体を突っ込めるテンプレートはあるわけで、
MFCの代わりにSTLを使ったから解決したという事ではない。
単にMFCのクラス選択を間違ってるだけだ。
>>152 *^▽゚)v Thanks!!★彡
わかりました! ありがとー
155 :
デフォルトの名無しさん :04/12/10 14:15:52
HANDLEってなんですか?
>>153 誰か、MFCの代わりにSTLを*使ったから*解決したと書いていたのか?
ただ単に>145はSTLを使うようにして解決したと書いているだけだと思うが。
"
>>144 "って付けてコメントしてるのはなぜ?普通に考えて
>>143-144 の文脈に
乗ったコメントだと他の人は読むだろ。単発のコメントでないのだから「ただ単に」
とは言えないはずだが。
こっちの方がよさそうなんで同じ質問をコピペします↓ VC6.0で変数が増えてくるとメモリの中の変な所にアドレス割り振っちゃうんだけど これってバグですか?.NETだと直ってますか?
どこに変数割り振ろうがコンパイラの勝手
いや,なんつうかそういう意味じゃなくて書き込んではいけない 領域っぽいところに割り振ってるっぽいのよね。 大抵の場合変数のアドレスをメモリエディタで探して手動で書き換えても問題ないんだけど その書き換えてはいけないっぽい領域の変数の値 弄ろうとするとプログラムごとシャットダウンするのよ。 手動で書き込もうがプログラム通して書き換えようがシャットダウンするってのが 変だなと思って
>>161 お前の作ったプログラムのバグ
スタックオーバーフロー
>>157 、
>>158 MFC使って蛸なプログラム書くくらいなら最初からSTL使えばいいって話。
CSIZEやCRECT使うなとまでは言わんが、複素数ならcomplex使えよとか。
>>159 よもや最適化されているコードのデバッグしてないよな?
つーか、毎回PCがシャットダウンするのか小一時間(以下略
ぬるぽ例外のことだろ?
>>165 ぬるぽはNullPointerExceptionのことだから
"例外"を付けるのは間違っているよ。
>>163 だからあんたのvectorの話はMFCかSTLの問題じゃないんだって。
ダメな奴は最初からSTL使っても蛸なプログラム書くんだっつーの。
原因は結局よく分かりませんでしたがSP5当てたら直りました。
>>162 私は独学でプログラム勉強して2年たちます。
そろそろWindowマシンのメモリも小さいなと思えるほど
でっかいプログラム書くようになったのでそういうのも勉強しなきゃいけないと思うんですが、
Window or VC特有のメモリの取り扱い関係でなんかいい本とかサイトとか知りませんか?
もしスタックオーバーフローならコンパイラオプションでスタックの容量を増やせばいいだけ。
>>172 そうですね。ちょっと不気味なんで
とりあえずスタックサイズを変えてみました。
そういう問題じゃないと思う
176 :
デフォルトの名無しさん :04/12/11 17:33:44
はじめまして。 VCを最近はじめたものです。 (VC6.0 WinXP) 現在、MFC でイメージ(Rawデータ)をダイアログに表示しています。 その際、SetPixelVを画素分、ループでまわしていますが、 上から順に表示されて表示が遅く感じます。 (普通のJPEGを遅い回線で見る感じ?) あまり信用は出来ませんが、 表示速度は、timeGetTime() で測ったところ、 512 x 512 のイメージで 0.6秒ぐらいです。 この方法だと、この位の速度なのでしょうか? イメージビューアとかのスピードが理想なのですが、 他にいい方法があったら、教えていただきたいです。 よろしくお願いします。
177 :
デフォルトの名無しさん :04/12/11 17:56:44
STLの、std::list<std::string>を使うとwarningがたくさん出てしまうのですが、 #pragma warning(disable:4786)は一つのソースファイル内でしか有効でないらしく ほかのファイルをコンパイルするとwarningが出てしまいます。 すべてのソースで#pragmaを書けばいいんでしょうが、 プロジェクト全体でC4786のwarningを出さないようにするにはどうすればいいのでしょうか。
//
>>176 SetRedraw(false);
// 描画処理
SetRedraw();
// これで少しは早くならない?
// あ、InvalidateRect()が必要かも。
176 DIBイメージに変換してからBitBltしてやると1秒間に100枚はいけそうな希ガス。
>>176 メモリDCへ一度全て展開してから一気にDCへBitBltすれば
表示そのものは早く見えると思うよ。
VisualC++.netでリソースをテキストエディタで編集するにはどうしたらいいのでしょうか? リソースファイルをテキストエディタで編集してからリソースビューで見ると他のエディタで使用中となってしまいます
メモ帳
>>183 テキストエディタで編集が終わったのなら、閉じればいいと思うのだが。
非拘束型のエディタならその必要もないし。
テキストエディタで保存した瞬間にダイアログが出て面食らうけどw
>>185 テキストエディタでリソースファイルを編集したあとコンパイルしようとすると
リソース コンパイラの致命的なエラー RC1004unexpected end of file found
原因
テキスト ファイルの最終行に、ライン フィード文字およびキャリッジ リターン文字がありません。
っていうエラーが出てしまうんです。ラインフィード文字とキャリッジリターン文字についてヘルプで検索してみたんですが
よけいわからなくて・・・
>>186 そのレベルだったらテキストエディタで編集するのは諦めるのが無難だと思う。
つーか、改行コードが見えないエディタを使うなと。
そのメッセージの言うとおり、最終行に改行コードが入ってないのが原因。
#レスの最後には無駄に改行入れてるのにねぇ。
初心者です。わかりません。教えてください。 学校ででた問題が分かりません。 よろしくお願いします。
最終行にキャレットを持ってって 「ダダダダダッー」っと、Enterキーを叩く。 なおこの際に気合いが重要であることは言うまでもない。
char ss[80], str[80]; テキストボックスaから文字列を取得してss[]に格納 strcpy(str, ss); str[]の文字列をテキストボックスbに出力 上のような感じのことを C言語とVC++を使ってしたいのですが、 どのようにしたらいいのでしょうか? MSDNを検索してみて C スタイルの文字列に関連する CString の操作方法 C スタイルの Null で終わる文字列への変換 ここいらへんを調べてみましたが、 どのようにすればいいのかがわかりませんでした。 MSDNでの検索の仕方を教えていただけないでしょうか?
>>190 CWnd::GetWindowTextとCWnd::SetWindowText
わざわざssからstrへコピーする必要はないぞ
>>191 さんありがとうございます。
ですが、strcpy(str, ss)をしてから
strを色々と処理して
テキストボックスbに出力したかったんです。
変なとこを端折ったりしてすいませんでした。
>>192 べつにssに色々処理してもテキストボックスaに影響でないけど
なんか他に使うのかな?
190 名前:デフォルトの名無しさん[sage君のセンスを問う] 投稿日:04/12/12 22:35:48 おふざけは良いんだけど、真面目な質問とまぎらわしいのは迷惑だよ。
188のメル欄残りです。・・・ 最後に strcmp(ss, str); をする予定なんです。
>>179 さん
レスありがとうございます。
書き方が悪かったのか、うまくいきませんでした。
ツリービューとかに使われる手法なんですね。勉強になりましたm(_ _)m
>>180 さん
レスありがとうございます。
仰るとおり、DIBでの表示で速くなりました。
StretchDIBits() を使いました。
>>182 さん
レスありがとうございます。
これも参考になりました。
なんとなくスワップバッファみたいな感じですか。
みなさん、ありがとうございました。
>>190 そのメール欄は、ネタってことでよろしい?
とりあえず、無闇にstrcpyを使うな。
コピー元として使う場合は、CStringはNULLで終わる文字列と同じと考えていい。 CWnd::SetWindowText void SetWindowText( LPCTSTR lpszString ); 引数 lpszString 新しいタイトルまたはコントロール テキストとして使う CString オブジェクト または NULLで終わる文字列を指します。
LPCTSTRと型指定があるところにはCStringが入る LP"C"TSTRのようにCが付くのはconst型の意味であり 実用上は読み込み用のバッファとして使うものであるということ CStringも読み込み用のバッファとして使うもの CStringも書き込み用のバッファとして使えるがその場合は特別な操作が必要
>>197 さん、はいネタです。
>>198 さん
SetWindowText(LPCTSTR lpszString);
で検索してみます。
ありがとうございました。
201 :
デフォルトの名無しさん :04/12/13 17:54:13
VisualC++.netでバイナリファイルを読み込んで一覧を表示させるにはどうすればいいのでしょうか?
>>201 バイナリファイルを読み込んで一覧を表示させる、としか言いようが無い。
205 :
201 :04/12/13 19:50:49
>>204 どのようなプログラムを組めばよいのでしょう?
#include <stdio.h> int main(int argc, char *argv[]) { FILE *fp; if (argc <= 1) return 1; fp = fopen(argv[1], "r"); if (fp) { for (;;) { int ch = getc(fp); if (ch == EOF) break; printf("%2X ", ch); } fclose(fp); } return 0; }
208 :
デフォルトの名無しさん :04/12/13 20:38:26
VC7ですが、DLLを作るプロジェクトがあって、 デバッガでステップ実行するとソースと違う動きをするんですけど。 たとえば何も無いステートメントでぴょこん!と関数のおしまいに飛んだり。 DLLはビルド後コピーしてるんですけど、PDBと同じ場所にないといけないの? あるいはオブジェクトファイルとかIDBファイルとか、なんかそういうのも見ていて それが古いのかな?もちろんリビルドしてるんですが。 一応タイムスタンプ見るとDLLもPDBも同じ時刻に出来てるんです。
>>208 よもや最適化されたコードをデバッグしていないだろうな。
最適化ですか。そういえばちゃんとチェックして無かったです。 とりあえずそれを見てみます。 ありがとうございました。
手書きMFC(?)で例えば5秒ごとに発生するメッセージ・・みたいなやり方があれば教えてください OnTimer使ってみましたが動きませんでしたorz 誰か教えてください・・・
手書きMFC?
何分初心者でなんて書いていいか分かりませんでした AppWizardじゃなくてWin32 Applicationという意味です・・すいません
for(i=0;i<j;i++) { wa+=data[i].ope; printf("wa %f\n",wa); } printf("wa %f\n",wa); の実行結果が 〜 wa 140015878.223137 wa 140015982.283134 wa 140016086.353134 wa 140016190.423134 wa 140016294.493134 wa 140016398.563133 wa 140016502.623131 wa 140016606.683128 wa 140016710.743126 wa 140016814.803123 wa 32642638.803123 ←for文をぬけると減少してしまいます。なぜでしょうか?
for(i=0;i<j;i++) { wa+=data[i].ope; if(wa>33990000) { ji=wa; } } printf("wa %f\n",wa); ブサイクなやり方で自己解決 もっとスマートなやり方ない?
あっ、UFOだ!
>>217 そこだけ提示されても。少なくともそこで使われている変数の定義も見せてくれ。
int i, j = 0; float data[1280516]; double hasi,ji,wa=0; 〜 for(i=0;i<j;i++) { wa=wa+(data[i]); if(wa>33990000) { //printf("wa %f\n",wa); ji=wa; } } if(wa>33990000) { wa=ji; } printf("wa %f\n",wa); です。
222 :
デフォルトの名無しさん :04/12/14 10:54:11
10個のスレッドが同時に実行されるプログラムを作っています。 それぞれのスレッドは起動すると100秒経過後に特定の処理をします。 100秒後を検出するのに最適な方法はどれだと思いますか? (1) WinAPIのSetTimer()で100秒後を通知させる (2) WinAPIのSleep()で100秒後まで処理を停止させる (3) 他の方法を使う
int i, j = 0; for(i=0;i<j;i++) uso800
>>222 (2)ってスレッド分けする意味あんの?
100秒待ってからスレッド作ったら?
>>223 なんでやねんw
>>224 あります。理由は下のとおり。
>>226 各スレッドは起動するとそれぞれ個別の初期化処理をしてから
100秒間後まで待機します。
よって100秒後からスレッドを作るのは無理そうです。
SleepがSetTimerを呼んでそうだから(1)がいいのかな?
Sleepだとウィンドウプロシージャに記述したり
コールバック関数作らなくていいけど・・・
100秒に期待する精度はどのくらい? それぞれのスレッドが再開する時間差があっても大丈夫?
100秒後までスレッドが応答不能になってもいいのならSleepが簡単だけど。 必要な条件を提示してくれないとコメントしづらい。
そんな悩むほどの問題? sleep入れるぐらいなら3分もかからんだろ それでダメなら違う方法
【質問:ダイアログを簡単に表示させたい】 VC++ .net2003 でプログラム開発をしています。 アプリケーションでMFCを選択して、ダイアログベースで開発しています。 このときダイアログ関係のファイルは xxxDlg.cpp xxxDlg.h xxx.rcみたいのがでてきますが、ダイアログの画面を編集する ときに、リソースビューからxxx.rc->Dialog->IDD_XXXX_DIALOGと選択して出している のですが、毎回だと面倒なのですが、これを簡単に表示させることはできますか? 少なくともxxxDlg.cppとこのダイアログは関連してるのだから、xxxDlg.cppを表示 させているときにショートカットとか押せばそれに対応するダイアログが出せれば いいし、またはソリューションを開くで開けば必ず最初にでてくるようなのでもいいの ですが、そういうことができますでしょうか?ご教示ください。
xxx.rc をテキストエディタで直接編集するのが一番速い
>>231 マクロでも組めばできるんでない?
つーか、ダイアログエディタを開いたままソリューションを閉じれば
次回開いたときに開いてくれると思うけど?
1度開いたやつは閉じないかぎりウインドウの一覧にあるだろ
235 :
デフォルトの名無しさん :04/12/14 16:56:40
char szWinName とかってウィンドウクラス名 WINAPI の外で大体宣言されているんですけど、 これはなぜですか?
スルーですかっっ!? 悲しいです
>>235 ひょっとしてint WINAPI WinMain()のこと?
中でしか使わないなら中でもいいよ
238 :
デフォルトの名無しさん :04/12/14 17:53:36
なんでグローバルにしてるのか?っていう意味か?
239 :
デフォルトの名無しさん :04/12/14 18:44:46
メニューバーの表示文字"編集(E)"とかを動的に変えたいのですが いい方法はないでしょうか? 環境はVS.NET + MFCです
>>239 MFCならON_UPDATE_COMMAND_UI
じゃなかったCMenu
色々調べたりやってみたりしたけどSetTimer()の使い方が分かりません・・・ 誰か簡単な例で教えてくだせぇぇぇorz
>>218 for(i=0;i<j;i++){
wa+=data[i].ope;
printf("wa %f\n",wa);
printf("for文内でのiの値\n");
printf("i=%d\n", i);
}
printf("wa %f\n",wa);
printf("for文外でのiの値\n");
printf("i=%d\n", i);
iの値をチェックしてみろ。
意味ないこと書いた 逝ってくる
orzTimer
>>238 さん、その通りです。グローバルにする意味はあるのでしょうか?
>>237 さんのおっしゃるよう、中でもいい気はするんですが。
どんな意図があるのでしょう。
中でしか使わないときと そうじゃないときがあるから に決まってるじゃ内科医
スレッドで100秒停止する話だけど・・・ (1) そのスレッドのための初期化処理を、そのスレッドで行う必要が本当にあるのか。(ある場合もある) (2) SetTimerして呼ばさせる関数もしくはWM_TIMERは、そのスレッドである必要が本当にあるのか? 自分だったら、ガイシュツだけど、まずSleep。 何か理由があってSleepが不可の場合、その他の方法も慎重に選択しなきゃいけないと思うが・・・ タイマーは有限のリソースなので無闇に使いたくない。 あと、ワーカースレッドにウィンドウ持たせたくない。 なので、同期を使う。 ワーカースレッドが初期化を完了したらWaitForSingleObject等でスレッドの実行を止める。 んで、他のウィンドウを持っていて淀みなくメッセージポンプが回ってるウィンドウでタイマーをセット。 (できれば、いちいちタイマーを起動せず、他のタイマー処理と共有させたい) 100秒経ったら、そのスレッドがWaitForSingleObjectで待っているオブジェクトをシグナル状態にする。
>>248 ペゾルドは中でやってる。
グローバルでもローカルでも#defineでもリテラルでもなんでもいい。
スタティックだからローカルにこだわるメリットはない。
とても参考になりました。 このような質問に答えてくださって、ありがとうございました。 嬉しかったっす。
253 :
デフォルトの名無しさん :04/12/15 18:36:57
1+2+3,1+2-3,1-2-3,1*2-3,・・・・・・のように符号を変えていって値を 求めたいのですが、 char fugou[4]={'+','-','*','/'}; for(a=0; a<=2; a++){ cout<<1<<fugou[a]<<2<<fugou[a]<<3<<endl; } COUTからどのようにして答えを出せばいいのでしょうか?
すいませんC++スレと間違いました
255 :
デフォルトの名無しさん :04/12/15 23:10:28
>>249 別にいいよ?北朝鮮と戦争になったら
自衛隊に志願するから。おまえも工作員なら
工作員らしく行動しろよ。馬鹿丸出しkkkk
すみません。書く所 間違えました。
このスレには北朝鮮の工作員がいる悪寒
258 :
デフォルトの名無しさん :04/12/15 23:19:11
実行画面のコマンドプロンプトに スクロールバーが付いてなくて1画面分の情報しか見れないのですが 何とかならないでしょうか? OSはMEです。
dir |more のような感じ
Meなんて使うな!
dir /p
>>260 やっぱMEの仕様ですか?
どうにもなりませんかね?
263 :
デフォルトの名無しさん :04/12/16 06:45:24
ビットマップファイルを合成したいのですが、どうすればいいですか? 合成というのは、二つの.BMPファイルを読み込んでそれらを繋げて一つ のビットマップにしようとしています。
・ω・)つ ペイント
ビットマップ 論理演算
つなげるっつっても □□ □ □ とかあるじゃん。 どんな風につなげるの? ファイルの形・サイズは同じでいいんだよね。
>>263 ペイントを2つの画像分開いて、範囲選択モード(点線のやつ)にして、
片方をコピーしてもう片方に貼り付ける。
たしか、貼り付ける位置は指定できなかったから、貼り付けられる方の画像を、
貼り付ける画像ぐらいのスペースをあらかじめ開けておく。
後は、範囲選択モードでドラッグしてつなげればいい。
あっ、スレ的に言うとプログラムでって事か。すまんorz。 ちょうどゲームのチップセットを同じような感じで並べていたから・・。
270 :
デフォルトの名無しさん :04/12/16 15:11:57
>266 そうです。ファイルの形・サイズは同じでいいです。 繋げ方はAのパッチのとBのパッチを上下に並べて繋 げようとしています。 あと、どなたかビットマップの加工でよいホームペ ージがあったら教えていただけませんか?
271 :
デフォルトの名無しさん :04/12/16 15:14:50
今度はD3DXCreateSphereでメッシュを作り、 そのメッシュの頂点を動かしてみようと思ったのですが、 また強制終了して原因がよくわかりません。 下のようにしてみましたが、何所かおかしいでしょうか。 何か根本的に間違ってますでしょうか? LPDIRECT3DVERTEXBUFFER9 pVB; WORD* pV; DWORD FVFSize D3DXVECTOR3 *v; //球メッシュ生成 D3DXCreateSphere(pd3dDev,1,20,10,&m_pMesh,NULL); FVFSize = D3DXGetFVFVertexSize( m_pMesh->GetFVF() ); //fvfのサイズを取得 m_pMesh->GetVertexBuffer(&pVB); //頂点バッファ取得 pVB->Lock(0,0,(void**)&pV,0); //頂点バッファロック //+y方向に移動してみる for(int i=0;i<m_pMesh->GetNumVertices();i++) { v = (D3DXVECTOR3*)(FVFSize * i); v->y+=1; }
くだらない質問ふえたな そろそろ学校休み?
>>270 >264のメール欄にあるライブラリなら応用例はいくらでも出てくると思うが。
274 :
デフォルトの名無しさん :04/12/17 00:00:33
おにいちゃん、助けて下さい。 MFCでダイアログベースのアプリをいい感じの所まで作ったのですが、 メニューに表示される文字を、コード上で後から変更する必要が出てきました。 UPDATE_COMMAND_UIハンドラでのSetText()は効かないし・・・ 今さらFormView等で作り直せないです・・・ 多少回りくどい方法でも良いので、メニューの文字変えられませんでしょうか(><)
>>274 CMenuのメンバ関数を使ってできないかな?
>>275 動的に追加はできました。
これからCMenuでいろいろ試して見たいと思います。
ありがとうございます。
278 :
デフォルトの名無しさん :04/12/17 06:32:30
フリーのVisual C++を使おうとしているWinプログラマ初心者です。 あるソースを 落としてきてビルドしようとしているのですが、途中でNMAKEが以下のエラーを 吐きました。 NMAKE : fatal error U1071: cycle in dependency tree for target 'c:\Documents' ファイルはC:\Documents and Setting\washi\..... の下に置いているのですが、 ファイルパス名に空白が入っているのをNMAKEがチョチョギっているような 気がします。 どう対処したらよいのでしょうか?
nmakeってフリー版に付いてたのか? 前,雑誌で付いてないって書いてあって手出してないんだが。
>>278 ・
>>280 ・ショートネームのパスで作業する。
・c:/usrでも作ってそちらで作業する。
284 :
デフォルトの名無しさん :04/12/17 11:34:35
C++は全くやったことない初心者です。 前任者がVC++で作ったプログラムを修正しないといけないんですが、 バージョンが「VC++ v7.10」って書いてあるんです。 これってVC++.NET2002なのか2003なのか教えてください。 あとVC++.NETとVC++.NET2002って同じものなんですか?
VC7.1 == 2003 VC7.1 == 2003 VC7.1 == 2003 VC++.NET == VC++.NET2002 VC++.NET == VC++.NET2002 VC++.NET == VC++.NET2002
286 :
デフォルトの名無しさん :04/12/17 11:57:07
287 :
284 :04/12/17 12:01:14
>>285 ありがとうございます。
でもそうすると、今VC++.NET2003でコンパイルエラーとなっている
のが理由がわかんないんですが...
JVM g_jvm;
って部分に
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(32) : error C2146: 構文エラー : ';' が、識別子 'g_jvm' の前に必要です。
ってエラーが出てるんですが...
>>286 DICOM画像用のライブラリかなんかがあるんじゃないの?
少なくともVC単体では無理。
>>288 上記の遅いってのはVCでdllを作りVBにハンドルを渡そうって思っています。
早くする方法ないかなと思ったのですが・・・。
下記のファイルを初めから指定する方法は無理なのでしょうか?
291 :
デフォルトの名無しさん :04/12/17 13:03:45
>>289 いや、山ほどあります。
いちばん最初のがこれで。
とりあえず最初の6行だけ
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(32) : error C2146: 構文エラー : ';' が、識別子 'g_jvm' の前に必要です。
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(32) : error C2501: 'JVM' : 識別名を宣言するのに、型が指定されていません。
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(32) : error C2501: 'g_jvm' : 識別名を宣言するのに、型が指定されていません。
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(35) : error C2143: 構文エラー : ';' が '*' の前にありません。
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(35) : error C2501: 'ServiceCFG' : 識別名を宣言するのに、型が指定されていません。
c:\work\KibanSeigyoSvc\KibanSeigyoSvc.cpp(35) : error C2501: 'g_pConfig' : 識別名を宣言するのに、型が指定されていません。
32行目
JVM g_jvm;
35行目
ServiceCFG *g_pConfig;
JVMとかServiceCFGが定義されてる ヘッダファイルをインクルードしなさい。
293 :
デフォルトの名無しさん :04/12/17 13:25:41
>292 インクルードは #include "stdafx.h" としていて、stdafx.hの中で #include "JVM.h" #include "servicecfg.h" としているんですが。
突然なんですが、この式をstatementにするにはどうやって記述すればいいでしょうか? rate*(1+rate)N payment = ━━━━━━━━━ ((1+Rate)N-1) ちなみにNの部分は自乗です。 どうもわからないのでよろしくお願いします。
>>290 >早くする方法
CreateDIBSection()で描画領域と同じ大きさのHBITMAPを作成する。
HBITMAPをSelectObject()したHDCにSetPixcel()していく。
OnDraw()ではそのHBITMAPを使って描画する。
>>294 payment = rate*pow(1+rate, N) / (pow(1+Rate, N) - 1);
こういうこと?
>>293 リビルドすればOKだったというのはよくある話。
298 :
デフォルトの名無しさん :04/12/17 14:07:23
>>297 リビルドすると違うエラーが出ますねえorz
とにかく全面的にVC++.NET2003のコンパイル方法がわからない
んでお手上げ状態です。
MSDN見ても何が何やら...
どこかにコンパイル方法について書いてあるHPってありませんか?
本だとやっぱり公式解説書がいいんでしょうか?
299 :
デフォルトの名無しさん :04/12/17 14:10:25
好きな数字を10入力して 最後に一番大きい数字を出力する プログラムなんですが 最後に出力される数字が明らかにおかしいです。 プログラムのどこがおかしいでしょうか? 実行は可能なんですが・・・ 以下に書きます。
>>295 ありがとうございます。がんがってみます。
よかったら初めから該当ファイルをLOADする方法が分かりましたら教えてください。
301 :
299 :04/12/17 14:10:45
#include<stdio.h> void main() { int numbers[9]; int i; for(i=0;i<9;i++) { printf("好きな数字を入力して下さい。\n"); scanf("%d",&numbers[i]); } for(i=0;i<=9;i++) { if(numbers[i]>=numbers[0] && numbers[i]>=numbers[1] && numbers[i]>=numbers[2] && numbers[i]>=numbers[3] && numbers[i]>=numbers[4] && numbers[i]>=numbers[5] && numbers[i]>=numbers[6] && numbers[i]>=numbers[7] && numbers[i]>=numbers[8] && numbers[i]>=numbers[9]) { printf("一番大きな数字は%dです。\n",numbers[i]); break; } } }
302 :
デフォルトの名無しさん :04/12/17 14:36:09
>>299 プログラムの間違いは,
printf("一番大きな数字は%dです。\n",numbers[i]);
ここで,number[i]のiって,forで使用しているから必ず9でしょ.
だから出力は最大値とか関係なくnumber[9]が出る.
最大値を求めるならば,
int max = intの最小値;
int j = 0;
for(i=0;i<=9;i++) {
if(number[i]>max) {
max = number[i];
j = i;
}
}
printf("一番大きな数字は%dです。\n",numbers[j]);
こういうのが普通と思うよ.
間違いを指摘する方が面倒臭い。 #include<stdio.h> int main() { int max = 0; int i; for (i = 0; i < 9; i++) { int num; puts("好きな数字を入力して下さい。"); scanf("%d", &num); if (num > max) { max = num; } } printf("一番大きな数字は%dです。\n", max); return 0; }
>>294 なんですが、以下の問題が解けません。どうか力を貸していただけないでしょうか?
よろしくお願いします。
Problem: 以下の処理を実行する対話型のC++プログラムを書いてください。
Input: cinを使って、以下のプログラムにキーボードからの次のデータおよび入力を、
Coutを使って以下のように出力するコードを書きなさい。
a.the interest rate
b.the number of payments
c.the amount of the loan
次の式を使用して、ローンの毎月の支払額を計算してください。
Rate * (1+Rate)N
Payment = ━━━━━━━━━━━━ * L
((1+Rate)N-1)
Rate は monthly interest rate の事で、年間12%で、月間にすると1%
N はnumber of payments の事
L は amount of the loan の事
Output: 出力フォーマットの例は次に記します。次と同じ出力が出来るプログラムを完成させてください。
Loan Amount : $ 10000.00
Monthly Interest Rate : 1%
Number of Payments : 36
Monthly Payment : $ 332.14
Amount Paid Back : $ 11957.15
Interest Paid : $ 1957.15
質問が続いているところ申し訳ない。 自分がCreateProcessしたプロセスを安全に終了させる(終了して貰う)にはどうすればいい? 少なくともTerminateProcessでは巧くいかないらしいことと、タイトルでウィンドウを特定できないことはわかっている。 自分がCreateしたんだからプロセスハンドルやプロセスIDは判っているので何か手はあると思うのだけど。
306 :
299 :04/12/17 14:51:43
>>305 PostThreadMessage()でWM_QUITを投げてみたらどう?
MFCならCWinApp::OpenDocumentFile
>>305 「TerminateProcessでは巧くいかないらしい」
これのソースは?
>>311 死ぬには死ぬんですが、資源の後始末ができないのです。
で、CreateProcessで得たスレッドIDに対してPostThreadMessageでWM_QUITを投げる方法でよさそうです。
>>310 確かに・・・。必死こいて調べたら何とかできました。
ただdllを作成したかったのでシリアライゼーション部分も変更しなければなりませんね・・・。
(↑Serializeもまだあまり分かってない・・・初心者なもんで・・・。)
やりたいことは、VBからファイルを指定してdllを呼び
DICOM画像を表示したいってな奴を作りたいのです。
どうやったら・・・助けてください
>>299 のネタに付き合う香具師は、みんなわざとボケてるのか?
int numbers[9]; // ← 10にしろ
for(i=0;i<9;i++) // ← i<10 か i<=9 にしろ
>>302 さん、エディタにペーストしてタブつけてみればわかるよ。
VC6から.netに乗り換えたのですが STLを使ってコンパイルした物をバイナリエディタで開くと failure@ios_base@std@@・・・・ のようなゴミ?が沢山くっつきます。VC6のときはくっつかなかったんですが これは一体なんなのでしょうか?また消す方法はありますでしょうか?
>>317 ついたら何かまずいのか?
何がしたいのかよくわからん。
名前空間とかそういうもののようですが、 Releaseビルドなのにデバッグ情報が残っているのではないかと思うのですが。 それって、まずくないですか?
すいません、質問です(初心者的質問で恐縮です) 現在、自分はVC++.NET2003でフォームアプリケーションを作ろうとしていて ビルドを何度行っても、成立しません・・・(当然か) ソースコードは間違っていません。 エラー内容が↓ エラーの結果が 'resgen.exe' より返されました。(エラー番号なし) でした。試しに、何も生成してないフォームアプリをビルドしても このエラーが出てきます。おそらく、自分の開発環境自体に問題があるのでしょうが さっぱりわかりません。MSDNで関連事項を調べてもさっぱりなのです・・・ このエラーわかる方、いっらっしゃいましたら、ご指導ください お願いします
エスパー伊藤君出番だよ〜
あははは。ま、週末だから運がよければ現れてくれるかもね。
>>320 インストールに失敗してるんじゃないの?
以前はできたのだが・・
ソースくらい出せよ
ユーザ権限が違うとか。
328 :
デフォルトの名無しさん :04/12/18 17:26:59
英語版のVCで日本語入れると文字化けしてしまうんですけど解決法 ってあるんでしょうか? やっぱ日本語版買わないといけないんでしょうか。
そんなことはない
コンパイラとかは同じだろ 日本語の部分はテキストエディタで編集すればいけるはず
もしかするとフォント設定すればいいだけかも
それふぉんと?
( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
楽しいね
両手をたたくと
痛い、
337 :
デフォルトの名無しさん :04/12/18 20:24:41
328です。 説明不足でした。VC++上では日本語きっちり表示されるんですけど、 コンパイルすると化けて出るんです。
化けて出るんならお払いすればいいじゃない
まずはソースを出せ。 話はそれからだ。
340 :
デフォルトの名無しさん :04/12/18 20:32:08
328です。恥ずかしながらどの部分のソースを出せばいいか分かり ません。
全てをアーカイブしてその辺りのアップローダに放り込め。
リソーススクリプトの中で言語やフォントを指定してるから
そういえば外国語のソフトを日本語化して香具師もいるわけだし たぶんソフト板で聞けば教えてくれるだろ
344 :
デフォルトの名無しさん :04/12/18 22:46:54
328です。 みなさんに頂いたレスを参考にいろいろ試した結果解決しました。 例えばダイアログにボタンを配置した場合、リソースビューに出てくる ダイアログのリソース名がIDD_DIALOGS_DIALOG[English(U.S.)]となってた ので、プロパティーで言語をJapaneseにしてみましたところ解決しました。 アプリウィザードの時には言語をEnglishにしか指定できないようになって いるので、個別のリソースで指定できるとは思っていませんでした。 日本語版を買おうか真剣に迷っていたので助かりました。 ありがとうございました。
345 :
デフォルトの名無しさん :04/12/18 23:23:10
VC++6.0sp6を使用しています。 ダイアログエディタでダイアログにコンボボックスを配置して適当なデータを 入れた状態でダイアログのテストをしてみるとコンボボックスの選択欄が 下がらず、テストで入れたデータも選択できません。 コンボボックスの設定もいろいろ替えてみましたが、やはり下がらないの ですが、どこらへんに気をつければいいのでしょうか?
三角のところをびろーーーーーんと伸ばせるよ 簡単だけど文章じゃうまく説明できない
347 :
デフォルトの名無しさん :04/12/18 23:48:16
>>346 レスありがとうございます。
とりあえずびろーんと下げられました。
・・・と思ったら新たな問題が・・・・
for( i = 0; i < gDevNum; i++){
SendMessage( GetDlgItem( hWnd, IDC_LIST1), LB_ADDSTRING, 0, (LPARAM)gAllDev->description);
SendMessage( GetDlgItem( hWnd, IDC_COMBO1), LB_ADDSTRING, 0, (LPARAM)gAllDev->description);
}
のコードでIDC_LIST1のリストには文字が表示されるのですが
IDC_COMBO1のコンボボックスには文字が表示されません。
コンボボックスはソートにチェックを入れているのでこれで問題ないはずなんですが、
なぜ表示されないのでしょう??
>>347 コンボボックスはテキスト+リストだから
SetWindowTxtするか、リストを選択してやる
>>349 SetWindowTextもリスト(charのポインタ配列でいいのかな?)も試してみましたが
いずれもうまくいきません。
MSDNライブラリを見ると、_lrotr という intrinsic があるようなのですが、 ROR命令が生成されず、無視されてしまいます。 VC6.0 SP6 と VS.NET 2003 の両方で試しましたが、NGでした。 これを使えている方いらっしゃいませんか? ちなみに、インラインアセンブラで書けばROR命令は使えるのですが、 コンパイラがインラインアセンブラで書いた行を越えての最適化をできなくなるらしく、 出力されるコードが遅くなってしまい、>>と<<を使った代替方法のほうが速かったです。
>>352 最適化オプションに /Oi を付けるかReleaseビルドにすればよろし。
>>353 ありがとうございます。
まさか・・・と思って、rorだけするテストプログラムを書いてみたら、ROR命令が生成されました。
間違いを探します。
/OiをつけなくてもReleaseのデフォルト(実行速度)では、ROR命令が埋め込まれました。
/Oiをつけると、前後で最適化が行われなくなりました。
大ポカしていました。 _asm ror x, n をコメントアウトして、 _lrotr(x, n) と書いてしまっていました。 x = _lrotr(x, n) と書き直してうまくいきました。 すみませんでした。
質問なのですがMFCを使ったプログラミングの本で入門者にお勧めの物ってありますか? C、C++、WinAPIは一通りやってある程度理解できたのですが「C++ユーザーのためのWindowsプログラミングの基礎知識」と言う本を 読んだのですがさっぱり理解できなかったもので… もしかしたらスレ違いかもしれません。すいません
入門者向けなら林晴比古氏ので良いかな。 C、C++、WinAPIを一通りやってある程度理解できたのなら 簡単に理解出来るだろう。 ただ、本当に簡単なサンプルしか扱っていないので それでまともなプログラミングが出来るようになるかと言われると 返答に困るが。コントロールの使い方とかMFC全般について万遍なく 触れているから入門には良いと思う。
遅くなりましたが ありがとうございました。
Spy++でDOS画面の メッセージ を スパイ しようと思いました。そしたら、 『指定の ウィンドウ は スパイ できません。 Windowsは、この ウィンドウ に関する メッセージストリーム への アクセス を許しません。』 と、なります。 ではどうやって、メッセージを受け取って処理すれば、いいのでしょうか?
>>360 何のメッセージを欲しいのか知らんが、難しいんで内科医?
364 :
デフォルトの名無しさん :04/12/21 22:38:32
Visual C++ 6.0 で C4067 のエラーが出ました。 たとえば、次のようなコードでこの警告が発生します。 #endif NO_EXT_KEYS /Ze オプションを指定してコンパイルするか、次のようにコメント デリミタを使用すると、この警告が発生しません。 この /Ze オプションはどうやって指定すればいいのでしょうか?
366 :
デフォルトの名無しさん :04/12/21 22:46:11
そうします。
本来はエラーになってもいいはず。
368 :
デフォルトの名無しさん :04/12/22 00:45:42
かなり初歩的とは思うんですが どうにも自分では解決できそうにないのでご教授くださいまし・・・ 心理テスト風に複数の質問(switch文)からさらに複数の質問へ、というのがどうも出来ません。 どうしたらよいのでしょう・・・
>>368 心理テスト風に複数の質問(switch文)からさらに複数の質問へ
というプログラムを書く。
370 :
デフォルトの名無しさん :04/12/22 01:29:00
理屈は分かるんですが・・・ なぜかうまくいかない。 自分のやり方だと二回目の選択肢は選択する暇も無く、全部さらしてしまいます…
caseの最後にbreakが無いんじゃないの?
とりあえず、ソースでも晒したらどうだい?
switchのcaseの中にswitchを入れ子にしようとしてる? なら、中カッコで括ってみ。
374 :
デフォルトの名無しさん :04/12/22 02:03:44
#include <stdio.h> #include <conio.h> main() { char neta; int A;printf("質問文\n"); printf("a: b: c:>"); scanf("%c",&neta); switch(neta){ case'a':printf("ハズレ\n");A=2; break; case'b':printf("ハズレ\n");A=2; break; case'c':printf("ハズレ\n");A=2; break; default:printf("あたり\n");break;} getch();if(A==2){printf("GAMEOVER\n"); }else{printf("次の問い\n");} return 0;}
375 :
デフォルトの名無しさん :04/12/22 02:04:36
こんな感じのやつにswitch文を追加したいのです・・・
インデントが汚すぎる。 多分scanfとgetch()の後にrewind(stdin)入れとけば解決する予感・・・
377 :
デフォルトの名無しさん :04/12/22 02:27:40
指摘ありがとうございます! さっそくやってみようと思います!
378 :
デフォルトの名無しさん :04/12/22 02:32:06
解決しました!! 本当にありがとうございました!!
会議中に ClientApp を クライアントアププ って読んだら激しく笑われました。どうしてくれるんですか?
380 :
デフォルトの名無しさん :04/12/22 08:38:49
フォームのサイズを変更したときに、フォーム内に貼り付けているピクチャボックスのサイズをフォームの大きさに合わせて拡大する方法を教えてください。 あと、ボタンの位置をフォームの右端で固定したいです。フォームのサイズを変更してもボタンが右端にくるようにするにはどうしたらよいでしょうか?
>>380 最初のクライアント領域のサイズを覚えといて
増えたり減った分だけコントロールのサイズを調整
ボタンの場合はサイズじゃなくて位置を直す
382 :
デフォルトの名無しさん :04/12/22 08:54:59
>>381 早速レスありがとうございます
ピクチャボックスの方はGetClientRect()で現在のフォームサイズを取得して、
CWnd::MoveWindow()でうまいことやればいけそうですね
ボタンの方はどうやるのかしら?
ボタンも同じ方法でいけました。ありがとうございましたーぁぁぁ CWnd *myButton1 =(CButton *)GetDlgItem(IDC_BUTTON1); myButton1->MoveWindow(cx-100, 10, 90, 20);
>>383 今更かもしれんが、ResizerでCodeGuruを探すと参考になりそうな代物が出てくると思うよ。
#一個や二個なら自前で調整してもいいけどね。
char buffer[10]; strncpy(buffer, "AAA", 3); strncat(buffer, " ", 25); strncpy(buffer, "BBB", 3); 文字列にスペースを25個追加する時に、いちいち" "と 記述しないといけないんでしょうか? VBならSpace(25)でできますが・・・ うまい方法があったら教えて下さい。
うげ。修正します・・・。 char buffer[32];
387 :
デフォルトの名無しさん :04/12/22 11:38:45
クラスにイベントハンドラを追加したらClassViewからそのクラスが消えちゃったよぅ(><) cppファイルはちゃんとあって、イベントハンドラも追加されてるます。 どうやったらClassViewにクラスを表示させられますか?
さらに訂正します。ここはVC++スレなので他所へ書きます。 お騒がせしました。
こんにちは VC++version2003ですが、 VC++6にあったClassWizardが見当たりません。 どこにあるのでしょうか? (ちなみに、VC++6の場合、メニュー→表示→ClassWizardにあるのはいうまでもないです)
>>390 そういう超基本的なことは
まずヘルプ嫁
馬鹿なら本買え
>>390 バージョン2003からは、表示→ClassWizardはなくなりましたよ。
なので、自分で追記するしかないです。
めんどうですが。
>>389 おおおおおおお
さんくす!!!!!!!!!!
>>390 VC++6のClassWizardは
VC++.NETのプロパティーウィンドウ内に移りました。
>>391 教えないんじゃ、このスレッドの存在意義ないじゃん。
出て行きなさい。
>>397 いやいや、ただ教えるより自分で調べるクセ付けさせたほうが
本当の意味で初心者向けのスレと言える。
>>397 は?
ここのスレの質問の半分ぐらいは俺が答えてるんだけど
器の差ですな
>>397 なんだその説明は
MSDNにちゃんとした説明があるだろ
>>385 std::string str;
str += "AAA";
str.assign(25, ' '); //CStringならstr += CString(' ', 25);
str += "BBB";
●クルマが自転車にはねられた!9台目
ttp://hobby7.2ch.net/test/read.cgi/car/1103695847/ ・・・・・・
,,,-''" ̄" ゙̄`''ヽ,
,.-'" ̄ ̄" ̄`ヽ, ノ/ u ヽ そ、そんなことはありませんよ…。
/゙ ノ -- u --ヾ l ● ● i \
/ ,/ ● ● | i ´(_▼_ ) u ; ゙ヽ
`ヽ,,_,,( u ( _▼_ )`/ ヽ |∪| _ノ ヽ,,___,ノ
./ ヽノ ヽ,/ ヽノ ⌒ヽ,
/_,, / ̄ ̄ ̄ ̄/ l |
_____(__)/ I.N.U /_____/ /__
\/____/ (u ⊃
メモリデバイスコンテキストに書き込んで 画面更新用スレッドでInvalidateRectを送って WM_PAINTでBitBltして画面デバイスにメモリデバイスから 描画しているんですが、描画量が多くなってきたら 画面に変なゴミが残って、描画されなくなってしまいます。 ビットマップ転送の為に途中で作ったデバイスコンテキストは 削除しているのですが、何か心当たりあられましたら お教えください。
>>405 マルチスレッドみたいだけど、複数スレッドからGDIにアクセスしていいんだっけ?
>>406 すみません、スレッドは1つだけで、
そこから表示するビットマップの位置情報を
更新したりする関数を呼び出した後、メモリデバイスに
描画する関数を呼び出して、最後にInvalidateRectといった用に
しております。描画用スレッドという言葉に語弊がありました。
失礼しました。
>>407 DCにSelectObjectしたものを元に戻さず削除してないか?
409 :
デフォルトの名無しさん :04/12/22 22:08:10
VC.net キーボードとマウスからの入力はWM_KEYDOWNなどを受け取るので分かりますが、 ゲームのコントローラーからの情報はどうやれば分かるのでしょうか。 spy++でやってもコントローラーからの情報は一切受け付けません(出力を全て選択していますが該当するものは元々なさそう)。 コントロールパネルのゲームコントローラーは正常に受け付けています。 ゲームのコントローラーは[PS2のコントローラー]-[コンバーター(USB接続)]-[PC]と繋いでいます。
1行目VC++.netの間違いです
>>409 スレ違い
自分で作っててわからんはずがない
>>408 確認したのですが、HPEN等は、
HPEN hPen,hOldPen;
hPen=CreatePen(PS_SOLID,1,RGB(0,0,0));
hOldPen=SelectObject(hBufferDC,hPen);
//ここで描画しています。
SelectObject(hBufferDC,hOldPen);
if(hPen)DeleteObject(hPen);
という様にやっております。
もしかしてhOldPen等も削除しなければいけないでしょうか。
後、ビットマップを描画する為に一時的に
オフスクリーンデバイスコンテキストに互換性のあるhMDCを
作成して、それをビットマップをロードしたhMBITMAPに結びつけて
オフスクリーンに転送しているのですが、
これを削除する時にも何かしなくてはいけないでしょうか。
長文すみません。
>>412 SelectObjectで選択オブジェクトを変更したDCを破棄/解放するときは
元の状態に戻さなければならない。
DCに選択させたままのオブジェクト(ビットマップ、ペン等)を破棄してはならない。
>>413 という事は、この場合でのhOldPen等は削除してはいけないのですね。
夜分遅くにすみません。色々試してみますね。
415 :
デフォルトの名無しさん :04/12/23 08:59:55
クイライアントアププっw
416 :
デフォルトの名無しさん :04/12/23 09:00:50
クライアントアププっ
初心者に優しくないスレだなぁ。 正しく「アップップ」だって教えてあげればいいじゃん。
クライアントアーッ!! ああーっ!!
こうして『クライアントアププ』スレが出現し 変貌を繰り返し、今の「ぬるぽ」へ
App ってあっぷっぷなの?プゲラウヒョーwww あっぷっぷうぃざーどwwwwwwうはwwwww
ビルドの時に以下の表示が出てIDEからビルドできません。 何が原因なんでしょうか… LIBCD.lib(a_env.obj) : error LNK2019: 未解決の外部シンボル __imp__GetEnvironmentStrings@0 が関数 ___crtGetEnvironmentStringsA で参照されました。 Debug/EuclidStep2.exe : fatal error LNK1120: 外部参照 1 が未解決です。
どっかでひろってきたソースがコンパイルできない というなら完全なスレ違い。 自分で書いたソースなら何か心当たりがあるはず
>>422 いや、自分の書いたソースが駄目だったんでVS付属のサンプルソースでも試して見たんですが駄目でした。
どのプログラムもビルドできないんです…
>>423 とりあえず本でも買って勉強してください。
それでわからない時は掲示板で質問するといい。
>>423 プロジェクトに〜.dllを参照する為に必要な〜.libをリンクしなければならない
機能を使っているかもしれないので、確認されてみてはどうでしょう。
無意味にクライアントアププage〜
427 :
デフォルトの名無しさん :04/12/23 18:55:18
はっきりいって初心者にVisual C++は使いこなせない 猫に小判 入門書の付録のコンパイラでも使ってなさい
では何故にVC厨と言われてしまうのか
派閥というか VCを基準に発言すれば他から反感かうのは当たり前
自己解決しました。 ランタイムライブラリが原因だったようです。 マルチスレッドDLLにリンクしたらエラーが出なくなりました。
>どのプログラムもビルドできないんです… なんだこれは 生まれて初めてVCでコンパイルしたようなこと言ってて かまととか
>>431 来てない間にレスあったんですね…orz
>>425 その通りでした、こんな質問にレスをしていただいて有難うございます。
横からすまんがありがとう、
>>425 。
サンプルをDLしてもデバッグで失敗するのはVC++のバージョンが違うからだと思っていたけど、libのリンクが関係してたのを初めて知りますた(;´Д`)
CMDでCを初めてコンパイルに成功したような感動を味わっているので思わずカキコ
>>434 たいていのサンプルはそのままビルドすればOKですが
VS付属のサンプルなら当然なにもしなくてもOKだし
追加でリンクが必要ならそう書いてあるのが普通
なんか根本的に間違ってるのでは?
だいたいマルチスレッドDLLなんて追加でリンクするもんじゃないですよ
>>435 MSDNの英語版は書いてあることすら知らなかったりするけど、一般サイトのサンプルは検索して出てきたところには無くて別のページにあったり・・
それともサンプルのcppを開くときの旧バージョン〜変換するときにそういったデータが飛んでいるのかな?
437 :
デフォルトの名無しさん :04/12/24 05:47:26
任意で3点(x1,y1)、(x2,y2)、(x3,y3)の点を打ち、その点から中心点(cx,cy)と半径(r)を求め、 そして、基準点を(cx+r,cy) として(x1,y1)と(x2,y2)と (x3,y3)の各々の角度を計算し、 あと (x1,y1) から(x2,y2) を通り(x3,y3)までの円弧を求めるプログラムを作成していただ けないでしょうか。
>>437 意味不明
スレ違いだし。
宿題スレ行っても放置されるかも。
439 :
デフォルトの名無しさん :04/12/24 16:01:10
すみません さっき別スレに書いてしまいました VC++でMFCのプロジェクトを作っているんですが、 CSVファイルを読み込んで、1カラムずつ 取得してファイルの最後まで読み込むというロジックをつくりたいんです @ Readfile で、 file のEOF 検出ってできますでしょうか? A 1カラムずつの取得ってどうやるんでしょうか? readfile だと、バイト取得しかできないのでしょうか? 2点お願いします
こんにちは。 プログラム全体の最適化オプション(/GL)をつけると、 アセンブリコ-ドが出来ないのですが、何故でしょうか。
>>439 MFCならCFile使うんじゃないか?
>>441 うるせー場可。困ってんだよ。
もうこねーよ ケッ(゚Д゚)パ-ヤ
444 :
439 :04/12/24 17:23:38
>>442 なるほどです ていうか使ったことがなかったので
想像できませんでした
ちょっと、調べてこちらで作ってみます
ありがとうございました
>439 ADOでできなかったっけ? じゃなきゃ、1レコード毎(CRLF検出)にカンマ区切ってやるしかない?
>445 そういう方法があったのね。 なるほど。
VC6の比べて、VC7.1のコンパイラが異様に遅いのですが、何か工夫できることはありますか?
>>448 メモリを増やす。
ディスクを置き換える。
CPUを(マザボごと)置き換える。
諦める。
>>448 バックグラウンドで動いてるエロゲーを終了させる。
スタートアップメニューからエロゲーを削除する。
>>449 ディスクアクセスはほとんどないので、メモリもディスクもネックになっていないと思います。
タスクマネージャで見るとCPU使用率が100%なので、本当にコンパイラが遅いのだと思います。
CPUは・・・たしかに今時1GHzじゃダメですか・・・。VC6なら十分だったのに・・・。
>>450 そもそもエロゲーなんてインストールしてません。
453 :
デフォルトの名無しさん :04/12/25 10:44:33
WindowsXPユーザーです。フォルジュに rtf2latexのソースらしいものが落ちています。 これを拾ってうちのXPマシンで使いたい。 いえには、購入したのにインストールしてないVC++の CDがあります。こいつをインストールして、うえのソースを コンパイルするとRTF。。。。使えるようになりますか? C言語系統はまったく初心者です。VBとかのコーディングは外部 装置を制御するためやらされてますが。 教えてください。
454 :
デフォルトの名無しさん :04/12/25 10:46:26
http://sourceforge.net/projects/rtf2latex2e rtf2latex2e is a program that translates RTF (rich text format) files into LaTeX
files. It translates text formatting, tables, figures, and equations. The resulting
LaTeX files are quite readable and suitable for editing.
License: GNU General Public License (GPL)
Programming Language: C
Topic: Word Processors
Translations: English
Project UNIX name: rtf2latex2e
Package Version Date Notes / Monitor Download
rtf2latex2e-win 1.0fc1 November 26, 2000 - Download
>>454 誤爆?文盲?
UNIXと書いてあるだろ
456 :
デフォルトの名無しさん :04/12/25 12:41:53
すまん。なかにバイナリファイルがあって、そこにRTFファイル 投げ込むだけでした。
>>451 Debugビルド同士を較べても遅い?
Releaseビルドなら7.1の方がより最適化が細かいから遅いのも仕方ないと思うけど。
#つーか、問題になるなら分割すりゃいいじゃん。
>>452 ソース晒してみ。
私の場合は無限待ちじゃなくてPollingで実装した記憶がある。
458 :
デフォルトの名無しさん :04/12/25 13:32:38
↓のコードでリソースファイルに書いたバージョン番号などを取得しようとしても失敗します。解決策を教えていただけないでしょうか static BOOL OnInitDialog( HWND hWnd) { char filePath[_MAX_PATH]; char labelText[256], verInfo[512]; char *buff; UINT size; GetModuleFileName( (HINSTANCE)( GetWindowLong( hWnd, GWL_HINSTANCE)), filePath, sizeof(filePath)); GetFileVersionInfo( filePath, NULL, sizeof(verInfo), verInfo); VerQueryValue( verInfo, "\\StringFileInfo\\041104b0\\ProductName", (LPVOID*)buff, &size); strcpy( labelText, buff); SetWindowText( GetDlgItem( hWnd, IDC_PRO_NAME), labelText); VerQueryValue( verInfo, "\\StringFileInfo\\041104b0\\LegalCopyright", (LPVOID*)buff, &size); strcpy( labelText, buff); VerQueryValue( verInfo, "\\StringFileInfo\\041104b0\\CompanyName", (LPVOID*)buff, &size); strcat( labelText, buff); SetWindowText( GetDlgItem( hWnd, IDC_COPYRIGHT), labelText); VerQueryValue( verInfo, "\\StringFileInfo\\041104b0\\ProductVersion", (LPVOID*)buff, &size); sprintf( labelText, "Version %s", buff); SetWindowText( GetDlgItem( hWnd, IDC_VERSION), labelText); return TRUE; }
どんな風に失敗しているのかわからないので 対処のしようがありません。 ↓次の方どうぞ
460 :
458 :04/12/25 16:44:20
これは失礼を VerQueryValue( verInfo, "\\StringFileInfo\\041104b0\\ProductName", (LPVOID*)buff, &size); でbuffに何も入ってきません(NULLになる)。
>>460 > GetFileVersionInfo( filePath, NULL, sizeof(verInfo), verInfo);
成功してるのか?
462 :
458 :04/12/25 17:19:54
GetFileVersionInfo( filePath, NULL, sizeof(verInfo), verInfo); 関数は成功しているようです。(戻り値は1でした)
>>460 > \\041104b0\\
言語とコードページの指定は本当にあっているのか?
464 :
458 :04/12/25 17:40:53
言語コードやその後ろのProductNameなどはリソースファイルからコピペしたもので、 間違いはないと思います
MSDNライブラリからのコピペ 一度このとおりにやってみたら? -------------------------------------------------------- // 列挙された言語とコードページを格納するために使われる構造体。 struct LANGANDCODEPAGE { WORD wLanguage; WORD wCodePage; } *lpTranslate; // 言語とコードページのリストを読み取る。 VerQueryValue(pBlock, TEXT("\\VarFileInfo\\Translation"), (LPVOID*)&lpTranslate, &cbTranslate); // 各言語とコードページのファイルの説明を読み取る。 for(i=0; i <(cbTranslate/sizeof(struct LANGANDCODEPAGE)); i++) { wsprintf(SubBlock, TEXT("\\StringFileInfo\\%04x%04x\\FileDescription"), lpTranslate[i].wLanguage, lpTranslate[i].wCodePage); // i 番目の言語とコードページのファイルの説明を取得する。 VerQueryValue(pBlock, SubBlock, &lpBuffer, &dwBytes); }
>>452 それで普通。書き込み一回で二回の通知がなされる。
一回だったらむしろ異常。
使用している言語はVC++6sp6です。
うちのMSDNライブラリには
>>465 さんのコードが見当たりません。
また、このコードを実行してみましたが、
VerQueryValue(pBlock,
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);
でサイズ(cbTranslate)が0byteになります。もちろんforループもすっ飛ばして実行されません。
なんでなんだろうorz
>>457 Debug版のビルドでも遅いです。
分割してみたら、だいぶ速くなりましたが、まだまだ圧倒的に遅いです。
VC6では/Zmオプションをつけないとヒープ不足のエラーが出るので気がついたのですが、
VC7からコンパイラが動的にメモリを確保するようになって、大きなソースの処理時間が指数関数的に伸びたのかも。
そりゃ関数が阿呆みたいにでかいんだろ。
>>468 もっとカルシウムを摂取したらいいんじゃないの?
>>467 pBlock バッファを正しく初期化するために、VerQueryValue を呼び出す前に、
GetFileVersionInfoSize と GetFileVersionInfo の各関数を呼び出してください。
473 :
デフォルトの名無しさん :04/12/25 23:40:46
ダイアログを必ず最前面にポップアップ表示したい思い、 プロパティのSetForegroundをTrueに設定しています。 親ダイアログが最小化されている時は、親は最小化のまま 目的のダイアログだけがポップアップ表示されますが、 親ダイアログが他の画面の裏に隠れている時は、目的の ダイアログと一緒に表に表示されてしまいます。 後者の場合に目的のダイアログだけを最前面に表示させる ことは無理でしょうか?
>>469 ちょっと大きくてたくさんあります。
>>470 気が短いのは確かですが、10時間越えるのでコンパイルは寝ている間にやってます。
翌朝になっても、まだ終わってなかったりするので、ちょっとイライラしています。
>>471 アドバイスありがとうございます。
プリコンパイルヘッダに含まれる範囲に共通部分を移してみたら、すこし軽くなったような気がします。
そもそも、何か重大な間違いをしているような気もします。
面白いなぁ。あるプロジェクト(プロジェクトファイルと言う意味でなく仕事の)に含まれる 全プロジェクトをフルビルドしても恐らく一時間も掛からないんだがなぁ。 CPUクロックが1GHzでディスクも余り回ってないならメモリもそれなりなんだろうし… どうやったら10時間もコンパイルさせ続けることができるのか寧ろ教えて欲しいや。
>>474 10時間超えるコンパイルて……実はSystem-CからFPGAデータコンパイルしてるとかじゃないよな??
477 :
デフォルトの名無しさん :04/12/26 04:37:51
ソースやワークディレクトリがネット上にあって300bpsで繋いでるとか
分散コンピューティングをお勧めする
マルチポスト違反で本当に済みません。
ttp://pc5.2ch.net/test/read.cgi/tech/1102900418/l50 で相手していただけなくなりまして。。。
>>コンソールアプリとしてプロジェクトを作り直したら?
そうしてみます。変更できないんですね。。。。
「変更」する方法はありますでしょうか?
別の質問を立て続けに申し訳ないですが、
test = delay_line(1, &wire_data0_bus[0][0], 0, 2, 256);
で、testの返値の設定が無いといけない理由と、
”&wire_data0_bus”と2次元配列での先頭アドレス渡しが出来ない理由を教えていただけないでしょうか。
だいぶスレの主旨から外れてしまっていて恐縮です。
>>475 どうしてこんなにコンパイルに時間がかかるのか、わかったらよいのですが・・・。
リリース版だとEXEのサイズが40MBくらいなのですが、
デバッグ版だと220MBありまして、メモリ2GB積んでいても実行することすらできませんでした。
(何のエラーも表示されずに終了してしまう。)
>>476 Visual C++って、FPGAの論理合成(でしたっけ?)に使えるんですか?
>>477 いいえ、ローカルのHDD上です。
>>478 その手がありましたか。
でも、寝て待ちます。(いや、起きてるけど。)
何かが根本的に間違っている悪寒
多重インクルードと見た
プログラミング自体の話題ではないんですが、複数に関数のまとめ方にアドバイスをいただけないでしょうか。 沢山の関数を扱う場合、一つのヘッダ・ファイルとして、インクルードするのが普通なのか、そうではないのかも分かっていないのですけれど。 同じプロジェクトの別関数ファイル”hoge.c”を他ファイルで呼びたい場合、どうすればよいのでしょうか。 プロトタイプ宣言でしょうか? 環境はVC++ 6.0です。よろしくお願いします。
hoge.h に宣言書いて hoge.c に定義を書く。 使う場合は hoge.h を inlcude して関数呼ぶ。
>484 >485 レスありがとうございます。 >hoge.h に宣言書いて プロトタイプ宣言ということでしょうか? >Cスレ行けば? 行こうと思います。 ありがとうございました。
>>480 仕事で書いているプログラムは(一本が)Releaseで100MB、Debugで500MBくらいざら。
でもコンパイル時間はフルビルドでも分単位。
#つーか、ビルドの出力を確認する人間の方が間に合わない程度。
メモリ128MBでも問題なく起動できる。
なので、>481に同意。
HDDのDMAが効いてないとか。
ヘッダファイルの中身書いてみそ
Releaseで100MBって、中間ファイル?それとも 一個のexeファイル?
ソース内でランタイムライブラリの指定(/MD, /MTなど)の方法を教えてちょんまげ
pragma
その後の続きが欲しいんです…^^;
pragmaではcomment(linker,"〜")でリンカオプションしか指定できないのでは…? コンパイルオプション設定出来たっけ
>>491 実行ファイルだけで、100MBだったら凄すぎですね。
一体何ステップあるのかと… いや、他のリソース部分が大きいのかな?
しかしみなさん、相当でかいアプリ書いてますね。
>>497 #pragma optimize で、最適化方法をコンパイラに指示出来る。
msdn
場違いな質問が続いたせいか、ぱったり客が途絶えたな
VS.NET 2003をインストールしてから、 PCのシャットダウンに異様に時間がかかる(何かのタイムアウト待ちをしてる?)のですが、 何か修正パッチ等は出ていますか?
> プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 > ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 > Javascript は Web 制作板、CGI は Web プログラミング板へ。 > 業界談義、愚痴はプログラマ板へどうぞ。 > ゲーム関係の話題はゲーム製作板へどうぞ。 > ネタ、板とは関係の無い話題はご遠慮ください。
505 :
デフォルトの名無しさん :05/01/02 21:43:18
>487 ステップ数どれくらいのプログラムですか?
猫でも〜のページのVisualStudio.net設定のとこ、Bisualって書いてるのはつりか?
>506 イヤです。
VC++6.0のSDKで、タスクバーにアイコンを表示させるのはどうやるのでしょうか? また、入力フォーカスを持ってなくてもWM_KEYDOWNなどのメッセージを受け取る方法はどうやるのでしょうか?
510 :
デフォルトの名無しさん :05/01/03 08:54:15
ShellNotifyIconとNOTIFYICONDATA構造体を使うんだけど、注意点が多い。まず、N~I~D~には現在3までのバージョンがあって、アプリがサポートするサイズを事前に指定すべきこと。可変長構造体を使うと良い。
511 :
デフォルトの名無しさん :05/01/03 09:02:59
次に、タスクバーが破壊され再構築された時にRegisterWindowMessage(TEXT("TaskbarCreated"))のメッセージが届いたら、アイコンを再び追加すること。
512 :
デフォルトの名無しさん :05/01/03 09:09:18
>509 RegisterHotKeyでホットキーを設定するとよい。ユーザがホットキーを指定するためのコントロールも用意されている。
513 :
デフォルトの名無しさん :05/01/03 09:18:50
こうしたN~I~D~の管理は大変なため、クラスでカプセル化するのが普通。
N~I~D~ って略し方ダサいね。
NID.だと初心者が間違え易い。門門のやり方でいいだろう
門門ってなに?
bob gates
タスクバー? タスクトレーだろ?
Oracle.exeでも29MBだぞ。100MBなんてコンパイルの仕方間違ってる (多重インクルードとか)か、根本的に設計ミスしてるだろ。
きっと凄い大きな配列とか持ってるんだろ。
リソースがでかいのかもしれない。
>>520 素人的考えかも知れんが配列をいくら確保しようが
バイナリファイルの大きさは変わらんのじゃ?
実行時のメモリ使用量が大きくなるだけで
さらに素人的な発想で、固定の文字列埋め込みまくってるとか?
なんかヘルプ的なものをソースの中に埋め込んでるとか
>バイナリファイルの大きさは変わらんのじゃ? 実は書いた直後にそんな気がしたがやり過ごそうと思った。
ソースを読むとき青旗のブックマークをよく使ってるんですけど a.cppにつけたブックマークからb.cppにつけたブックマークに飛ぶにはどうすればいいんでしょうか? a.cpp内のブックマークにはぴょんぴょん飛べるんですが、別のソースのブックマークには飛べません。 そういうもの?
> プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 > ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 > Javascript は Web 制作板、CGI は Web プログラミング板へ。 > 業界談義、愚痴はプログラマ板へどうぞ。 > ゲーム関係の話題はゲーム製作板へどうぞ。 > ネタ、板とは関係の無い話題はご遠慮ください。
>525 めんどくさい。堅い事言うな。書く人間がいなくなるぞ。
>527 バカ。俺みたいな厨がいなくなるわけねーだろ。 まともな人間のことだよ。
HELPに書いてあるじゃん 調べるのめんどいか馬鹿で探せないかどっちかだろ
ブックマークのない文書開くと ボタンがグレーになるな Windowsの基本も知らん初心者か?
このスレであってると思った。 よくわからんがスマンカッタ。 もうちょっと調べてみる。
すみません、教えてください。 GetForegroundWindowを使って、アクティブなウィンドウ(MSDNでは 前景ウィンドウという表記でした)に対して操作を行おうとしています。 アクティブなウィンドウが切り替わったときにそれを追尾するためには タイマーを使って常時監視しておくしかないでしょうか。 それとも何かメッセージが発行され、それをチェックすればよいので しょうか。
メッセージフックでWM_ACTIVATEを拾えば?
>>533 早速ありがとうございます。
フックは使ったことがないのですが、いただいたキーワードで
やり方を調べてみます。
色々ありがとうございます 検索したら猫でもわかるにありました・・・ まだまだ初心者なので試行錯誤しながら頑張ってます どうしても分からないことがあったらまた教えてください・・・
フックも知らなくて卒論書けるか?
MFCで分割ウィンドウを作って文字を表示して、選択とかはできるけど書き込みはできないように するにはどうしたらいいんでしょうか?Iriaの下の部分みたいな感じです。 CEditでReadOnly使ってやろうとしたら、分割ウィンドウを作るにはCViewの派生クラスじゃないと いけないみたいなんです。でもCEditViewにはそういう機能がなさそうで困ってます。。
エスパーよろしく。
フォームビューにCEditはっつけ
>>537 GetEditCtrl().SetReadOnly(TRUE)
で、どないや?
ある特定のプロジェクトのmain.cppを編集後に上書き保存したり コンパイルをしようとすると100%VC++がフリーズするようになりました cppを作成しなおして貼り付けたり 全て手打ちで全て打ち直してもダメでした どうしたら直るんでしょうか?
プロジェクトファイルがぶっ壊れてるんじゃないの?
>>542 プロジェクトを作成しなおしたら固まらなくなりました
これもも試すべきでした
ありがとうございました
質問なのですが幾ら探してもクラスウィザードの表示方法がわかりません… ヘルプもググったりもしましたが全然表示方法については書かれていませんでした…。 バージョンは.net 2003です
>>545 ついこの前、このスレでほとんど同じ質問があった。
しかもMSDNに非常に詳しい説明がある。
VC7系のClassWizardは、慣れるまでしばらく使いにくいね。 VC6のClassWizardは、ここはClassWizardがいじるからね、というコメントの印の中を変更するのに、 VC7系のClassWizardは、それを無視して、いちばんうしろに追加してくれたりして、最初びっくりした。
VC7って何?
>>550 言いたいことはわかる
だがインストールすると
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7
というパスになるのだよ
>551 そうなんだ。どうもです。
素だったのか
554 :
デフォルトの名無しさん :05/01/05 22:49:52
179*くらい感じでした。
555 :
デフォルトの名無しさん :05/01/05 23:12:04
くっ くそう… あちこちで貼られると逆に興味そそられるではないか…
HPENからそのペンの色を取得することはできますか?
>>558 HPEN pen; /* 取得済みとして */
LOGPEN lpen;
int r,g,b;
GetObject(pen, sizeof(lpen), &lpen);
r = GetRValue(lpen.lopnColor);
g = GetGValue(lpen.lopnColor);
b = GetBValue(lpen.lopnColor);
ありがとうございました
561 :
デフォルトの名無しさん :05/01/07 04:05:19
こちらのスレに誘導されてきました。 VC++6.0を使用しています。 コーディングしているとたまに、全く反応が無くフリーズしたような状態になります。 フリーズ時間は数十秒〜1分くらいで、発生頻度は一定していません。 全く出ないときもありますし、30秒に1回くらいのペースで発生するときもあります。 自動保存にしては頻度が高すぎます。 フリーズするのはVCだけで、他のソフトは普通に操作できます。 CPU負荷にも変化は無いので、CPU100%で重くなっているというわけではないようです。 OSはWinXP SP2ですがSP1の頃からずっと発生していました。
> プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。 > ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。 > Javascript は Web 制作板、CGI は Web プログラミング板へ。 > 業界談義、愚痴はプログラマ板へどうぞ。 > ゲーム関係の話題はゲーム製作板へどうぞ。 > ネタ、板とは関係の無い話題はご遠慮ください。
>561 >562はスルーしていいよ。
>562 >プログラム・ソフトの使い方 ここにVisual Studioが含まれないのは暗黙なのですが・・・ まあちゃんと決まりを読んでる君はちょっと偉いけど。 解釈が間違ってたね。どんまい。
566 :
デフォルトの名無しさん :05/01/07 09:27:38
>561 win側の問題かも。空きメモリ、空きディスク容量、CPU時間、ウイルスとスパイウェアのチェック、ディスクのデフラグ状況など確認せよ
>空きメモリ、空きディスク容量、CPU時間、ウイルスとスパイウェアのチェック、ディスクのデフラグ状況など確認せよ ここはPC初心者板か?
>やはり再インストールかな。 ここはサポセンですか?
569 :
デフォルトの名無しさん :05/01/07 15:56:06
Cの文法に関わってくるかも知れないんですが、 VisualC++ でプロジェクトを作っていて、 ヘッダファイルに struct { int a; char b[16] } yamada; struct yamada s_yamada; と宣言して、他のCPPファイルでこのメンバにデータを書いたり 読んだりしたいのですが、error LNK2005 がでてしまいます。 プロコンパイルヘッダを使用しない設定でデバッグコンパイル しているんですが、文法的に変なのかどうか教えてください
570 :
569 :05/01/07 15:59:20
追記
ヘッダには、
>>569 のように構造体宣言し、
cpp ファイルの関数内で、s_yamada.a とか s_yamada.b とか
いうふうに使っています(typedef 宣言等はしておりません)
ヘッダに構造体の実態宣言すると、
構造体宣言が、だぶったりするんでしょうか?
>>569 C++では構造体を構造体を使うときにstructは不要。
struct yamada {int a; char b[16]; };
yamada s_yamada;
あとヘッダでそういうことをしたければ
extern yamada s_yamada;
としておいて、どこかのソースで実体を宣言する。
572 :
569 :05/01/07 16:11:36
>>571 様 御返答ありがとうございます
struct yamada {int a; char b[16]; };
yamada s_yamada;
はヘッダに書いてはいけないということなんでしょうか?
ヘッダに書くとしたら、
extern yamada s_yamada;
のみで、別のクラスの関数に、
struct yamada {int a; char b[16]; };
などを宣言するという形になるんでしょうか?
//yamada.h struct yamada { int a; char b[16]; } extern yamada s_yamada; // a.cpp #include "yamada.h" yamada s_yamada; /* 以下s_yamadaを使うソース */ // b.cpp #include "yamada.h" /* 以下、s_yamadaを使うソース */ s_yamadaを実際に定義するのはa.cppだけでいい。 後はヘッダのextern yamada s_yamada;を通して、 a.cppで定義された実体を読み書きできる。 もちろん、a.cppに限定する必要はなくて、 ヘッダを利用するソースのいずれかに定義されていればいい。
授業でひらがなの読み書きとか 足し算引き算とか質問されたらムカつくだろ
575 :
569 :05/01/07 16:40:55
>>573 御丁寧にありがとうございました。
実践してみたら、うまくいきました
確かに、複数箇所で実態宣言していたので、
重複したエラーというメッセージが表示されていたようです
ありがとうございました。
576 :
デフォルトの名無しさん :05/01/07 16:51:24
>>575 この板にCやC++のスレが山ほどあるの知ってる?
そういう質問をなんでわざわざここで聞くかな
class A{}; class B : public A{}; class C : public A{}; ... B b; C c; A& a = true ? b : c; error C2446: ':' : 'C' 型から 'B' 型への変換ができません。 なんでこんなエラーが出るんでつか?
コピペ?
>>577 int型じゃないとダメというのだっけ。
>>578 自分で書いたものですが・・・似たようなテンプレあるのでしょうか?
>>579 ありがとうございます。でも過去ログになってて読めませんでしたorz
>>580 真偽のそれぞれの結果の型が同じ場合にはちゃんといくんですよ・・・
>>581 VC++と関係ない話題で恐縮ですが、
3項演算子は型を合わせる
>>577 前スレより
>コンパイラは x ? y : zという演算の型を,
>yとzの型を元にいくつかの複雑なルールに従って決めようとします.
>そしてyとzの型が関係の無い型のポインタ型であるときには,
>この演算結果の型を決めることが出来ずコンパイルエラーとなります.
A& a = true ? (A&)b : c;
こうすればいい。
>>582 >>583 なるほど、確かにおっしゃられてるような挙動になってますね。
ただ、私は三項演算子って、生成されるバイナリコードは
if-else が内部的に展開されてるような先入観を持ってしまっていたので
変だなー、と思ってしまった次第です。
左辺値への代入の前に先に右辺値の型をコンパイル時に
確定させるようになってるから例のコンパイルエラーが出てるんですね。
実行時に意図しないキャストが内部で起こってて余計なオーバヘッドが発生しそうですが。
これってC++仕様で規定されてるのでしょうか・・・
VC++と関係ない話題で恐縮です
>>584 dynamic_cast以外はキャストのオーバーヘッドなんて無に等しい。
>586 無ってどのくらい?お前の感覚なんて何の信頼性もないんだから、 定量的に表現してくれる?
非動的なキャストのコストはコンパイル時にのみ払われる。
>588 1秒以下って曖昧すぎんだけど。つか、1秒を無と言ってるの?
>>589 多重継承とかしてるとオフセット演算が入る可能性がある。
>590 ポインタ以外のキャストってあるの?
>595 うぉー、知らなかった。
>>596 キャストしてよかったね。
まぁ、Catch&Releaseでよろしく。
598 :
デフォルトの名無しさん :05/01/08 15:21:59
Visual Studio .NET theSpoke Premium Version 2003 (要 学生認証 ) これって学生中だけ使えて学生卒業したら使えないってこと?買いかな?
>598 卒業する年の12月31日までだよ。卒業するまでは使えない。
>599 卒業する年の前年の12月31日って書かなきゃおかしいか。スマン
>>598 卒業後も使えるよ。
公式ページぐらい全部読め池沼
>603 0秒も0.5秒も1秒も、みーんな1秒以下ですよ?
607 :
デフォルトの名無しさん :05/01/08 17:11:54
>605 まじで?単金やすそー、お前
609 :
デフォルトの名無しさん :05/01/08 22:06:20
VCのプロジェクトのフォルダにファイルをコピーすれば、そのファイルを プロジェクトに自動で追加してくれる機能ってないですか? プロジェクトに追加しても元のフォルダからコピーしてくれなかったり、 削除しても実ファイルは削除してくれなかったりするのが、激しく不便なんです。
610 :
デフォルトの名無しさん :05/01/08 22:10:14
>609 気持ちは分かるがない。
>>610 そうですか。
VC2005で追加されたりしないんでしょうか。
VCは最高のC++開発環境だって聞くので残念です。
612 :
デフォルトの名無しさん :05/01/08 22:17:59
>611 変な日本語。ちなみに誰情報を真に受けてそんなこと 書いてんの?
613 :
デフォルトの名無しさん :05/01/08 22:18:23
>611 また出た。「〜しないんでしょうか」男。これ全部同じ奴だよな。
>613 こんなのが何人もいるとは思えん。他のスレのも含めて 一人の仕業だろう。
615 :
デフォルトの名無しさん :05/01/08 22:23:28
>614 うるせー。勝手に俺様にレスするんじゃねぇ。
616 :
デフォルトの名無しさん :05/01/08 22:36:30
「〜しないんでしょうか」男の名は俺様がもらった!
617 :
デフォルトの名無しさん :05/01/08 22:41:06
Visual C++が現時点で最高レベルの開発環境であることは事実だろ。 それ以上なんて、思いつかん。
CVSも統合して欲しいもんだ(´ー`) オリジナルなんていらね
マジレスすると、プロジェクト間で共通なソースを利用する開発スタイルで困るね。 プロジェクトに追加するだけでコピーされるからそれぞれ修正しなければならなくなるし、 逆にプロジェクトで不要になると勝手に削除されちゃうわけだし。
「〜しないんでしょうか」男
>>621 あなたはスレを荒らしたいだけではないんでしょうか?
>621-622 そういう意味じゃない。やっぱり全然分かってないんだな。
>622 アホ。誰も否定疑問が全て悪いなんて言ってない。 話についてこれてないくせに書き込むするのはやめろ。
書き込「み」するだったけど。
VC2005で追加されたりしないんでしょうか。 VSSは使わないのでしょうか この違いを>621に解説してもらおうかな。 当然違いは分かってるはずだよな。(分かってないんだろうけどw)
しないんでしょうかを見ると、全て同一人物に見えるなんて 精神病の一歩手前だな。
>627 ちなみに誰のこと?
>621や>622のことであれば回答不要です。
>630 で?
633 :
デフォルトの名無しさん :05/01/09 16:15:36
円周率πの値を計算するモンテカルロシミュレーションのプログラムが分かる 人是非教えてください。お願いします。
>>633 そのアルゴリズムならぐぐれば詳しく解説してるところが出てくるぞ。
マルチは(・∀・)カエレ!! ぼるじょあスレに答え出てるだろうが
結局は626が一番のキティということで
>636 え?まさかあの2つの文章の違いが分からないの? 信じられん・・・・ 結局は636が一番のキティであると告白しました。 解決。終わり。
どうも条件が良く解らんのですが、クラスやテンプレートの関係によって IntelliSense動作時にIDE全体を引き込んでフリーズしてしまうことがあります。 CPU負荷が100%になって、コミットチャージがどんどん増える(簡単に1G超える) 回避方法無いもんですかね? どうもKB833772に描かれてる症状にそっくりなんですが 別段、長い名前空間なんて使用してませんが…むしろ短い ウチはC++で使ってまして自動メンバ表示・パラメータヒント・ 自動クイックヒント切っても発生するし… これのFIX有料サポートじゃないと貰えんのですかね?
あ、上のはVisualStudio.NET 2003の問題です…
ここはサポートセンターじゃない
561 :デフォルトの名無しさん :05/01/07 04:05:19 こちらのスレに誘導されてきました。 VC++6.0を使用しています。 コーディングしているとたまに、全く反応が無くフリーズしたような状態になります。 フリーズ時間は数十秒〜1分くらいで、発生頻度は一定していません。 全く出ないときもありますし、30秒に1回くらいのペースで発生するときもあります。 自動保存にしては頻度が高すぎます。 フリーズするのはVCだけで、他のソフトは普通に操作できます。 CPU負荷にも変化は無いので、CPU100%で重くなっているというわけではないようです。 OSはWinXP SP2ですがSP1の頃からずっと発生していました。
>640 当たり前じゃん。お前らごときをサポセンと思うわけないでしょ。
>>642 高い金払ってるんだからMSに訊けって事だと思う。
お前ら自分が好きで回答してるくせに、文句が多いんだよ。 誰もお前らに頼んでねーだろが。
どこまで行クマ? \  ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ (´´ \(⌒-⌒) o (´⌒(´ (・(ェ,,)・ )つ⌒`つ≡≡≡(´⌒;;;≡≡≡  ̄ ̄ (´⌒(´⌒;; ズザーーーーーッ
>>641 これはみたけど明らかに症状違いますね
638の症状ではフリーズしたら永久に復帰しないし、
CPUは100%を維持、時間と共にメモリを消費
(そのうちスワップも溢れてOSレベルの警告が出る)
あきらかに発生原因はIntelliSense動作時の特定の
クラスorテンプレート参照時に限られる
こんな感じです。6.0では発生したことは一度たりとも無いです
テンプレート多用してる時によく起こる気がする。
循環参照してたりしないよねぇ。
一度インテリセンスデータベースを消してみたら? .ncbファイル
現在C言語やってる者です。 GUIアプリ(専用のウィンドウで)を作るにはどうすればいいんですか? MSDOSでしか実行できなくて・・・・ 分かる人教えて下さい。
>>650-652 ありがとうございます^^
いろいろと試してみます。
あと、やっぱりVisual C++とかって必要なんですか?
持ってないんですよね・・・
すいませんWinAPIって何ですか? これも言語なんですか?
>>655 Windowsが用意している関数群。
C言語でのWinのソフトの開発はこれを使ってやる。
それと言っておくけど本気でやるつもりならちゃんとした本は買った方がいいと思うよ。
さっきの猫のページの所の人が書いてるのは中々良かったよ。
あとVC++もあったほうがいいかもしれない…
>>656 はい。本は近々買おうと思っています。
お勧めの本とかありますか?
質問ばかりすいません。
VC++も必要なんですか〜
最初の内はフリーのコンパイラを探してやってみます。
さんざん言われてることだけど、 今はVisualC++ 2005 Express(英語版)が無料で手にはいるから そこから入ってみるのもいいかも。 英語が苦手ならBCC+BCCDeveloperやDevC++を使うのが楽 (後は本買って日本語βを手に入れるか)
>>659 鮮やかな宣伝だな。
30 名前:過去スレpart14の793より[sage] 投稿日:04/11/27(土) 23:34:40
> Win32APIを使うなら
>
> Visual C++(1)はじめてのWindowsプログラミング 翔泳社
> ↓
> Windows 2000プログラミング標準講座 翔泳社
> ↓
> プログラミングWindows 第5版(上)(下) アスキー
>
>>660 俺は自分が読んでよかった物を書いただけだろうが。
それを宣伝だの何なの言われる筋合いは無い。
662 :
デフォルトの名無しさん :05/01/11 00:40:20
C言語なら〜にも質問させていただいたのですが、 libjpeg.libをIJGからソースをダウンロードして作成したまでは 良かったのですが、使用する側のソースでこのlibjpeg.libを用いて ビルドすると、再定義エラーが多く出力されてしまいました。 HPをめぐって、libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib のライブラリを無視することでそのエラーは対処できたのですが、 gil error LNK2001: 外部シンボル ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)" は未解決です。 gil error LNK2001: 外部シンボル ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)" は未解決です。 gil error LNK2001: 外部シンボル ""void __cdecl operator delete(void *)" (??3@YAXPAX@Z)" は未解決です。 gil error LNK2001: 外部シンボル "__DllMainCRTStartup@12" は未解決です。 gil error LNK2001: 外部シンボル "__load_config_used" は未解決です。 gil error LNK2001: 外部シンボル "__purecall" は未解決です。 とのエラーが出てしまい、どうしても解決できません。 どなたか対処方法をご存知な方がいらっしゃいましたら、お教えください。 環境は、VC++.net DLL作成プロジェクト VC++で作成しています。
>>662 libc.libとの競合が起きてたのか?
ライブラリの無視を試す前に
プロジェクトの設定→C/C++→コード生成→ランタイムライブラリ
を、「マルチスレッドDLL」にして試してみれば?
theSpokeスレの誤爆かしらんがいい加減しつこい。 文句があるならMSに直接言えよ。
666 :
デフォルトの名無しさん :05/01/11 01:08:10
>664さん レスありがとうございます。マルチスレッドDLLにして、 ライブラリは全部無視しない場合、 error LNK2019: 未解決の外部シンボル _jpeg_CreateDecompress が関数 "public: virtual int __thiscall TJPG::Read(char const *)" (?Read@TJPG@@UAEHPBD@Z) で参照されました。 とのエラーが出てしまい、相変わらずリンカエラーにより先に進むことができません。 引き続きご教授願えれば幸いです。
>>662 デバッグ用ライブラリとリリース用ライブラリは混在できない。
libjpeg.libのプロジェクトの設定をよく見てみ。
668 :
デフォルトの名無しさん :05/01/11 01:31:11
>667さん 御指摘ありがとうございます。 libjpeg.libの設定はreleaseです。もちろんDLL側の プロジェクトもreleaseで作ってますが同じ状況です。 情けない話ですが、DLL側の設定が悪いのか、 libjpeg.lib側の設定が悪いのかそこさえも分からない状況です。
extern "C"つけた?
670 :
662 :05/01/11 01:37:38
libjpeg.lib側はCコードとして作成しました。 DLL側では、 extern "C" { #include "jinclude.h" #include "jpeglib.h" } のようにしてます。
671 :
デフォルトの名無しさん :05/01/11 05:24:26
もしiが12で割り切れるならこの処理をするっていうのは if(i%12){ } でいいんですか?
>libjpeg.libをIJGからソースをダウンロードして作成したまでは >良かったのですが、 作ったやつに聞けよ
675 :
デフォルトの名無しさん :05/01/11 08:36:23
>668 DLL関数輸入時に必要な __declspec(import) というのをヘッダから探してみな。
>675さん ご意見ありがとうございます。 このIJGライブラリは静的ライブラリとして使いたいので、 __declspecは #define GLOBAL(type)type #define EXTERN(type)extern type として宣言されていると思うのですが、 コレを仮に #define GLOBAL(type) __declspec(export) type #define EXTERN(type) extern __declspec(export) type としてもダメでした。もはやお手上げ状態です。
>676 __declspecを調べて来い
ご意見を頂いた皆様。 libjpeg.libのリンカエラーの問題は解決しました。 原因ははっきりとは分かりませんが、nmakeしなおした libjpeg.libを使ったところ問題なくリンクできました。 お騒がせして申し訳ありませんでした。 ご意見を頂いた皆様に深い感謝を申し上げます。
680 :
デフォルトの名無しさん :05/01/11 15:51:04
スレ間違えてしまいました VC++なんですが、リストビューの要素の 編集をしたいのです ダブルクリックすると、編集可能になるお手本の とおりにやりたいのですが、どういう手段を使えばいいのでしょうか // ダブルクリック反応用 m_listctrl.SetExtendedStyle(LVS_EX_TWOCLICKACTIVATE); i = m_listctrl.GetHotItem(); これだと、一番左の行の場合しかiに値が入らず、編集もできないです リストビューのどこのカラムでもダブルクリックで編集できるような方法を教えてください
681 :
デフォルトの名無しさん :05/01/11 16:12:04
>680 リストビューにスタイル設定して通知メッセージを聞けば楽勝
682 :
680 :05/01/11 16:31:38
>>681 ダイアログとして作成して別に
たくさんボタンとかテキストボックスをくっつけている状態で
スタイル設定はできるのでしょうか?
683 :
デフォルトの名無しさん :05/01/11 16:37:00
>682 やってみろ
>>680 リストビューは一番左(ラベル)しか編集できない
エクスプローラでファイル名しか編集できないのと同じ
685 :
680 :05/01/11 16:46:35
>>684 えっ 無理なんですか?
えー いろいろやってたんだけど
そうなるとコントロール変えないといけないな
686 :
680 :05/01/11 17:21:31
たびたびすみません リストビューなんとか使いたいもので。 CListCtrl &lc= GetListCtrl(); をコンパイルすると、 'GetListCtrl' : 定義されていない識別子です。 と出てしまうのですが、何が足らないのでしょうか? いろいりおググッて見たんですが、具体的に書いているところが見つからないです すみません
afxcview.h
メンバ関数なんだろ
689 :
680 :05/01/11 17:32:56
>>687 即答ありがとうございます
include 確かに抜けていたので、追加したんですが、
リビルドしても同じエラーがでてしまいます
include 以外に追加する場所ってないですよね?
stdafx.h に #include <afxcview.h>として
追加したんですが
メンバ関数だろ
691 :
680 :05/01/11 18:46:01
>>688 >>690 すみません メンバ関数ってどういうことでしょうか?
結局うまくいかないみたいで、メンバ変数にしているわけでも
ないのですが・・・
関数として、新たにクラス作成するということでしょうか?
692 :
デフォルトの名無しさん :05/01/11 18:49:38
GetListCtrlは何のメソッドですか?
693 :
680 :05/01/11 18:55:27
windowsAPIとSDKは別物ですか? また、winAPIで作ったウィンドウでC言語のプログラム(いままでMSDOSで動かして奴)を動かしたいのですが、どうやればいいのでしょうか?
695 :
デフォルトの名無しさん :05/01/11 19:32:55
>649 新プロセス作ってその入出力を2つのパイプでつないで、パイプの端を読み書きして、パイプから出てきたヤツをEDITかLISTBOXに吐き出せ。CreateProcess,CreatePipe,ReadFile,Writefileを見よ。BCCFormにてきとーな例がある。
696 :
デフォルトの名無しさん :05/01/11 19:37:12
winapiはWinアプリが動く仕組み。Platform SDKはM$が提供するサンプルとヘッダなどが付いた開発キット。Javaの開発キットと似たようなもん
>>695-696 どうもです^^
そのプロセスのことについて書いてあるサイトないですか?
どのサイトもWINAPIの説明はウィンドウやダイアログボックスを作るまでしか説明がない・・・・ ウィンドウを作ってそこでD言語のプログラムを動かす説明がないよ〜
699 :
デフォルトの名無しさん :05/01/11 19:56:52
>697 被告人は取材元守秘のため黙秘する!
>>695 そんなもんDOS窓で実行するのと大差ないだろ
>700 コンソール低レベルAPIにも制限がある。別プロセス起動したDOS窓にダブルクリックしたらぶっ飛ぶ機能を付けるのは危険。
>>698 大体DOSプログラムを知らないことを前提にしているからな。
>>702 だったら全部作り直しだな
DOSしか知らないやつが、みかけだけWinのはりぼて作ろうとしてるんだろ
MFC(SDI)のとき、ocxとか使うのってどうやるのでしょうか?
ocxを貼ることができるのはダイアログのみですか? 使いたいのはグラフィカルなocxじゃないんで ダイアログが必要ないんです。
VCあんまり知らなくてもいい話題だと急に人が増えるけど 肝心なことになるとぱたっと人がいなくなるのが不思議
俺は魚じゃないんだ
リストビューで任意のセルを編集したい。 →諦めてVC6ならMSFlexGrid、VC7ならそれもないのでExcelでも使う。 →CodeGuruで同好の士の業物を拾って自分でなんとかする。 私は前者も後者もやったが、後者はなかなかメッセージの振る舞いが楽しかった。 #検索用キーワード:edit_subitem, subedit, ListViewCtrlEx, ReportCtrl
亀レスすみません
>>647 そもそもそういう状態でコンパイル通るのでしょうか?
問題のクラス自体は正常に動作していますが…
>>648 情報どうもです。消してみましたがヤハリ落ちる…
どうもテンプレートを使用したスマートポインタモドキを多用してるのですが
それが絡むとまずい様です。スマートポインタオブジェクトから->演算子の
オーバーロードを経てメソッドにアクセスしているんですがどうもそこの
部分でIntelliSenseが動作すると落ちるようです。
…と思ったらSTLのauto_ptrのoperator->の記述のまねして
自分のテンプレート書き換えてみたら落ちなくなりました…理屈は良く解りませんが。
と思ったらやっぱり落ちる。入力時のIntelliSenseのメンバ候補では落ちなくなったが マウスホバーででるパラメータ・クイックヒントでIDEごとあぼーん もうこれは切っとくしかないか…orz
だいたい原因わかりますた。 プロジェクトに組み込んでたDirectX9SDKのサンプルフレームワークが #define V(x) ... というようなマクロを組み込んでいたのが原因のようです ここで関数やテンプレートの引数にVを使うとコンパイラは #define V(x) ... と #define V ... の区別をつけるから問題なくコンパイルできるけど、 それをIntelliSenseが混同して引数Vと#define V(x)を関連付けて考えているようで、 そこでIntelliSenseの処理が破綻していたようです。 名前変えて回避したらウソのように直りました。レス頂いた方ありがとうございました
日記はチラシの裏へ
最近のチラシは両面印刷されてるからなぁ
パチンコとかなら片面印刷が多いぞ
表面ツルツルしてるから鉛筆だと書き難いんだけど・・・
ボールペン使えよ なければ人差し指に針刺して血で書けよ
('A`)新聞取ってなくてスイマセン
VC++6.0 Pro SP5 を使っています。 プロジェクト - 設定 の中に、リンク前やビルド後に何らかの処理を行わせる機能がありますが、 逆に、ビルド前(というかコンパイル前)に処理をさせることは可能でしょうか? また、可能だとしたらどのように設定するべきでしょうか? どうか諸兄の知恵をお貸しください。
このスレ基地外に好かれるな また変な香具師きたぞ
エスパー伊藤さん出番ですよ
そのイントロダクションのプログラムをビルドすると下のようなエラーが出ます。 c:\〜.cpp(22) : error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。 'void*' から非 'void' 型への変換には明示的なキャストが必要です。 c:\〜.cpp(45) : warning C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。
質問とは全然関係ないけど
http://www.kumei.ne.jp/c_lang/netinteli.htm [C++]
.ncb ファイルに問題がある場合
プロジェクト ディレクトリのルートにある .ncb ファイルが読み取り専用であるか
破損している場合、IntelliSense の情報は使用できません。この問題を修復するには、
次の処理を行います。
ソリューションを閉じます。
.ncb ファイルを削除します。
再びソリューションを開きます。
再びソリューションを開くと、.ncb ファイルが新規作成されます。
730 :
デフォルトの名無しさん :05/01/16 06:32:47
ソースを見ていたら hThread = CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)countThread, (VOID *)countTimes, 0, &threadID ) ; ・・・・・(1) という部分があり、LPTHREAD_START_ROUTINEの定義を見ると typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)( LPVOID lpThreadParameter ); typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE; となっていました。 力不足でプリプロセッサを通したあとの状態を読み取れないんですが (1)のソースはどう置換されるのでしょう? LPTHREAD_START_ROUTINEがどういうものかわかりません。エスパー助けて!
プリプロセッサ…? LPTHREAD_START_ROUTINEは 返値の型がDWORD、引数がLPVOIDの関数へのポインタだろ。 ユーザ定義のコールバック関数
プロパティウインドウの中身が一切表示されなくなったんだけど 同じような症状になった人いますか?
プロパティウインドウと言ってもいろいろあるわけだが
734 :
デフォルトの名無しさん :05/01/16 14:33:39
プロトタイプ宣言をつい忘れてしまうのですが チェック&自動生成してくれるような方法ないですか?
735 :
デフォルトの名無しさん :05/01/16 14:46:08
int a[] = {0, 1, 2, 3, 4} ; これと同じ意味の配列の宣言の仕方はどんなのがありますか?
>>734 チェックはコンパイラにしてもらえ。
自動生成はそういうマクロでも作ればよかろう。
>>735 int a[5] = {0, 1, 2, 3, 4};
つーか、どんなのがいいの?
プログラミングいろいろ覚えたら、どんな楽しい事ができるようになるの?
738 :
デフォルトの名無しさん :05/01/16 17:33:15
>734 cproto >735 標準Cで別の方法はない。GCC拡張ならあるが、使わない方がいい。PerlやRubyでコードを吐けば簡単
>>738 GCC拡張から遂にC標準へ……。
C99
ウィンドウハンドルの変数を全部グローバルで宣言してるけど別に問題ないですよね?
741 :
デフォルトの名無しさん :05/01/16 18:32:55
>740 大局変数にする場合でも数が増えたら、後で困らないよう機能ごとにまとめておくんだな
742 :
デフォルトの名無しさん :05/01/16 18:47:29
はじめましてVisualC++6.0を使いはじめたのですが、行数を表示することはできますか? できるならやり方を教えてください。宜しくお願いします。 あとVisualC++6.0とVisual C++.NET 2003ではVisual C++.NET 2003の方が使い安さと機能は上でしょうか?
743 :
デフォルトの名無しさん :05/01/16 18:56:08
>742 ファイルを一行ずつ読み込んで数えろ。 確かに上だが、購入計画を立て、商品の情報は自分で調べろ。後で泣いてもしらん。
>>742 6.0はコンパイルの時にデフォルトワークスペースとプロジェクトを自動生成してくれるけど.NETは一々プロジェクトを立ち上げないといけない。
もし「C++ファイルを書く」→「ビルド」の流れにどっぷり浸かってるなら最初の内は苦労する。
あと、やっぱり4年も離れてるから必要環境が高すぎ。
1.5G以上のCPUじゃないとお勧めできないね。
746 :
デフォルトの名無しさん :05/01/16 19:09:41
>745 世の中と上司の厳しさも伝えてやったんだ、有り難く思え。
Visual C++ 6.0を使っているんですが、 新規作成のときにプロジェクトの種類がいっぱいあるんですが、 どれが一番使いやすいんでしょうか? ネットで調べてみたら、 Win32 ApplicationかMFC AppWizardを使っているところが多いんですが……。
>>747 ファイルがcpp一個だけならプロジェクト作らずにそのまま書けばビルドできるよ。
というかWin32とMFCはプログラムの作り方が別物だからサイトに合わせて使い分ければ良い。
749 :
デフォルトの名無しさん :05/01/16 19:31:15
>747 使いやすさは断然MFC。オブジェクト指向の利点が詰まっている。MFCなら自然にwinapiも学べるし。
750 :
デフォルトの名無しさん :05/01/16 19:32:45
SMTPプロトコルで送信だけでなく受信もできるというプログラムを作成したいのですが, Win32APIとかを探しても見当たらないような気がしたのですが,それ以外でも いいのでそういうのはあるのでしょうか? JavaにはApache Jamesがあるようなのですが.
751 :
裕美子(一応女子大生) :05/01/16 19:34:09
>>747 あなたのプログラミング能力と目的で決まります。
Win32APIをじっくりと弄りながらアプリケーションを作り上げるのなら
「Win32 Application」を選びます。
C++のクラスの機能を弄りながらアプリケーションを作り上げるのなら
「MFC AppWizard」を選びます。
単にC/C++の学習をするのなら「Win32 Console Application」を
選んでください。
752 :
裕美子(一応女子大生) :05/01/16 19:48:55
>>742 残念ながら、VC++6.0には行数表示機能がないみたいです。
VC++6.0とVC++.NET2003は、当然後発の方が機能が上です。
コンパイラの性能もMFCの機能も高機能になっているみたいです。
(初心者の私にはほとんど違いが分かりません。というか違いが分かる
アプリケーションを作ることができません。)
ただ、IDEの操作体系がかなり変わっています。これは「慣れ」の
問題です。(私はVC++6.0の方が好きです。シンプルで)
753 :
貞子(一応幼稚園児) :05/01/16 19:53:17
あ
754 :
デフォルトの名無しさん :05/01/16 20:42:58
WndProc関数でメッセージの処理を行うのですけど もし扱うメッセージが1000種類あるときどうすればいいでしょうか? まさかSwitch〜caseなんてことは・・・
>>754 メッセージクラッカーを使ったり、MFCとかWTLとかそういうクラスライブラリを使ったり。
返信ありがとうございました。 MFC AppWizardのほうをやってみようと思います。
IDEってなんですか?
俺のVC6は行番号出でてる
760 :
デフォルトの名無しさん :05/01/16 21:54:52
761 :
デフォルトの名無しさん :05/01/16 21:56:01
間違えではなく間違いです。
.NET2003の話だけど [ツール]→[オプション]→[テキストエディタ]→[C/C++(VSだから)]→[全般]→[表示]→[行番号] でできるぞ。 まさか6.0だからってテキストエディタの設定が無いわけ無いし。
764 :
裕美子(一応女子大生) :05/01/16 22:11:30
VC++6.0Proを持っていますが 「ツール」→「オプション」でエディタ関係のダイアログを開いてみます。 「エディタ」「タブ」「互換性」「書式」とコーディングに関係するタブ部分を 全て見ても、行番号表示に関するものが見あたりません。 他に設定関係のメニューが見あたらないのですが・・・。
765 :
デフォルトの名無しさん :05/01/16 22:35:30
こんばんわ 自作のアプリケーションを作ったのですが、 ほかの人のパソコンで起動したところ、「MFC71.DLLがありません」とエラーが出ました。 埋め込みDLLをすればイイと聞いたのですが、 VS内でどのようにすればいいのでしょうか? 宜しくお願いします。
766 :
裕美子(一応女子大生) :05/01/16 22:50:10
「新しいプロジェクト」→「MFCアプリケーション」を選択します。 プロジェクト名を記入したら「MFCアプリケーションウィザード」が起動しますので、 ウインドウの左側にある「アプリケーションの種類」をクリックして選択し、 「スタティックライブラリでMFCを利用する」というラジオボタンをクリックして 選択してください。これで必要なMFC関係のDLLが自作アプリに埋め込まれるはずです。
767 :
765 :05/01/16 23:35:50
>>766 ご返答ありがとうございます。
すでにつくってあるプロジェクトで、そのような変更はできるのでしょうか?
"プロジェクトの設定"で切り替えればいいんでないか? 試してないからわかんないけど。
試せば判る
771 :
デフォルトの名無しさん :05/01/17 00:37:47
検索ヒットした単語を色を変えて表示するのって出来ますか?
>>もし扱うメッセージが1000種類あるときどうすればいいでしょうか? こんなプログラムは存在するのか とふと思った
__declspec(selectany)等の拡張属性がどのVC++のバージョンからサポートされているかの情報を探してます。 知ってる方いませんか?
775 :
デフォルトの名無しさん :05/01/17 01:15:22
古い Visual C++ 6.0 を Windows XP にインストールしたのですが、 コンパイルの段階で printf や scanf が「定義されていない識別子です」と エラーが出てしまいコンパイルできません。 どうすれば良いのでしょうか? Visual C++ は製品バージョンが 6.00.9782.0 です。 Windows XP は SP2 です。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄」 ―――――――――――――‐┬┘ | ____.____ | .__ そんな糞PC | | | | |\_\ 窓から | | ∧_∧ | | | |.◎.| 投げ捨てろ | |( ´∀`)つ ミ | | |.: | | |/ ⊃ ノ | | .\|.≡.|  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ |  ̄
#include <stdio.h>
>>731 ありがd。
typedefが単なるテキストマクロ展開だとごっつい勘違いしてた。
779 :
デフォルトの名無しさん :05/01/17 07:18:22
int Kansuu(int zero, int one, int two int three, int fore, int five) VC6なんですけど、上のみたいに、関数のコンマを忘れると、 ビルドの時にエラー箇所を出してくれると思っていた所、 プログラムが止まってガクブルなんですけど、 設定みたいなので変えられないのでしょうか。
780 :
デフォルトの名無しさん :05/01/17 07:41:26
∧_∧ ( ´∀`) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ) < コンマ? | | | \_______ (__)_)
>779の仕事を変えるか、二億円払ってそれを自動修正するプログラムを買う
>>780 カンマでしたっけ?
>>781 私はバイトでたまにやるぐらいです。
引数の部分が他の関数と似ている場合、コピーしてもってくるのですが、
その時,を付け忘れてしまいました。逆に,が2つ連続してしまう場合もあります。
同じ行なら、エラー箇所を出してくれるようですが、行が違うとダメなようです。
んなこたーない。
784 :
775 :05/01/17 09:29:00
>>777 できました。ありがとうございます。
やっぱりちゃんと勉強しないと駄目ですね。
ついでに質問ですが、この古いVCをインストールする際に
「Windows NTシステム dllのシンボルファイル(dbg)」を
インストールしろと言われたんですが、インストールしようと
してもファイルのバージョンが違うと言われてできません。
無視するとデバグできないぞみたいなことを言ってくるので
何とかしたいのですが、どうすれば良いでしょうか。
先程の件はこのせいだと思っていたのですが、全く見当違い
だったようですね。
>>784 OSのデバッグに必要なもので、自分のプログラムのデバッグには必要ない。
786 :
デフォルトの名無しさん :05/01/17 09:54:23
Visual Studio 7 つかってんだが, タブの幅を一定にできないかな? 幅がまちまちだと使いにくくてしょうがない. タブ機能がある Web ブラウザやテキストエディタなら たいがい幅を一定に設定できるよな
エディットで入力を数字と.に制限するにはどーすればいいのでしょうか? ES_NUMBERにすると.が入力出来なくてorz ご教授お願いします。
789 :
デフォルトの名無しさん :05/01/17 10:16:42
790 :
デフォルトの名無しさん :05/01/17 10:38:38
>>788 サブクラス化してWM_CHARで(isdigit(wParam) || wParam == '.')のときだけCallWindowProcを呼ぶ。
792 :
784 :05/01/17 14:43:49
プロポーショナルフォントにしてるのだと予想
完璧なパソコン初心者
796 :
デフォルトの名無しさん :05/01/17 19:29:08 ,
C++とVB.NETと混在して一つのプロジェクトとかで扱えますか?
.netそりゅーしょん
798 :
デフォルトの名無しさん :05/01/17 21:35:27
>797 たとえばC#のプロジェクトとVbのプロジェクトをつくって Form1.cs とForm1.vbをつくってtextBox1をはりつけたら C#からどうやってVBのtextBox1にどうやってアクセスするの? 参照できないんですけど。
799 :
デフォルトの名無しさん :05/01/17 22:39:00
出来るよ
な
801 :
798 :05/01/18 02:13:29
またー焦らすなよ。 「君たち」とかけけて「供ができなくなる。」ととく。 そのこころは。
802 :
798 :05/01/18 06:13:02
あっ、「子供ができなくなる」だった。 で、そのこころは「たちががわるい。」
>>798 Win APIレベルでWin2.0A当時からできることができないわけないだろ。
>参照できないんですけど。
勉強不足なんですけど。
804 :
798 :05/01/18 10:11:55
>803 あなたの場合少しだけ朝立ちしてます。もう少し立つといいかとおもいます。 知ってて答えられないなら、金玉が小さいわけですから、わかりますか? では次の質問にこたえてください。 色いろ触っているうちに、コンポーネントは参照できることがわかった。 Windowsのフォームはだめー。なんで? >勉強不足なんですけど。 だから、今勉強してるっツーの。不足してなかったらしませんつーの。
「ビルドエラーが発生しました。」っていう メッセージボックスを表示しないようにできないでしょうか? 非常にわずらわしいです。
ごめん。ビルドすれば表示されないんだった。 今まで気づかなかった。 いつも「デバッグなしで開始」してたから。。。
807 :
デフォルトの名無しさん :05/01/18 23:17:41
wavファイルを取り込んでフーリエ変換したりするプログラムを作りたいのですが、 肝心のwavファイルのフォーマットや扱うための関数群が分かりません。 参考になるサイトなどを紹介してもらえないでしょうか
809 :
デフォルトの名無しさん :05/01/19 00:59:50
Windowsプログラミングを始めるならWin32API,MFC,C#のどれから入るべきでしょうか?
>>809 本人の能力、経験、年齢、目的、時間、予算、その他いろいろな要素によるだろう
>>808 私の検索能力ではさっぱり引っかからなかったので検索サイトを紹介されても困ります
812 :
デフォルトの名無しさん :05/01/19 07:35:21
>>812 ORなんて使えたのか!
別人だが初めて知った。
検索ワード -対象外ワード なんてのもあるよな。
libファイル、リンク外したのにリビルト出来るって どういうことやねん! VC遅い念。重い念。
MFCでプログラム組んでます。 Visual C++ 6.0 でやってるんですが 120回のループさせてるところで60回目に File dbgheap.c Line 1011 Expression _CrtIsValidHeapPointer(pUserData) って出て終了してしまうんです。 free関数でメモリ開放のときにエラーが出てるみたいです。 ここじゃねぇの?ってとこがあったらご教授を賜りたく存じます。
>ここじゃねぇの?ってとこがあったら あんたの頭。
>>819 > ここじゃねぇの?
freeしてるところ。
822 :
デフォルトの名無しさん :05/01/21 09:04:31
VCでダイアログプロジェクトの インストーラを作成したいのですが、 (VBのsetup.exeを作るみたいに) 方法を教えてください DLLも含んだ形で作りたいです よろしくお願いします
>>822 インストールシールドでも買えばぁ。
GrapeCityでも似たようなツール出してるし。
さもなきゃアーカイバーの自動実行機能とバッチファイルの組み合わせとか。
>>823 InstallShieldは個人で買うには高すぎるな
825 :
822 :05/01/21 10:20:53
すみません フリーツールで見つけました 検索がたりませんでした
オセロを作ったんですけど左右をつなげてループ状にしたいんですけどどうすればいいんでしょうか?
827 :
デフォルトの名無しさん :05/01/21 14:01:35
>826 判定に余りの性質を使う。余りは割る数を超えるとループする。負にならないように補整が必要
MFCで CEdit* y =(CEdit *)GetDlgItem(IDC_EDIT) のようにエディットから出たデータを; double x = atof((const char*)y); ダブル型にして計算処理をしたのですが、 SetWindowTextに配置する為にCString型に直すにはどのようにすればいいのでしょうか?
>>829 CString foo;
foo.Format("%g", x);
>>829 DDXならdoubleだけでできる
数字以外の入力もはじいてくれる
833 :
デフォルトの名無しさん :05/01/21 19:46:01
show で表示した新規ダイアログの タイトルバーに、タイトルが出ないんですが、 出す方法ってありますでしょうか? setWindowText をやっても全然でません 呼ぶ側、呼ばれる側どっちもsetWindowTextやったんですが、だめです なんか方法あったらおしえてください
834 :
デフォルトの名無しさん :05/01/21 19:50:16
>833 スタイル設定で
835 :
デフォルトの名無しさん :05/01/21 19:57:44
>>834 スタイルのキャプションでも
入れてるんですが、反映されないんです
すみません よろしくお願いします
836 :
デフォルトの名無しさん :05/01/21 20:17:59
暴れる前にマニュアル見ろ WS_SYSMENU
838 :
デフォルトの名無しさん :05/01/21 21:24:52
質問です。 作成しているアプリケーションで、 タスクトレイに入ったメニューを右クリックしたときに出現するフローティングメニューが、 キーボードによるアクセスを受け付けてくれません。 まったく同じフローティングメニューをウィンドウで右クリックして出現させるとうまくキーボードからアクセスできます。 どのようにすればタスクトレイアイコンの右クリックメニューがキーボードによるアクセスを受け付けてくれるかお願いします。
>>836 どうもありがとうございました
できました
840 :
デフォルトの名無しさん :05/01/21 22:04:54
>838 有名なバグ。 「WM_NULL TrackPopupMenu」でぐぐれ
よくアプリケーション等でファイルを選択する時のダイアログとして、 左側にドライブの選択、フォルダの階層が表示されていて、 右側にそのフォルダ内のファイルが表示されたりするようなものがありますが このようなダイアログはMFC等で用意されてないのでしょうか? また用意されていない場合それを作成する為のヒントになるようなHPがあれば 教えていただけませんか?よろしくお願いします。
842 :
838 :05/01/21 22:47:37
うーん・・・治りません・・・・・ SetForegroundWindow( hWnd ); TrackPopupMenu( hMenu, TPM_RIGHTBUTTON, pt.x, pt.y, 0, hWnd, NULL ); PostMessage( hWnd, WM_NULL, 0, 0 ); こんな感じですよね? 一応こういった形でやっているのですが・・・ トレイアイコンを右クリックしてフローティングメニューが出る↓ フローティングメニューの中に(つまりリソースファイルのメニューの中に)設定した キーボードショートカット"ファイルを開く(&O)"ならOを押す↓ トレイアイコンからの右クリックメニューだけはキーボードアクセスに反応しない という感じです。 何かタスクトレイアイコンのフローティングメニューに設定するような アクセラレータ関連づけ作業があるのでしょうか・・・?
843 :
デフォルトの名無しさん :05/01/22 14:58:55
age
今、VC++6.0(SP6)で「Accelerated C++」を参考にしながらC++を勉強しています。 本の中に<alogorithm>ヘッダで定義されているmaxという関数を使用している箇所が あるのですが、この部分でエラーになってしまいます。 (algorithmというファイルを見てみましたが、maxの定義はありませんでした。) 調べたところ、どうやら環境が古いらしいのですが、ServicePackも6までしかでてないと 思いますし、対処法がわかりません。 どなたか対処法をお教えください。よろしくお願いします。
>>845 レスありがとうございます。説明不足でした。
error C2065: 'max' : 定義されていない識別子です。
です。
>>846 ああそういえば入ってなかったな…
STLPortを入れるか、maxぐらいなら自前で作ってしまっては?
STLPort(これが何なのか理解できていませんが)を入れてみようと思います。 ありがとうございました。
850 :
デフォルトの名無しさん :05/01/22 16:16:09
>842 hWndはどうなって?
852 :
838 :05/01/22 22:05:48
hWndはメインウィンドウを作成するCreateWindowのウィンドウハンドルですの。
∧( ̄ ̄ ̄ ̄\ /  ̄ ̄ ̄\ \ ( ̄ ̄ ̄\ .| (°) (°) l \ \  ̄ ̄\ \ | (●) | / l .\ \ | l∪l l/ / あばばばばばば \ \ \ .ヽ/ ./ / \  ̄ ̄ /  ̄ ̄| | | | / ̄ ̄ ̄ ̄) | | / ̄ ̄ ̄ ̄ ̄\ / / ̄ ̄ ̄ .| | < ● ⌒ _ \/ // ̄ ̄ ̄ ̄) / /l .| | ● ⊃> / / ̄ ̄ ̄ / / | | < ● 、_,  ̄ __/ /\ / / | | \_____/ \ \ | | \ \ \ \ .| | .\ \_ あ | | | | \ l ば | | \ \  ̄l | ば / | / /  ̄ ば / /l |  ̄ ̄ / / | | / / | | | l ̄ |  ̄) \_)
854 :
デフォルトの名無しさん :05/01/23 07:17:07
ショートカットキーの設定とかでエディットボックスに入力した「Ctrl+V」とか 表示されるのって、どのソフトも同じような作りですけど普通のエディットボックス じゃなくて特殊なものなんですか。
>>854 アクセラレータキーをMSのガイドラインかなんかに従って皆が皆Ctrl+Vは貼り付けになるように実装している。
>>854 MSEditBoxというコンポーネントがあるんでこれ使うと楽。
857 :
854 :05/01/23 08:02:17
キーバインドというんでしょうか。 ソフト毎に「Alt+BSは○○○を実行」みたいにカスタマイズできる場合の、その設定する画面の エディットボックスのことなのです。Ctrlキーを押すと「Ctrl +」のように表示されて、Ctrlと「K」キーを 同時に押すと「Ctrl + K」となるのを、自前で実装しているのではなく既成のコントロールがあるのでは と思いました。いかがでしょうか。
>>855 ありがとうございます。
Google検索ではヒットしなかったのですが、どのようなものか教えていただけると幸いです。
すみません。レスアンカー間違えてました。
>>856 さんの情報をもとにいろいろ探していたら、「ホットキーコントロール(msctls_hotkey32)」という
単語に行き当たりました。どうやら、これでいけるような気がします。
>>857 ああっ、リロードするべきでした。
ありがとうございます。これから使ってみるつもりです。
(´-`).。oO(なんで番号間違えるんだろう…)
864 :
デフォルトの名無しさん :05/01/23 09:51:45
mapやcodをデバッグに利用する方法を知りたいのですが、 参考になるweb/書籍ありますでしょうか?
865 :
デフォルトの名無しさん :05/01/23 18:35:20
win98+VC6 で問題なく終了していたプログラムを winXP+VC6 の環境で実行すると 終了時に例外処理(初回) ・・0xC0000005: Access Violation が出てしまいます。 調べたところプロジェクトワークベースの新規作成ウイザードで作ったhello worldでも 警告が出ました。 対処方法はあるのでしょうか?
エラーメッセージを省略してるからわからないな ライブラリのバージョン違いっぽいけど
ありがとうございます。エラーメッセージは 例外処理 (初回) は test.exe (USER32.DLL) にあります: 0xC0000005: Access Violation。 です。user32.dllについて調べてみます。
869 :
デフォルトの名無しさん :05/01/25 12:26:30
classをつくり、その中の001.hで double dblDirect[16][140][140]; というメソッドというか配列を宣言して実行すると --- 問題が発生したため、test0011.exe を終了します。 ご不便をおかけして申し訳ありません。 作業途中であった場合、その情報は失われた可能性があります。 この問題を Microsoft に報告してください。 弊社に送信するためのエラー報告が作成されました。 弊社では、この報告を匿名の機密情報として扱います。 (後略) --- のエラーが出て終了します。 double dblDirect[4][140][140]; だと終了せずにすみます。 このdblDirect配列はエラーチェックの為、実際には使われません。 8*16*140*140=2.5Mと、エラーを起こす程大きい配列でもないのですが... 原因がわかる方お願いします。VC++6.0です。
スタックのデフォルトの大きさは 1MB だった気がする。 -> よって、スタックオーバーフローと見た。
871 :
869 :05/01/25 12:52:52
>870 おかげさまで解決しました。ありがとうございました。
>>869 そのままエラー報告送信したらM$がバグ取りしてくれるのかなぁ・・・
873 :
デフォルトの名無しさん :05/01/25 17:47:32
Javadocのように、ソースを解析してメンバ変数、メンバ関数一覧のような レポートを生成するツールってありますか?
874 :
デフォルトの名無しさん :05/01/25 17:55:38
>873 フリーのものならcppdoc,doxygen
doxygen+dotが便利かな
876 :
デフォルトの名無しさん :05/01/25 18:11:59
877 :
デフォルトの名無しさん :05/01/25 21:21:43
Visual Stdio 6.0 を使用しているのですが、あるところにブレークポイントを挿入し、その動作をステップインでトレースを行うと必ず 77CF86CB cmp dword ptr [esp+4], 0DCBAABCDh 77CF86D3 jne 77D2DAE8 77CF86D9 add esp, 8 ..... のような混合モードに入ってしまい、プログラム文章を追うことが出来ません。 混合モードに入らないでデバッグする方法ってありませんか?
あるところにおじいさんとおばあさんが山に住んでいました
>>877 直進あるのみか
ハンドルのついてない車を運転してるようなものか?
ちゃんと勉強した方がいいよ
>>ちゃんと勉強した方がいいよ はい。私も質問する前に勉強しようとしてからしようと思ったのですが、 基本的過ぎることなのか、どの参考書にもこのてのことが書いてありませんでした。 猫でもわかるHP、林晴彦シリーズ、MFC入門6.0 google[デバッグ 混合モード 回避]で検索など。 なにを使って勉強すればいいのでしょうか。
>>877 自分の書いたソースコード外にステップインしてるんじゃないの?
システムのDLLとか。
882 :
デフォルトの名無しさん :05/01/26 00:12:27
>>881 ありがとうございます。
はい。そのコード外にステップインせずにデバッグを追うことは出来ますか?
ステップインせずにステップアウトして味噌。
Visual C++ .NET と Visual C++ は何が違うんですか
バージョンによって呼び方が違う 6.0 : Visual C++ 6.0 7.0 : Visual C++ .NET 7.1 : Visual C++ .NET 2003 8.0 : Visual C++ .NET 2005
つまり「.NET」はバージョンを表すだけで本体は同じなんですね。 ありがとうございました。
本体は同じって…バージョンが違えば機能も違うわけだが
ごめんなさい、表現が悪かったです。
>>884 >>885 俺的バージョンアップのいめーじ
6.0 -> 7.0
.NETフレームワークを使えるようになり、言語間の連携が容易になった。
だがVCの地位は他が上がったぶん相対的に下がったような?
7.0 -> 7.1
コンパイラが賢くなりテンプレートの解釈が飛躍的に向上。
7.1は買う価値あり。
7.1 -> 8.0
何が違うんだろ?
8.0はC++/CLI
俺的バージョンアップのいめーじ 6.0 -> 7.0 .NETを使えるようになったが、IDEがくそ重くなってしかも使い勝手が 大きく変わってむしろ使いにくくなった。コンパイラの性能は向上した。 7.0 -> 7.1 とうとう開発環境のNT4.0でのサポートが打ち切られた。IDEの微妙な所が 改善されているが、相変わらず重い。 7.1 -> 8.0 見た目が派手になった。7.1よりは使いやすいが、糞重たいのは変わらない。 ファイルがデフォルトでユニコードで保存されるようになったのはこの バージョンからか?
バカだな、変わらないけど変わったように見せるのもオフィスと同じ 俺はもういらない
いまだ6.0を使っている件について
>>893 は偉いな、耐えがたきを耐えに苦労したんだな。他にもあるのに。
どうも6.0→7.0は結構操作系も変わるって話なもんで中々乗り換えられない・・・。
そうだな、個人の趣味で変えられませんしね
すいません、6.0について教えて下さい。 今4.0を使ってるんですが、これだとDirectX8.0以降のSDKは使えません。(ライブラリがリンクできない) んで6.0入手のアテがついたので6.0への移行を考えてるのですが、6.0にすれば 最新のDirectX9.0SDK(2004Dec)も使えるのでしょうか?
>>897 自分でDLLを指定して正しい名前で呼び出せば自動だよ
9.0は一応6.0でも使えるよ。
>>898 4.0+DXSDK8.0の場合例えばddraw.libにシークできないとかのエラーメッセージが出てしまいます・・・
ちなみにGtk+2.0でも同様のエラーが・・・
名前を指定してのDLLの呼び出しは実はやった事がないヘタレ日曜プログラマです
>>890 マリガトウゴザイマス
これで心置きなく6.0へ移行できます
しょんな・・・(ノд`) Oct2004を落としまつ・・・
900>>さん そのころ大変動あったかも、俺もDX7までしかやっていない、 OpenGLだな
904 :
880 :05/01/26 23:04:11
>> 883 ステップアウトしても混合モードに突入してしまいました。 ステップインとステップアウト、ステップオーバーの違いって?
だめだこりゃ
教えてあげたいのですが、マニュアルに詳しく書かれていることを そのまま書くことになるし、長くなるのでとてもココには 書ききれません。ごめんなさい(><)
HELP ME!!
>ステップインとステップアウト、ステップオーバー この違いなんてマニュアルを読むまでもなく、自分が書いたコードででも 動作確認してみればすぐに理解できるとおもうんだけどな〜。
>>880 一回混合モードに入ると、その後は混合モード表示だ。
ただ、新規に「混合モード専用ウィンドウ」が開くだけなので、
そのウィンドウを閉じてあげれば、コードが出てくるだろう。
逆に、アセでいいよ、最後はマシンコード追いかけるよ
911 :
デフォルトの名無しさん :05/01/27 01:00:02
メッセージの %d で出力した結果「 130 のメッセージは何?(WM_PAINT etc.)」 とか調べたい時はどのようにすればいいのですか? そんな方法ないでしょうか。
混浴モード
ネコミミモードも欲しいな。
じこ解決しました
赤坂うぜーぞ
916 :
デフォルトの名無しさん :05/01/27 08:52:54
>911 <winuser.h>から、Perl、Ruby、エディタマクロと正規表現grep、XMLパーサなどでWM_*の定義を抽出した後、それを変換テーブルかswitch構文にしろ。設計方法は君の自由だ。 IDR_WM2IDS RC_DATA{ WM_NULL,WM_USER-1, IDS_WM_NULL. IDS_WM_... ...
>>911 TextOut(hoge(msg.message))
こんな感じで文字列に変換してくれる関数があったはずだけど忘れてしまった。
イマイチ
>>911 の言ってる意味がわからんが
>>917 のレスからするとsprintfとかCString::Formatとかを使えば良いって話か?
>>918 いや多分 case WM_PAINT: とかで個別に判断するのではなく、
デバッグ用途か何かで WM_PAINT とかの数字を "WM_PAINT" として
文字列でほしいんだと思う。
spy使えば解決するが、これと同じことをプログラムでやりたいんでしょ。
・・・・・・って
>>914 解決してるんじゃん。
(;゚д゚)ァ....
デバイスコンテキストってウィンドウにひとつでよろしいですか? それとも、いくつもウィンドウがある中でひとつなのですか?
923 :
デフォルトの名無しさん :05/01/27 14:16:08
>922 仮想化されてるので共有も多重化も可能。ビットマップやプリンタにも使える。CreateしたらDelete、GetしたらReleaseを後で呼ぶべし。詳しくはwinapiのDCを
>>922 仮想のキャンバスみたいなものかな。
そのキャンバスに描いたものを何処へ表示(出力)するかは
自分で決めるって感じで。
デバイスコンテキストって日本語で言うと何ですか?
926 :
デフォルトの名無しさん :05/01/27 14:31:43
デバイスコンテキスト
装置文脈
928 :
922 :05/01/27 14:35:56
ありがとございあした!
>>925 体重何kgの人まで座れるか椅子の耐久性を競うやつ
デヴ イス コンテスト
931 :
デフォルトの名無しさん :05/01/28 02:38:38
メッセージボックスの上で、VK_RIGHT が押されたのを ウィンドウプロシージャ内で判定したいんですけど、どうしたら出来るんですか? というか、 LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ; のHWND には何の ウィンドウハンドルが入るんですか? じぶんは メッセージボックスのハンドルと 思ってます。
なんかわかりにくいですけど、要するに VK_RIGHT が押されたのを メッセージボックス上で判定したいんです・・・ よろしくお願いします。
winMain でキャッチするだけだろう? わかんない
934 :
デフォルトの名無しさん :05/01/28 03:09:42
基本から分かってないと思います・・・ だれか助けて・・・
コンパイルしようとしたら C:\Program Files\Microsoft SDK\include\ObjBase.h(398) : error C2146: syntax error : missing ';' before identifier 'IRpcStubBuffer' と出ます。件の行には typedef interface IRpcStubBuffer IRpcStubBuffer; と書いてあります。 何を調べたらいいんでしょうか??
>>936 あんたの頭。
それは兎も角、その行の前辺り。
938 :
デフォルトの名無しさん :05/01/28 10:13:51
>931-932 msgboxをhookしろ。ぐぐれ
939 :
デフォルトの名無しさん :05/01/28 10:16:54
>936 interfaceの定義がわかっていない。 C++でもCでもそんなCOMの実装は見たことがない。
>>939 確かどこぞのヘッダにこんな呪文が
#define interface struct
そういやヘッダーファイルを読むやつは少なくなったな。 プリプロセサの吐いたソース読むと面白いのに
最近MFCの勉強を始めたんですが 参考にしている本がVC6.0プロに対応していて、私はVC++6.0スタンダードしかもっていません。 本を読んでいるとスタンダードは細かい設定が出来ないようなんですが VC++6.0プロを購入するべきでしょうか?
もう売ってないし そんなくだらない理由で買い換えるアホはいないだろ
>943-944 レスthx しばらくスタンでがんばります
サービスパック入れて手打ちで設定でプロ版になるらしい
947 :
デフォルトの名無しさん :05/01/29 01:29:08
Visual Studio .NET2003を使用してますが、 標準出力に出力した内容は、どこに表示または 保存されていますか? 標準エラー出力もわかりません・・・。
>>947 コンソールアプリなら起動したコンソールに、
そうでないならお察しください。
>>948 どうもです。
ぐぐった所では、MFCならTRACEというマクロ?、ATLなら他の何かで
表示できるらしいのですが、生のC++非コンソールアプリでは無理なのでしょうか。
>>949 TRACEとかはIDEのアウトプットに出る。コンソールじゃない。
おまいはどこに出したいのだ?
>>950 デバッグ用に出したいので、どこでもいいんです。
見れればOKです。
できればwstringとstringの両方を自動で対応できるなら
なおさらいいです。
>>951 環境依存でいいのなら_RPT系マクロがある。
953 :
デフォルトの名無しさん :05/01/29 02:41:36
複素数を含んだ双曲関数(sinh,cosh,tanh)の計算をしたいのですが、どのようにしたらようでしょうか?何かアイディアがあればお願いします。 ヘッダファイルを用い、複素数の和、差、積、商、平方根、絶対値、指数関数については定義済みで、動作確認もされています。
sinは計算できるの?
955 :
デフォルトの名無しさん :05/01/29 02:44:20
できます
2次元ベクトルで良いじゃん
957 :
953 :05/01/29 02:48:08
2次元ベクトル?? つまり、実部と虚部を別々に計算するということですか?
内積、外積しだいだが
>>953 マルチしたまま放置せんと、該当スレに謝罪して来い。
960 :
953 :05/01/29 03:41:17
すみません。これまでの書き込みは無視して下さい。 大変失礼しました。
VC っていつの間にか UI を簡単に作れるようになったんだ! いつから出来るようになったの?(バージョン及び年) ずっとただの CV の Windows 版だと思ってたよ。
.NETからは一応フォームエディタも
>>961 製品名の「Visual」は伊達じゃないんだぞ・・・
Win98の互換を入れると動くプログラムをXPにも対応させたいの だけれどどうすればよいでしょうか? 互換を入れると普通に動くのですが・・・ Win98のVC++6.0です。
>>965 環境依存するようなプログラムを排除すればいいだけ。
strcmpってなんですか? これが-1になる理由がよくわかりません。 #include <stdio.h> #include <string.h> main() { printf("%d\n",strcmp("a","may")); }
猫でもわかるSDK39章について フォントの設定次第で実行結果のWindowに"猫でも分かる"と表示されずに"LAai@eなどと文字化けしてしまいます。 文字コードの設定方法の違いだけだと思うのですが、文字コードなどの設定はどこで変更すればいいのでしょうか?
>>962-964 ありがとございます。
フォームエディタは .net からなんですね。
VC 1.0 は仕事で使いましたが、使いにくくてそれ以降使ってませんでした。
まぁほとんどコンソールプログラムばっかだし。
973 :
裕美子(東京の孤独な女) ◆h8lIp1b.Ek :05/01/31 21:18:42
URLデコードに関するロジックをC++で実装したいのですが サンプルをどなたか書いてくれませんでしょうか? VC++6.0を持っているのですが、ヘルプで検索してもよく分からないので お願いいたします。
Windowsでスレッドは何個まで作れますか?
>>977 でもマルチポンポしたくないので、このスレで
お願いします。
なんて、裕美子のまねをしちゃったぜ(へへへ)
>>973 googleで「URLデコード」で検索してごらん、アドレスは失念したけど
VBでコーディングした例が見つかるはずだ。
>>891 7.0ってNTに対応してたのか…知らんかった。
てっきり.NETは2000以降かと。
985は次スレを立てよう。
7.0で切り捨てられたのは95系じゃなかった?