■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part19
751 名前:デフォルトの名無しさん :2005/06/21(火) 07:12:14
newで動的に確保した変数は、deleteし忘れるとメモリリークしますか?
それとも、プログラム終了時に消えてくれますか?

752 名前:デフォルトの名無しさん :2005/06/21(火) 07:35:40
両方ともYes

753 名前:デフォルトの名無しさん :2005/06/21(火) 07:40:27
システムグローバルなリソースを握ってるならNO.

754 名前:デフォルトの名無しさん :2005/06/21(火) 08:10:51
>>751
auto_ptrとか使うと幸せになれるぞ。

755 名前:デフォルトの名無しさん :2005/06/21(火) 08:51:56
>>745
1つのソースで MBCS(Shift_JIS)版とUnicode版の両方に対応するなら、
#include <stdio.h>
#include <tchar.h>
TCHAR sz[4];
_stprintf(sz, _T("%s"), 123);
AfxMessageBox(sz);

756 名前:デフォルトの名無しさん :2005/06/21(火) 10:53:08
>>755
おいおい

757 名前:デフォルトの名無しさん :2005/06/21(火) 11:04:25
%sワラタ

758 名前:デフォルトの名無しさん :2005/06/21(火) 11:06:40
しかもsz[4]か。おhる。

759 名前:デフォルトの名無しさん :2005/06/21(火) 11:59:55
[課題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);
}

これ誰か完成させてくれ

760 名前:デフォルトの名無しさん :2005/06/21(火) 12:23:50
>>759
低レベルなソース向けに、低レベルな回答。
printf( "底辺は?\n" ); /* 入力を促すメッセージを表示 */
scanf("%lf", & teihen);
printf( "高さは?\n" ); /* 入力を促すメッセージを表示 */
scanf("%lf", & takasa);

761 名前:デフォルトの名無しさん :2005/06/21(火) 12:32:24
>>744
レスありがとうございます。
わかりにくい質問で申し訳ございません。
私が伺いたかったのは、プロパティページの
C/C++--->コード生成--->ランタイムライブラリ
で指定するパラメータを、リンクするほうもされるほうも、
同一にしなければならないのか?ってことなんです。
例えば、exeに"/MD"を指定して自分で作ったライブラリに
"/ML"と指定すると、リンクできたりできなかったり(リンクエラーが出る)
するのですが、リンクできたときはたまたまなのか、
それとも何か問題があるのかとか、そういうところです。

762 名前:デフォルトの名無しさん :2005/06/21(火) 12:36:46
同じでないとダメだと思われ。

763 名前:デフォルトの名無しさん :2005/06/21(火) 12:51:54
シングルスレッド用のをマルチスレッドで動かすとデータに矛盾を生じることがある。

764 名前:デフォルトの名無しさん :2005/06/21(火) 15:55:20
a.libには関数a1(),a2()
b.libには関数b1(),b2()
があります。
a1()からはb1()を呼び出すことがあります。
b2()からはa2()を呼び出すことがあります。
事情があって、関数の場所を取り替えることができません。
この場合、お互いに呼び出しているので、
ビルド時にお互いのlibファイルが生成されていないので、
リンクエラーが出てしまいビルドできません。
このリンクエラーを回避する方法は無いものでしょうか。
使用しているコンパイラは.NET2002(SP1)です。


765 名前:デフォルトの名無しさん :2005/06/21(火) 16:18:35
>>764
b2()を含まないb.libを作って、それを使ってa.libを作ったらどうだろう。
そのa.libを使って作ったb.libでa.libを作り直さないといけないけど。

766 名前:デフォルトの名無しさん :2005/06/21(火) 16:35:45
>>754
ググって調べてみました。
STLってすばらしいですね・・・

767 名前:デフォルトの名無しさん :2005/06/21(火) 16:52:13
boost スマートポインタ でググるともっと幸せになれるかも…

768 名前:デフォルトの名無しさん :2005/06/21(火) 17:00:14
>>766
いや、それはあまりすばらしくないと思うぞw

769 名前:デフォルトの名無しさん :2005/06/21(火) 18:19:26
C言語、perl、java、C++、のこの全部の違いを教えて下さい。

770 名前:デフォルトの名無しさん :2005/06/21(火) 18:22:52
あんまり無茶な要求すんなよな

771 名前:デフォルトの名無しさん :2005/06/21(火) 18:44:36
C++は新しく作ったC言語
javaは新しく作ったC++
perlは真珠

772 名前:デフォルトの名無しさん :2005/06/21(火) 18:45:46
JavaはC++から作ったにしてはだいぶ劣化してるけどなw

773 名前:デフォルトの名無しさん :2005/06/21(火) 18:48:08
だがそれがいい

774 名前:デフォルトの名無しさん :2005/06/21(火) 19:23:15
>>771
perlにワロタ

775 名前:デフォルトの名無しさん :2005/06/21(火) 19:30:18
CMyClass *m_pA;

m_pA = new CMyClass;
では、何が違うんでしょうか?詳しく教えてください。


776 名前:デフォルトの名無しさん :2005/06/21(火) 19:41:44
>>775
ポインタを勉強しろ。
話はそれからだ。

777 名前:デフォルトの名無しさん :2005/06/21(火) 20:06:23
>>776
話はそれからだ。って言いたいだけなんでしょう?
違い解らないんだ?

778 名前:デフォルトの名無しさん :2005/06/21(火) 20:26:20
CMyClass *m_pA;はこれからポインタを使うからよろしくな!って宣言しただけ。
m_pA = new CMyClass;はやったぜ、父さん!ポインタの実体を確保したぜ!という意味

779 名前:デフォルトの名無しさん :2005/06/21(火) 20:30:40
数値計算のプログラムを作っています(一応仕事)
ファイルは
main.c(本体)
file.h(ファイル入出力)
calc.h(計算する)
の構成で、main.cに#include "file.h"、#include "calc.h"としています。

