★初心者にVisual C++を教えるスレ★ Part19
1 :
ぬるぽ :
2005/05/16(月) 11:19:48
2 :
ぬるぽ :2005/05/16(月) 11:20:08
3 :
ぬるぽ :2005/05/16(月) 11:20:27
4 :
ぬるぽ :2005/05/16(月) 11:20:47
5 :
ぬるぽ :2005/05/16(月) 11:21:16
急速にスレの質が低下してまいりました
1000!
今だ!2ゲットォォォォ!!  ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ∩ ∩ 〜| ∪ | (´´ ヘノ ノ (´⌒(´ ((つ ノ⊃≡≡≡(´⌒;;;≡≡≡  ̄ ̄ ̄(´⌒(´⌒;; ズズズズズ
>1 乙です >ダブルクリックで移動 まぁそれで十分といわれればそうなんですが できればいいなぁと言う願望があったわけで できないならそれでもいいんですがね ついでに前スレ1000get
9 :
デフォルトの名無しさん :2005/05/16(月) 12:39:34
atof() の動作原理が知りたかったのでソースを呼んでみたんですが、 実体の _fltin() が見つかりません。 わかる人いますか?
conv.lib に入っているね これのソースは、、、
アセンブラがわかるのなら混合モードで見れるね。
12 :
9 :2005/05/16(月) 13:19:40
アセ見るしかないですか ありがとうございました
>>前スレ990さん > VC++を学びたいのですが、どこから手を突けたらよろしいでしょうか? > 体系的に学べて良質なWebサイトがありましたら誘ってください 無料で見れるWebには過大な期待は禁物です。 コンピュータ関連の本が充実した本屋さんで立ち読みして、 自分の気に入る本を探したほうが、 多少のお金がかかりますが、結果的にはよいことになると思う。 ・・・とはいっても、 いまだかつて、これを1冊読めばOK、という本を見たことがないですし、 無料で見れるWeb未満の内容の本や罠たっぷりの本もあると思う。
nmakeの使い方を教えてください
16 :
デフォルトの名無しさん :2005/05/16(月) 15:20:42
VC(7.1)で作成したプロジャクトで、削除可能な中間ファイルは ***.ncb Debugフォルダ Releaseフォルダ 以外にありますか? というのは、なるべくコンパクトにして持ち歩きたいのです
経験でわかる
>>16 プロジャクトなる物が何かは知らんが、
*.suo, *.aps辺りも消して医院ジャマイカ?
自分で作ったやつ以外は消しても復元可能
.net2002ってnmake使えないのですか? せっかくバッチで6.0で一括コンパイルできたのに。 不便だ〜。
21 :
デフォルトの名無しさん :2005/05/16(月) 18:45:34
配布可能なdllの一覧が載ってるURLってご存じでしょうか? MSDNのどっかにあった気がするんですが・・・ ブックマークされている方ががおりましたら、教えて下さいませんか? m(_ _)m
> スレッド 0xC8 終了、終了コード 0 (0x0)。 この頃、「(0x0)」が顔文字に見えて仕方がない。
(0w0)
24 :
デフォルトの名無しさん :2005/05/16(月) 19:05:39
#include<stdio.h> void plus(int *,int *,int *); void main(void) { int i,j,ianswer; i=2; j=3; plus(&i,&j,&ianswer); printf("\ni=%d j=%d answer=%d\n",i,j,ianswer); } void plus(int *x,int *y,int *ians) { *ians=*x + *y; } これがグローバル関数宣言らしいんですけど、ローカル関数宣言 にするには、どーしたらいいんですか?
どのへんがグローバルなのか激しく謎だ・・・
26 :
デフォルトの名無しさん :2005/05/16(月) 19:14:11
>>21 ヒント:再配布はredistribution、略してredist
staticをつけるとかそういうことでしょう。
再頒布可能なファイルの一覧見たら 初めて見るファイルが一杯あった。 ビットマップとか結構使えそう
29 :
デフォルトの名無しさん :2005/05/16(月) 19:23:11
>>24 2段目の
void plus(int *,int *,int *);
がグローバル関数宣言だそーです。
新スレ立ったと思ったら またスレ違いか いい加減にしてほしいな
親切のつもりなら適切なスレ教えてやれよ
33 :
21 :2005/05/16(月) 19:44:21
static void plus(int *,int *,int *); にしたいって意味か?
ドライブ名をすべて列挙するにはどうしたらよいのでしょうか?
36 :
デフォルトの名無しさん :2005/05/17(火) 08:10:27
char drives[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
標準C/C++で可能な範囲はスレ違い ここはあくまでVC++
つかググれば一発な質問を何故するんだろうな?
>>40 MFCを使うならここでもいいけど・・・。
単にWin32APIの質問に見えたからさ。
スタンバイから復帰させる方法を教えてください
すれ違い
Win32アプリケーションでDos窓開いてそこにエラーメッセージ出力するのはどうすればいいのでしょうか?
プロセス間通信
>>45 こうすればstd::cerrもstderrも使える。
int _tmain()
{
STARTUOINFO si;
GetStartupInfo(&si);
return _tWinMain(GetModuleHandle(0), 0, PathGetArgs(GetCommandLine()),
StartupInfo.dwFlags & STARTF_USESHOWWINDOW ? StartupInfo.wShowWindow : SW_SHOWDEFAULT);
}
>>46-47 リンカの設定でサブシステム:コンソールをつけて
WinMainの前に47氏のコードを貼り付けることで
見事にドス窓に出力することができました。
どうもありがとうございました。
>>47 便乗質問。
SYBSYSTEM:CONSOLEしたらこんなん出ましたけどどしたらいいですか?
LIBC.lib(crt0.obj) : error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。
初心者スレで珍しい質問されても困るなあ 変態はよそへ行ってほしい
ポインタに new で確保した配列へのポインタを入れて デバッガで中身を見ようとすると最初の1変数分しか表示されないのですが、 全部一度に見る方法はないでしょうか? 今のところ一時的に int array[1024]; memcpy(array, pointer, sizeof(array)); というコードを入れて array を見ているのですが、いちいち これを書くのも面倒なので、もっといい方法があったら教えてください。
52 :
51 :2005/05/18(水) 22:29:04
書き忘れました、VC6.0です。
メモリビューア使え
>>51 それ多分仕様
DOSの頃のデバッガもそうだったし
やるんならメモリ直接覗く位かね
メモリウィンドウを出して、変数をドラッグ&ドロップ あとは配列にキャストする手も・・・
>>51 ウォッチに
pointer,1000
と書く
>>49 プロトタイプ宣言しろ。
あとMFCアプリでも使えるぞ。
マウスのボタンの数を取得するにはどうしたらよいのでしょうか?
GetSystemMetrics(SM_CMOUSEBUTTONS);
キーボードのボタンの数を取得するにはどうしたらよいのでしょうか?
サーバー、クライアントプログラムを作る時 ひとつのソリューションの中にサーバープロジェクトと クライアントプロジェクトを作成でよろしいのでしょうか? これで正解のときサーバーのほうをスタートアップにして VCから実行させれば自動的にクライアントの方も起動するための設定は どのようにすればいいのでしょうか?
62 :
デフォルトの名無しさん :2005/05/19(木) 18:49:38
分割ウィンドウで、親ウィンドウをマウスなんかでサイズ変更したとき、分割比率を保持したまま ウィンドウのサイズが変更できるようにしたいのですが、どうしたらいいのでしょう? ヘルプにはCSplitterWndクラスにオーバーライド可能な関数で使えそうなのが示されていますが、 VCのクラスを作るダイアログでMFCの基本クラスを探してもこれがありません。
63 :
デフォルトの名無しさん :2005/05/19(木) 18:50:33
ここMFCスレなの?
64 :
61 :2005/05/19(木) 18:50:50
まるちスタートアッププロジェクトなるものを発見しました。 すれ汚し失礼いたしました。
65 :
デフォルトの名無しさん :2005/05/19(木) 19:45:34
DOSコマンドの tree をやった時のようなごとく、 コンピューターに存在する全てのパスを得たいのですが、どうすれば よろしいのですか?
66 :
デフォルトの名無しさん :2005/05/19(木) 19:49:48
>>62 MFC以外もいいけど、何でもありじゃない。
普通のVCの入門書の範囲内ならOK
>>13 プログラミング言語C++ 第3版 は罠ですか?7800円もするんですけど。
すいません、 int main() { } int t_main() {} int main(int argv, char* argc) { } なんででしょうか?エントリポイントの名前違うし・・・引数取ったり取らなかったり。。。
>>56 やっぱり方法があったんですね。ありがとうございます。
C++はスレ違い ここはVC++
>>69 そういうことが気になるなら
自分でソース見るかビルドして比較してみろよ
つか「引数取ったり取らなかったり。。。 」なんて問題外
C/C++初心者が来る所じゃないけど
75 :
デフォルトの名無しさん :2005/05/20(金) 13:44:35
初心者です。 よろしくお願いします。
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__∧∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>75
77 :
デフォルトの名無しさん :2005/05/20(金) 13:55:10
VC2003を使っています。 date.txt(数値が1行ずつ書き込まれたファイル)をtest.cに読み込ませる?にはどうしたらいいのでしょうか? UNIXのリダイレクションにあたる行為です。
date.txtをtest.cにリネームすりゃいいんじゃないの? やり方はいろいろあるけど、そういう仕様ならたぶんそれが一番効率的
UNIXとかわらんよ
cat date.txt > test.c こういうこと?
81 :
デフォルトの名無しさん :2005/05/20(金) 17:15:33
最近C言語を学び始めたド素人です。 知り合いに「C言語やるならツール買った方がいいよ」と進められ、 開発ツールなるものを調べたのですがよく分かりません。 Visual C++はC++だけでなく、C言語にも対応しているのでしょうか? 教えてください。宜しくお願いします。
対応してるよ。 今なら Visual Studio 2005 Beta2 が無料で使えるらしい
83 :
82 :2005/05/20(金) 17:18:20
らしいから、それで試してみたらよい
85 :
81 :2005/05/20(金) 17:47:35
>>82 ありがとうございます。
早速イジってみます。
>>69 _tmainはtchar.hの中でこう書かれている。
#ifdef _UNICODE
#define _tmain wmain
#else
#define _tmain main
#endif
wmainはargv(お前がargcと書き間違えている方)がwchar_t* []になっていて、
_TCHARと組み合わせてUnicodeを使うかどうかを切り替えられるようになっている。
VS6を使ってます。 自分のイメージでは、プログラム全体の動作速度というかキビキビ度は SDK > MFC > VB6 なんですが、この認識であってますでしょうか? もちろん、内部の仕様や規模によってケースバイケースでしょうが、 このあたりの比較についてコメント頂きたいです。よろしくお願いしますです。
大差ねーからどれでも好きなの使っとけマジレス
89 :
英語XP環境では全く起動できません。 :2005/05/20(金) 19:39:11
日本語XP環境では問題なく起動できるのですが、 (.dllファイルと.exeファイルがフォルダーにおいてあります。) .exeファイルをダブルクリックして起動させるだけですが、 英語XP環境では全く起動しません。 原因対策等をご教授いただけないでしょうか?
英語のリソースもつける
>>87 速度が関係するのは、たいていGUIに関係ない部分で
内部処理はどうにでもできるわけだし
ゲームプログラマ目指してる超初心者なんだけどゲーム作るために必要なツールっていくら?
>>92 タダ(学習能力とモチベーションが高い場合)〜数千万(コンシューマ)
94 :
英語XP環境では全く起動できません。 :2005/05/20(金) 19:57:23
>90 ご連絡ありがとうございます。 英語のリソースは日本語のリソースを英語に書き換えて 保存しただけです。
>>93 それは企業とかで採用してるやつですよね。それじゃあ個人で作品作ったりする場合はC言語等がオススメと聞いたんですが
個人で使えるレベルのC言語ツールはいくらでしょうか?
96 :
87 :2005/05/20(金) 19:59:13
素早いレスありがとうございます。
>>88 ありゃ、そんなもんですか。我慢してSDK使う必要もないんですね。。。
>>91 なるほどです。見てくれと実際の処理で適材適所というわけですね。
>>95 学習能力とモチベーションに、個人か否かは関係ない。
個人でも財布の中身はピンキリだ。
安くしたいならgccとかBC++とかVC++2005 Express βとか好きにする・・・
#BC++ってまだタダで配ってたっけ?
>>87 SDK >= MFC >= VB6
越えられない壁はあるが、個人の能力次第で大差なくなる。
クラステンプレートを作成したのですが、テンプレートという物は ヘッダファイルとソースファイルに分けたらダメポなんですか? VC6でビルド時に散々外部参照が未解決というエラーが出まくってたんですが、 全てヘッダファイルに纏めたら嘘のようにエラー表示が無くなりました。
>>99 分けてもいいよ。
ATLは一部分がDLLになったりしてるよ。
タスクマネージャで見てみるとメモリ使用量がどんどん増えるけど crtdbgで調べてみてもメモリリークは発生してない これってほっといても平気?
103 :
デフォルトの名無しさん :2005/05/21(土) 05:14:25
VC++ でデバッガにアタッチした状態で、変数にマウスもってくと 評価結果をツールチップ表示してくれる機能があるけど、 これって表示内容というか評価内容を定義できないのかな? どなたか知ってる人教えてください。
>>94 プロジェクトの設定でリソースの言語タイプの指定が有るの、知ってるか?
>>102 それが正常な動作だと思うなら、ほっといても問題ない。
106 :
102 :2005/05/21(土) 21:50:38
DeleteObjectで増えなくなった
107 :
デフォルトの名無しさん :2005/05/22(日) 02:02:12
Visual C++ 6.0でコンパイルをするとリンク中と表示されたままで 進まないことが以上に多いんですけど、 これってどうしようもないんですか?教えてください。
昔あったな、それ どうやって直したんだったか・・
109 :
デフォルトの名無しさん :2005/05/22(日) 02:24:18
>>99 言語仕様として、テンプレートの定義はすべてテンプレートクラスか
ネームスペースのスコープ内でないといけない。
110 :
デフォルトの名無しさん :2005/05/22(日) 02:26:09
>>107 VC6.0サービスパックをインストールしてみたら?
108はVCそのものを直したのか… M$の中の人?(w
>>111 それだ。
VC++そのものをバージョンアップした(2003に)
>>107 僕もたまになるけど、僕の場合は、「最小化→元に戻す」を行うと起動しだす。
レジストリのサブキー一覧を取得する方法を教えてください。
116 :
デフォルトの名無しさん :2005/05/22(日) 12:45:52
DirectXの質問スレで答えが得れなかったのでこちらで VC++.NET2003でDirectX9.0cAprilでDirectPlay8を利用した クライアントサーバ型チャットプログラムを作っています 通信相手が接続したらDPN_MSGIDメッセージを 別ソースへ記述してあるメッセージハンドラが受け取って .NETWindowsフォームアプリケーションである Form1のリッチテキストボックスコントロールのrichtxtに "接続しました"系のメッセージを表示するにはどうすればよいでしょうか? switch(dwMessageType) { case DPN_MSGID_CREATE_PLAYER ここをお願いします return DPN_OK; }
.NETはこのスレでいいのか?
C#.NetスレはあるがC++.netスレは無いからな あえて言えば.NET Frameworkスれか?
120 :
116 :2005/05/22(日) 13:22:39
どのスレで質問すれば教えてくれるんでしょうか・・・ 関数からForm1のオブジェクトを操作するだけなのに すでに1週間近く悩んでいますが
>>120 Form::ActiveFormかなぁ。
しかし問題の本質を理解して適切に質問する能力も必要。
今回の場合DirectXはぜんぜん関係なさそうだし、switch文一つだけ提示されても答えようがない。
122 :
デフォルトの名無しさん :2005/05/22(日) 13:44:38
近頃VisualStudio.NET買ったんですが、 開発画面が壮大すぎて分かりません。 コードも最初から山ほどあるし、意味不明です。 何か良い勉強方法はありませんでしょうか。 入門書は 新VisualC++.NET入門 猫でも分かるWindowsプログラミング 両方糞本で全く分からなくて スタンダードVisualC++という本を今読んでるところです。 こちらも挫折しそうです
猫を糞本と断ずるお前が糞だ
124 :
122 :2005/05/22(日) 13:48:24
すみません書き間違えました 猫は関係ないです。WinAPIはわかっています MFCの壮大な画面が分からないんです
>>122 お前の言っていることが意味不明。
まず何がしたいか書け。
それだけの情報だと、C言語を勉強したことがないならC++の前にC言語を勉強しろとしか言えん。
126 :
116 :2005/05/22(日) 13:50:30
VB6ならForm1からForm2へ命令を出すのは Form2.Text1.Text="接続"という風に安直ですが C++ではそうは行きませんか・・・
127 :
122 :2005/05/22(日) 13:50:51
C/C++とWinAPIは理解してます すみません MFCで色々アプリを作りたいんですが、プロジェクトを作成したら 最初から色んなコードがあって、頭が混乱してる状況です そういう細かいところまで解説したページや本は無いのかな、、、と
130 :
122 :2005/05/22(日) 13:54:13
>>128 そこも見ましたがなんか・・もっと細かいのないですか
経験者だろうが始めはHello Worldからやるもんだけどな いきなり難しいことやるのはアホ
>126 それって単純にグローバル変数とかそーゆー話?
133 :
122 :2005/05/22(日) 13:59:21
MFCプロジェクトでHelloWorldしようとしてるのですが・・それさえも
>>130 まずダイアログアプリケーションから作るのがいい。
プログラムを開始すると、
CXxxApp のコンストラクタが一番最初に、
次に CXxxApp::InitInstance が呼ばれる
その中でダイアログを表示しているコードがある。
CXxxDlg のコンストラクタが呼ばれる、
CXxxDlg の OnInitDialog が呼ばれる。
ここまではわかれば後は速いかな。
メッセージマップとかはすぐに理解できるものではないかも。
だけど、仕事じゃないなら、慣れてきたら MFC を離れて WTL 使ったほうが幸せかもよ。
135 :
122 :2005/05/22(日) 14:01:13
136 :
116 :2005/05/22(日) 14:07:05
そうかもしれません よろしくお願いします
stlはスレッドセーフですか?
139 :
116 :2005/05/22(日) 14:31:44
了解しました ありがとうございました
現在IEで開いているページのアドレスの取得方法を教えてください
>>140 スレ違いだが、今回だけだぞ。
メニュー
-「表示(V)」
-「ツール バー」
-「アドレス バー」
これでアドレスが判る様になる。
>>141 もう少し詳しく教えてください。関数はどれですか?
ハァ? 普通に表示されてるだろ? おまえの目は節穴か? アドレスバーに
スクリーンショットを取りパターンマッチングでアドレスバーの場所を特定、 テキスト領域を切り出して画像認識
>>140 IEのツールバーを自作する。
自作ツールバーから、それが属するIEにアクセスする。
147 :
デフォルトの名無しさん :2005/05/22(日) 16:21:47
既存のファイルからビットマップを取り込もうとして リソースの追加>Bitmap>インポート>ファイルを開く、 としていったのですが、 うまくいきません。 どのようにすればいいでしょうか。 コンパイラは.NET2003です。
コンパイラは関係ないと思われ
>>147 そのビットマップをメモ帳で開いてみろ。
150 :
147 :2005/05/22(日) 16:30:58
>>150 どう書かれてる? それでも原因分からない?
152 :
147 :2005/05/22(日) 16:40:27
先頭にBMって書いてる以外 むちゃくちゃな文字が並んでるだけ 何ですが。
メッセージボックスの開き方を教えてください
>>153 まず、箱にリボンがかかっている場合はリボンを解きます。
>>152 リソースへ取り込むのか?
うまくいかないってのはどううまくいかないんだ?
156 :
147 :2005/05/22(日) 18:02:32
>>153 リソースとして取り込むんです。
新規作成ならビットマップフォルダが作成されるのですが、
インポートだとビットマップフォルダが作成されないんです。
157 :
147 :2005/05/22(日) 18:04:16
>>147 ビットマップのある場所が問題なのかも
たしか、フルパスで全角文字があると、インポート出来なかった様な・・・
インポートしたいビットマップファイルをルートに置いて
再チャレンジ
160 :
147 :2005/05/22(日) 18:33:41
>>159 できました。
ありがとうございました。
マイクロソフトのC++に対する独自拡張に、 任意のクラスの継承を禁止する機能ってありますか? Javaのsuperに相当するものはあるようですが、 finalに相当するものが見つからないのです。
>>161 C++ではデストラクタをvirtualにしていないことでこのクラスを継承するなと言う意思表示しかできないと思う。
>>122 MFCプロジェクトでHello worldはこうやれ。
MFCプロジェクトを作ったら、CWinAppの派生クラスにInitInstance()と
いう関数がある。その関数の先頭に
AfxMessageBox("Hello! World!");
という一行を書いてビルドして実行。
viみたいなコマンドで動くソフトを作っている者です。 「j」をカーソルキーの下に対応させることはできました。 このような一文字のコマンドは簡単にできるのですが、 行削除の「dd」のような二文字のコマンドの場合はどうすればよいのでしょうか。 dの入力を記憶しておく変数を用意して、dが既に入力されていれば、 ddであるみたいなことは思いついたんですが、 「5dd」なんかの何パターンもあるやつができないです。 BOOL CxxxxDlg::PreTranslateMessage(MSG* pMsg) { if( pMsg->message == WM_KEYDOWN ){ switch( pMsg->wParam ) case 'J': break; 見たいな感じにやってるんですが もっと賢いやり方は無いでしょうか?
コマンドとして完結してるかチェックだけして してなければ次のも追加 完結して初めてコマンド実行
>>164 Visual C++以前に状態遷移図について勉強してみよう。
167 :
164 :2005/05/22(日) 22:05:33
>>165 >>166 ありがとうございます
n=0
@
key[n]に入力されたキーを入れる
コマンドとして完結しているか
もしコマンドなら実行・key[]を初期化
違えば、n++する。key[]があふれたら初期化して@に戻る
こんな流れでいいのかな
少し分からないところは
コマンドとして完結しているかを調べるところです、
成立しているしているコマンドを配列に入れておき
key[]と比較して同じならコマンドであるということは分かりますが、
数字が含まれるコマンドはどうしたらいいのでしょうか?
168 :
デフォルトの名無しさん :2005/05/22(日) 22:07:48
SDKでBitmapをBitBltで描画しています。 Bitmapを左にスクロールさせたいのですが、 何か良い方法ないでしょうか? ワーク用のビットマップを用意して、そちらにコピーして また戻す、ってので一応できるのですが、 なんか無駄なので。。。 Google等でスクロールAPIを探したのですが、 見つけられませんでした。
このスレおもしろいね
>>167 viはオープンソースだし、勉強したければソース見ろよ
つかアルゴリズムとかの話なら言語と関係ないし
ここでやるな
172 :
168 :2005/05/22(日) 22:22:40
Win32API質問箱スレの方が適切っぽいので移動します。 すみませんでした。
173 :
164 :2005/05/22(日) 22:28:49
174 :
161 :2005/05/23(月) 01:11:15
>>162 デストラクタをvirtualにしていないクラスを継承してしまう事故を防ぎたいのです。
日本語対応のコンパイラのくせして、 なんで変数名に漢字が使えないんだ!!
>>174 こういうのはどうよ?
コンストラクタをprivateにしてインスタンスの作成には静的メンバのCreate()を呼ばねばならない。
Create()ではnewしたポインタを返す。ポインタは各自スマートポインタの類に入れてもらう。
コンストラクタがprivateなので継承しても基底クラスのコンストラクタを呼べないから実質不可能になる。
最近どっかのスレで同じ話題が出てたな。継承不可クラス。 friendと仮想基本クラスを使ったやつで。
スレと全然関係ない
質問です。 VC++にx86-64のコンパイラを含んだPSDKを入れて組んだコード内の構造体のサイズはどのようになるのでしょうか? 今までどおり4の倍数なのでしょうか?
>>180 ここ初心者スレですよ
特殊な環境の話は想定外です
上級者スレはどこですか?
pragma一覧はどこで見られますか?
上級者ならこんな所来ないし
VC.netでドラッグ&ドロップでツールバーのボタンとかメニューの位置変わってしまいますが これ固定する方法ありませんか?
ReBarのことだろうか?
はい。ReBarのことのようです。 自分が使いやすいようにバーの位置カスタマイズしても、 間違えてドロップしてしまうとまた位置直さないといけないので固定したいのですが・・・。 あとEUCやらJISやらの文字コードの選択も見当たりません・・・。 Linuxで作られたソースのコメントが文字化けってる・・・。 アフォな質問ばっかりですみませんがご存知の方お願いします。
190 :
161 :2005/05/23(月) 22:36:38
>>176-178 ありがとう。
やっぱりC++の範囲内でトリッキーなことをするのか。
天下のマイクロソフトなんだから批判を気にせず拡張していてほしかったよ。
>>183 MSDNライブラリ
で
pragma comment
を検索して、それらしき解説のページを表示した状態で「同期」すりゃいい。
>>190 いくらなんでも継承不可なんてそんなの取り入れたらもはやC++とは言えない。
そんなに継承不可にこだわるんだったらC++使うな。
継承必須にはできるけどな
gccやbccのM_PIに当たるものを教えてください
>>193 M_PI
自分でmath.h見ればいいじゃん。
M_PIを使うには
#define _USE_MATH_DEFINES
#include <math.h>
とするみたいよ
195 :
Failed to create empty document. :2005/05/24(火) 19:00:38
VC++で制作したアプリを起動しようとすると Failed to create empty document. というアラートがでます。 原因、対処方法をご教授いただけないでしょうか。
debugモードではどうなの? DLLがおかしいと出るみたいよ、それ
Failed to create empty document でぐぐったらなんか出てくるぞ
198 :
Failed to create empty document. :2005/05/24(火) 19:28:12
XPの日本語OSなら出ませんが、英語OSででます。
>>191 継承しても正しく動作するようにコーディングしないとC++とは言えないの?
デストラクタを仮想関数にしないことができることと矛盾してない?
継承しても正しく動作するようにすることと、継承不可は別問題だろ
ヘッダに継承しないでね♥ と書く
>>198 日本語リソースのDLL(コモンダイアログ等)を要求してるのでは
普通はVC++.NETって3ヶ月くらい勉強すれば 仕事もてるくらいになるんでしょうか? 3ヶ月で成果出さないとやばいみたいな事言われたんだけど 教育とかないしテキストも最初に2冊買ってもらったけど 部分部分の作り方が簡単に書いてある奴だけなんで なかなか厳しい…
だらだらやるよりも3か月なら3か月と決めてみっちりやった方が身に付く。
>>199 そうじゃなくて継承不可のクラスを作れるという仕組みをコンパイラが搭載したら
それはもはやC++コンパイラと呼べなくなると言ったんだ。いくらなんでもC++から離れすぎると思う。
プログラマが継承しない(してほしくない)クラスを作るのは全然問題ない。好き勝手にしろ。
それよりスレ違いをなんとかしてほしい
おまいの現在の実力とVCで何をやるのか次第だな 極端な話、コンソールプログラムでhello worldも出せないのにWordのようなのを作ろうとしたら 3ヶ月が3年でも無理だろ。 何が言いたいかと言うとおまいはどのくらいのやり手で、どんなことをやるのかをはっきりしろってこった
Winアプリケーションで作成したプロジェクトを コンソールにすることは可能ですか?
209 :
208 :2005/05/25(水) 02:56:02
プロジェクトのオプションなどで変更可能かということです
>>208 簡単な方法は無いのでソースの中で AllocConsole()
>>209 プロジェクトのオプションなどで変更可能。
>>209 或いはプロジェクトを新規に作ってソースを移動。
214 :
デフォルトの名無しさん :2005/05/25(水) 12:28:59
コンボボックスを「ドロップダウン リスト」形式で使用しています。 通常のエディットボックスの部分(一番上)は小さく、 ドロップリストの表示だけ、大きくしたいのですが、 オーナードローで上手くできないでしょうか? ┌───┐ ├───┴──┐ │ . │ │ . │ └──────┘ ※イメージ
215 :
デフォルトの名無しさん :2005/05/25(水) 12:37:21
VC++6.0にVisualStudioSP6をあてました。VC++のどこを見れば、ちゃんとsp6になっているか どうか確認できるのでしょうか?
別のウィンドウに文字列を出力する関数を どこかで見たんですが、何でしょう? Outputなんとか、みたいな名前でした。 vsprintfで可変個引数使ったサンプルだったと思います。 (ユーザ関数で作成したもの) MessageBoxでデバッグ出力してましたが、そちらの方が便利かと 思い質問しました。 MSDNでOutputStringというのが有りましたが、違うようです。
メイクとコンパイルの違いってなんでしょう
VCの場合は NMAKE.EXEでメイク CL.EXEがコンパイラ
>>220 ついでにメイクとビルドの違いも勉強しよう。
本読みながらBCCで勉強してるけど コンパイラ以外は乗ってないな・・この本だめぽ ググって調べてみますわ。
あれ、BCCにはメイクしかないのかな? メイク=ビルド? 大学でC使ったときはビルドってあった気がする。 環境環境によって違うって事かな
ビルド=コンパイル+リンク らしいです。機械語にして実行ファイルを作る作業ってことなのかな。 最初から調べればよかったか・・・w
227 :
Failed to create empty document. :2005/05/25(水) 20:47:19
>>202 ご連絡ありがとうございます。 >日本語リソースのDLL(コモンダイアログ等)を要求してるのでは MFC71.dll msvcp71.dll msvcr71.dll を.EXEファイルと同階層のおいてますが、 日本OSなら問題無く起動でき、英語OSだとアラーとがでて 起動できません。 英語OSでも問題無く起動させる対処法はあるのでしょうか?
Visual C++ C C++ ↑三種類あるの? どれが一番簡単?>「
このスレはVisual C++専用
メイクはそもそもUNIX用語
>>227 英語用のプロジェクト作って比べて見ればわかるだろ
MSのサンプルは英語版なんだし、動かないわけないが
232 :
214 :2005/05/25(水) 21:36:35
>>218 ありがとうございました。
おかげで、かなりいい感じのができそうです。
>>232 いいってことよ。完成したら公開してくれよな。
234 :
デフォルトの名無しさん :2005/05/25(水) 22:14:06
こんばんは、今microsoft visual stadioを、 インストールしたのですが、これでは、visual c++ をつかうことは、 できないのでしょうか。
できないと思った根拠は?
236 :
デフォルトの名無しさん :2005/05/25(水) 22:28:13
>>235 さんへ
>>できないと思った根拠は?
visual c++の起動ファイルがないのです。
スタートメニューからVisual Studio.NETを起動して、 ファイル→新規作成→プロジェクト→Visual C++プロジェクト
>>234 visual studio買ってくるといいよ
>>236 本1冊買ったらどう?安いのでいいからさ。
240 :
デフォルトの名無しさん :2005/05/25(水) 22:41:40
オスカー美女軍団とたけし軍団だけはガチ
241 :
デフォルトの名無しさん :2005/05/25(水) 22:50:25
皆様いろいろありがとうございますが、 もうひとつ教えてください microsoftでダウンロードしたのは、 visual c++ 2005 express edition beta 2でした、 これは、visual c++ のことでは、ないのでしょか。
245 :
デフォルトの名無しさん :2005/05/25(水) 23:23:43
>>241 です。
やっとわかりました。
visual c++購入で検索すると、ソフトがでてきました。
いろいろとありがとうございました。
246 :
デフォルトの名無しさん :2005/05/26(木) 00:53:51
ダイアログベースアプリでセカンダリスレッドからAfxGetMainWndを呼び出してメインウインドをとってたんだけど VC6ではちゃんととれるんですけど、そのままVC7にコンバートしてビルドしたらNULLが返ります。 なぜでしょうか?VC7になってdllかなんかが変わって本来の仕様(?)になったのかな?
>>246 どっちが本来の動作か知らないけど、
7の方のAfxGetMainWndのコードを見る限りじゃ、
現在のスレッドのメインウィンドウを取ってくるみたいだから、
別スレッド作ったらその時点ではNULLになってるだろうね。
サンクス。 ってことはどうやらMSDNの記述どおりになったんだね。 メインスレッドからハンドルとってグローバルに保持する方向で修正します。
250 :
Failed to create empty document.: :2005/05/26(木) 12:38:01
>231 英語用のプロジェクトってどうやってつくるのですか? すいません。初心者なもので・・ あと、この.EXEですが、基は日本語版用で、表記を英語に変えて VisualC++.NETで保存しただけです。 日本語版のXPではこれだけの作業で、問題無く、英語表記で 起動してます。
>>250 そのプロジェクトのプロファイルを開いて、
リソースの欄のカルチャを見てくれ。
プロファイルじゃないや、プロパティ
256 :
Failed to create empty document.: :2005/05/26(木) 18:00:55
ご連絡ありがとうございます。251〜255 リソースはプロパティで全て英語(米国)にしてあります。 ファイルは MFC71.dll msvcp71.dll msvcr71.dll ABC.exe ファイルが同階層に4つあるだけなので、 リソースを英語表記に変更して保存しかできてないです。
最初から英語で作って動かなきゃ 日本語で作ったやつを英語に変更するのはもっと無理
258 :
Failed to create empty document.: :2005/05/26(木) 18:53:06
>257 最初は日本で作って英語にプロパティで変更しました。
>>258 あのさ、その.rcファイルをテキストエディタで開いて
じっくり見てみなさいな
そんでJAPANの文字や、932とか0411の数字検索してみて
260 :
259 :2005/05/26(木) 18:57:09
最初から英語で作るんで無ければ、 変更するんじゃなくて、英語リソースを追加するほうが 間違いが無くていいと思う
261 :
デフォルトの名無しさん :2005/05/26(木) 19:03:30
なんでもいいから最初から英語で作ってみろって それすらできないのか? アホ?
FormatMessageのサンプルで、 エラーコードをメッセージにするものがありますが、 そこで得た文字列をTRACEで出力すると文字化けを起こしてしまいます。 MessageBoxでの出力は正常にできているし、 ブレークポイントで変数の内容を見ても文字化けしてません。 TRACEでの出力時にだけ文字化けをおこします。 どうすればいいんでしょう。 WinXP SP2 VCnet2003 で、Unicode 文字セットを使用しています。
TRACEに渡すときはMBCSにしておく必要がある。
264 :
262 :2005/05/26(木) 22:52:10
>>263 無事に解決できました。ありがとうございまた。
GetAsyncKeyStateでキー取得しているのですが、 ウィンドウがアクティブでない時も取得してしまうので、 アクティブがどうかチェックする方法が知りたいです。
>>265 WM_KEYDOWNとWM_KEYUPでやった方がいいんじゃない?
>>265 自分がアクティブウィンドウかどうかの判定?
268 :
265 :2005/05/27(金) 01:25:55
逆に言えば、アプリがバックグラウンドかどうかが知りたいんです。
WM_KEYDOWN ならアクティブなときしか来ないんじゃない?
Win2k、VC6、MFCな環境でCOMを使おうとしています。 メインスレッドに以下のような関数を作り、やりたいことができることを確認しました。 CoInitialize(NULL); /* 処理 */ CoUninitialize(); 次に、AfxBeginThreadでワーカスレッド作って上記コードを埋めこんだのですが、 最初の1回だけ無事動きまして、2回目以降はruntime errorでプロセスが死にました。 「マルチスレッドだからダメなのか!」と思い、いかにもそれっぽいので CoInitialize(NULL) を CoInitializeEx(NULL, COINIT_MULTITHREADED) にしましたが、同様の症状です。 戻り値も S_OK なので、これは根本的な理解に欠けてるためだと思い、ちょっと調べてみたところ アパートメントという言葉に遭遇し、あやふやなCOMの理解と併せて相当しんどそうと感じました。 そこで、虫の良いお願いで申し訳ないのですが、どう書けばとりあえず動くか御教示願えますでしょうか? 動かしたいのは勿論ですが、むしろ理解のための足掛り・お手本を頂きたいなという状況なのです。 長文ですみません。どうぞよろしくお願いします。
スクリーンセーバーを起動する方法を教えてください
>>271 スクリーンセーバはEXEファイルと全く同じで拡張子だけが違う。
だからsystem()やShellExecute()がそのまま使える。
ShellExecute(NULL,"open","スクリーンセーバのファイル名",NULL,NULL,SW_SHOWNORMAL);
GetForegroundWindow() か GetActiveWindow()で 持ってきたハンドルと自分のm_hWndを比べるのはどうか
デバッガで、ある変数の値が変わった時、 ブレークする方法ってありませんか? ブレークする場所を指定せずに。
フォルダ内のexeを検索して、そのexeが起動中かどうかを判断するにはどうすればよいですかね? 起動中かどうかの判断する方法です
>>275 デバッグメニューのブレークポイントの作成の
データタブの条件
>>276 先に全プロセスのハンドルを入手してそこからGetModuleFilename()でパスを得ておき、
それと検索して見つけたEXEのパスを比較すればいいんじゃない?
>>270 COMをちゃんと勉強したほうがいい。
適当にやって適当に動いていると、後でトンデモナイ目にあう。
<<277 thanks
vs2005β使ってます。 midiファイルを演奏させるためにmciコマンドを以下のとおり入れたのですが、openでエラーになってしまいます rtncode=mciSendString( "open d:\town.mid type sequencer alias music" , NULL, 0, NULL ); ここで、rtncodeにエラー259(ドライバは指定されたコマンド パラメータを認識できません。)が返送されてきます。 d;\にはmidファイルも置いてあり、WMPで正常再生できたファイルであることは確認しています。 ※open sequence のみ指定時はエラー0でした。 すみませんが何が悪いのか分かったら教えていただけますでしょうか。
>>282 あっと、そういうことか
d:\\town.mid
いま、やってみたら音が出ました。
3日も悩んだのに〜 orz
ありがとうございました。
まぁ、よくやる失敗だよ もっと別の文字だったら、コンパイル時にエスケープシーケンスじゃねぇよって言われて気付けたんだろうけどな
286 :
281 :2005/05/28(土) 08:00:54
皆さんいろいろアドバイスありがとうございます。
また教えてください。
rtncode=mciSendString( "open d:\\test.mp3 type MPEGVideo alias music" , NULL, 0, NULL );
このrtncodeが エラー263(指定されたデバイスが開かれていないか、または MCI で認識されません。)に
なってしまいます。
で、
ttp://hp.vector.co.jp/authors/VA011973/prg_mci.htm のページに登録デバイス表示があったので
試してみたところ
AVIvideo CDAudio Sequencer WaveAudio
の4つが出てきたのですが肝心のMPEGVideoが出てきませんでした
質問1 エラーの原因は登録デバイスに名前が無いのが原因でしょうか
質問2 MPEGVideoを指定できるようにするために必要なLIBはあるのでしょうか?
一晩格闘して全然分かりませんでした。どなたか教えていただけますでしょうか。
VS2005 β2 使用です。
mci mp3 でぐぐったら何かでてくるぞ
288 :
281 :2005/05/28(土) 23:02:07
>>287 ありがとうございます。
一日がんばってみたけどだめだったとです。 orz
また明日がんばってみます。
.netの使い方を誰か教えて下さい 猫でもわかるwindowsプログラミングの巻末の資料を頼りにやってるんですけど そんだけでやってる人いる??
宇宙仮面
C#なんかやりたくない!
.NetのC++とC#ってほとんど一緒じゃないか? .NetでUnmanagedなら今までのVCと一緒だし
managedとunmanagedを混ぜると、やりとりが面倒だけどな。
混ぜられるんだ!? 知らなかった・・・
>>293 ありがとうございます
¢(。。)いつか二人用の将棋が完成したら、共に指しませう
従来のVisual C++と互換性があって.NETも使える欲張りな言語だから複雑。 ボックス化 アンマネージ→マネージ ボックス化解除 マネージ→アンマネージ
混ぜずにCOMを使ったほうがいいと思う。
コンパイルエラーが : error C2143: 構文エラー : ';' が '*' の前にありません。 : error C2501: 'CClashApp::CMainWindow' : 識別名を宣言するのに、型が指定されていません。 : error C2501: 'CClashApp::m_pWnd' : 識別名を宣言するのに、型が指定されていません。 class CClashApp : public CWinApp { public: CMainWindow* m_pWnd; //すべて、この行のエラー CClashApp(); public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() }; これ、何が原因なんでしょうか?
そこの行までにCMainWindowの定義がないから。
301 :
300 :2005/05/29(日) 21:52:54
ポインタだから最低宣言だけあればいいか
ありがとうございます。 class CMainWindow; これを宣言したらエラーは消えました。
宣言も無いのに型として指定することなどできん こんなことくらい常識だろう?
>>297 えぇ??
Managed C++は使ったことないが、boxing/unboxingは値型と参照型の変換だろ?
Managed-Unmanaged間の変換はマーシャリングじゃないのかと。
305 :
デフォルトの名無しさん :2005/05/30(月) 01:31:37
えーすいませn プリプロセッサに _UNICODE を渡すように プロジェクトの設定をいじったのですが、 TCHAR -> char MessageBox -> MessageBoxA TEXT("ほげ") -> "ほげ" (Lプリペンドなし) になっているようなのですが どうすれば直りますか? いじってるのは、 Programming Windows (petzol) 2章に載ってるサンプルコード "SCRNSIZE.C"です。 onegaisimasu
#ifdef _UNICODE #ifndef _TCHAR_DEFINED #if !__STDC__ typedef wchar_t TCHAR; #endif #define _TCHAR_DEFINED #endif #else /* ndef _UNICODE */ #ifdef _MBCS #ifndef _TCHAR_DEFINED #if !__STDC__ typedef char TCHAR; #endif #define _TCHAR_DEFINED #endif #endif /* _MBCS */ #endif /* _UNICODE */
_UNICODE と UNICODE 定義すれば API も W になった…気がした。
308 :
305 :2005/05/30(月) 02:40:40
...ですが winnt.hで定義されているらしい UNICODEというのも渡したら、直ります田おさわがせすます田
309 :
270 :2005/05/30(月) 08:53:24
>>279 お返事遅れて申し訳ありません。
やはり腰を据えて勉強するべきでよね・・・了解です。
(ブ厚い)本買ってやってみます。御指導ありがとうございました。
310 :
300 :2005/05/30(月) 09:17:20
APIの方はUNICODEで、CRTの方は_UNICODEだっけか?
WINMMAPI BOOL WINAPI PlaySoundA( IN LPCSTR pszSound, IN HMODULE hmod, IN DWORD fdwSound); WINMMAPI BOOL WINAPI PlaySoundW( IN LPCWSTR pszSound, IN HMODULE hmod, IN DWORD fdwSound); #ifdef UNICODE #define PlaySound PlaySoundW #else #define PlaySound PlaySoundA #endif // !UNICODE
モーダレスダイアログを作ってそれにコピー中のファイル名を表示させているのですが 作業中に中止させたいと思っています モーダレスダイアログに中止ボタン作成してボタンをクリックしてコピーを中止させるには どうすればいいでしょうか
313 :
デフォルトの名無しさん :2005/05/30(月) 16:24:07
中止ボタンが押されたらコピーを中止する。
314 :
312 :2005/05/30(月) 16:38:51
あぅ、そうなのですが コピーをどうすればとめられるのかなぁと思いまして 関数を作ってその中でコピーさせているので コピーさせる関数を止めるにはどうすればいいのでしょうか
returnすればいい
exit(0);したら止まるぜ。
>>314 ・中止ボタンのハンドラでフラグを立てる。
・コピー処理が一段落したらそのフラグを見て勃っていたら中止する。
一度勃ったら中止なんて出来ません!
質問だけでなくギャグのラベルも低すぎるスレだ。
ReadFileExとか使って非同期で処理 初心者スレはWindowsのプログラム作ったことないやつが いっぱいいそうだな
>>320 大丈夫、>320のような勘違い厨も多いから。
中断処理っていうと印刷でまず出たもんだがなぁ
VC6で検索するときに、"開いているドキュメントをすべて検索"にチェックを入れると ときどきMSDEV.EXEのエラーでVCごと落っこちてくれるんだけど、何か決定的な理由あるんでしょうか?
MFCやCRTのソースとかサブフォルダまで検索かけてるけど 落ちたことないな
俺も無いな
>>323 固有の問題じゃねーの?
メモリーにエラーがあるとか
実際、自分とこでエラーなんて一切出ないプログラムを、
OSは同じだけどマシンの違う他人のPCに持ってったら突然エラー出るとかあるし
CV6はよく落ちるよ
CV6って??
328 :
デフォルトの名無しさん :2005/05/31(火) 01:52:26
「VC++ .NET Standard Version 2003」の購入に関する相談です。 これには最適化機能が無いと聞いたのですが、総合的にどの位の差が出るものですか? 用途は主に、自分用の小規模、中規模のWindowsアプリケーション作成、 たまに使い捨てのコンソールアプリケーションを作る程度のものです。
329 :
デフォルトの名無しさん :2005/05/31(火) 02:58:54
なつかしい…。 CV = Code View MS C version 4あたりに付いてたな。
330 :
デフォルトの名無しさん :2005/05/31(火) 03:03:38
NEC PC-9801CV21かー。懐かしいな。
>>328 問題ない
はっきりいってその程度だと比べても気がつかない
>>331 便乗質問です。気が付くくらい差が出るのってどんな領域からでしょうか?
流体解析とかじゃね?
334 :
デフォルトの名無しさん :2005/05/31(火) 13:31:11
数値計算とか計算量がやたら多い領域。 最適化で命令数を減らすと効果が出る。
335 :
デフォルトの名無しさん :2005/05/31(火) 13:52:26
便乗で、「VC++ .NET Standard Version 2003」で開発したものは商用に使えますか?
>>333 >>334 ありがとうございます。踏面そのような分野に手を出す見込みが無いので安心できました。
337 :
デフォルトの名無しさん :2005/05/31(火) 14:55:35
MSDN アカデミックアライアンスで提供されるソフトウェアは、非商業、非営利の教育・研究目的にのみ利用できます。実稼動用システム開発用に利用することはできません。また商用ソフト開発用には利用できません。
Stdってアカデミックライセンスなの?
>>324-325 メモリーエラー・・・あるかもしれない。
たまーにアドレス0x〜をReadに出来ないとかそんなメッセージも出ますしorz
>>335 それぐらい調べてわからないような馬鹿なら
買っても使いこなせない
for(int i=0;i<m_Array.GetSize();i++){} こんなループを使っていてふとMFCライブラリリファレンスを見てみると >CArray::GetSize >配列のサイズを返します。 >INT_PTR GetSize( ) const; と書いてありました。 配列のサイズを返すのになぜポインタが使われているのでしょうか。 それから上のループでm_Array.GetSize()を整数扱いしているのに 警告が出なかったこともわかりません。
343 :
デフォルトの名無しさん :2005/06/01(水) 22:39:07
>>342 ヘッダでのINT_PTRの定義を探してみよう。
PTRが何か分かるかな?
本来なら定義を見なくてもわかる名前をつけるべきだとは思うけどね。 INT_PTRじゃ誰だってINT*だと思うだろう。
>343-345 ありがとうございます。大勘違いしていました。 MSDNにもちゃんと書いてあったのにお恥ずかしいです。
チェックボタンをユーザーに変更できないようにするにはどうすればよかですか
マウスメッセージ捨てちゃえ
タブがきいてる
(∩゚д゚)
>>347 グレーになっていじれなくするのでよければ、
チェックボックスのウィンドウをDisableすればいい。
MFCのCWnd::EnableWindow(FALSE)とか、
WS_DISABLEDとか。
クリックされたら強制的に元に戻すとか
VC++で1msの精度のタイマを実現できるでしょうか?
>>347 果たして、ユーザーの触れないチェックボックスなど存在意義があるのだろうか
結局、他にCPUを奪っていくタスクがあれば、 精度なんてあって無いようなものなんだよ。 割り込みをうけるデバイスドライバを開発するなら話は別だけど。
>>356 マルチメディアタイマでも駄目なんですかね?
あれは割り込みだからかなり細かくいけるけど、 完全ではないよね って割り込みだったのはWin16までだっけ?
成る程ですね・・・・そうなると1msの精度ではなく1ms以下という 条件ならどうでしょうか? というかそもそもどのくらいの精度まで保証してくれてるんだろう・・・。
while(1){ GetLocalTime(&t); if(i != t.wMilliseconds){ Func(); } i = t.wMilliseconds; }
362 :
352 :2005/06/03(金) 04:45:44
>>348-355 初心者が回答するなよ。
普通にWindowsのアプリを使っていたら、見かけるだろが。
随分自虐的ですねw
>>360 だから358の言っているマルチメディアタイマ(timeGetTime)じゃだめなのか?
最大1msの精度を持っている。
DebugかReleaseかでアプリの動作が変わってしまうことの原因が 変数の初期化だとしたら、その理屈を教えてください。 DebugとReleaseで何が違うのでしょうか。
Debugは、初期化してない変数をすべて 0xCDのバイト列に初期化するから
>>366 ではないが
>>366 のつづき。
初期化していない変数を参照して何かするプログラムを書くと動作が変わる。
つまり、初期化や代入していない変数を参照してはいけない。
>>365 Debugビルドは通常最適化が無効になっている。
Releaseビルドは最適化が有効になっている。
バグのあるコードを書いたりすると、最適化の結果動作が変わることもある。
たとえばループ内で行っていた演算がループの外に移動したりとかな。
#ifdef _DEBUG を知らないんだったら、調べとけ
>>365 class A {
bool flag;
A() {...} //flagの初期化を忘れてた
f() { if(flag) .....;}
};
てケースでハマったことあり。
なぜかリリースビルドだと正常に動かない!
371 :
デフォルトの名無しさん :2005/06/04(土) 19:01:16
VisualC++6.0sp6からVisualStudio.NETのVC7に移行しようと考えています。 互換性についての問題はあまり聞かないのですが、 殆どそのまま移行できると考えてよいのでしょうか? また、互換性についての問題がまとまっているサイトなどありましたら教えていただけないでしょうか。
>>371 VC++.NETではMFCベースのアプリケーションを
作る事も出来る。MFCベースのネィティブ
アプリケーション作るなら、ほぼそのままの
コードで動く。
なんの互換性かわからんが、VC6で書いたソースがまんまコンパイルできるか というハナシなら大丈夫のはず
初心者なら移行も何も新規インストールでお願いします。 過去のことはきれいさっぱり忘れよう。
375 :
デフォルトの名無しさん :2005/06/04(土) 19:28:52
>VC6で開発してきたアプリケーションをそのままVC7でコンパイルしても 初心者なのか?
378 :
デフォルトの名無しさん :2005/06/04(土) 19:53:55
>>377 VC7は…
というか、この板の中で他に適切なスレが無いように思うのですが。
.NET2002ならとりあえずサービスパック1を入れておけ。 MFCしか知らないが、MFC限定で言うと、仕様が変わったものがあるから VC++6.0用のコードをそのままVC++7.0でコンパイルすると警告が出ることがある。 たとえば、ファイルサイズを取得するCFileFind::GetLength()は 以前はUINTを返したけど今は64ビットのU整数を返すから32ビット値だと 思っているとなんで警告が出るか悩むだろう。まあ、移行でソースが間違っていないのに コンパイルで警告やエラーが出たらその内容をその度にMSDNなどで確認することを 薦める。その内すぐに分かるようになるよ。
380 :
デフォルトの名無しさん :2005/06/04(土) 22:11:00
こんばんわ Dialogリソースに、リッチエディットを貼り付けた途端、そのダイアログがエラーで表示されなくなりました。 どうしてなのでしょうか? 何かDialogを表示する前にリッチエディットに対してする前処理があるのでしょうか?
>>380 AfxInitRichEdit();を事前に呼び出す必要があります。
下のように、仮想関数テーブルを持っているhogesub オブジェクトの ポインタを保持するhoge1オブジェクトへのポインタを保持するvectorに、 hoge1オブジェクトポインタをpush_backするだけで、hogesubの仮想関数テーブルが 破壊されるんですが、何が悪いのか判る人いませんか? class hogebase { virtual void somefunc(); }; class hogesub : public hogebase { virtual void somefunc(); ... }; class hoge1 { hogebase* hoge_ptr; void someInit() { hoge_ptr = new hogesub; } ... } void main() { vector< hoge1* > vec; hoge1* ptr = new hoge1; vec.push_back( ptr ); }
hogesubの仮想関数テーブルが破壊される と思った根拠は何?
>>383 デバッガでトレースしていると、push_back中にeaxレジスタにhoge_ptrの仮想関数テーブルのアドレスを入れて、そこにecx(thisポインタ)を入れてます。
>>383 デバッガでトレースしていると、push_back中にeaxレジスタにhoge_ptrの仮想関数テーブルのアドレスを入れて、そこにecx(thisポインタ)を入れてます。
すまん、重複してしまった。
>>384 VC++ですので、vtableが見れるので破壊されるタイミングまで一目瞭然です。
言ってることがよくわからないけど push_back が呼ばれるときに 渡されるのは hoge1 のアドレスだけじゃないのかね?
hogesub関係ねーじゃん つうかhoge1のコンストラクタで何かしてんの?
VCはダイアログなどのデザインのコツがわかりません。 VBのようなWYSIWYG的なデザインできませんよね?
2003じゃなくても出来るけどね。
こんばんわ 質問ですが、 たとえば、 CString string; で string.とカンマまで入れると、ポップメニューが表示されてメンバ一覧が見れますが、 時々、そのポップアップメニューが表示されない時があります。 これはバグなのでしょうか? 使用しているのはVC++6です。
395 :
394 :2005/06/05(日) 15:45:16
追記ですが、 前後のソースコードに文法上の問題はありません。 コンパイルが通る状態で、string.と入れても、ポップアップメニューが表示されないのです。
コードに不備があると出ないよ その前にセミコロンがない行があるとか・・・etc
*.ncb ファイルを削除すると良いかもしれない。 ただ、ヒントがどうしても表示されない場合ってのもあるっぽ。 VC7でも出てくれない事あるし…
398 :
390 :2005/06/05(日) 16:14:58
>>393 これってVCですよね?
でもここからコントロールごとの背景色・文字色・
文字の大きさなどはソース記述していかなきゃだめですよね?
他の開発環境のようにプロパティウィンドウへの記述だけで
できたらなぁ って思ったんです。
ヘタレは他の開発環境つかってろ
>>394 とりあえず、カンマじゃなくてドットな
カンマ打ってもメンバ一覧表示されないのはあたりまえ。
>>398 VBはそもそも、そういうAPIやら使ったコードで指定していかないといけない部分を
全部ランタイム側でラッピングしてユーザーが意識しないでいいようにしてるんだ。
逆にそういう風に隠してるからC/C++でやるのに比べて自由度が低くなる。
402 :
390 :2005/06/05(日) 19:23:24
レスありがとうございます。 早速試してみます。 C++ Builderも。
VC6.0が作るファイル aps リソースをすばやくロード opt ワークスペースのウィンドウ レイアウトとか じゃあncbはなんですか? Microsoft C/C++ program database 2.00と先端に書かれてます。
調べりゃわかることをいちいち聞くやつ答えるやつ
>>403 プログラムのコンパイルを早くする裏方さんとだけ知っておけば問題ないよ。
…個人情報が含まれている可能性がある
削除しても問題なし、他の人に渡す時にはむしろ削除した方がいいという事も言ってみるテスト。
>>375 MFCなら、MFCのバイナリ互換がなくなった、ということに注意してね。
VC4.2〜VC6.0までは、ライブラリ側とそれを使う側の間で、
違うバージョンのMFCのオブジェクトを受け渡ししても大丈夫だったけど、
MFC7.0以降はそれが禁止されています。不可解なエラーとなるので注意。
ライブラリも含めてコンパイルし直してくださいね。
>>403 クラスビューのキャッシュみたいなもの。
コードを解析した結果が入っているよ。
dllとそれを使用するヘッダーだけのファイルを自分のプログラムで使用したいのですが libファイルの作成方法を教えてください。 implib でbcc32でのコンパイラでは使えるlibが出来たのですが vc では使えずに困っています、よろしくお願いします。
一般的なライブラリなら新規作成ウィザードでライブラリプロジェクトのスケルトンを 作ったらそこにお好きなファイルを追加してビルドして下さい。 dllの作成も同様です。dllのプロジェクトを作成してビルドすれば そのdll用のlibとdllが出来ます。
>>407 つまり、
ヘッダーファイルしか提供されていない他人が作ったDLLのインポートライブラリをVC++用に生成したい。
ってことね。
>>408 さん、早合点でしたね。
VC++には、Borlandのimplib相当のツールはついていません。
フリーウェアでありますので、探してみてください。
ふと思ったんだけどBccのimpdefはVCでも使えないかな。
早合点とかじゃなくて、質問者の情報が少なすぎるんだろ この場合、わかっててもあえて違うほうで答える場合もある
412 :
デフォルトの名無しさん :2005/06/06(月) 12:18:13
スレと関係ない話が多すぎるな 隔離スレ作るか 名前の候補を3つ考えてみた 他に希望がなければこの中から決めるぞ VCのヲタ話はここで 談話室VC VCなんでも相談室 以上の3つ
413 :
デフォルトの名無しさん :2005/06/06(月) 12:23:24
#include <stdio.h> int i_input();//1:integer 0:string int char2int(char []); //1000以下の二つの数字を入力させて、その合計を表示しなさい。(6/6の宿題) main(){ char s[80]; printf("%d\n",i_input(s)); } int i_input(char a[]){ int i; printf("1000以下の整数を入力してください。\n"); gets(a); i=0; while(a[i]){ if(!(a{i]>='0' && a[i]<='9')) return 0; i++; } return 1; } これ、どこがおかしいんですか?
最近の宿題って問題があやふやだな 何を予習(又は復習)させようとしてる宿題なのかがわからん
独学で学んだ方が上達も覚えるのも早い希ガス
プログラムなんて嫌々やって覚えられるもんじゃない希ガス。
>>416 出来ない子が多いから
とりあえず出来そうなことをさせて褒めてあげるのが目的。
421 :
デフォルトの名無しさん :2005/06/06(月) 15:24:40
422 :
407 :2005/06/06(月) 19:49:26
>>408-411 お返事ありがとうございます。
その用なツールがあるのですね、探して見ます。
Visual C++.netでは、Win98やWinMeで動作するアプリは作れないのでしょうか?
>>423 作れる。
ただしマネージドC++にすると.Net Fremeworksを相手にインストールしてもらう必要があるし、Win95では動かない。
425 :
409 :2005/06/06(月) 22:49:44
>>411 いいや、十分な情報が書かれてるよ。
誰しもが通るような道なんだからさ。
初心者なのに回答している香具師にはわからないかもな。
>>419 お前こそな。
>>424 つまり、Win32プロジェクトで作れば良いという事ですか?
あと、コンソールアプリケーションはマネージドC++以外
からは作れない、という認識で良いのでしょうか?
427 :
423 :2005/06/06(月) 23:57:12
すいません、勘違いしてました。 基本的にはWin32プロジェクトで作れば、 コンソールアプリもウィンドウアプリでも作れますね。 まだ、マネージドC++の位置付が良く理解できてないので、 トンチンカンな回答をしてしまいました。とりあえずは ヘルプを色々と調べてみることにします。 では、どうもありがとうございました。
>>427 マネージドにしてもコンソールに入出力するプログラムは作れる。
それどころかアンマネージドコードとも混在できるのがマネージドC++の特長らしい。
libを作らなくてもdllの呼び出しは可能
質問なんですが、VC++.NET 2002を持っていまして、何度かインストールを したことがあるのですが、そのときそのときによって、標準状態での ソリューションエクスプローラが右側であったり左側であったりします。 これはなぜでしょうか。また切り替えることはできますか?
パソコン初心者でも金さえだせば買えるという事実
>>431 >そのときそのときによって
インストールするたびにですか? 普通は変えない限り変わらないはずですが。
>切り替えることはできますか
できます。つかんで移動するだけです。
>つかんで移動するだけです。 >つかんで移動するだけです。 >つかんで移動するだけです。 >つかんで移動するだけです。 インパクの森首相を思い出した 全国で無料IT講習会があったはずだけど あんまり効果がなかったようだね
grab&drag
だが実際問題、つかんで移動という感じだがな
「つかんで移動」、最高にわかりやすい
438 :
431 :2005/06/07(火) 17:52:24
>>433 レスどうもです。
最初ドラッグしても横長になったりとうまく収まらないと思ったのですが、
こねくりまわしていたら、移動できました。トンクス。
VS.NETを最近買いまして、 C++に関しては右も左も分からないレベルなんですが、 ちょっと質問が。GUIプログラミングを行うときは やっぱりMFC使用が当たり前なんでしょうか? MFC非使用ですべて自作というのは変人レベルですか?
>>439 そんなこと言われると俺は始めた時から変人レベルと言うことになるんだが・・・
442 :
439 :2005/06/07(火) 17:58:24
>>440 となると、そこまでは珍しくない?
解説サイトをいろいろ見て回ったのですが、
GUIなソフトを作るならMFCで作ってるものしか見かけなかったもので。
>>442 あくまで、俺なら、だが
MFC使ってないなんて変って言われたら、おまえの方が変だって言い返してやるくらい珍しくないとおも
しかしメッセージクラッカー使っているのは珍しい感じがするんだよな、便利なのに。 そんな俺はWTL。
446 :
439 :2005/06/07(火) 18:07:33
>>443-444 ボタンとか自作するのめんどくさくないですか?
って書こうとしたらMFCじゃなくても用意してありますね。
MFCがなんなのかよく分からなくなってきた。出直してきます。orz
こんな馬鹿に付き合ってもらってありがとうございました。
>>446 ボタンなんて
DrawEdge()
DrawText()
WM_LBUTTONDOWN
PtInRect()
だぜ。
(略しすぎ)
いやぶっちゃけVCならリソースで終了だろ
VCでコマンドライン入力が必要なプログラムを動かす方法があったら教えてください。
意味がわからん コンソールアプリを作りたいのか コンソールからビルドしたいのか まぁどっちもできるが
コンソールからビルドです
452 :
デフォルトの名無しさん :2005/06/07(火) 22:39:18
>>449 メニューのツール(T)→外部ツール(E)...を選んで登録したら
コマンドライン入力が必要なプログラムでも何でも動かせるよ。
visual cって行番号表示できないの?
できるよ どこで設定するかは忘れたけど
思い出してくれ頼む
行番号を表示しないで使うのが普通。 行番号付きBASICじゃないんだから。
ステータスバーにちっこく表示されてるよ 行番号ジャンプはctrl+g
ちっこくでてるのはわかるけどなぁ 直感的にわかりにくいじゃん 場所が
行番号で、直感的に場所が判ったらすげぇや。
場所がどこかわからないと困るケースなんてたいていコンパイルエラー時だし、 エラーメッセージダブルクリックで事足りるし
>>453 VisualStudio2003.netの場合:ツール.オプション.テキストエディタ.C/C++.全般.行番号
>>451 VCVARS32を実行してから
nmake や、 cl を実行する
これからVC++始めようと、VC++2005のβ版を入れたんですが 基本操作がさっぱりわかりません・・・ VC++6の講座があるページ見てみたんですが結構違うみたいで。 初心者の独学にいいページってないですか?
本を買う
悪いことは言わん 本買っとけ
まだ2005の本って出てないですよね。 経験者の方から見てVC++6とVC++2005の操作って同じですか?
>>467 VC++これから始めるので2003もわかりません・・
向いてないから諦めたほうがいいよ
仕事で使うんでそういうわけにも・・・(´・ω・`) 何か本探してきます。
471 :
デフォルトの名無しさん :2005/06/08(水) 16:32:47
仕事で使うものをただで教えてもらおうなんて甘い。 その仕事で食ってるんじゃないのか?
とりあえず、これから始めようって人間が最新バージョンのβでやろうってのが間違ってる
立ち読みして役立ちそうなのを数冊みつくろって 買ってくればいい。どれが役に立つかは 読んでみればわかるし、今後立ち読みで 厳選するときに役に立つ 仕事ならそれくらいやるべし
>>472 まだ会社にVC++入ってなくて、仕方なく・・・自分で買う金も無いし、
操作に慣れるだけなら2005でもいいかなと。考えが甘かったわけですが。
>>471 ,473
心入れ替えていい本探してきます(`・ω・´)ゝ
おめーらみてーな低脳が 人に説教たれてんじゃねーよ ヴォケ
開き直りはいかん
ワロタ
"hello"出すのに2時間ぐらいかかったぞ(;´Д`)
>>474 やる気ないだけだろ。
やる気あるやつは2005β版でとっくにはじめてるよ。ただだしな。
VC++を購入したいのですが、予算も知識もなく困っております 2003 か 6.0か。 通常版かアカデミックか。 standardかprofessionalか。 いくつか質問させてください 1・アカデミックは、購入する時に学生証の提出等が必要なだけで 一回購入さえできれば、後で学生である事の認証等いりますか? 2・6.0のstandardは Service Pack5をインストールすれば最適化が使えるように なると聞いたのですが本当でしょうか? その場合、通常版でなければ無理とか、アカデミック版でなければ無理とかありますか? 2003standardでも現在はService Packをインストールすれば最適化が使える等ありますか? 3・MFCではなく、SDKを中心に学んで使っていきたいのですが だったら特に6.0より2003のほうが全然いいとかいう機能等はありますか? 教えて頂けると助かります 宜しくお願いします
481 :
デフォルトの名無しさん :2005/06/10(金) 10:54:45
theSpokeも選択肢に入れたら? あと、SDKしたいだけなら無料のVC ToolKitで十分
PostQuitMessage(0); を処理しているのに、アプリが終了しません。 デバッガで確認したから間違いありません。 何故でしょうか?
>>482 メッセージループがまずいんじゃないの。
GetMessageでウィンドウハンドルを指定しているとか。
>>483 Thanks
いつもコピペで入れてたので、気づかなかった。
>>484 どうせwhile (GetMessageなんてやっているんだろ。
別にそれでいいが。
>>480 基本的に学生用でも買う時に証明が要るだけ
1.知らん。.NETはアクティベーションが必要だったはずだが。 2.なる。サービスパック4以降だったかな。コンパイラもサービスパックで アップデートされるんだが、そのアップデートが最適化コンパイラで すべてのエディションに適用される。アカデミックも同じ。但し、最適化 オプションは手打ちで設定。.NET2003はまだサービスパックは出ていないが、 Visual C++ .NET 2003 Toolkitとかいう奴を入れると最適化コンパイラが 手に入るらしい。 3.新しいAPIを使いたければ.NET 2003にしておけば良いだろう。 つーか、6.0なんて今となってはやっぱり古いぞ。.NETでコンパイルする方が 実行速度速いし。既に持っているならともかく、今更あえて買うべきでもないと 思うが。以上。
iniファイルのsection情報を取得し、section毎のキー情報をデータに して格納する。 これって簡単? GetPrivateProfileSectionNames() と GetPrivateProfileSection() を使ってうまく出来ないだろうか。 他の掲示板調べたけれどもVBのやりかたしか載ってなし。
VBのやり方を理解してC++で書き直せばよかろう。
フリーなpdfライブラリってないでしょうか? VC6です。 JavaとかPHP用とかなら見つかるんですけど、 VC用(Windows用)は有料しか見つからなくて。
492 :
480 :2005/06/11(土) 03:41:56
レスありがとうございます! コンパイル後のプログラム実行速度ですが 2003standard に NET 2003 Toolkitつける 2003standard 6.0professional では早い順に並べるとどのくらいでしょうか? また、NET 2003 Toolkitは 何やら難しそうな感じはするのですが プログラミング初心者でも使用できるでしょうか?
とりあえず初心者なら実行速度や最適化など気にしない
494 :
デフォルトの名無しさん :2005/06/11(土) 05:30:37
>>492 toolkitをまず試してみな。
満足行く速度が出ないならそれから考えろ。
初心者ほどくだらないことを気にする。
VisualC++っていうのを買わないとC++のプログラミングはできないんですか?
実行速度で比較すると、.NET 2003 +toolkit > .NET 2003 std > 6.0ではないか? 自分のアプリでは.NET2003でコンパイルし直したものの方が6.0でコンパイル したものより二割くらい速かった。コンパイラが新しくなったのと同時に ライブラリなども新しいコンパイラでコンパイルされているせいか全体的に 高速化が図られたという感じだ。ちなみにintelのコンパイラ+VC6.0の組み合わせより .NET 2003オンリーの方が速かった。リンクするVC6.0のライブラリが古いため であろうか。
最適化できる6.0は 最適化できない.NET 2003 stdに負けるのか?
ベンチマークならコンパイラ持ってれば馬鹿でもできる。
レスありがとうございました 当方少々事情があり、思いっきり初心者&貧乏人の癖に、 早く自分でプログラムを作って使わなければと、何といいますか少々せっぱつまったような状況でして・・ 実行後のプログラムの速度や軽さが少しでも欲しかったもので;; 細かいこと聞いてすいませんでした>< もう一つ質問です 6.0のstandardで作ったプログラムは、vc++が入っていないPCでは動作できないかも と、あるHPに書いてあったのですが、本当でしょうか? VC++を入れてプログラムを作る用のPC と 作ったプログラムを使いたいPCが別なもので 悩んでおります。もし本当でしたら、2003のstandardでもそうなのでしょうか? professional なら他のPCでも大丈夫ということでよいのでしょうか? 宜しくお願いしますm(_ _)m
>しかしVB6は今後バージョンアップは無さそうだし、サポートもそろそろ打ち切られるとか言われてるので >今からVB6を始めるのもどうかと思うのですが、 非常に後味わるいから他スレで見つけたまともな意見で口直し
>>503 6.0のstandardはMFCをスタティックリンクできないから
動作させる環境にDLLが入ってないと動かない。
2003のstandardはシラネ
普通入ってる
ノーマル95にも入ってるの?
509 :
デフォルトの名無しさん :2005/06/12(日) 01:03:12
はじめまして。 最近WinXP、VC++6.0で勉強を始めました。 GUIの勉強をするためにWIN32アプリケーション→C++ソースから 挿入→リソースでDIALOGを作ろうとした時に出てくる OKボタンやキャンセルボタンをドラック&ドロップできる 部品の一覧表を間違って閉じるボタンで消してしまいました。 プロパティなどを見たり、PCごと再起動してみたのですが 一覧表は消えたままで、ダイアログ中に新しい部品を貼れなくなってしまいました。 どのようにしたら、部品の一覧表を再び出すことが出来るのでしょうか?
>>509 ツールバー上で右クリックして[コントロール]。
つか、いきなりGUIから入るなよ。
511 :
デフォルトの名無しさん :2005/06/12(日) 01:23:26
>>510 ありがとうございます。
文字表が出てきて、なんとか部品を挿入できるようになりました。
他に絵の一覧で表示されていて
ドラック&ドロップで部品を挿入することが出来る
ウィンドウの出し方はご存じないでしょうか?
ツールバーだろ
自演だろw
514 :
デフォルトの名無しさん :2005/06/12(日) 23:34:23
VISUALC++をやるのにC言語の知識って必要あるんですか?
516 :
デフォルトの名無しさん :2005/06/12(日) 23:45:14
>>515 C言語の量が膨大すぎてVisualC++をやるにはどこを一番やったらいいのかわかりません…
ここでうだうだしてるより、本買うなりWeb検索するなりしろよ。 VisualC++で何作るか知らんが、言語の他にWindowsAPIや MFCの知識も必要になるかもしれないから覚悟しといた方がいいよ。
518 :
デフォルトの名無しさん :2005/06/13(月) 00:04:20
簡単にはいかないということですね。 とりあえず関連性のありそうなことを片っ端からやっていきたいと思います。
BOOL,TRUE,FALSEの宣言はどこに書いてあるんでしょうか?または、どのように宣言されているんでしょうか? windows.hの中を見てみましたが内部でさらに色々includeしていて探すのが面倒で・・・
識別子を右クリック 定義へ移動
>>519 WINDEF.H
型だのの宣言に関しては全部これ
ちなみにその3つともint
〜STR系はWinNT.h
523 :
デフォルトの名無しさん :2005/06/13(月) 08:25:30
>>519 探すのが面倒だから代わりに探してくれ、か?
自分で探せよ。
>524 >520
526 :
デフォルトの名無しさん :2005/06/13(月) 10:10:20
質問です。 VC++6.0を使用していてコンパイルした際に警告レベル3だと 警告して欲しい内容が結構警告してもらえず、警告レベル4だと 警告が出過ぎて困ります。 警告レベルを3にして自分で出したい警告を#pragmaで設定しようと 思うのですが、下記のもの以外で何か「これはだしとけ」みたいな 警告はないでしょうか? (こういうことするときはだしとけみたいなのでもOKです。) 下記が現在警告レベル3で追加している警告です。 #pragma warning( 3 : 4100 ) // 未参照の引数あり時に警告 #pragma warning( 3 : 4127 ) // 条件式が定数の場合に警告 #pragma warning( 3 : 4142 ) // 型の再定義あり時に警告 #pragma warning( 3 : 4189 ) // 未参照(初期化あり)の変数あり時に警告
527 :
524 :2005/06/13(月) 10:12:33
同じ内容のレスしてたorz
>>526 逆。警告レベル4にして、必要のない警告を外すべき。
529 :
デフォルトの名無しさん :2005/06/13(月) 10:41:15
クラスビューからソースに関数や変数ドラッグしたら貼れるなんて なんで教えてくれなかったの?><
530 :
526 :2005/06/13(月) 11:06:55
>>528 なるほど。そちらの方が欲しい警告があった場合に漏れないですね。
CString ss; char szA[MAX_DIR]; ssに入っている文字列をszAに入れるにはどうしたらよかですか?
strcpy
ありがとうです
いまからVC++を中古か新品で買おうかとおもってるんですが バージョンはどれがおすすめですか? 5.0?6.0?.NET?
535 :
デフォルトの名無しさん :2005/06/13(月) 17:54:12
>>534 何をしたいんだ?情報少なすぎ。
Windows 95でも動くアプリを作りたいとかか?
536 :
デフォルトの名無しさん :2005/06/13(月) 18:08:06
簡単な関数を作ってつかおうとしているのですが、 error LNK2001: 外部シンボル ""protected: int __thiscall CSatoshiDlg::dangerous(int)" (?dangerous@CSatoshiDlg@@IAEHH@Z)" は未解決です Debug/satoshi.exe : fatal error LNK1120: 外部参照 1 が未解決です。 link.exe の実行エラー とでてしまいビルドできません。何が原因なのでしょうか?
マルチポストすんなや
CSatoshiDlg::dangerous(int)が無い
>何が原因なのでしょうか? エラーメッセージの通りですがw
どういう構文エラーか
543 :
デフォルトの名無しさん :2005/06/14(火) 18:18:07
質問です。 uuid.libをリンクすることになったところ、DEBUGモードで以下のリンクエラーが出るようになりました。 uuid.lib(ocidl_i.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください Googleで調べまわったところ「設定」「リンクタブ」「一般」「Debug情報を生成する」のチェックをはずせば回避できることを発見しました。 ですがこのままですとブレークポイントを使ったデバッグが一切できなくなってしまいます。 これを回避する方法はありませんでしょうか? 環境は Visual C++ 6.0 です。 .NETならば問題がないというような情報も見かけたのですが、何分気軽に買える身分ではないものでして…。
ダイアログモジュールのプログラムを作ろうとしてます 新規作成でMFCAppWizard→ダイアログでワークスペースを作って、 最初のボタン2つを消してエディットボックスを2つ作りました ここで、それぞれのエディットボックスに文字を入れて エンターを押すとそれぞれの処理が始まるようにしたいのですが、 実際にエンターを押すとアプリケーションが終了します ClassWizardのエディットボックスの項目を見ても エンターを押したときに呼ばれる項目がないのですが、 エンターを押すとどれが呼び出されるんでしょうか? デフォルトのボタンが呼ばれるらしいのですが、すでに消してますし… ボタンが呼ばれるとしたら、どちらのエディットボックスから エンターが押されたのかわからないです…
そこでspy++ですよ
>>544 OnOKをオーバーライドして
Cxxx::OnOK()をコメントアウト
mdbファイルにDAO3.6を非MFCで 接続する方法を教えてください。
CComBSTR A,B; で、AとBに含まれる文字列の中身を比較したいんですが、 wcscmp(A,B)で良いのでしょうか?
>>548 それでもいいけどCComBSTRにはoperator ==()があるよ。
550 :
548 :2005/06/15(水) 00:44:43
ありがとうございます。しかし、CComBSTRの==は、どうもオブジェクト同士の 比較をしているように見えたので、文字列実体の比較はどうするのかと 考えていました。
include <vector>したら、 \vc98\include\utility(81) : error C2146: 構文エラー : ';' が、識別子 'iterator_category' の前に必要です。 というエラーになります。 他のプロジェクトでは普通にincludeできるのですが、一体どうやって回避したらいいんでしょうか?
>>551 プリコンパイルヘッダを使っているなら、一度リビルド。
それでもだめなら、該当行周辺で使われているキーワードが
includeディレクティブ以前にマクロ定義orグローバル宣言されていないか確認せよ。
#まぁ、インクルードの順番変えればすみそうだが。
>>552 リビルドだめでした。
マクロもほとんど定義してないため確認しました。重複してないです。
インクルードの順番はvectorを一番最後にしてます。
いろいろ入れ替えましたが駄目でした。
fill_nが使いたかったんですがあきらめます。
>>553 んじゃ、vectorのインクルードを極力初めのほうにして、エラーがおきた実体化のあたりのソースを晒せ。
質問です。 WinXPでVC++.NETでC++の勉強を始めた者です。 初っ端から詰まっていて、何が原因か分かりません。 #include <iostream> int main(){ cout << "Hello World" << endl; return 0; } でビルドすると、coutとendlを参照できませんって言われます。 どうかよろしくお願いします。
>>555 std::cout, std::endl
>>554 \vc98\include\utility(81行目)
typedef _It::iterator_category iterator_category;
ここで先出のエラーが起きてます。
iterator_category が定義されてないからでしょうか。
68行目で
typedef _C iterator_category;
と定義されてるんですけど。
>>557 エラー行じゃなくて、実体化している辺りと書いたのだが。
つまり、あんたのプログラムの方ね。
CPU 200Mヘルツ程のPCに.Net入れたけど、重たくて使えません。 遅いPC使ってて、VC6スムース(快適)に使えるって方いらしたら教えて欲しいです。 Visual C++ 6.0 の推奨環境に関するページが見つからない...。 ちなみに、私は.Netから使い始めた者です。
>>559 無茶。IDEは半ば諦めてコンパイルだけするなら兎も角、インテリセンスがまったく使い物にならないと思われ。
561 :
デフォルトの名無しさん :2005/06/15(水) 19:40:59
>>555 namespace std;
を3行目に入れてみ?
え?usingはどこ?
つーか、3行目かよ。
564 :
デフォルトの名無しさん :2005/06/15(水) 19:54:54
1: #include <iostream> 2: 3: using namespace std; 4: 5: int main(){ 6: cout << "Hello World" << endl; 7: return 0; 8: }
>564必死だな。
そうか?
567 :
デフォルトの名無しさん :2005/06/15(水) 20:00:17
>>565 必死だよ。何かお気に召さないことでも?
いやぁ、微笑ましいなぁと。
569 :
555 :2005/06/15(水) 20:43:42
色々とありがとうございます。 Cを3年間やってて、C++に移行している真っ最中です。 今アクセス制御の辺りを勉強していたのですが、 このあたりでそろそろ組んでみるか…と思ったら見当違いの所でエラー。。 かなり焦ったのですがありがとうございました。 VC++.NET特有の仕様なんでしょうか?>std
>555 参考文献が古いだけ。
>>569 stdはISO/ANSIの標準C++の仕様。
他人同士での名前の重複を避けるための名前空間という仕組みがあって、
C++標準ライブラリはstdという名前空間に収めることになっている。
Cの<****.h>というヘッダもC++では代わりにstd名前空間に収められたものが<c****>というヘッダで提供されている。
572 :
569 :2005/06/15(水) 21:58:06
>>570 >>571 そうなんですか。納得です。
一応、6年前に出版された本を使っているんですが。。
とりあえずは、using namespace std;のコマンドを使っていればOKということですよね。
だいたいC++が分かったら、VC++.NETで色々とプログラムを組む予定なのですが、
その時に新しいVC++.NET用の参考書を買えば何とかなりますでしょうか?
>>560 インテリセンスは全く問題なかったり...。
その他諸々コンパイルとか、レスポンス遅すぎます。
VC6.0ならCPU200MHzでも軽く使えるんでしょうか。
>>559 CPU200MHzで.Netは無理だろ。
VC6なら動く(K6-233&128MB程度のマシンで普通に使ってた)
サイトは分からないので手元のVC6発売時のパンフレットより抜粋
・本体 PentiumCPUを搭載したPC(Pen90MHz以上推奨)
・メモリ 使用可能メモリ32MB以上(64MB以上推奨)
・その他 解像度800*600以上必須(1024*768推奨)
↑のようになってるがPen90-32MBではさすがにキツイ
Visual Studio.NETでコンパイルして作ったexeを 他のパソコンで動かそうとすると動きません。 .NET frameworkをインストールすると動くようになったのですが、 そのままで動かないと都合が悪いのです。 どこか設定すれば動くようになるのでしょうか? よろしくお願いします。
あっと、すいません。
あまりにも近すぎて忘れてました(汗)
>>556 名前空間の指定も色々あるんですね。名前空間でぐぐってみます。
>>575 MFCも.NET Frameworkも使わずに作成すればよい。
まぁ、VC6はWin98時代の物だから要求するマシンパワーも低い罠
580 :
575 :2005/06/16(木) 22:38:01
>>578 ビルドの設定のあたりをいじればいいのでしょうか?
とりあえず、main.cが1つあるだけでそれがexeになればいいのですが・・・。
>>580 プロジェクトのプロパティのマネージ拡張をいいえにする。
新しくプロジェクトを作るときにはWin32 コンソール プロジェクト/Win32 プロジェクトを選ぶ。
>>580 あとプロジェクトのプロパティ「C/C++」の「コード生成」にある「ランタイムライブラリ」
を「シングルスレッド /ML」にする。これで必要最小限のものがスタティックリンクとなる。
一つのソリューションにA、Bの二つのプロジェクトを入れて作っているのですがAのソースからBのヘッダをインクルードできません 依存関係を設定してみたのですが駄目みたいです どのような設定をすればいいのかどなたか教えていただけませんでしょうか
584 :
デフォルトの名無しさん :2005/06/17(金) 06:02:33
win32アプリを作ってるんですが、156KBよりも小さいプログラムって作れないのですか? ウィンドウを表示するだけのプログラムでも156KBになってしまうんですが・・・
585 :
デフォルトの名無しさん :2005/06/17(金) 06:09:21
win32アプリを作ってるんですが、156KBよりも小さいプログラムって作れないのですか? ウィンドウを表示するだけのプログラムでも156KBになってしまうんですが・・・
MFCを使わずメッセージボックスを表示するだけなら1KBでもできますが。 とりあえず、リリースビルドにして、MFCを使っているのなら ダイナミックリンクにすればサイズは減るのでは。
Debugでビルドしてるとみた。
588 :
デフォルトの名無しさん :2005/06/17(金) 11:48:07
指定したディレクトリにファイルを書き込みたいのですが、 どうしたらいいでしょうか?
>>588 CString path;
path.Format("%s/%s", 指定したディレクトリ, ファイル名);
fp = fopen(path, "w");fprintf(fp, 書きたい内容); fclose(fp):
590 :
デフォルトの名無しさん :2005/06/17(金) 13:06:41
>599 ありがとう
おっと、未来へのパスか。>599は責任重大だな。
592 :
デフォルトの名無しさん :2005/06/17(金) 15:25:11
こんにちは Win32アプリケーションとして作成したプロジェクトで、MFCを使いたい場合は、どのようにすればいいのでしょうか? 教えていただけると助かります。 よろしくお願いいたします。
プロジェクトを作り直して下さい。
594 :
デフォルトの名無しさん :2005/06/17(金) 18:07:32
Windowsフォームアプリケーションで新しいフォームの 呼び出し方と ドラッグアンドドロップがわかりません。 だれか教えて><
595 :
デフォルトの名無しさん :2005/06/17(金) 18:21:19
質問の意味が分かりません。
>>594 とりあえず、半年ほどロムればいいと思うよ。
597 :
デフォルトの名無しさん :2005/06/17(金) 19:12:45
MFCで書いているのですが、新しいクラスを新しいファイル てつくるにはどうしたらいいですか?
>>588 CreateFileとかにファイル名を渡す時にディレクトリ名も含めて
指定すれば良い
599 :
デフォルトの名無しさん :2005/06/17(金) 19:17:23
597ですが、作りたいクラスは int add(int x,int y) { x=x+y; return x; } ができればいいだけです。
それはクラスにする必要がないと思う
>>590 残念、>599は回答者ではなかった。
>>599 挿入メニュー→クラスの新規作成
Genericクラスを選んで適当なクラス名を入れてOKボタンでクラスの側が書かれたソースファイルができる。
.NETの場合はプロジェクト->新しい項目の追加でC++のソースとか ヘッダファイルを追加し、そこに書く。 6.0の場合はクラスウィザードで新規クラスを作成で、genericを 選んで書く。かな?
603 :
デフォルトの名無しさん :2005/06/17(金) 19:29:21
ありがとうございます。 やってみます。
604 :
デフォルトの名無しさん :2005/06/17(金) 19:37:40
>601 Generic クラスというのはgeneric CWndでいいのでしょうか?
605 :
デフォルトの名無しさん :2005/06/17(金) 19:40:50
>601 >602 ありがとう。わかりました!
606 :
デフォルトの名無しさん :2005/06/17(金) 20:49:02
class CABCDlg : public CDialog { // 構築 public: CABCDlg(CWnd* pParent = NULL);// 標準のコンストラクタ 上の意味はABCダイアログの初期化と考えていいんでしょうか?
ビルドとリビルドの違いはなんですか?
リビルドはあれだ、make clean && make みたいなもんだ コンパイルした結果生成されたオブジェクトファイルをすべて削除して 全てのソースを再コンパイル→リンクする
609 :
607 :2005/06/17(金) 23:00:39
>608 なるほど。ということはビルドは、必要なところ(変更があったソースかな?)だけコンパイル→リンクするんですね。
>>609 そう。一般的に
オブジェクトファイルのタイムスタンプとソースのタイムスタンプを比べて、
ソースのタイムスタンプの方が新しい場合コンパイルを行う
という動作だと思う
時々リビルドしないとうまく変更を反映してくれないことがある。
612 :
デフォルトの名無しさん :2005/06/18(土) 00:25:49
613 :
607 :2005/06/18(土) 00:34:40
>610 分かりやすい説明ありがとうございます。 >611 そうなんですか。まだ、Hello World レベルなので、変更が反映されないということはありませんが、ファイルが増えたり、依存関係やらが複雑になってくるとビルドでは問題が出てきそう?ですね。
614 :
デフォルトの名無しさん :2005/06/18(土) 01:04:12
反映されないのは resource.h を手動でいじくったとき。 番号がとびとびになると気持ち悪い人は手動でいじくる。
615 :
575 :2005/06/18(土) 01:21:15
カスタム設定にしたものをそう呼んでいるだけだよ。 そのFullOptって、最適化のオプションの組み合わせ方間違っているよw
>>614 resource.hの修正が反映されないのはどのバージョン?
VC6でもVC7.1でもエディタで保存した瞬間に反応しているけど。
それはそうと、ID番号のつけかえだけならIDE内でやればいいのに。
>>617 VC6もVC7.1も。
resource.h に //{{NO_DEPENDENCIES}}
が書かれてるので他のソースから依存されない。
つまり、resource.hに書かれているIDを使ってるソースはすべてコンパイルし直す必要があるのに、
ビルドしただけでは反映されないのでリビルドする必要がある。
resource.hはほとんどのソースからincludeされるものだから、
ビルド時間を短縮するのに NO_DEPENDENCIES は必要な機能なのだろう。
どなたかリソース関連スクリプトに詳しいサイト教えてください。
>>619 まずは、IDEが吐き出したrcファイルを眺めるところから始めたらどうだい?
621 :
デフォルトの名無しさん :2005/06/18(土) 14:33:45
これからWindowsアプリケーションを勉強しながら作ろうと思うのですが、これからやるならMFCは使った方が良いですか?それともSDK一本槍がよいですか?もし、作るアプリによるというのであれば、分けてお願いします(ゲームなら使う、使わないなど)。 あと、実際の仕事の現場でVCを使って開発するときに、MFCは使われることが多いのでしょうか。
ゲームではあんまりMFCは使わない。余計な機能が多いし 仕事の現場ではMFCは結構使うかな
MFCを使って工数を減らしたいとか他の人と共同開発したいとかある。 MFCを使わないのなら、ちゃんと自作クラスを作ってオブジェクト指向しないと 他人からも未来の自分からも読みにくいプログラムになってしまう。
そこでwindowのラッパクラスを作ろうとして ウィンドウプロシージャをうまくラップできずに挫折ですよ
WTLの出番ですよ
626 :
デフォルトの名無しさん :2005/06/18(土) 16:06:19
質問なんですが、Visual C++ .NET 2003シリーズで作ったプログラムを売って儲けたりしていいんですか? Professional版ならできて当然だと思いますが、 Standard版やアカデミック版だとどうでしょうか。 自分はStandard版のアカデミック版を買おうかと思っているのですが、 同人ゲームを作って勝手に売ったりしていいのでしょうか?
でもWTLやるひとってばMFCも理解できる人たちだろ?
俺WTLを使っているけどMFCは使ったことないし使うつもりもない。
MFCやWTLを使わないと、自前で作らなきゃいけない部分が増えるはずだが、 自前で作る必要があるものには例えばどんなものがあるか説明できる?
ウィンドウクラス
COM使う場合はMFCのサポートが無いとちょっと辛いな。
632 :
デフォルトの名無しさん :2005/06/18(土) 19:52:16
Platform SDKってリンク切れてるけど手にいれる方法ってありますか?
ある
ある。
探検隊
636 :
デフォルトの名無しさん :2005/06/18(土) 20:26:23
断る
>>623 そらおまえの書いたソースが汚い&コメント書いてないだけだろ
クラス使わんでもちゃんと書けば読めるわ
639 :
デフォルトの名無しさん :2005/06/18(土) 20:52:46
MFCで作成していて、他のファイルをコピーした場合に、 ときどきコードアシスト出来なくなる(メンバに出て来なくなる) のだが何か悪いのだろうか? 一応ビルドは正常に通るのだが、メンバに出てこんと気になる。 リソースIDも他のファイルからコピーしたのだが、それが原因? どっかでコントロールに対して振り分けるIDが決まっているのを みたことがあるような。
データベースファイルを再生成すればいいんじゃね?
642 :
デフォルトの名無しさん :2005/06/18(土) 23:45:18
VC6.0から.NET2002にプロジェクト変換したら、 リンクエラーとかが出まくり。LINK2005とか。 VC6.0では出なかったのになんでなんでしょう? SP1も当てたけどだめ。 これじゃ、6.0のままのほうが良いわ...orz
リンクエラーの意味もわからんのならVC6.0使ってればいいじゃない
>>642 2002年のコンパイラを2005年に使うからだ。
パソコンの日付を2002年に直してからやれよ。
ここって冷たいスレですね。 初心者をイビルスレだったとは...orz
そういえば、浴びる優がテレビに出てたけど、 随分とおとなしかったな。さすがに馬鹿騒ぎは出来ないか。
>>644 ダメでした。ファイルのタイムスタンプとの関係がおかしくなるので、
すべてリビルドもしましたが結果は変わりません。
2002年でも月によって違うとかあるのですか?
不思議なのは、同じMSのコンパイラのバージョンアップぐらいで、 容易に致命的エラーが出てしまうことだな。 MSは知っているんだから、前もってエラーが出ないように対策するべき。
>>649 ちょっと長いので一部だけ掲載します。
レスも分割させてください。とにかく1つが長い警告文で目が眩みそうです。
TestLib.libはプライベートのスタティックライブラリです。
TestMainはTestLib.libをリンクしているメインプログラム(exe)です。
TestLib.lib(TestLib.obj) : error LNK2005: "public:__thiscall std::basic_string<char,structstd::char_traits<char>,
class std::allocator<char>>::~basic_string<char,struct std::char_traits<char>,
classstd::allocator<char> >(void)"(??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ)
は既に msvcprt.lib(MSVCP70.dll) で定義されています。
:
この間にいっぱい
:
libcp.lib(string.obj) : error LNK2005: "public: __thiscallstd::basic_string<char,struct std::char_traits<char>,
classstd::allocator<char> >::basic_string<char,structstd::char_traits<char>,
class std::allocator<char> >(charconst *)"(??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z)
は既に msvcprt.lib(MSVCP70.dll) で定義されています。
ちなみにTestLib.libにSTLを使うとこの警告は出るようです。
簡単なテストプログラムで確認しました。
で、これらのエラーに対して、 /NODEFAULTLIB:"libc.lib" /NODEFAULTLIB:"msvcprt.lib をオプション指定すると、 TestMain.obj : warning LNK4217: ローカルで定義されたシンボル??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z (public: __thiscall std::basic_string<char,structstd::char_traits<char>, class std::allocator<char>>::basic_string<char,struct std::char_traits<char>, classstd::allocator<char> >(class std::basic_string<char,structstd::char_traits<char>, class std::allocator<char> > const&)) がフィクション "public: __thiscallstd::logic_error::logic_error(classstd::basic_string<char, struct std::char_traits<char>,classstd::allocator<char> > const &)" (??0logic_error@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@@Z)にインポートされました。 : この間にいっぱい : TestMain.obj : warning LNK4217: ローカルで定義されたシンボル??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@PBD@Z (public: __thiscall std::basic_string<char,structstd::char_traits<char>,class std::allocator<char>>::basic_string<char, struct std::char_traits<char>,classstd::allocator<char> >(char const *)) がフィクション "protected: void __thiscallstd::vector<int, class std::allocator<int>>::_Xlen(void)const "(?_Xlen@?$vector@HV?$allocator@H@std@@@std@@IBEXXZ) にインポートされました。 という警告に変わります。この警告達に対しては、 "__declspec 修飾子を削除して、この警告を解決してください。" とヘルプにはあるのですが、そんな記述はプライベートライブラリには無いので どうしたら良いか困っています。 一応TestMain.exeは生成され実行もできますが、やはり気分はよくないです。 長文にて申しわけございませんでした。
リンクするライブラリを間違ってる…? 構成プロパティ -> C/C++ -> コード生成 -> ランタイムライブラリ を変更してみるとか。
TestLib.lib を.NET2002でリビルドしてみる。
プロジェクトを2002で作りなおして、ソースコードを移し替えるのがイイかも
655 :
650 :2005/06/19(日) 02:35:34
>>652 C:\MSVSN\Vc7\atlmfc\include\afxver_.h(139) : fatal error
C1189: #error : Please use the /MD switch for _AFXDLL
builds
って出ちゃいますです。マルチスレッド以外は受け付けないみたい。。。
>>653-654 それもやってみたのですが結果は同じでした。
ソースコードを移し変えるのも、新規で作ってもエラーは出てしまいます。
むしろ、TestLib.libはVC++6.0でコンパイルしたままのほうではエラーが出ず、
.NET2002でコンパイルするとエラーが出てしまったという???な状況です。
とりあえず今夜はここまでにしたいと思います。
原因がわからなければ、このまま警告が出たままで使うしかないか。
一応動くので。気分が晴れませんよね。。。
これが趣味のプログラムなら放っとくんですけど(^^;
ぉぃぉぃ。 業務プログラムで警告出たままほっておくのかよ。 CMMも糞もへったくれもないな。
↑ だからこうして悩んでるんで無いのか? 品の無いつまらん煽りや荒しはやめろよ。 どうせコンパイルの仕方も解決法もわからん厨房なんだろうけど。
658 :
デフォルトの名無しさん :2005/06/19(日) 04:05:44
>>656 はこの時間になると活発になるニートなので許してやってください。
659 :
656 :2005/06/19(日) 04:23:44
煽りのつもりはなかったけどそう感じたんならすまん。 ただ業務用のプログラムで >原因がわからなければ、このまま警告が出たままで使うしかないか。 >一応動くので。気分が晴れませんよね。。。 これはありえないと思っただけ。
ただの愚痴だろうに、関係ないところで突っ込めば単なる叩き。 ましてや解決法もわからないのなら静観するのがマナーだな。
>>659 初心者に対して会社でもそんな風に後輩たちをなじってるの?
ここのスレタイ、よく見てみなって。
>CMMも糞もへったくれもないな。
ここがあなたの深層心理をついていると思うがな。
662 :
デフォルトの名無しさん :2005/06/19(日) 04:42:21
また、アフォが湧いてきたな。 ここは初心者をとっ捕まえて叩くスレですか?
>>661 品のない煽りやめたほうがいいよ。
業務プログラムで原因不明の警告出っ放しがまずいってのは
>>659 のいうとおりだし
また、初心者だからこそ(業務についてる人ならなおさら)↑は教えておくべき。
以上すれ違いなのでここでやめておく
技術も知識も無い香具師ほど、業務だ糞だって言うのはわかったよ。
………………………… き り と り せ ん …………………………
このスレでは人を糞と呼んでもいいことになりました。。。
まだ粘着してるのがいるのか
669 :
デフォルトの名無しさん :2005/06/19(日) 05:03:50
なんだ?何もめてんだ?
そんな簡単なこと答えてやれよ。
>>668 はわかるのか?
オレはだいたい察しがつく。初心者によくある設定ミスだ。
まあ、ちょっと様子見しよう。
偉そうにしてるヤシらの口だけじゃないってところを見せてもらおうかな。
オレもだいたい察しがつく。初心者によくある設定ミスだ。
まあ、ちょっと様子見しよう。
偉そうにしてる
>>669 の口だけじゃないってところを見せてもらおうかな。
671 :
669 :2005/06/19(日) 05:07:49
設定ミスというより、気がついてない、って言ったほうが正しいかも。 つまりデフォの設定じゃダメってことだ。 意外と殆どが知らずにwarning出しても見逃してるかもだな。
>>670 あの、、、わからないんでしょ。素直じゃないな。。。
いくら煽ってもあなたには教えないからね。
>>659 が謝って終わったところにまた煽るやつらが出るからこうなる。
ほんと人が下手に出ると調子に乗るやつ多いな。
で、その煽りをスルーできないやつも馬鹿。
みんなしんじゃえ。
あのここで聞いてよろしかったかわからないのですが 日本語化パッチなどはどのようなソフトを使って作れるのでしょうか?どなたか教えて下さい
下手に出てる初心者を糞扱いするのはいいんですかね? それこそ飽くの根源では?
>>674 一般的な開発系のソフトなら作れる。
って言うかすれ違い
>>673 でしたら、貴公が的確なアドバイスをしてあげれば、
この場はまあるく納まるような気もするのですが。
ここはベテランがスカーッと名解答を出してやれ。 そうすれば、カスどもは黙るだろ。
そうそう。何も出来ないくせに初心者相手に叩いて喜んでるようじゃ、 人間いつまで経っても大きくなれんぞい。
もういい加減に粘着するなよ。
>>671 が回答して終わってるんだから。
681 :
デフォルトの名無しさん :2005/06/19(日) 14:15:24
>>640 さん、
>>641 さん、
わたし VS2003 使ってるんですけど、
Alt + F8 のマクロエクスプローラ使った後にも
ときどき、コードアシストが効かなくなりますよね。
>>641 さんが対処法として書き込んでいらっしゃる
「データベースファイルを再生成」するには、どうすればいいのでしょうか?
プロジェクトを作ったら自動生成される *.ncb というのが、そうなのですか?
すいません age てしまいました....
683 :
650 :2005/06/19(日) 16:15:38
すみません。私がつまらない質問をしたばかりに、 ちょっと荒れてしまったようですね。 先週末からずっとはまってて、深夜も遅くなって ちょっと投げ遣りになってたのは事実かもしれません。 原因不明のエラーというのはお客さんにも説明つきませんし、 解決するべきだと思います。今のところ進展はしていませんが、 何か良いアドバイスがあれば、ご迷惑だとは思いますが よろしくお願いいたします。
仕事でカネもらってるんなら自分で解決しろよ。お前さんのためだ。
>>684 このスレの存在を否定するヤシは出て行け!!
686 :
デフォルトの名無しさん :2005/06/19(日) 16:53:50
死人に鞭打つような人間がまだいたのか、このスレには。
>>684 のように、人のことをすぐに糞呼ばわりするヘタレに、
人間の心の痛みがわかるわけもない。かわいそうな人だね。同情する。
要は技術的にも未熟で、殆どアドバイスらしいアドバイスもできないから、 弱いものを見つけては叩くことしかやらないって人種だろ。 黙ってりゃ良いものを、いちいち叩くレスをつけるのがその醜い心のあらわれだ。 常に弱いものしか叩けないから、スレタイに「初心者」とついてるレスに 常駐する性質の悪い荒しだね。
>>684 解決できるよう努力もしている。
と同時に、このスレでも質問している。
そういう人が目の前にいたときも、
直接その人の目を見て言えるかね、そんなこと。
例えば会社の後輩や新人があなたを頼って質問してきたとき、
「給料もらってるんだから人に聞くな。自分で解決しろ。」といえるのか?
せめて方向性だけでも導いてやるべきじゃないのか?
まあ、あなたにそれだけの度量と技術と知識があればの話なんだがね。
690 :
デフォルトの名無しさん :2005/06/19(日) 17:38:09
285>>
まぁここは初心者スレなんで寛大に
> MFC ライブラリを使用する場合は、必ず CRT ライブラリの前にリンクする必要があります。 コレとか
Visual Studio .Net 2003を使っているのですが、 たったこれだけのコードをビルドしようとしてもこんなリンクエラーになってしまいます。 error LNK2019: 未解決の外部シンボル "public: void __thiscall std::_String_base::_Xran(void)const " (略) で参照されました。 error LNK2019: 未解決の外部シンボル "public: void __thiscall std::_String_base::_Xlen(void)const " (略) で参照されました。 #include <iostream> #include <string> int main() { std::locale::global(std::locale("japanese")); std::wstring ws = L"hello, world"; std::wcout << ws << std::endl; return 0; } なんででしょうか?
みなさんにお聞きしたいのですけど、最近の企業はやはり開発言語に.net を採用しているのでしょうか? VC6はもう時代遅れですか?
みなさんにお聞きしたいのですけど、最近の企業はやはり開発言語に.net を採用しているのでしょうか? VC6はもう時代遅れですか?
697 :
デフォルトの名無しさん :2005/06/19(日) 20:01:36
重複すいませんm(_ _)m
698 :
デフォルトの名無しさん :2005/06/19(日) 20:06:46
みなさんにお聞きしたいのですけど、最近の企業はやはり開発言語に.net を採用しているのでしょうか? VC6はもう時代遅れですか?
時代遅れということは無いけど、時代から 取り残されつつあるのは事実。 もうサポートも終了したんじゃないかな。
>>698 仕事内容によるけど、うちではVC6が現役。
プリインストールの.netは削除してからVC6入れてる。
>>698 開発言語は VC++ 7( 非マネージド )だけど環境は .NET 2003。
コンパイル時のチェックは厳密になっているし、開発環境自体も結構進歩
していて、生産性が向上した。個人的に VC++ 6 は時代遅れだと思う。
うちの会社は私が仕切るとVC7.1になるけど、 某芝なんたらからの委託の仕事はVC6指定だったりVC4.2指定だったりする。
MSのサポートとかOSの対応状況とか考えると、 VC6はそろそろやばいんじゃない?って感じはする。 そのうちVC6のコード自体、コンパイルできなくなる日が来るかもしれんから、 余力のあるうちに乗り換えといたほうがいいかも。
705 :
デフォルトの名無しさん :2005/06/19(日) 22:50:07
みなさんありがとうございます。やはり時代遅れなのですね。 あとVC7って何のことでしょうか。無知ですいませんーー。 あともう一つ、技術評論社のホームページがなんかおかしいのは私だけですか・・・
>>705 VC7はVisual Studio .Net (2002)のC++コンパイラ。
VC7.1はVisual Studio .Net 2003のC++コンパイラ。
>>705 時代遅れって言うのは違うと思うけどな。
まぁ、あんたがどういうつもりでその質問をしたのかは知らないけど。
ただ、VC6のコードが、いずれは新OSで動かなくなる可能性はあるかも。
ま、Visual C++6.0はCPU向けの最適化が最高でもPentium Proですからね。 VC++6.0とインテルのコンパイラを組み合わせるという手も ありまんもすがね。
VC6のインターフェイスでコンパイラがVCToolkitなら俺的に最強なんだが
>>708 VC6が生成したコード(バイナリ)がってことね。
やっと理解した。
VC7.1のコード(Winネイティブ)だってLonghornで動かなくなる可能性あるかも
そんなことしたらM$製品がほぼ全滅になるからやらないだろう。
>>710 VC6のIDEもコマンドラインのcl.exeを呼んでるだけだから、
Toolkitのに差し替えたらごっそりいいんじゃないの?
できるけど、pdbのフォーマット違いでデバッグに支障をきたす。
コンパイラだけ置き換えると
標準ライブラリ <iostream> とかのテンプレートでコケル。
ライブラリ入れ替えたとしても、
>>715
ソースコード互換がある内に早く乗りかえれ。
ソースコード互換が無くなると悲惨だな。 多少の修正で済むうちはまだましだよ。
719 :
デフォルトの名無しさん :2005/06/20(月) 00:22:09
いやしかしVC++.net人気無いね。C#やVBの本はたくさん出てるのに、VCは少なすぎ。 技術評論社や秀和システムからましなのが出たと思ったら、どちらも重版未定だし。
根本的なものはほぼ変わってないから入門書みたいのは必要ないしね。
721 :
デフォルトの名無しさん :2005/06/20(月) 00:33:07
>>719 単に、VC++.NETは売り切れて、
C♯、VB.NETは売れ残っているのでは?
VB.NETはVBAとの互換性がなくなったのが痛い
VC++、+MFCで楽にさくさくのネイティブコードを作れるのに
なにが悲しくてもっさりの.NETコードを作る
VC++2005も単体でうってくれんかの〜
他はいらん
そう言えば、林タンのVisualC++.NET入門シニア編、近刊と書いてから2年 全然出ないじゃん・・・ もう、出す気無いだろ?w
シニアな人にそのようなものは必要ないですから。
中級向けの書籍が欲しいんだよね ネットで調べりゃどうにでもなるんだけど、 「あれ?あのやり方はどのサイトに載ってたけな」 となる事が多々ある
>>724 お前もしつこいやつだな。
これ以上このスレに関係無い話題は終わり。
C言語入門書を勉強し終わり、WINDOWSプログラムかC++学習に進もうとしている者です 中古でVC++6.0の説明書無しを買ったのですが、プロジェクトとかビルドとかデバッグとか 分からない事だらけで、良いHPも見つからず困っております どこか分かりやすいページありませんか?
つーか、VC++6に説明書らしいもんあったっけ?
729 :
726 :2005/06/20(月) 04:19:31
レスありがとうございます 2005にしなかった理由は、よく分からなかったから、と思ったより安く6.0が買えたからです 初心者ですので分からない事だらけの上に、さらに、まだ情報の少なくて 機能の多い2005は勉強の妨げにならないか心配だったのです もう一つ質問です、例えば↓のプログラム(名前はtestとします) #include<stdio.h> int main(int argc,char *argv[]){ printf(argv[1]);} bcc++の無料コンパイラでは コマンドライン上で test zzz と書けば zzzと表示されます これを VC++ではどのように実行すればコマンドライン引数を指定できるのでしょうか?
同じ
プロジェクトの設定 -> デバッグ -> プログラムの引数
733 :
デフォルトの名無しさん :2005/06/20(月) 15:47:45
ユーザ違いだったり?
735 :
733 :2005/06/20(月) 18:38:47
>>734 返事ありがとう。もうちょっと詳しくお願いします。
インストールユーザーはadmin権限を持っています。
(Homeなので通常Administratorは利用できないみたい)
VC6が突然重くなったんだがなんなんだろう。コピー&ペーストするときに10秒くらい待たされる。 以前も時々なってた。
737 :
デフォルトの名無しさん :2005/06/20(月) 20:22:00
>>736 それはな、呪いじゃよ
ついこの間まで
裏VCってのがあっての・・・
つづきは明日
>>736 実はエディタ部の窓を一杯開いてるんじゃないの
いや、全部消したけど駄目だった。なんだろうなこれ。 Window切り替えに10秒くらい待たされてイライラする。 HDDも空いてるし常駐アプリも最低限にしてるのにな。 HDDがやばくなってきたのかな。
740 :
デフォルトの名無しさん :2005/06/20(月) 21:55:25
24ビットのビットマップファイルを ダイアログからファイル名を取得して表示させたいのですが、 ファイルを開いてヘッダとビットパターンを読み込んだ後、 CBitmapの初期化(?)がうまくいきません。 CreateBitmapを使うと、Bitcountに24を指定すると戻り値が0になってしまうし…。 CreateCompatibleBitmapを使うと、ビットパターンの指定ができないし…。 普通はどうやるのでしょうか?
LoadImage じゃね?
743 :
デフォルトの名無しさん :2005/06/21(火) 01:54:24
VC7.0で作成するexeがマルチスレッドなら、 リンクするライブラリ(自作も含む)も マルチスレッドで作らないといけないのですか? シングルスレッドでコンパイルしたライブラリでも、 リンクができて、一見、正常にexeが動いているように見えるのですが、 これって何か問題ありますか?
マルチスレッドで作らないと、という意味がよく分からないが、 少なくともマルチスレッドで使う予定のライブラリはマルチスレッド環境でも 問題なく動くように設計する必要はある。例えば、グローバル変数や 静的変数を使用するものは避けるとか。Cの関数のソースが VC++には付いているから幾つか簡単な関数の中身を覗いてみて、 マルチスレッドではどうやって動作をさせているか見ると良い。 関数によっては何も配慮しなくても平気なものもあるし、マクロで 動作を切り替えているものもある。それを参考にすれば自作のライブラリでは どう対応すべきか分かるようになるだろう。
745 :
デフォルトの名無しさん :2005/06/21(火) 02:26:30
MessageBoxに、たとえばintを表示させたい場合はどうすれば良いんですか? 型の変換の仕方がわかりません。
>>745 CString foo;
foo.Format("%d", 123);
AfxMessageBox(foo);
>>745 char a[20];
itoa(123,a,10);
AfxMessageBox(a);
748 :
デフォルトの名無しさん :2005/06/21(火) 05:15:27
そういや、たとえばA.DLL をアプリB,Cで使うとして そのAのインスタンスってB用C用にそれぞれ生成されるんだろうか?
>>745 char b[14];
sprintf("%d", 123);
MessageBox(NULL, a, NULL, MB_OK);
>>748 DLLについて勉強すべし
>>745 typedef std::basic_string<TCHAR> tstring;
MessageBox(0, boost::lexical_cast<tstring>(5), 0, MB_OK);
newで動的に確保した変数は、deleteし忘れるとメモリリークしますか? それとも、プログラム終了時に消えてくれますか?
両方ともYes
システムグローバルなリソースを握ってるならNO.
>>751 auto_ptrとか使うと幸せになれるぞ。
>>745 1つのソースで MBCS(Shift_JIS)版とUnicode版の両方に対応するなら、
#include <stdio.h>
#include <tchar.h>
TCHAR sz[4];
_stprintf(sz, _T("%s"), 123);
AfxMessageBox(sz);
%sワラタ
しかもsz[4]か。おhる。
[課題Q]3角形の底辺の長さ,高さをキーボードから読込み,その面積を計算するプログラムを作成しなさい. ただし,底辺の長さ,高さ,面積の値を入れる変数名をそれぞれteihen, takasa,mensekiとし,いずれも実数型(double型)とする. void main( void ) { double teihen, takasa, menseki; printf( "底辺は?\n" ); /* 入力を促すメッセージを表示 */ scanf( "%d", &teihen ); menseki = teihen * takasa / 2; printf("%f\n",menseki); } これ誰か完成させてくれ
>>759 低レベルなソース向けに、低レベルな回答。
printf( "底辺は?\n" ); /* 入力を促すメッセージを表示 */
scanf("%lf", & teihen);
printf( "高さは?\n" ); /* 入力を促すメッセージを表示 */
scanf("%lf", & takasa);
>>744 レスありがとうございます。
わかりにくい質問で申し訳ございません。
私が伺いたかったのは、プロパティページの
C/C++--->コード生成--->ランタイムライブラリ
で指定するパラメータを、リンクするほうもされるほうも、
同一にしなければならないのか?ってことなんです。
例えば、exeに"/MD"を指定して自分で作ったライブラリに
"/ML"と指定すると、リンクできたりできなかったり(リンクエラーが出る)
するのですが、リンクできたときはたまたまなのか、
それとも何か問題があるのかとか、そういうところです。
同じでないとダメだと思われ。
シングルスレッド用のをマルチスレッドで動かすとデータに矛盾を生じることがある。
764 :
デフォルトの名無しさん :2005/06/21(火) 15:55:20
a.libには関数a1(),a2() b.libには関数b1(),b2() があります。 a1()からはb1()を呼び出すことがあります。 b2()からはa2()を呼び出すことがあります。 事情があって、関数の場所を取り替えることができません。 この場合、お互いに呼び出しているので、 ビルド時にお互いのlibファイルが生成されていないので、 リンクエラーが出てしまいビルドできません。 このリンクエラーを回避する方法は無いものでしょうか。 使用しているコンパイラは.NET2002(SP1)です。
>>764 b2()を含まないb.libを作って、それを使ってa.libを作ったらどうだろう。
そのa.libを使って作ったb.libでa.libを作り直さないといけないけど。
>>754 ググって調べてみました。
STLってすばらしいですね・・・
boost スマートポインタ でググるともっと幸せになれるかも…
>>766 いや、それはあまりすばらしくないと思うぞw
769 :
デフォルトの名無しさん :2005/06/21(火) 18:19:26
C言語、perl、java、C++、のこの全部の違いを教えて下さい。
あんまり無茶な要求すんなよな
C++は新しく作ったC言語 javaは新しく作ったC++ perlは真珠
JavaはC++から作ったにしてはだいぶ劣化してるけどなw
だがそれがいい
775 :
デフォルトの名無しさん :2005/06/21(火) 19:30:18
CMyClass *m_pA; と m_pA = new CMyClass; では、何が違うんでしょうか?詳しく教えてください。
>>775 ポインタを勉強しろ。
話はそれからだ。
777 :
デフォルトの名無しさん :2005/06/21(火) 20:06:23
>>776 話はそれからだ。って言いたいだけなんでしょう?
違い解らないんだ?
CMyClass *m_pA;はこれからポインタを使うからよろしくな!って宣言しただけ。 m_pA = new CMyClass;はやったぜ、父さん!ポインタの実体を確保したぜ!という意味
数値計算のプログラムを作っています(一応仕事) ファイルは main.c(本体) file.h(ファイル入出力) calc.h(計算する) の構成で、main.cに#include "file.h"、#include "calc.h"としています。 一方 main.c(本体) file.c(ファイル入出力) calc.c(計算する) という構成にもできるらしいのですが、やり方はわかりません。(とりあえずそれでも困らない) ただ、そのようにすると何かよいことはあるのでしょうか?(計算が速くなるとか)
どう考えても仕事には思えんが・・研修?
>>779 程度の規模なら困らない
多人数で開発したり規模が大きいプログラムを組めばわかってくる
分割コンパイルとかでググるとわかるよ
ちなみに計算が早くなったりはしない
781 :
775 :2005/06/21(火) 20:43:37
>>778 ありがとうございます。
じゃあ、前者は実際に、m_pA.func()などとすることで、後者と等価になるってことですか?
ちなみに
>>777 は私ではありませんよ。
>>775 はこれと等価。
CMyClass *m_pA = new CMyClass;
784 :
779 :2005/06/21(火) 20:51:27
>>780 ありがとうございます。
仕事ですよ。4年になります。
一応製品(というほどでもないけど)の一部に組み込まれてます。
正確にはcalc1.h・・・calc5.hのように複数あります。
早くならないなら今のままでOKということですね。
785 :
デフォルトの名無しさん :2005/06/21(火) 21:10:18
>>784 製品の一部 と仄めかされて良いように使われてるだけのこと。
どう見ても何かの検証プログラムだろ。
786 :
デフォルトの名無しさん :2005/06/21(火) 21:20:43
>>786 詳しく知りたいんなら本とか買えよ。
文字だけより絵とかがあった方がわかりやすいと思うよ?
CMyClass *m_pA=(CMyClass*)malloc(sizeof(CMyClass)) と書いていいかどうかは知らないが、こういうような感じだ。 つまり、ヒープ上にメモリーを確保(new CMyClass())してそのメモリ領域を ポインタm_pAで表しますよ、ということだ。 最初のように二段階に分けて書くと、CMyClass* m_pA;でとりあえず CMyClass型へのポインタを宣言はしたが、それが具体的にメモリーのどこを 表しているのかは決まっていない。つまり不定になっている。 int x;と書いただけではxに値が決まってないのと似たようなものだ。 が、new CMyClass()でCMyClassのオブジェクトを格納するのに必要なメモリを 実際に確保したら、それを既に宣言してあるm_pAで表しちゃえ、ということを 行なっている。別にm_pAでなくても、改めてCMyClass* m_pBというポインタで 表しても構わないけど、既に宣言されているんだからm_pA使えばそれでいいじゃん、 ということ。
それがm_pA=new CMyClassの代入の意味。
二回に分けると見にくいんじゃ、ゴルア!という場合は
一行で
>>783 のように書いても良い。
これは好きな方を採用すれば良い。
勝手に補足。 new CMyClassの場合はmallocと違って コンストラクタCMyClass::CMyClass()が呼ばれるはず。
>>788 実際にはそこへコンストラクタの呼び出しが加わる。
このスレに来る前に、最低限の勉強は必須としてもいいんじゃないか?
日本語とか日本語とか
礼儀とか
795 :
デフォルトの名無しさん :2005/06/22(水) 02:54:59
日本史とか
VCの初心者にVCを教えるのはまだいいが、 プログラムの初心者に教えてと言われてもな・・・ 生まれたばかりの赤子に数学教えてって言われても無理な話
お助け下さい。 VC++.netスタンダードバージョン2003をインストールすると 途中で勝手に再起動してしまいます。 OSはXPのSP1です。 どうしたらよいでしょうか。
800 :
798 :2005/06/22(水) 09:51:51
すいません798です。 .NET Framework SDKのチェックを外したら一応インストールが完了しました。 徹夜までして何だったんだろう・・・ バージョンはアカデミックです。 C++の勉強用に買ったので当面はこれで行きたいと思います。 スレ汚し済みませんでした。 799さんありがとうございました。
>>798 と関係ないかも知れないけど、
Visual Studio .NETのIDEの機能のうちで、
.NET Frameworkが入ってないと使えない機能があるね。
プロパティウィンドウでメッセージハンドラを追加・削除するやつとか。
CStatic::SetBitmapでビットマップをコントロールに表示するとき、 座標を指定することってできますか?
.NET 2002には一定の時間が経過したら作業中のファイルを 自動で保存する機能は無いですか?ソースセーフか何か入れないと 無理ですか?
804 :
デフォルトの名無しさん :2005/06/22(水) 16:11:00
こんにちは、よろしくお願いします。 APIを使ってWindow を表示するコードをほんのと売りに書きました。 ピルドして、exeファイルもできました。 実行すると、ウインドウが表示されません、終了すると、 'tesuto.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。 上記の表示が、10行ほどつづいて、 プログラム '[2692] tesuto.exe: ネイティブ' はコード 0 (0x0) で終了しました。 で終わっています。 どうすれば、いいのでしょうか。教えてください。
すいません、VCで簡単なプログラムを作れるとアピールしてるのですが 未経験だとバイトすら採用されません。まだ20代前半です。どうしたらいいでしょうか?
>>806 いつまでだか知らないが、2chなんか見てないで、少しでも勉強することを薦める。
808 :
デフォルトの名無しさん :2005/06/22(水) 16:24:06
>>804 です
>>805 さんありがとうございます。
では、どうして、windowが、表示されないのでしょうか
>>806 簡単なプログラムというのがどの程度なのかあいまい過ぎる。最低でも
フリーソフトでも作って公開して雑誌にちょくちょく載るくらいに
なったら名刺代わりにはなるだろう。
>>804 その本のコードを書きなさい。ISDNコードじゃないぞ。
>>806 ・売り込みが甘すぎ
・意気込みが伝わってない
こんなとこだろ
訂正 なんか作って持っていったら?
フリーウェアで公開してるのって趣味で何ヶ月もかけて 作ってるのとか多いだろうし、ものによってはレベルが全然違うし。 時間さえあればネットワーク系以外ならそこら辺に落ちてるものぐらい余裕で作れますから。 まぁ「最低でもフリーソフト」なんて間抜けなこといってるカスに言っても時間の無駄だろうけど
プログラムの設計の仕方から判らないから「猫でも」見ても駄目だ _| ̄|○
そうだな。余裕で作れますと言っているのに
バイトにすら採用されないレベルの間抜けであることを
自覚出来ないカスだからな。
>>814 は。
まぁちょっと謙遜して言いすぎたからな。俺を見る目がまるで無かったんだろう
814にはアイコン職人が向いている
趣味で作っている人は本業のほかにやっているわけだから 数ヶ月かかっても当たり前なのに分からない馬鹿もいるんだねぇ。
>>814 サン
じゃあzipのパスワード解析出来るのでも作ってよ。出来ればrarにも対応して欲しいです。
GUIはいらないです。アルゴリズムはそこら辺に落ちてるし、フリーソフトにも
沢山あるから簡単でしょ。でも落ちているdllは使わないで独自に実装お願いしますm(_ _)m
だめなら軽いタブブラウザ作ってちょ。IEのエンジン利用していいですよ。
それならネットワークの知識は特に要らないから簡単でしょ。
ぜひお願いします。m(_ _)m
そんなにレス返して欲しいのか?www数ヶ月なんて序の口で 数年単位で作ってるやつもあるってことも言いたいのがわからんかったようだこの低脳はwwwwww
アルゴリズムをまんまパクるならzip解析は1日でタブブラウザなんて1時間でできるwwww だがお前のためにそんな無駄なことをする義理も時間もないwwwwwカスの集まりが そんなものも頼まなきゃ作れんのか。スレタイに初心者って書いてるからあまり悪く言いたくはないがな
>>820 家に泥棒が入って全財産盗まれる羽目になるので嫌です。
824 :
デフォルトの名無しさん :2005/06/22(水) 18:57:02
>>804 です
>>809 さんありがとうございます。コードです
#include <windows.h>
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ) ;
int WINAPI WinMain( HINSTANCE hi, HINSTANCE, LPSTR, int ) {
WNDCLASSEX wc;
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = 0;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hi;
wc.hIcon = LoadIcon( NULL, IDI_APPLICATION );
wc.hIconSm = LoadIcon( NULL, IDI_WINLOGO);
wc.hCursor = LoadCursor( NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName= "wh04";
if(! RegisterClassEx(& wc)) return 0;
もう謙遜するのやめた。次に面接するときはハッキリと 使いこなせる作れると言ってしまおう。やっぱりどいつもこいつもハッキリ言ってやらんとわからんみたいだしな
826 :
デフォルトの名無しさん :2005/06/22(水) 18:58:10
>>824 つづき
CreateWindow("sh04",
"定番hell",
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
HWND_DESKTOP,
NULL,
hi,
NULL);
MSG msg;
while ( GetMessage( &msg, NULL, 0,0)){
TranslateMessage( &msg);
DispatchMessage( &msg);
}
return msg.wParam;
}
827 :
デフォルトの名無しさん :2005/06/22(水) 18:58:54
>>826 つづき
LRESULT CALLBACK WndProc( HWND hwnd, UINT imsg, WPARAM wp, LPARAM lp ){
switch (imsg){
case WM_PAINT:{
PAINTSTRUCT ps;
char *p = "hello windows";
BeginPaint(hwnd, &ps);
TextOut(ps.hdc, 10,10,p,strlen(p));
break;
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, imsg, wp, lp);
}
return 0;
}
829 :
814 :2005/06/22(水) 19:08:53
CreateWindow("sh04"←これを"wh04"にするかwc.lpszClassNameにしてみよう
>>825 言うだけなら簡単だな。化けの皮がはがれないようにお前の
その脳の入っていない頭でよく考えな。
>>822 じゃあ一時間で作って見せてよ。
へ理屈はいいからさ。
やだよめんどくさい。お前等に実力を証明したところで不毛極まりないからな
833 :
デフォルトの名無しさん :2005/06/22(水) 19:16:33
>>829 さん
本当にありがとうございます。できました。
>>828 さんすみません気をつけるようにがんばります。
アルゴリズムをパクらないと出来ないレベルであることを 自ら告白したな。w >めんどくさい。 要するに実力を証明することが出来ないわけだ。馬鹿丸出し~~ お前は所詮はその程度だ。もういいら消えろ
VCに関係ないことは別のスレでやれ
なんつーかもう馬鹿丸出しでいいよwwwほんとアホらしくなる
おチンチンびろーん ∩___∩ | ノ ヽ/⌒) /⌒) (゚) (゚) | .| / / ( _●_) ミ/ .( ヽ |∪| / \ ヽノ / / / | _つ / | /UJ\ \ | / ) ) ∪ ( \ \_)
あほらしいじゃなくてお前が真性のアホなんだよ。 謙遜?ちがうだろ。自分には出来ないからはっきり 出来ると言えなかったんだよ。 お前が自分は間抜けです、とはっきり言わなかったのは 正解だったかもしれないが。
839 :
814 :2005/06/22(水) 19:32:47
まぁやっぱりプログラムが思い通りに動かないときはヌルポッポーが 多いから関数の戻り値はこまめに確認するべきだね
見えない相手にそこまで喰らいつくお前の気が知れない
STLのmapコンテナを__gcクラスのprivateメンバ変数として使おうと思ったのですが、 マネージ'<不明>'のメンバとして'<不明>'を定義できませんと怒られました。 マネージ拡張クラスのメンバ変数にはSTLは宣言できないのでしょうか? ご教示お願いします。 環境はVC++.NET2003です。 ソースの方は今のところコンストラクタとデストラクタしかありません。 下はヘッダです。 //test.h #pragma once #include <map> #include <string> using namespace std; namespace maptest { public __gc class maptester { private: map<string, int> maptest; public: maptester(); ~maptester(); }; }
>>841 試してみたらポインタや参照は持てた。
namespace maptest
{
public __gc class maptester
{
public:
typedef std::map<std::string, int> MAP_S_I;
MAP_S_I& Map;
maptester() : Map(*new MAP_S_I)
{
}
~maptester()
{
delete ⤅
}
};
}
using maptest::maptester;
int _tmain()
{
maptester& hoge = *new maptester;
hoge.Map["ほげ"] = 65536;
std::cout << hoge.Map["ほげ"] << std::endl;
return 0;
}
843 :
841 :2005/06/22(水) 22:20:13
>>842 さん
レスありがとうございます。
この方法だとできました。
参照にポインタ渡したり、コンストラクタにMapのポインタ継承(?)
ってこんがらがってしまいました。
自分のレベルが足りなくて何をやってるのかが分からなかったので
基本的な事項を勉強し直して来ます・・・。
>>843 ポインタを*でdereferenceしたものは左辺値だから参照の初期化に使える。
845 :
841 :2005/06/22(水) 23:36:40
>>844 さん
内容がどこの部分に該当するのか分かりませんでした。ごめんなさい。
@maptester& hoge = *new maptester;
@maptesterオブジェクトの参照であるhogeに
maptesterオブジェクトのポインタを代入ってことで解釈しました。
Amaptester() : Map(*new MAP_S_I)
{
}
844さんはAの内容に対しての話だと判断して
コンストラクタに、参照の初期化したものを継承していると解釈しました。
あってますでしょうか?
846 :
844 :2005/06/22(水) 23:54:46
>>845 1も2も俺が言いたかったところ。
ところで2は継承ではない。メンバ変数の初期化。
847 :
841 :2005/06/23(木) 05:07:24
>>844 さん
コンストラクタ部分にコロンでメンバ変数を初期化できるなんて知りませんでした。
他の事にも試してみます。
ご教示ありがとうございました!
/* * Window field offsets for GetWindowLong() */ #define GWL_WNDPROC (-4) #define GWL_HINSTANCE (-6) #define GWL_HWNDPARENT (-8) #define GWL_STYLE (-16) #define GWL_EXSTYLE (-20) #define GWL_USERDATA (-21) #define GWL_ID (-12) データはこういう風に格納されてますか?
どこに?
850 :
848 :2005/06/23(木) 11:48:02
_T("MYCLASS")としたところ、 error C2065: '_T' : 定義されていない識別子です。 とでました。 解決法がわかりません。 何を定義すればよいのでしょうか。 よろしくお願いいたします。
853 :
デフォルトの名無しさん :2005/06/23(木) 20:03:38
アプリケーションを作ってて、そのアプリケーションのエラーメッセージとか 実行状態のメッセージを別の小さなダイアログに表示したいのですがどうすれ ばいいでしょうか?
モードレスダイアログボックス
855 :
デフォルトの名無しさん :2005/06/23(木) 22:47:10
Windowハンドルをラップしたクラスをつくってみました。 こんなかんじで class Win{ HWND handle_; public: BOOL Create(); void Show(); }; ここまで作ってふと思ったんですが、 HWNDを引数にとるAPIにはどうやって情報を渡そうかと クラスが保持しているハンドルを返すメンバ関数をつくると 内部実装をさらすようでカプセル化したした意味が無い気がします かと言って使用するAPI全てにラッパークラスを作るのもしんどい気がします
独り言なら
MFCでも見たら?
858 :
デフォルトの名無しさん :2005/06/23(木) 23:10:31 BE:28096122-
>>855 >API全てにラッパークラスを作るのもしんどい気がします
生のHWNDを扱いたくないなら、そうするしかないかと。
859 :
ゆみ :2005/06/23(木) 23:15:10
COMアドインを効率つくる情報をください・・・
>>855 MFCとかATLではある程度の関数には自前でラップしてして、
ついでにデフォルト引数とか、RECTかintの引数を4つかなどといったオーバーロードを提供しているが、
やっぱり網羅しきれるわけが無いのでHWNDを返すメンバ関数とoperator HWND()を用意している。
>>858 >>861 やっぱりそうですよね
よく考えたらハンドルという概念自体がリソースを程よくラップしているので
公開しちゃっててもいいんじゃないかという気になってきました
さすがにpublicメンバにするのは気がひけるので
operator HWND()
でも実装します
ありがとうございました
いいかもまいらvitaminCは肌にとてもいいんだ。初心者だからわからないかもしれないがとった方がいいぞ。ちゃんと食事のbalanceを考えて摂取するんだ。しっかりな。
864 :
デフォルトの名無しさん :2005/06/24(金) 03:02:44
パス名の最大長で、MAX_PATHと_MAX_PATHとどちらを使えばいいんですか? あと、TCHARと_TCHARとありますが、違いが良くわかりません。 これって同じものでしょうか?
オレもよおわからん。 ってか、ゲネリックテキスト意識してみんな作ってる?
generic text は意識してるよ。 Unicode 版を試しに作ってみたいとき便利だよ。 _TCHAR は TCHAR が標準化されるまでの名残じゃないかな、うん。
てことはTCHAR使っとけば間違いないかな??? LPCTSTRとかLPTSTRとかとはTCHARのほうが相性がいいとか。
defineしてあるから今のところはどっちでもいいんだけどな。 UNICODE が define されてるかどうかで SetWindowText が SetWIndowTextA と SetWindowTextW のどちらかへ define される。 最初からTCHARやLPCTSTRで書いてると2種類のソースを用意しなくていい。 ソースが1つだと変更し忘れが少なくなっていい。 SetWindowText(hwnd, _T("ほげ")); ↓ SetWindowTextW(hwnd, L"ほげ"); // UNICODEがdefineされている SetWindowTextA(hwnd, "ほげ"); // UNICODEがdefineされていない
>>855 operator HWND()
{
return handle_;
}
>>864 問題は、MAX_PATHそのものを使ってはいけないことだ。
ディレクトリを何段も掘ったから簡単に溢れるぞ。
>>870 うむ、MAX_PATHは古の悪習だな。
DOSの頃は、そもそもOSがMAX_PATHを越えると扱えなくなるから良かったが、
それをWindows95移行も踏襲するのは、糞だ。
処で質問だが、単体では動いているプログラムが数本同時に動くと時折りntdll.dllが落ちてしまうのだ。 ntdll.dllが落ちた後も、ログファイルの出力が止まらないところを見ると、プログラム自体はきちんと タイマーメッセージで動き続けているらしい。 原因としてはどの辺りが考えられるかな。
>>873 MAX_PATHによらず、充分な長さを確保する必要があるべさ。
\\?\hoge形式のファイル名を使わないとMAX_PATH文字の制限は 解除できないんでねーの? 従来形式を使う限りMAX_PATH文字でいいと思っていたが。
フルパスでMAX_PATH以上になるような長い名前のフォルダを2, 3階層作ったら エクスプローラから削除できなくなった記憶がある。
その辺を明快に解説した本とか無いだべさ?
結局、TCHARと_TCHAR迷ったらどちらを使えばよいでしょう。。。
Path系APIはMAX_PATH以上扱おうとすると失敗した記憶が
やたら深いフォルダにファイルを置くと
Win98のスキャンディスクが「長すぎてMS-DOSが認識できない」とか
警告を出してきた記憶があるなあ。
この制限はMAX_PATHより短い。
環境変数PATHの長さが128文字までだった時代の名残かな。
>>879 迷わずTCHAR使えって。
>>881 それ、ショートネームがMAX_PATHを超えるんだと思う。
DOSだとディレクトリ名は64bytesまでだったはず。
・MAX_PATHの定義 #define MAX_PATH260 ・アプリの引数の長さにも128バイトの制限があって、 ファイル名の長さに依るが約10〜20個以上のをドロップするとエラーが出ることが多かった。 MS-DOSの名残だが、Win9xでも出てた。 ・MS-DOSでは環境変数PATHの長さは128バイトまでに制限されている。 これは"PATH="と終端のNULLの長さも含めた長さなので実際には122バイトしか使えない。 PATHにパスを2つ指定できるようにディレクトリ名の長さは122の半分くらいじゃなかったかな。
ドライブレターとディレクトリとファイル名(8+3)足して80かな。 だとしたら、80-(8+3)-2-1で66くらいか。
そう、80。MS-DOS上の開発環境ではこんな定義だった。
#define MAX_PATH 80
http://www.google.co.jp/search?q=define-max_path-80 MS-DOSにWindowsをかぶせて隠そうとしてるのに、DOSの制限を引きずってるなあ。
Windowsでの上限
#define _MAX_PATH 260 /* max. length of full pathname */
#define _MAX_DRIVE 3 /* max. length of drive component */
#define _MAX_DIR 256 /* max. length of path component */
#define _MAX_FNAME 256 /* max. length of file name component */
#define _MAX_EXT 256 /* max. length of extension component */
>>881 > 迷わずTCHAR使えって。
ラジャ ノシ
常識の範囲
俺にとって常識の範囲とはMAX_PATHなんだが。
まあその4倍ぐらいとっときゃいいんでない? そんな深いとこまでは使いにくいから作んないでしょ。 で、常識の範囲。
オレはヒープ使って10kbくらいとっちゃったりする小心者です。 スタックよりは良いかと、そんな程度です。
893 :
デフォルトの名無しさん :2005/06/24(金) 21:06:16
既存のプログラムAを改造して新しいプログラムを作ろうとしているのですが その際にプログラムAでリンクをはっていたDLLをはずしてしまったのですが LINK : warning LNK4089: "ABCDE.dll" へのすべての参照は /OPT:REF によって廃棄されます と出ます。エラーではないのですが、気になるので解決する手を教えて いただけませんか?
無視する
895 :
デフォルトの名無しさん :2005/06/24(金) 21:37:18
>>893 LNK4089をヘルプで見ませう。それで解決します。
>>893 ABCDE.dllのインポートLibがリンカに渡されたけど使わなかったよ、というwaring。
つまりABCDE.dllをリンクしないように指定すれば、 ほんの少しだけリンク速度が早くなるってこと。 気にならなければ無視しても無問題。
898 :
デフォルトの名無しさん :2005/06/24(金) 23:37:40
ところで、皆さんは、自宅でプログラミング打ってますか?自分、 プログラミングを家でやりたいと思っているんですが、どんなコンパイラが いいか知りたいんですけど、ちなみに、c言語です。
>>898 Visual C++
尤もここがVisual C++のスレだからというのもあるが。
VC6.0の出来があまりに良すぎて、.NETに以降できない俺様が来ましたよっと。
.NETに以降したけど6.0が懐かしくて仕方がない俺が来ましたよ。
なんかいまだに.NETにバグあるんじゃね?と 疑いがぬぐえないオサーンが来ましたよ。
腰が痛い漏れが来ましたよ。
>902 実際いくつもある。2005に期待して待ってる。
905 :
デフォルトの名無しさん :2005/06/25(土) 14:12:55
>895 >896 >897 それが、ヘルプを見て大体意味は見当がついて、リンクは切った はずなのですが。プロジェクト>設定>リンクのところでライブラリの リンクを消すだけじゃだめですか?ビルドでは警告は出ないのですが、 リビルドすると警告が出てしまいます。
CマガにVC++が収録されていると聞いて喜び勇んで買って、2005βだと後で気づいた俺が来ましたよ
907 :
デフォルトの名無しさん :2005/06/25(土) 15:21:43
Windows2000でVisualStudio6.0SP6を使っているのですがVC++で ComboBox に項目が追加できません。 方法1)プロパティ開いてデータの入力 方法2)InsertStringで項目を追加 このどちらも、項目を追加できないです。 ちなみに、WindowsXPSP2でVisualStudio6.0SP6で同じことをやってみたら ちゃんと項目の追加できてました。 あと、Windows2000でVS6.0にSP6当ててないPCで試したところちゃんと動きました。 ということは、SP6のバグなのか。詳しい方いますか?よろしくです。
>>905 リリースブィルドとデヴァッグブィルドとゴチャにしてない?
どこで質問すれば良いのか分からないので、取りあえずここで。 アセンブラからCの関数”Hello”を呼び出したいのですが、エラーが沢山。 以下、アセンブラと関数Helloのソースを張ります。 #include <stdio.h> int Hello(void) { printf("HelloGikos"); return 0; } //Cのソースはここまで。
;アセンブラのソース1/2 [ORG 0] Bits 16 jmp 07C0h:RealMode_to_Protected; RealMode_to_Protected: proc near push bp mov bp,sp cli mov eax,cr0 or eax,1 mov cr0,eax Bits 32 jmp Protecting
Protecting: db 0eah dw offset Set_CS dw 08h jmp Hello Set_CS: mov ax,10h mov ds,ax mov es,ax mov ax,18h mov ss,ax pop bp ret ;ここまで。 ズレは仕様です。気にしないで下されば幸いです。
912 :
デフォルトの名無しさん :2005/06/25(土) 15:46:56
913 :
907 :2005/06/25(土) 15:56:46
自己解決しますた; コントロールのサイズを変更していなかったです。 OS等の種類によってサイズ変更していなくても自動的に調整してくれる模様。
>>909 スレ違い。
アセンブラすれを探すべし。
…しかし、関数呼び出しは call じゃなかったっけか?
いやまぁ、詳しく知らんのだけど。
>>909 VCなら
__asm call Hello
そもそもWin上でcr0なんてさわれるわけ無いだろ。
C言語+Windows APIを使っているのですが、 最大化やウィンドウのリサイズを禁止するにはどうすればいいんでしょうか? 最小化はそのまま使えるようにしたいのですが…
スレ違いでしたか。すいません。そっちで聞いてきます。
猫で勉強してたら長い旅に思えてきた C言語ぐらいがちょうどよかったな。。。
>>920 C++は破綻してるよ。例えば、
class MyBase {...};
class YourBase : public MyBase { ... bool IsYourBaseBelongToUs(); };
vector< MyBase > vec;
vec.push_back( dynamic_cast<MyBase>( YourBase(...) ) );
オブジェクト指向言語で、これでスライシングが起きてアウトはダメでしょ。
C言語的な感性で言ったら当然アウトなんだけど。
スライシング回避のためにインスタンスへのポインタを保持するっていうのは小手先のハックでさ、
プリミティブな設計がハックだと、ハックを使わざるを得なくなるっていうしわ寄せの例。
920の書き込みから何で921のレスになるのかサッパリ分からんのだが…
どう見てもイカレてるヤツだからそっとしておいてやってくれ
>>921 そこ、dynamic_castの使いドコじゃないよ。
>>920 猫のC++は特に良くないからほか行け。
おいおい、自分がろくなC++書けないからって僻むなよ
ハックとか言っちゃって恥ずかしいな
>>921 は語りたくてしょうがなかったんだろう。
でも次からはチラシの裏な。
そりゃ、基底クラスで配列とるからだろ。 500mmlのビーカー買って来たのに、1L水を入れようとして「入らない!」って怒ってるようなもんじゃん。
>>921 言語は道具。
正しく使わずにクレームをつけるのはクレーマー。
500mml
mmlっつーとテキストで演奏データを記述するアレか
932 :
デフォルトの名無しさん :2005/06/26(日) 22:36:45
Visual C++ 6.0でペイントツール作ってみたいんですが、まずなにすればいいんでしょうか?
>>932 ペイントツールを実装するには何が必要かを考える。
934 :
ゆぅ :2005/06/26(日) 22:48:50
コンパイルが通らないんですが原因がまったくわかりません。 どなたか優しい方教えてください(T。T) (hoge.c) #include"hogehoge.h" intmain() { aaapoi; return 0; } (hogehoge.h) class aaa { public: intx; aaa() { x = 0; } }; (コンパイルエラー) hogehoge.h(1):error C2061: 構文エラー : 識別子'aaa'がシンタックスエラーを起こしました hogehoge.h(1):error C2059: 構文エラー : ';' hogehoge.h(2):error C2449: '{'を見つけました(関数のヘッダーがないかもしれません)。 hogehoge.h(9):error C2061: 構文エラー : '}'
935 :
ゆぅ :2005/06/26(日) 23:03:59
tabが消えてた(T。T) (hoge.c) #include "hogehoge.h" int main() { aaa poi; return 0; } (hogehoge.h) class aaa { public: int x; aaa() { x = 0; } };
>>935 と全角スペースしか使えない。
937 :
ゆぅ :2005/06/26(日) 23:08:38
938 :
936 :2005/06/26(日) 23:11:38
classを使うなら、拡張子はcppにしとけ。
一応言っておくが、.hはそのままで、.c を .cppにする、ということだからな。
941 :
ゆぅ :2005/06/26(日) 23:13:05
942 :
ゆぅ :2005/06/26(日) 23:19:03
>>939 ,940
おーほんとだ。拡張子がcになってた
cppにしたらコンパイルとおったよ〜〜〜
ありがとんかつ
943 :
デフォルトの名無しさん :2005/06/26(日) 23:29:55
Visual Studio .NET 2003 on windowsXPを買いました。 それまで独習でUNIXでCを書いてccでコンパイル、./a.outで実行してたのですが このソフトは、printf("hello world");を表示するような簡単なものはいったいどうやって 作成、コンパイル、実行すればいいのでしょうか? プロジェクトとかそんな大がかりじゃないんですけど^^;; 教えて下さい。
944 :
デフォルトの名無しさん :2005/06/26(日) 23:34:08
調べたんですが、ペイント作るにはCDCとかいうのを使えばいいかもということくらいしかわかりません。 ペイントのサンプルプログラムとかないですか?
945 :
デフォルトの名無しさん :2005/06/26(日) 23:35:12
>>943 IDEを使うならプロジェクトを作らないと始まらない。Win32コンソールプロジェクトを作れ。
今までと同じようにやりたいのならスタートメニューからMicrosoft Visual Studio .NET 2003→Visual Studio .NET ツール
の中にあるVisual Studio .NET 2003 コマンド プロンプトを使え。clでコンパイル。出来上がったプログラムがa.exeならaと打てば実行しだす。
946 :
943 :2005/06/26(日) 23:55:27
せっかくなんでIDEでやりたいんですけど C++じゃなくてCはどうするんですか?
>>946 プロジェクトを作ってから(略)して新しい項目の追加のダイアログボックスを開く。
その中からC++ファイルを選んでファイル名のところにa.cというように拡張子もつけてファイル名を入力すればよい。
>>943 からどうやってIDEでやりたいって読み取るんだ?
馬鹿かお前は。
949 :
デフォルトの名無しさん :2005/06/27(月) 00:26:59
山のようにあるAPIをほとんど憶えられる気がしないのですが、 みなさんどうされているのですか?
つーかファイル食わせろよ。
>>949 必要な時に調べる。
一度使ったら、そのプロジェクトは残しておいて、再び使う時は引っ張り出してくる。
>>949 容量の差こそあれ人間の記憶容量は有限。
どうやって覚えるかというより、自分にとって覚えるべき最低限のことを
覚え、覚える必要のないことは積極的に覚えない。
情報そのものより情報を探す手段を覚えた方がいい
954 :
943 :2005/06/27(月) 01:22:41
だいたいやりたいことからAPI名を脳内で想像し、 検索にかけるとだいたいヒットする。 頻繁に使うAPIは自然と覚える。 引数は検索して見ればすぐわかる。
Visual C++ 2005 Expressをダウンロードしたのですが、これの 説明書って製品版じゃないとついていないのでしょうか? ボタンが多すぎて使い方が意味不明ですorz
DLLを作ろうとしてますが、 DLLと同時にLibも作られるとのことですが、 なぜかDLLだけしか作られません。 何がだめなのでしょうか? よろしくお願いします。
>> 956 所詮はβですから。
VC.netってプロファイラついてないんですか?
CMyWndというウィンドウクラスを作りました。 単にAPIをクラスでラップしてるだけです。 ただ、 CMyWnd obj; でウィンドウを生成すると、ウィンドウの中のコントロールなどが表示されるのですが、 CMyWnd* pObj; でオブジェクトをnewしたあとウィンドウを作成すると、ウィンドウの中のコントロールなどが表示されなくなるのです。 これはどういう不具合なのでしょうか?
961 :
デフォルトの名無しさん :2005/06/27(月) 21:15:04
>>961 は社会不適合児だから相手にしちゃいけませんよ
オリジナルコードの中身までは答えられんなぁ…。 どっかにソースUPしたら?
>960 最後に pObj->UpdateWindow() すればどうよ?
あぁなんだ、MFCのCWndからの派生じゃないのか。 フツーのWinApiラッパーを独自で作ったんなら、 コンストラクターを調べれ。
968 :
960 :2005/06/29(水) 19:12:16
newでオブジェクトを生成すると、メモリの初期化(0)はしてくれないことを知りませんでした。 宣言子によるオブジェクト生成(CMyClass obj;)の場合、メモリ内容は全て0に初期化されるようです。 その違いによるシステムの不具合でした。 コンストラクタで事前にメンバは初期化しておくことで解決です。 ご返答ありがとうございました。
>>968 コンストラクタで変数を初期化するクセを付けておいて損はない。
>宣言子によるオブジェクト生成(CMyClass obj;)の場合、 >メモリ内容は全て0に初期化されるようです。 グローバルなのか……
>>968 は?クラスのメモリ内容0に初期化されてどうすんだよ・・・
あと、初期化されるかされないかに関わらず、明示的に初期化するもんだ
>>971 だからそう反省してるみたいだし、追い討ちかけてどーすんだ。
973 :
デフォルトの名無しさん :2005/06/30(木) 16:26:34
char a[5]; char b[1]; a[0]=4,a[1]=8,a[2]=4,a[3]=0,a[4]=9; aの配列に入っているデータ5つを、並びを変えずにbの配列ひとつに入れるには どうしたらいいのでしょうか? b[0]=48409にしたい
>>973 黙って移動するとマルチと思われて回答してもらえない恐れが多々ある。
一言断りを入れてきたまえ。
それと、向こうのレスは吟味したのかね。
・char b[1]とあるが、通常それには48409なんて値は入れられない。
・配列aに入っているのは本当に数値か? 数字文字ということはないのか?
せめてこのぐらいは聞き分けたまえ。
数字文字?
'1'とかそんなのだろ多分
978 :
デフォルトの名無しさん :2005/06/30(木) 18:08:35
ワードみたいにワークスペースの背景を黒くはできないんですか?
ワードみたいかどうかは知りませんができます。
980 :
デフォルトの名無しさん :2005/06/30(木) 18:53:17
>>978 Windowsの配色の問題。
Windowsの配色の設定を変えると、各アプリに反映される。
もしかして.net 2003だと、cout とかcin とか使えませんか? iostream.hインクルードしててもコンパイラに怒られます。 ヘルプ見たら<iostream.h>じゃなく<iostream>とするように載ってましたが、そうしても動かず…。 HelloWorldで躓くとは情けないorz
982 :
デフォルトの名無しさん :2005/06/30(木) 21:04:25
キーボードから5つの数字を入力して入力とは逆に表示するプログラム教えてください。 FOR〜NEXT使ってお願いします! BASICで使えるプログラム教えてくださいm(__)m
std::
984 :
デフォルトの名無しさん :2005/06/30(木) 21:57:30
初心者ですがVC++.NETでの質問です。。。 コンパイルしたときのエラーでつまずいてしまいました。 みなさんは下記のエラーが出たとき、どのように対処されていますか? 2番目、3番目はいろいろキャストしてみたのですが。。。 1番目は対処の手段がわかりません。。。 lib関連なのでしょうか。。。 error LNK2001: 外部シンボル ""void * __cdecl memset(void *,int,unsigned int)" (?memset@@$$J0YAPAXPAXHI@Z)" は未解決です。 error C2440: '=' : 'char *' から 'char [132]' に変換できません。 配列型への変換はありませんが、参照またはポインタから配列への変換があります。 error C2440: '=' : 'unsigned char __gc[]' から 'BYTE [13]' に変換できません。 __gc 配列と Object * または Array * 間でのみ変換できます。
985 :
デフォルトの名無しさん :2005/06/30(木) 22:27:46
こんばんは、よろしくお願いします。 なにもわからないまま、C++のコンパイラーだと思い、VC++.netを買い 参考書として、Win32API完璧マスタを買いましたが、 どうも、この本は、VC++6.0のようなのです。 リソースファイルの作り方が違うようで、少しも前に進みません。 VC++.net と VC++6.0は作り方がかなり違うのでしょうか。
HELPで充分作れるよ
そんな違いで躓いてるようじゃ先にすすんでも躓いてばっかだ てか、いきなりAPI完璧マスタとか買わずにVCの本買えよ
>>984 該当行を晒せ。
最初のはプロジェクトの設定を見直せ。
989 :
デフォルトの名無しさん :2005/06/30(木) 22:49:31
>>986-987 さんありがとうございます。
本を選ぶのが下手なのでしょうか。この本にたどり着くまでに、
ほかにも変なのを沢山買いました。
この種の本は、とても高いです。
聞きたかったのは、アップリケーションから
ダイアログを作るのではなくモジュールをかいて、作ることが、
VC++.netではできないのかなということなんです。
多分できないのでしょうね。
本買うのを検討してみようかと思います。
ヘルプは、何度も見ましたが、やはり、1からでは、
難しいです。
では、ありがとうございました。
Cornuの螺旋をVisual C#で作りたいんですけど、Visual C#できるひといますか?よろしくおねがいします。ちなみに下のプログラムはVisual C++のものです。 int n, px, py, oldx = 0, oldy = 0;double x, PI = 3.14159265358979; double f_sin(double a){ return Math.Sin((PI / 2) * a * a); } double f_cos(double a){ return Math.Cos((PI / 2) * a * a); } double simpson(double a, double b, double (*f)(double), int n){ double h = (b - a) / n;double p = a;double res = f(a) + f(b); for (int k = 1; k < n; k++){p += h; res += ((k % 2) ? 4 * f(p) : 2 * f(p));} res *= (h / 3); return res;} int Width = 1024;int Height = 768; void DrawCornuSpl(HDC hdc, double max, int mul, int n, double e){ HPEN hPen;HPEN HBlackPen;HPEN HBluePen;HBluePen = CreatePen(PS_SOLID, 1, RGB(0, 0, 255)); hPen= (HPEN)SelectObject(hdc, HBluePen);int ox = 0, oy = 0, x = 0, y = 0; double dx = 0.0, dy = 0.0; for (double w = 0; w <= max; w += e){dx += simpson(w, w + e, f_cos, n);dy += simpson(w, w + e, f_sin, n);x = (int)(dx * mul);y = (int)(dy * mul); if ((x != ox) || (y != oy)){MoveToEx(hdc, ox, oy, NULL);LineTo(hdc, x, y);MoveToEx(hdc, -ox, -oy, NULL);LineTo(hdc, -x, -y);ox = x;oy = y;}} HBlackPen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); hPen= (HPEN)SelectObject(hdc, HBlackPen); MoveToEx(hdc, - Width, 0, NULL);LineTo(hdc, Width, 0); MoveToEx(hdc, 0, - Height, NULL);LineTo(hdc, 0, Height); MoveToEx(hdc, - 1 * mul / 2, 0, NULL);LineTo(hdc, - 1 * mul / 2, - mul / 2); LineTo(hdc, 0, - 1 * mul / 2);MoveToEx(hdc, 1 * mul / 2, 0, NULL); LineTo(hdc, 1 * mul / 2, 1 * mul / 2);LineTo(hdc, 0, 1 * mul / 2);}
すいません 質問ですが、構文エラー : ')' が 'constant' の前に必要です。というエラーが出ますが、 このようなエラーが出る主な原因は何なのでしょうか? よろしくお願いします。
993 :
991 :2005/07/01(金) 10:24:55
この部分が問題だと矢印がでます void Create(char* pClassName,int x,int y,int h,int v,HWND hParentWnd);
ヘッダ
なぜその行末に;があるのだ
996 :
デフォルトの名無しさん :2005/07/01(金) 19:54:34
Visual C++ .NET にて template <typename T> void func(T a); int main() { func<int>(2); return(0); } として、関数funcを別ファイルに定義すると、 ↓リンクエラーが起きてしまいます。 error LNK2019: 未解決の外部シンボル "void __cdecl func<int>(int)" (??$func@H@@YAXH@Z) が関数 _main で参照されました。 同ファイルに定義すると、普通にコンパイルできます。 どうしてでしょうか?
>>996 テンプレート関数はコンパイル時に実体化されないといけない。
したがって、別ファイルではダメ。
998 :
デフォルトの名無しさん :2005/07/01(金) 20:20:35
>>997 早速ありがとうございます。
なるほど、別ファイルではダメなのですか。
では、テンプレートクラスを使用する場合、
ヘッダファイルに関数定義もする形で
使っていけば良いのでしょうか?
999 :
ホームページ プロダクション :2005/07/01(金) 20:48:00
1000 :
デフォルトの名無しさん :2005/07/01(金) 20:53:55
1000ですぅ〜〜
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。