一方
main.c(本体)
file.c(ファイル入出力)
calc.c(計算する)
という構成にもできるらしいのですが、やり方はわかりません。(とりあえずそれでも困らない)
ただ、そのようにすると何かよいことはあるのでしょうか?(計算が速くなるとか)

780 名前:デフォルトの名無しさん :2005/06/21(火) 20:42:15
どう考えても仕事には思えんが・・研修?

>>779程度の規模なら困らない

多人数で開発したり規模が大きいプログラムを組めばわかってくる

分割コンパイルとかでググるとわかるよ

ちなみに計算が早くなったりはしない

781 名前:775 :2005/06/21(火) 20:43:37
>>778
ありがとうございます。
じゃあ、前者は実際に、m_pA.func()などとすることで、後者と等価になるってことですか?

ちなみに>>777は私ではありませんよ。


782 名前:デフォルトの名無しさん :2005/06/21(火) 20:48:21
>>781
根本的に勘違いしてる悪寒

783 名前:デフォルトの名無しさん :2005/06/21(火) 20:50:23
>>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
>>782-783
すみません、詳しくお願いします。


787 名前:デフォルトの名無しさん :2005/06/21(火) 21:35:41
>>786
詳しく知りたいんなら本とか買えよ。
文字だけより絵とかがあった方がわかりやすいと思うよ?

788 名前:デフォルトの名無しさん :2005/06/21(火) 21:53:10
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使えばそれでいいじゃん、
ということ。


789 名前:デフォルトの名無しさん :2005/06/21(火) 21:56:51
それがm_pA=new CMyClassの代入の意味。
二回に分けると見にくいんじゃ、ゴルア!という場合は
一行で>>783のように書いても良い。
これは好きな方を採用すれば良い。

790 名前:デフォルトの名無しさん :2005/06/21(火) 22:00:14
勝手に補足。
new CMyClassの場合はmallocと違って
コンストラクタCMyClass::CMyClass()が呼ばれるはず。

791 名前:デフォルトの名無しさん :2005/06/21(火) 22:01:26
>>788
実際にはそこへコンストラクタの呼び出しが加わる。

792 名前:デフォルトの名無しさん :2005/06/21(火) 22:38:07
このスレに来る前に、最低限の勉強は必須としてもいいんじゃないか?


793 名前:デフォルトの名無しさん :2005/06/21(火) 23:42:07
日本語とか日本語とか

794 名前:デフォルトの名無しさん :2005/06/21(火) 23:45:27
礼儀とか

795 名前:デフォルトの名無しさん :2005/06/22(水) 02:54:59
日本史とか

796 名前:デフォルトの名無しさん :2005/06/22(水) 03:29:36
VCの初心者にVCを教えるのはまだいいが、
プログラムの初心者に教えてと言われてもな・・・

生まれたばかりの赤子に数学教えてって言われても無理な話

797 名前:デフォルトの名無しさん :2005/06/22(水) 07:17:49
>>796
確かに…ここはVC初心者にVCの使い方を
教えるスレであってC/C++を教えるスレじゃないからな。

このスレを天プレに入れといてもいいんじゃね?
【初心者歓迎】C/C++室 vol.18
http://pc8.2ch.net/test/read.cgi/tech/1117984322/

798 名前:デフォルトの名無しさん :2005/06/22(水) 08:14:02
お助け下さい。
VC++.netスタンダードバージョン2003をインストールすると
途中で勝手に再起動してしまいます。
OSはXPのSP1です。
どうしたらよいでしょうか。

799 名前:デフォルトの名無しさん :2005/06/22(水) 08:49:56
>>798
情報少な杉。
もっと詳しく。

800 名前:798 :2005/06/22(水) 09:51:51
すいません798です。
.NET Framework SDKのチェックを外したら一応インストールが完了しました。
徹夜までして何だったんだろう・・・
バージョンはアカデミックです。
C++の勉強用に買ったので当面はこれで行きたいと思います。
スレ汚し済みませんでした。
799さんありがとうございました。

801 名前:デフォルトの名無しさん :2005/06/22(水) 10:59:21
>>798と関係ないかも知れないけど、
Visual Studio .NETのIDEの機能のうちで、
.NET Frameworkが入ってないと使えない機能があるね。
プロパティウィンドウでメッセージハンドラを追加・削除するやつとか。

802 名前:デフォルトの名無しさん :2005/06/22(水) 15:38:21
CStatic::SetBitmapでビットマップをコントロールに表示するとき、
座標を指定することってできますか?

803 名前:デフォルトの名無しさん :2005/06/22(水) 16:03:35
.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) で終了しました。
で終わっています。
どうすれば、いいのでしょうか。教えてください。

805 名前:デフォルトの名無しさん :2005/06/22(水) 16:14:30
>>804
どうしもしなくていいです

806 名前:デフォルトの名無しさん :2005/06/22(水) 16:19:42
すいません、VCで簡単なプログラムを作れるとアピールしてるのですが
未経験だとバイトすら採用されません。まだ20代前半です。どうしたらいいでしょうか?

807 名前:デフォルトの名無しさん :2005/06/22(水) 16:23:36
>>806
いつまでだか知らないが、2chなんか見てないで、少しでも勉強することを薦める。

808 名前:デフォルトの名無しさん :2005/06/22(水) 16:24:06
>>804です
>>805さんありがとうございます。
では、どうして、windowが、表示されないのでしょうか

809 名前:デフォルトの名無しさん :2005/06/22(水) 16:29:21
>>806
簡単なプログラムというのがどの程度なのかあいまい過ぎる。最低でも
フリーソフトでも作って公開して雑誌にちょくちょく載るくらいに
なったら名刺代わりにはなるだろう。
>>804
その本のコードを書きなさい。ISDNコードじゃないぞ。

810 名前:デフォルトの名無しさん :2005/06/22(水) 16:44:50
>>806
・売り込みが甘すぎ
・意気込みが伝わってない

こんなとこだろ

811 名前:デフォルトの名無しさん :2005/06/22(水) 16:45:10
>>809
それを言うならあいえすびぃ(ry

812 名前:デフォルトの名無しさん :2005/06/22(水) 16:54:32
>>806
なんか作って持ってたら?

813 名前:デフォルトの名無しさん :2005/06/22(水) 16:54:56
訂正
なんか作って持っていったら?

814 名前:デフォルトの名無しさん :2005/06/22(水) 16:56:57
フリーウェアで公開してるのって趣味で何ヶ月もかけて
作ってるのとか多いだろうし、ものによってはレベルが全然違うし。
時間さえあればネットワーク系以外ならそこら辺に落ちてるものぐらい余裕で作れますから。
まぁ「最低でもフリーソフト」なんて間抜けなこといってるカスに言っても時間の無駄だろうけど

815 名前:デフォルトの名無しさん :2005/06/22(水) 17:14:50
プログラムの設計の仕方から判らないから「猫でも」見ても駄目だ _| ̄|○

816 名前:デフォルトの名無しさん :2005/06/22(水) 17:28:34
そうだな。余裕で作れますと言っているのに
バイトにすら採用されないレベルの間抜けであることを
自覚出来ないカスだからな。>>814は。

817 名前:デフォルトの名無しさん :2005/06/22(水) 17:32:44
まぁちょっと謙遜して言いすぎたからな。俺を見る目がまるで無かったんだろう

818 名前:デフォルトの名無しさん :2005/06/22(水) 17:37:42
814にはアイコン職人が向いている




819 名前:デフォルトの名無しさん :2005/06/22(水) 17:47:33
趣味で作っている人は本業のほかにやっているわけだから
数ヶ月かかっても当たり前なのに分からない馬鹿もいるんだねぇ。


820 名前:デフォルトの名無しさん :2005/06/22(水) 18:07:11
>>814サン
じゃあzipのパスワード解析出来るのでも作ってよ。出来ればrarにも対応して欲しいです。
GUIはいらないです。アルゴリズムはそこら辺に落ちてるし、フリーソフトにも
沢山あるから簡単でしょ。でも落ちているdllは使わないで独自に実装お願いしますm(_ _)m
だめなら軽いタブブラウザ作ってちょ。IEのエンジン利用していいですよ。
それならネットワークの知識は特に要らないから簡単でしょ。

ぜひお願いします。m(_ _)m

821 名前:デフォルトの名無しさん :2005/06/22(水) 18:08:29
そんなにレス返して欲しいのか?www数ヶ月なんて序の口で
数年単位で作ってるやつもあるってことも言いたいのがわからんかったようだこの低脳はwwwwww

822 名前:デフォルトの名無しさん :2005/06/22(水) 18:12:00
アルゴリズムをまんまパクるならzip解析は1日でタブブラウザなんて1時間でできるwwww
だがお前のためにそんな無駄なことをする義理も時間もないwwwwwカスの集まりが
そんなものも頼まなきゃ作れんのか。スレタイに初心者って書いてるからあまり悪く言いたくはないがな

823 名前:デフォルトの名無しさん :2005/06/22(水) 18:21:20
>>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;


825 名前:デフォルトの名無しさん :2005/06/22(水) 18:57:02
もう謙遜するのやめた。次に面接するときはハッキリと
使いこなせる作れると言ってしまおう。やっぱりどいつもこいつもハッキリ言ってやらんとわからんみたいだしな

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;
}

828 名前:デフォルトの名無しさん :2005/06/22(水) 19:04:24
これこそ>>629-631の実例。

829 名前:814 :2005/06/22(水) 19:08:53
CreateWindow("sh04"←これを"wh04"にするかwc.lpszClassNameにしてみよう

830 名前:デフォルトの名無しさん :2005/06/22(水) 19:10:04
>>825
言うだけなら簡単だな。化けの皮がはがれないようにお前の
その脳の入っていない頭でよく考えな。



831 名前:デフォルトの名無しさん :2005/06/22(水) 19:11:40
>>822
じゃあ一時間で作って見せてよ。
へ理屈はいいからさ。


832 名前:デフォルトの名無しさん :2005/06/22(水) 19:12:39
やだよめんどくさい。お前等に実力を証明したところで不毛極まりないからな

833 名前:デフォルトの名無しさん :2005/06/22(水) 19:16:33
>>829さん
本当にありがとうございます。できました。
>>828さんすみません気をつけるようにがんばります。

834 名前:デフォルトの名無しさん :2005/06/22(水) 19:18:19
アルゴリズムをパクらないと出来ないレベルであることを
自ら告白したな。w
>めんどくさい。
要するに実力を証明することが出来ないわけだ。馬鹿丸出し~~
お前は所詮はその程度だ。もういいら消えろ

835 名前:デフォルトの名無しさん :2005/06/22(水) 19:19:29
VCに関係ないことは別のスレでやれ

836 名前:デフォルトの名無しさん :2005/06/22(水) 19:22:31
なんつーかもう馬鹿丸出しでいいよwwwほんとアホらしくなる

837 名前:デフォルトの名無しさん :2005/06/22(水) 19:25:52
 おチンチンびろーん
   ∩___∩     
   | ノ      ヽ/⌒) 
  /⌒) (゚)   (゚) | .|  
 / /   ( _●_)  ミ/
.(  ヽ  |∪|  /
 \    ヽノ /   
  /      /  
 |   _つ  /    
 |  /UJ\ \       
 | /     )  )       
 ∪     (  \    
        \_)

838 名前:デフォルトの名無しさん :2005/06/22(水) 19:26:30
あほらしいじゃなくてお前が真性のアホなんだよ。
謙遜?ちがうだろ。自分には出来ないからはっきり
出来ると言えなかったんだよ。
お前が自分は間抜けです、とはっきり言わなかったのは
正解だったかもしれないが。

839 名前:814 :2005/06/22(水) 19:32:47
まぁやっぱりプログラムが思い通りに動かないときはヌルポッポーが
多いから関数の戻り値はこまめに確認するべきだね

840 名前:デフォルトの名無しさん :2005/06/22(水) 20:02:34
見えない相手にそこまで喰らいつくお前の気が知れない

841 名前:デフォルトの名無しさん :2005/06/22(水) 20:22:38
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();
};
}


842 名前:デフォルトの名無しさん :2005/06/22(水) 21:26:33
>>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 &Map;
        }
    };
}
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のポインタ継承(?)
ってこんがらがってしまいました。
自分のレベルが足りなくて何をやってるのかが分からなかったので
基本的な事項を勉強し直して来ます・・・。

844 名前:デフォルトの名無しさん :2005/06/22(水) 22:24:30
>>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さん
コンストラクタ部分にコロンでメンバ変数を初期化できるなんて知りませんでした。
他の事にも試してみます。
ご教示ありがとうございました!

848 名前:デフォルトの名無しさん :2005/06/23(木) 10:04:47
/*
* 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)

データはこういう風に格納されてますか?

849 名前:デフォルトの名無しさん :2005/06/23(木) 11:44:27
どこに?

850 名前:848 :2005/06/23(木) 11:48:02
ごめん、>>848はスルーしてください

851 名前:デフォルトの名無しさん :2005/06/23(木) 11:59:37
_T("MYCLASS")としたところ、

error C2065: '_T' : 定義されていない識別子です。

とでました。
解決法がわかりません。
何を定義すればよいのでしょうか。

よろしくお願いいたします。

852 名前:デフォルトの名無しさん :2005/06/23(木) 12:23:54
>>851
これ一通り読んでみ。
http://www.microsoft.com/japan/msdn/library/ja/vccore/html/_core_generic.2d.text_mappings_in_tchar..h.asp

853 名前:デフォルトの名無しさん :2005/06/23(木) 20:03:38
アプリケーションを作ってて、そのアプリケーションのエラーメッセージとか
実行状態のメッセージを別の小さなダイアログに表示したいのですがどうすれ
ばいいでしょうか?

854 名前:デフォルトの名無しさん :2005/06/23(木) 20:10:46
モードレスダイアログボックス

855 名前:デフォルトの名無しさん :2005/06/23(木) 22:47:10
Windowハンドルをラップしたクラスをつくってみました。
こんなかんじで
class Win{
  HWND handle_;
public:
  BOOL Create();
  void Show();
};
ここまで作ってふと思ったんですが、
HWNDを引数にとるAPIにはどうやって情報を渡そうかと

クラスが保持しているハンドルを返すメンバ関数をつくると
内部実装をさらすようでカプセル化したした意味が無い気がします
かと言って使用するAPI全てにラッパークラスを作るのもしんどい気がします


856 名前:デフォルトの名無しさん :2005/06/23(木) 22:50:15
独り言なら

857 名前:デフォルトの名無しさん :2005/06/23(木) 22:57:28
MFCでも見たら?

858 名前:デフォルトの名無しさん :2005/06/23(木) 23:10:31 ?
>>855
>API全てにラッパークラスを作るのもしんどい気がします

生のHWNDを扱いたくないなら、そうするしかないかと。

859 名前:ゆみ :2005/06/23(木) 23:15:10
COMアドインを効率つくる情報をください・・・

860 名前:デフォルトの名無しさん :2005/06/23(木) 23:16:45
>>859
まずは日本語勉強してからな。

861 名前:デフォルトの名無しさん :2005/06/23(木) 23:18:37
>>855
MFCとかATLではある程度の関数には自前でラップしてして、
ついでにデフォルト引数とか、RECTかintの引数を4つかなどといったオーバーロードを提供しているが、
やっぱり網羅しきれるわけが無いのでHWNDを返すメンバ関数とoperator HWND()を用意している。

862 名前:デフォルトの名無しさん :2005/06/23(木) 23:24:03
>>858
>>861
やっぱりそうですよね

よく考えたらハンドルという概念自体がリソースを程よくラップしているので
公開しちゃっててもいいんじゃないかという気になってきました

さすがにpublicメンバにするのは気がひけるので
operator HWND()
でも実装します

ありがとうございました

863 名前:デフォルトの名無しさん :2005/06/24(金) 02:34:45
いいかもまいらvitaminCは肌にとてもいいんだ。初心者だからわからないかもしれないがとった方がいいぞ。ちゃんと食事のbalanceを考えて摂取するんだ。しっかりな。

864 名前:デフォルトの名無しさん :2005/06/24(金) 03:02:44
パス名の最大長で、MAX_PATHと_MAX_PATHとどちらを使えばいいんですか?
あと、TCHARと_TCHARとありますが、違いが良くわかりません。
これって同じものでしょうか?

865 名前:デフォルトの名無しさん :2005/06/24(金) 03:03:58
オレもよおわからん。
ってか、ゲネリックテキスト意識してみんな作ってる?

866 名前:デフォルトの名無しさん :2005/06/24(金) 05:37:33
generic text は意識してるよ。
Unicode 版を試しに作ってみたいとき便利だよ。
_TCHAR は TCHAR が標準化されるまでの名残じゃないかな、うん。

867 名前:デフォルトの名無しさん :2005/06/24(金) 05:46:37
てことはTCHAR使っとけば間違いないかな???
LPCTSTRとかLPTSTRとかとはTCHARのほうが相性がいいとか。

868 名前:デフォルトの名無しさん :2005/06/24(金) 06:13:11
defineしてあるから今のところはどっちでもいいんだけどな。

UNICODE が define されてるかどうかで SetWindowText が
SetWIndowTextA と SetWindowTextW のどちらかへ define される。
最初からTCHARやLPCTSTRで書いてると2種類のソースを用意しなくていい。
ソースが1つだと変更し忘れが少なくなっていい。

SetWindowText(hwnd, _T("ほげ"));
 ↓
SetWindowTextW(hwnd, L"ほげ"); // UNICODEがdefineされている
SetWindowTextA(hwnd, "ほげ"); // UNICODEがdefineされていない

869 名前:デフォルトの名無しさん :2005/06/24(金) 06:18:24
>>855
operator HWND()
{
  return handle_;
}

870 名前:デフォルトの名無しさん :2005/06/24(金) 08:16:57
>>864
問題は、MAX_PATHそのものを使ってはいけないことだ。
ディレクトリを何段も掘ったから簡単に溢れるぞ。

871 名前:デフォルトの名無しさん :2005/06/24(金) 08:23:49
>>870
うむ、MAX_PATHは古の悪習だな。
DOSの頃は、そもそもOSがMAX_PATHを越えると扱えなくなるから良かったが、
それをWindows95移行も踏襲するのは、糞だ。

872 名前:デフォルトの名無しさん :2005/06/24(金) 08:35:52
処で質問だが、単体では動いているプログラムが数本同時に動くと時折りntdll.dllが落ちてしまうのだ。
ntdll.dllが落ちた後も、ログファイルの出力が止まらないところを見ると、プログラム自体はきちんと
タイマーメッセージで動き続けているらしい。
原因としてはどの辺りが考えられるかな。

873 名前:デフォルトの名無しさん :2005/06/24(金) 08:40:52
>>871
じゃあ、今はどうすべき?

874 名前:デフォルトの名無しさん :2005/06/24(金) 09:51:05
>>873
MAX_PATHによらず、充分な長さを確保する必要があるべさ。

875 名前:デフォルトの名無しさん :2005/06/24(金) 10:23:50
\\?\hoge形式のファイル名を使わないとMAX_PATH文字の制限は
解除できないんでねーの?
従来形式を使う限りMAX_PATH文字でいいと思っていたが。

876 名前:デフォルトの名無しさん :2005/06/24(金) 10:51:15
フルパスでMAX_PATH以上になるような長い名前のフォルダを2, 3階層作ったら
エクスプローラから削除できなくなった記憶がある。

877 名前:デフォルトの名無しさん :2005/06/24(金) 11:33:14
>>876
いいこと聞いた

878 名前:デフォルトの名無しさん :2005/06/24(金) 12:05:37
その辺を明快に解説した本とか無いだべさ?

879 名前:デフォルトの名無しさん :2005/06/24(金) 12:29:31
結局、TCHARと_TCHAR迷ったらどちらを使えばよいでしょう。。。


880 名前:デフォルトの名無しさん :2005/06/24(金) 12:37:03
Path系APIはMAX_PATH以上扱おうとすると失敗した記憶が

881 名前:デフォルトの名無しさん :2005/06/24(金) 12:38:52
やたら深いフォルダにファイルを置くと
Win98のスキャンディスクが「長すぎてMS-DOSが認識できない」とか
警告を出してきた記憶があるなあ。
この制限はMAX_PATHより短い。
環境変数PATHの長さが128文字までだった時代の名残かな。

>>879
迷わずTCHAR使えって。

882 名前:デフォルトの名無しさん :2005/06/24(金) 12:45:36
>>881
それ、ショートネームがMAX_PATHを超えるんだと思う。

883 名前:デフォルトの名無しさん :2005/06/24(金) 12:51:49
DOSだとディレクトリ名は64bytesまでだったはず。

884 名前:デフォルトの名無しさん :2005/06/24(金) 13:16:43
・MAX_PATHの定義
#define MAX_PATH260

・アプリの引数の長さにも128バイトの制限があって、
ファイル名の長さに依るが約10〜20個以上のをドロップするとエラーが出ることが多かった。
MS-DOSの名残だが、Win9xでも出てた。

・MS-DOSでは環境変数PATHの長さは128バイトまでに制限されている。
 これは"PATH="と終端のNULLの長さも含めた長さなので実際には122バイトしか使えない。
 PATHにパスを2つ指定できるようにディレクトリ名の長さは122の半分くらいじゃなかったかな。

885 名前:デフォルトの名無しさん :2005/06/24(金) 13:24:21
ドライブレターとディレクトリとファイル名(8+3)足して80かな。
だとしたら、80-(8+3)-2-1で66くらいか。

886 名前:881,884 :2005/06/24(金) 13:36:46
そう、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 */

887 名前:デフォルトの名無しさん :2005/06/24(金) 14:32:16
>>881
> 迷わずTCHAR使えって。

ラジャ ノシ

888 名前:デフォルトの名無しさん :2005/06/24(金) 15:56:50
>>874
どれくらい確保し解けばいいさ。

889 名前:デフォルトの名無しさん :2005/06/24(金) 18:04:15
常識の範囲

890 名前:デフォルトの名無しさん :2005/06/24(金) 18:14:34
俺にとって常識の範囲とはMAX_PATHなんだが。

891 名前:デフォルトの名無しさん :2005/06/24(金) 18:16:24
まあその4倍ぐらいとっときゃいいんでない?
そんな深いとこまでは使いにくいから作んないでしょ。
で、常識の範囲。

892 名前:デフォルトの名無しさん :2005/06/24(金) 18:17:25
オレはヒープ使って10kbくらいとっちゃったりする小心者です。
スタックよりは良いかと、そんな程度です。

893 名前:デフォルトの名無しさん :2005/06/24(金) 21:06:16
既存のプログラムAを改造して新しいプログラムを作ろうとしているのですが
その際にプログラムAでリンクをはっていたDLLをはずしてしまったのですが

LINK : warning LNK4089: "ABCDE.dll" へのすべての参照は /OPT:REF によって廃棄されます

と出ます。エラーではないのですが、気になるので解決する手を教えて
いただけませんか?

894 名前:デフォルトの名無しさん :2005/06/24(金) 21:07:09
無視する

895 名前:デフォルトの名無しさん :2005/06/24(金) 21:37:18
>>893
LNK4089をヘルプで見ませう。それで解決します。

896 名前:デフォルトの名無しさん :2005/06/24(金) 22:31:58
>>893
ABCDE.dllのインポートLibがリンカに渡されたけど使わなかったよ、というwaring。

897 名前:デフォルトの名無しさん :2005/06/24(金) 22:46:02
つまりABCDE.dllをリンクしないように指定すれば、
ほんの少しだけリンク速度が早くなるってこと。
気にならなければ無視しても無問題。

898 名前:デフォルトの名無しさん :2005/06/24(金) 23:37:40
ところで、皆さんは、自宅でプログラミング打ってますか?自分、
プログラミングを家でやりたいと思っているんですが、どんなコンパイラが
いいか知りたいんですけど、ちなみに、c言語です。

899 名前:デフォルトの名無しさん :2005/06/24(金) 23:42:24
>>898
Visual C++
尤もここがVisual C++のスレだからというのもあるが。

900 名前:デフォルトの名無しさん :2005/06/25(土) 00:04:06
VC6.0の出来があまりに良すぎて、.NETに以降できない俺様が来ましたよっと。

901 名前:デフォルトの名無しさん :2005/06/25(土) 00:38:47 ?
.NETに以降したけど6.0が懐かしくて仕方がない俺が来ましたよ。

902 名前:デフォルトの名無しさん :2005/06/25(土) 00:42:58
なんかいまだに.NETにバグあるんじゃね?と
疑いがぬぐえないオサーンが来ましたよ。

903 名前:デフォルトの名無しさん :2005/06/25(土) 02:20:47
腰が痛い漏れが来ましたよ。

904 名前:デフォルトの名無しさん :2005/06/25(土) 10:14:42
>902
実際いくつもある。2005に期待して待ってる。

905 名前:デフォルトの名無しさん :2005/06/25(土) 14:12:55
>895
>896
>897
それが、ヘルプを見て大体意味は見当がついて、リンクは切った
はずなのですが。プロジェクト>設定>リンクのところでライブラリの
リンクを消すだけじゃだめですか?ビルドでは警告は出ないのですが、
リビルドすると警告が出てしまいます。

906 名前:デフォルトの名無しさん :2005/06/25(土) 14:14:02
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のバグなのか。詳しい方いますか?よろしくです。

908 名前:デフォルトの名無しさん :2005/06/25(土) 15:32:23
>>905
リリースブィルドとデヴァッグブィルドとゴチャにしてない?

909 名前:Why? ◆ouWMQKaTMk :2005/06/25(土) 15:33:53
どこで質問すれば良いのか分からないので、取りあえずここで。
アセンブラからCの関数”Hello”を呼び出したいのですが、エラーが沢山。
以下、アセンブラと関数Helloのソースを張ります。
#include <stdio.h>
int Hello(void)
{
printf("HelloGikos");
return 0;
}
//Cのソースはここまで。


910 名前:Why? ◆ouWMQKaTMk :2005/06/25(土) 15:34:32
;アセンブラのソース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



911 名前:Why? ◆ouWMQKaTMk :2005/06/25(土) 15:34:51
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
>>909-911
まさかVisual C++でやろうとしているのか?

913 名前:907 :2005/06/25(土) 15:56:46
自己解決しますた;

コントロールのサイズを変更していなかったです。
OS等の種類によってサイズ変更していなくても自動的に調整してくれる模様。

914 名前:デフォルトの名無しさん :2005/06/25(土) 16:00:58
>>909
スレ違い。
アセンブラすれを探すべし。


…しかし、関数呼び出しは call じゃなかったっけか?
いやまぁ、詳しく知らんのだけど。

915 名前:デフォルトの名無しさん :2005/06/25(土) 17:05:57
>>909
VCなら
__asm call Hello

916 名前:デフォルトの名無しさん :2005/06/25(土) 17:08:46
そもそもWin上でcr0なんてさわれるわけ無いだろ。

917 名前:デフォルトの名無しさん :2005/06/25(土) 21:47:26
C言語+Windows APIを使っているのですが、
最大化やウィンドウのリサイズを禁止するにはどうすればいいんでしょうか?
最小化はそのまま使えるようにしたいのですが…

918 名前:デフォルトの名無しさん :2005/06/25(土) 21:56:08
Win32API質問箱 Build32
http://pc8.2ch.net/test/read.cgi/tech/1117271829/

919 名前:デフォルトの名無しさん :2005/06/25(土) 22:01:53
スレ違いでしたか。すいません。そっちで聞いてきます。

920 名前:デフォルトの名無しさん :2005/06/26(日) 03:16:28
猫で勉強してたら長い旅に思えてきた
C言語ぐらいがちょうどよかったな。。。

921 名前:デフォルトの名無しさん :2005/06/26(日) 03:46:02
>>920
C++は破綻してるよ。例えば、
class MyBase {...};
class YourBase : public MyBase { ... bool IsYourBaseBelongToUs(); };
vector< MyBase > vec;
vec.push_back( dynamic_cast<MyBase>( YourBase(...) ) );
オブジェクト指向言語で、これでスライシングが起きてアウトはダメでしょ。
C言語的な感性で言ったら当然アウトなんだけど。
スライシング回避のためにインスタンスへのポインタを保持するっていうのは小手先のハックでさ、
プリミティブな設計がハックだと、ハックを使わざるを得なくなるっていうしわ寄せの例。


922 名前:デフォルトの名無しさん :2005/06/26(日) 06:39:35
920の書き込みから何で921のレスになるのかサッパリ分からんのだが…

923 名前:デフォルトの名無しさん :2005/06/26(日) 08:09:01
どう見てもイカレてるヤツだからそっとしておいてやってくれ

924 名前:デフォルトの名無しさん :2005/06/26(日) 08:37:42
>>921
そこ、dynamic_castの使いドコじゃないよ。

>>920
猫のC++は特に良くないからほか行け。

925 名前:デフォルトの名無しさん :2005/06/26(日) 09:21:26
おいおい、自分がろくなC++書けないからって僻むなよ

926 名前:デフォルトの名無しさん :2005/06/26(日) 14:57:02
ハックとか言っちゃって恥ずかしいな

927 名前:デフォルトの名無しさん :2005/06/26(日) 17:14:25
>>921は語りたくてしょうがなかったんだろう。
でも次からはチラシの裏な。

928 名前:デフォルトの名無しさん :2005/06/26(日) 18:27:43
そりゃ、基底クラスで配列とるからだろ。
500mmlのビーカー買って来たのに、1L水を入れようとして「入らない!」って怒ってるようなもんじゃん。

929 名前:デフォルトの名無しさん :2005/06/26(日) 18:28:42
>>921
言語は道具。
正しく使わずにクレームをつけるのはクレーマー。

930 名前:デフォルトの名無しさん :2005/06/26(日) 18:31:55
500mml

931 名前:デフォルトの名無しさん :2005/06/26(日) 20:28:27
mmlっつーとテキストで演奏データを記述するアレか

932 名前:デフォルトの名無しさん :2005/06/26(日) 22:36:45
Visual C++ 6.0でペイントツール作ってみたいんですが、まずなにすればいいんでしょうか?

933 名前:デフォルトの名無しさん :2005/06/26(日) 22:40:46
>>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;
}
};


936 名前:デフォルトの名無しさん :2005/06/26(日) 23:06:40
>>935
&nbsp;と全角スペースしか使えない。

937 名前:ゆぅ :2005/06/26(日) 23:08:38
>>936
 ってなんですか?

938 名前:936 :2005/06/26(日) 23:11:38
>>937
>>935はきっとtabを半角スペースに置き換えたんだろうなと思って。

939 名前:デフォルトの名無しさん :2005/06/26(日) 23:12:21
classを使うなら、拡張子はcppにしとけ。

940 名前:デフォルトの名無しさん :2005/06/26(日) 23:13:03
一応言っておくが、.hはそのままで、.c を .cppにする、ということだからな。

941 名前:ゆぅ :2005/06/26(日) 23:13:05
>>938
おっしゃる通りですね^^;

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はどうするんですか?


947 名前:デフォルトの名無しさん :2005/06/27(月) 00:06:04
>>946
プロジェクトを作ってから(略)して新しい項目の追加のダイアログボックスを開く。
その中からC++ファイルを選んでファイル名のところにa.cというように拡張子もつけてファイル名を入力すればよい。

948 名前:デフォルトの名無しさん :2005/06/27(月) 00:06:17
>>943からどうやってIDEでやりたいって読み取るんだ?
馬鹿かお前は。

949 名前:デフォルトの名無しさん :2005/06/27(月) 00:26:59
山のようにあるAPIをほとんど憶えられる気がしないのですが、
みなさんどうされているのですか?

950 名前:デフォルトの名無しさん :2005/06/27(月) 00:27:06
つーかファイル食わせろよ。

951 名前:デフォルトの名無しさん :2005/06/27(月) 00:29:14
>>949
必要な時に調べる。
一度使ったら、そのプロジェクトは残しておいて、再び使う時は引っ張り出してくる。

952 名前:デフォルトの名無しさん :2005/06/27(月) 00:30:46
>>949
容量の差こそあれ人間の記憶容量は有限。
どうやって覚えるかというより、自分にとって覚えるべき最低限のことを
覚え、覚える必要のないことは積極的に覚えない。

953 名前:デフォルトの名無しさん :2005/06/27(月) 00:45:37
情報そのものより情報を探す手段を覚えた方がいい

954 名前:943 :2005/06/27(月) 01:22:41
>>947さん
できましたー!ありがとう!!


955 名前:デフォルトの名無しさん :2005/06/27(月) 01:29:22
だいたいやりたいことからAPI名を脳内で想像し、
検索にかけるとだいたいヒットする。
頻繁に使うAPIは自然と覚える。
引数は検索して見ればすぐわかる。

956 名前:デフォルトの名無しさん :2005/06/27(月) 04:37:26
Visual C++ 2005 Expressをダウンロードしたのですが、これの
説明書って製品版じゃないとついていないのでしょうか?
ボタンが多すぎて使い方が意味不明ですorz

957 名前:デフォルトの名無しさん :2005/06/27(月) 17:46:55
DLLを作ろうとしてますが、
DLLと同時にLibも作られるとのことですが、
なぜかDLLだけしか作られません。

何がだめなのでしょうか?
よろしくお願いします。

958 名前:デフォルトの名無しさん :2005/06/27(月) 20:24:18
>> 956
所詮はβですから。

959 名前:デフォルトの名無しさん :2005/06/27(月) 20:56:50
VC.netってプロファイラついてないんですか?


960 名前:デフォルトの名無しさん :2005/06/27(月) 21:12:50
CMyWndというウィンドウクラスを作りました。
単にAPIをクラスでラップしてるだけです。

ただ、
CMyWnd obj;
でウィンドウを生成すると、ウィンドウの中のコントロールなどが表示されるのですが、
CMyWnd* pObj;
でオブジェクトをnewしたあとウィンドウを作成すると、ウィンドウの中のコントロールなどが表示されなくなるのです。

これはどういう不具合なのでしょうか?

961 名前:デフォルトの名無しさん :2005/06/27(月) 21:15:04
>>960
お前さんの頭の不具合。

962 名前:デフォルトの名無しさん :2005/06/27(月) 21:20:39
>>961は社会不適合児だから相手にしちゃいけませんよ

963 名前:デフォルトの名無しさん :2005/06/27(月) 21:40:28
>>960
オマエさんのコーディングの不具合

964 名前:デフォルトの名無しさん :2005/06/27(月) 21:49:36
オリジナルコードの中身までは答えられんなぁ…。
どっかにソースUPしたら?

965 名前:デフォルトの名無しさん :2005/06/27(月) 23:55:12
>>957
ヒント:エクスポート

966 名前:デフォルトの名無しさん :2005/06/28(火) 12:06:08
>960
最後に

pObj->UpdateWindow()

すればどうよ?



967 名前:デフォルトの名無しさん :2005/06/28(火) 12:08:50
あぁなんだ、MFCのCWndからの派生じゃないのか。

フツーのWinApiラッパーを独自で作ったんなら、
コンストラクターを調べれ。


968 名前:960 :2005/06/29(水) 19:12:16
newでオブジェクトを生成すると、メモリの初期化(0)はしてくれないことを知りませんでした。
宣言子によるオブジェクト生成(CMyClass obj;)の場合、メモリ内容は全て0に初期化されるようです。

その違いによるシステムの不具合でした。
コンストラクタで事前にメンバは初期化しておくことで解決です。

ご返答ありがとうございました。

969 名前:デフォルトの名無しさん :2005/06/29(水) 19:19:35
>>968
コンストラクタで変数を初期化するクセを付けておいて損はない。

970 名前:デフォルトの名無しさん :2005/06/29(水) 19:25:36
>宣言子によるオブジェクト生成(CMyClass obj;)の場合、
>メモリ内容は全て0に初期化されるようです。
グローバルなのか……

971 名前:デフォルトの名無しさん :2005/06/29(水) 20:34:13
>>968
は?クラスのメモリ内容0に初期化されてどうすんだよ・・・
あと、初期化されるかされないかに関わらず、明示的に初期化するもんだ

972 名前:デフォルトの名無しさん :2005/06/30(木) 00:06:16
>>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にしたい

974 名前:デフォルトの名無しさん :2005/06/30(木) 16:30:10
>>973
マルチうざい

975 名前:デフォルトの名無しさん :2005/06/30(木) 16:32:24
>>973
黙って移動するとマルチと思われて回答してもらえない恐れが多々ある。
一言断りを入れてきたまえ。

それと、向こうのレスは吟味したのかね。
・char b[1]とあるが、通常それには48409なんて値は入れられない。
・配列aに入っているのは本当に数値か? 数字文字ということはないのか?
せめてこのぐらいは聞き分けたまえ。

976 名前:デフォルトの名無しさん :2005/06/30(木) 17:15:22
数字文字?

977 名前:デフォルトの名無しさん :2005/06/30(木) 18:00:34
'1'とかそんなのだろ多分

978 名前:デフォルトの名無しさん :2005/06/30(木) 18:08:35
ワードみたいにワークスペースの背景を黒くはできないんですか?

979 名前:デフォルトの名無しさん :2005/06/30(木) 18:41:25
ワードみたいかどうかは知りませんができます。

980 名前:デフォルトの名無しさん :2005/06/30(木) 18:53:17
>>978
Windowsの配色の問題。
Windowsの配色の設定を変えると、各アプリに反映される。

981 名前:デフォルトの名無しさん :2005/06/30(木) 20:50:09
もしかして.net 2003だと、cout とかcin とか使えませんか?
iostream.hインクルードしててもコンパイラに怒られます。
ヘルプ見たら<iostream.h>じゃなく<iostream>とするように載ってましたが、そうしても動かず…。
HelloWorldで躓くとは情けないorz

982 名前:デフォルトの名無しさん :2005/06/30(木) 21:04:25
キーボードから5つの数字を入力して入力とは逆に表示するプログラム教えてください。
FOR〜NEXT使ってお願いします!
BASICで使えるプログラム教えてくださいm(__)m

983 名前:デフォルトの名無しさん :2005/06/30(木) 21:28:49
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は作り方がかなり違うのでしょうか。

986 名前:デフォルトの名無しさん :2005/06/30(木) 22:31:08
HELPで充分作れるよ

987 名前:デフォルトの名無しさん :2005/06/30(木) 22:38:21
そんな違いで躓いてるようじゃ先にすすんでも躓いてばっかだ
てか、いきなりAPI完璧マスタとか買わずにVCの本買えよ

988 名前:デフォルトの名無しさん :2005/06/30(木) 22:39:04
>>984
該当行を晒せ。
最初のはプロジェクトの設定を見直せ。

989 名前:デフォルトの名無しさん :2005/06/30(木) 22:49:31
>>986-987さんありがとうございます。
本を選ぶのが下手なのでしょうか。この本にたどり着くまでに、
ほかにも変なのを沢山買いました。
この種の本は、とても高いです。
聞きたかったのは、アップリケーションから
ダイアログを作るのではなくモジュールをかいて、作ることが、
VC++.netではできないのかなということなんです。
多分できないのでしょうね。
本買うのを検討してみようかと思います。
ヘルプは、何度も見ましたが、やはり、1からでは、
難しいです。
では、ありがとうございました。

990 名前:デフォルトの名無しさん :2005/07/01(金) 02:28:22
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);}

991 名前:デフォルトの名無しさん :2005/07/01(金) 10:10:21
すいません
質問ですが、構文エラー : ')' が 'constant' の前に必要です。というエラーが出ますが、
このようなエラーが出る主な原因は何なのでしょうか?

よろしくお願いします。

992 名前:デフォルトの名無しさん :2005/07/01(金) 10:22:39
>>991
ソースを貼るのが一番。

993 名前:991 :2005/07/01(金) 10:24:55
この部分が問題だと矢印がでます
void Create(char* pClassName,int x,int y,int h,int v,HWND hParentWnd);

994 名前:デフォルトの名無しさん :2005/07/01(金) 10:37:36
ヘッダ

995 名前:デフォルトの名無しさん :2005/07/01(金) 14:11:03
なぜその行末に;があるのだ

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 で参照されました。

同ファイルに定義すると、普通にコンパイルできます。
どうしてでしょうか?

997 名前:デフォルトの名無しさん :2005/07/01(金) 20:01:12
>>996
テンプレート関数はコンパイル時に実体化されないといけない。
したがって、別ファイルではダメ。

998 名前:デフォルトの名無しさん :2005/07/01(金) 20:20:35
>>997
早速ありがとうございます。
なるほど、別ファイルではダメなのですか。

では、テンプレートクラスを使用する場合、
ヘッダファイルに関数定義もする形で
使っていけば良いのでしょうか?


999 名前:ホームページ プロダクション :2005/07/01(金) 20:48:00
毎日がいそがしい。作り方が分からない。だけどホームページを作りたいというアナタ!当社が高品質でホームページをお作りいたします。
弊社は出来て間もないのではじめに5人という限定で無料ホームページをお作り致します。こちら→http://www16.plala.or.jp/mercigackt/

1000 名前:デフォルトの名無しさん :2005/07/01(金) 20:53:55
1000ですぅ〜〜


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.