2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:05/02/09 14:29:49
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

【前スレ】
★初心者にVisual C++を教えるスレ★ Part16
http://pc5.2ch.net/test/read.cgi/tech/1101022051/

過去スレ、関連スレなどは>>2-5ぐらい。

2 :デフォルトの名無しさん:05/02/09 14:31:26
【過去スレ】
Part15 http://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 http://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 http://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 http://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 http://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 http://pc5.2ch.net/test/read.cgi/tech/1074933908/
Part09 http://pc5.2ch.net/test/read.cgi/tech/1068983609/
Part08 http://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 http://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 http://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 http://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 http://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 http://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html

※「いや〜、ごめんなさい」により、紛失の可能性。

3 :デフォルトの名無しさん:05/02/09 14:34:48
【関連スレ】
■ MFC相談室 MFC12.dll■
http://pc5.2ch.net/test/read.cgi/tech/1096848771/l50

Win32API質問箱 Build27
http://pc5.2ch.net/test/read.cgi/tech/1106103119/

鬱だ氏のう DirectX (Part 15)
http://pc5.2ch.net/test/read.cgi/tech/1096649788/l50

C言語なら俺に聞け! Part 101
http://pc5.2ch.net/test/read.cgi/tech/1107128274/

C++相談室 part39
http://pc5.2ch.net/test/read.cgi/tech/1106527792/

C/C++の宿題を片付けます 40代目
http://pc5.2ch.net/test/read.cgi/tech/1107625122/

【初心者歓迎】C/C++室 Ver.13【環境依存OK】
http://pc5.2ch.net/test/read.cgi/tech/1104843249/

4 :デフォルトの名無しさん:05/02/09 14:36:22
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/

MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/

Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

Google
http://www.google.co.jp/

【このスレの前身 VisualC++相談室 過去スレ】
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc5.2ch.net/tech/kako/1036/10368/1036897197.html

5 :デフォルトの名無しさん:05/02/10 11:19:09
System::DateTime now = DateTime::get_Now();
String *msg = now.ToString();

now. のときインテリセンスが利かないのはなぜ?
DateTime::の時は利く。 よろしく。

環境は:VS2003 enterprize +XP + 初心者

6 :デフォルトの名無しさん:05/02/10 11:28:41
>>5
インテリセンスはおまけ
全然ないよりはありがたいから感謝しろ

7 :デフォルトの名無しさん:05/02/10 12:51:39
日本語で書かれたドキュメントすら読まずに質問するなら捨ててしまえ。

8 :デフォルトの名無しさん:05/02/10 13:12:18
VC++.Net2003のダイアログエディタでは、
BCBのようにマルチタブなものは作れないようですが、
自分でCreateWindowExで全部作るしかないんですか?

9 :デフォルトの名無しさん:05/02/10 13:54:17
>>8
愚痴ならチラシの裏へ
質問なら余計なことは書くな

10 :デフォルトの名無しさん:05/02/10 15:10:17
>9
 答えるなら的確に。答えないなら余計なことは書くな。

11 :デフォルトの名無しさん:05/02/10 15:19:10
>日本語で書かれたドキュメントすら読まずに質問するなら捨ててしまえ。

 読んでも解らんお前はだまっとれ。喋りたかったら答えを書け。

12 :デフォルトの名無しさん:05/02/10 15:21:39
Vs2003のC++用のUMLエディターの起動方法を教えてください。

13 :デフォルトの名無しさん:05/02/10 17:20:18
ここは初心者スレ

14 :デフォルトの名無しさん:05/02/11 01:14:03
int _tmain(int argc, _TCHAR* argv[])
{
static DWORD dwReadByte ;
LPSTR lpszBuf ;

HANDLE hFile = CreateFile("Sample.txt", GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
if(hFile == INVALID_HANDLE_VALUE){
cout << "file open error" << endl ;
CloseHandle(hFile) ;
return 1 ;
}
lpszBuf = (LPSTR)malloc(GetFileSize(hFile , NULL));
ZeroMemory((LPVOID)lpszBuf, GetFileSize(hFile , NULL)) ;
ReadFile(hFile, &lpszBuf, GetFileSize(hFile, NULL), &dwReadByte, NULL) ;
//free(lpszBuf);
if(CloseHandle(hFile) == 0){
cout << "error" << endl ;
return 1 ;
}
return 0 ;
}

Run-Time Check Failure #2 - Stack around the variable 'lpszBuf' was corrupted.
が出てしまいました。
mallocにてファイルサイズ分確保してると思うんですが駄目みたいです。
デバックでlpszBufを追っていくとReadFileまでいったとこで「不正な ptr」って出てるみたいです
どこが駄目なんでしょうか?

15 :sage:05/02/11 01:49:47
ReadFile に &lpszBuf ではなく lpszBuf を渡すべきでは...

16 :デフォルトの名無しさん:05/02/11 02:00:18
>>15
エラーでなくなりますた
ありがd

17 :デフォルトの名無しさん:05/02/11 12:04:37
>>16
エラーになった理由わかってなさそう・・・

18 :デフォルトの名無しさん:05/02/11 19:52:20
TCHARszFilter[]=TEXT("BMP Files(*.BMP)\0*.bmp\0\0");

ZeroMemory(pOFN,sizeof(OPENFILENAME));

pOFN->lStructSize= sizeof(OPENFILENAME);
pOFN->hwndOwner= hWnd;
pOFN->hInstance= NULL;
pOFN->lpstrFilter= szFilter;
pOFN->lpstrCustomFilter= NULL;
pOFN->nFilterIndex= 0;
pOFN->lpstrFile= NULL;
pOFN->nMaxFile= MAX_PATH;
pOFN->lpstrFileTitle= NULL;
pOFN->nMaxFileTitle= MAX_PATH;
pOFN->lpstrInitialDir= NULL;
pOFN->lpstrTitle= NULL;
pOFN->Flags= 0;
pOFN->nFileOffset= 0;
pOFN->nFileExtension= 0;
pOFN->lpstrDefExt= TEXT("bmp");
pOFN->lCustData= 0L;
pOFN->lpfnHook= NULL;
pOFN->lpTemplateName= NULL;

19 :デフォルトの名無しさん:05/02/11 19:53:22
↑の続き
pOFN->hwndOwner= hWnd;
pOFN->lpstrFile= pFileName;
pOFN->lpstrFileTitle= pTitleName;
pOFN->Flags= OFN_HIDEREADONLY | OFN_CREATEPROMPT;

GetOpenFileName(pOFN);

これでダイアログは表示されるけど、ダイアログのフィルタの部分の
文字列がバグってます。
どこか間違ってますか?このコード。
フィルタがダメだから、どのファイルも表示されない。
pFileNameはMAX_PATH分、確保されてるので、十分有ると思います。
文字列最後にヌル文字入れてます。pFileName[MAX_PATH-1]のように。

20 :デフォルトの名無しさん:05/02/11 20:15:11
pFileName[MAX_PATH-1]=0;の間違い

21 :デフォルトの名無しさん:05/02/11 21:22:55
Aというバッファにゴミが入っていたとしよう。
A[n]='\0'; としても、n>0 ならやはり先頭からn文字はゴミである。
それはそれとして、フィルタがおかしいならszFilterが腐ってるんでないの?

22 :デフォルトの名無しさん:05/02/11 21:38:44
一目見て間違ってるから
ろくに調べもしないで質問してるに違いない。

23 :デフォルトの名無しさん:05/02/11 21:38:45
うにCode関連じゃない?

24 :18:05/02/12 02:19:48
自己解決しました。前にも同じ事悩んでた気がする。
しかも、その時も時間掛かった。

25 :デフォルトの名無しさん:05/02/12 13:26:22
>>8をおねがいします

26 :デフォルトの名無しさん:05/02/12 16:35:29
>>25
1日待っても回答がないということは、
質問の仕方が悪いのかな?
>>1をよく読んで見たら?

> ■質問するにあたって
> ・エラーや警告のときはエラーメッセージを書きましょう。
> ・開発環境も書きましょう。
> ・できるだけ具体的に。
>
>   質問の仕方については次のページが大変参考になります。

27 :デフォルトの名無しさん:05/02/12 17:22:10
MFC使いは一般的にBCBを知らないだろうからね。
MFCにはTabCtrlがあるけど、そのTabPageの中身は自前で用意するのがMFC流だね。

28 :デフォルトの名無しさん:05/02/12 22:08:44
リストボックスの中身を消すためにはどの命令を使えばいいでしょうか。
使っているのはVC6です。ご教授お願いします。

29 :デフォルトの名無しさん:05/02/12 22:24:13
命令って何?
APIか?

30 :デフォルトの名無しさん:05/02/12 22:27:48
そのリストボックスの中身がどうやって出てきたかによるだろうな

31 :デフォルトの名無しさん:05/02/12 22:31:57
28です。すいません説明が足りませんでした。
ダイアログボックスのリストボックスです。


32 :デフォルトの名無しさん:05/02/12 22:53:51
28です。自己解決できました。


33 : :05/02/13 17:00:45
Visual C++
とはちょっと違うんですけど
突然MSDNが見れなくなりました
ヘルプC:\Pro〜98.colが開けません
ってダイアログが出ます
どうしたら見れるようになるんでしょうか?

34 :デフォルトの名無しさん:05/02/13 17:10:34
ウイルスまたはHDDが壊れる前兆

35 :デフォルトの名無しさん:05/02/13 17:57:26
warning C4201 が
#pragma warning( disable : 4201 ) で無効化できない件について。

なんで?

36 :デフォルトの名無しさん:05/02/13 18:03:36
 C++でAPIを使ってWindowsProgrammingをしようと思うんですが、どうも綺麗にまとまった
プログラムを書くことが出来ません。
 やはりMFCを使って書くのが良いのでしょうか?

37 :35:05/02/13 18:14:52
事故解決。
windows.h が悪さしてますた。orz

38 :デフォルトの名無しさん:05/02/13 20:09:13
>>36
たぶんあなたはMFCでも綺麗に書けない。

39 :デフォルトの名無しさん:05/02/14 08:47:24
>>26
自己解決しました
プロパティシートとやらをつかうらしい

40 :デフォルトの名無しさん:05/02/14 09:05:57
そういうことか
マルチタブって何のことかわからんかった

41 :デフォルトの名無しさん:05/02/14 09:09:03
タブが1個ならタブにする意味ないから
タブがマルチのは当然だし
いったい何を意味不明なこと言ってるのかと

42 :デフォルトの名無しさん:05/02/14 09:21:21
マルチタブでぐぐってみたらサプリメントだった。
「明治製菓 ザバス プロ スーパーマルチタブ 」とか orz

てっきり吊りだと思ってた。

43 :デフォルトの名無しさん:05/02/14 14:40:44
if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK){ return; }

と参考書にあったコードをそのまま書いてビルドしたんだけど

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(348) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(348) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(348) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

こんなエラーをはいたんで、DialogResult::OKの記述がおかしいの?と思い

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsdialogresultclasstopic.asp
へ飛んで見てみたら
ダイアログ ボックスの戻り値は OK です (通常は "OK" というラベルが指定されたボタンから送られます)。
って書いてるから、

if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != OK)
と書き直したところ

44 :続きです。:05/02/14 14:41:33
------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(348) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

と、またエラーをはくのでOKじゃだめなの?と思い、通常は "OK" というラベルが指定されたボタンから送られます。って
書いてあるから今度は

if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != "OK")
と書き直したら

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(348) : error C3063: operator '!=': all operands must have the same enumeration type
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

って今度は != がなんかおかしいみたいに言うんです。

45 :長くてすみませんこれで最後です。:05/02/14 14:42:17
しょうがないので今度は、

if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != OK)
のOKCancelの上にカーソル置いたら
value enum System::Windows::Forms::MessageBoxButtons::OKCancel = 1
って表示されたので、1か?1でいいのか?と思い

if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != 1)

にしたのですが

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(348) : error C3063: operator '!=': all operands must have the same enumeration type
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

またこのエラーが吐かれました

たぶん"OK" か 1 が当たりかなと思ってるのですが、それでもエラーが吐かれるので
一体どう書けばいいのかわからず困ってます。どなたか助言いただけないでしょうか。
ちなみに、VC++ 2005 Express Beta1 を使ってVisual C++.NET Version2003 の参考書を見ながらいじってます。
参考書には、
if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK)
と書かれてるから、きっと2003では通るんでよね。
2005と2003ではMessageBox::Showメソッドが返す値が違うんでしょうか?

46 :デフォルトの名無しさん:05/02/14 15:15:30
>>45
そのShow()の定義を調べよ。
DialogResult::OKの定義も調べよ。

47 :デフォルトの名無しさん:05/02/14 15:40:47
MessageBox::Show なんて初めて見た
.netだろうか

48 :デフォルトの名無しさん:05/02/14 16:20:49
ぐぐっても出てこないな
コーディングミスだろ
それか参考書の活字が間違ってる

49 :42:05/02/14 16:29:24
>>46
ヒントありがとうございます。

>>47
VC++ 2005 Express Beta1で.NETでプロジェクト生成していじってます。
なので.NETのクラスだと思います。

MSDNで、MessageBox::Showで検索かけてみました。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmessageboxclassshowtopic5.asp

で、C++でコードが書いてあって

String* message = S"You did not enter a server name. Cancel this operation?";
String* caption = S"No Server Name Specified";
MessageBoxButtons buttons = MessageBoxButtons::YesNo;
System::Windows::Forms::DialogResult result;

result = MessageBox::Show(this, message, caption, buttons);

if (result == DialogResult::Yes)
{
// Closes the parent form.
this->Close();
}

とあったので

if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK){ return; }

と比較してみました。
MSDNのMessageBox::Showは、4つ要素が入ってるのがまず違いますね。
何か書き足し忘れてる?と思い

50 :続きです。:05/02/14 16:30:03
if(MessageBox::Show("本当に削除しますか?", "HomeBank", "追加", MessageBoxButtons::OKCancel) != DialogResult::OK){ return; }
追加という文字列を入れてみてビルドしてみました。

が、
------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2665: 'System::Windows::Forms::MessageBox::Show' : none of the 21 overloads could convert all the argument types
stdafx.cpp: could be 'System::Windows::Forms::DialogResult System::Windows::Forms::MessageBox::Show(System::String ^,System::String ^,System::Windows::Forms::MessageBoxButtons,System::Windows::Forms::MessageBoxIcon)'
stdafx.cpp: or 'System::Windows::Forms::DialogResult System::Windows::Forms::MessageBox::Show(System::Windows::Forms::IWin32Window ^,System::String ^,System::String ^,System::Windows::Forms::MessageBoxButtons)'
while trying to match the argument list '(const char [21], const char [9], const char [5], System::Windows::Forms::MessageBoxButtons)'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

長々としたエラーがはき出せれてしまいました。

どうやら要素の数が間違ってたわけではないようです。

51 :続きです。:05/02/14 16:31:32
しょうがないので
MessageBoxButtons buttons = MessageBoxButtons::OKCancel;
if(MessageBox::Show("本当に削除しますか?", "HomeBank", buttons) != DialogResult::OK){ return; }

に変えてみた。これだと1行で記述できないなあと思いながらビルド

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(350) : error C2065: 'Mbuttons' : undeclared identifier
c:\VCNET\HomeBank\HomeBank\Form1.h(350) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(350) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(350) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

これも違うらしい。

52 :長々と申し訳ありません。最後です。:05/02/14 16:32:09
ちょっと考え方を変えてみて、定義を調べよ。だから

[C++]
public: static DialogResult Show(
String* text,
String* caption,
MessageBoxButtons buttons
);

if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK){ return; }

を比較してみた。
要素数もあってる。なにが違うのかわからない(T T)
何か見るとこ間違ってるでしょうか?もうちょっとヒントいただけるとうれしいです。

53 :43:05/02/14 16:35:14
>>48
コーディングミスですか(T T)
if(MessageBox::Show("本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK){ return; }
のコードには何も問題ないということでしょうか。
ちょっとまたいろいろ試行錯誤してみます。

54 :デフォルトの名無しさん:05/02/14 16:37:02
.netだし、
thisポインタ抜けてるし。

55 :デフォルトの名無しさん:05/02/14 16:46:05
1行にいっぱい詰め込んであると、どこが間違ってるかわかりにくいし、
戻り値の型がわからなくなる。

MSDNのサンプルの方がよさそうだな
System::Windows::Forms::DialogResult result;
これが戻り値じゃん

56 :43:05/02/14 16:48:34
>>54
新ヒントありがとうございます。
thisポインタがどんなものなのかよく理解してませんが

MSDNの
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmessageboxclassshowtopic5.asp
のC++のコードよく見てみると

result = MessageBox::Show(this, message, caption, buttons);

と、4つ要素があってそういわれてみればthisが先頭要素に入ってますね。
ああこれが抜けてたのかと思い。

if(MessageBox::Show(this, "本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK){ return;}

に書き直してビルド

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

を吐かれて失敗。

57 :続きです。:05/02/14 16:49:08
今度は
if (result == DialogResult::Yes) {
// Closes the parent form.
this->Close();
      }

の記述見つけて

if(MessageBox::Show(this, "本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel) != DialogResult::OK){ this->Close();}

に変えてみたけど

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(349) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

また失敗。

58 :デフォルトの名無しさん:05/02/14 17:05:54
C++で.netは超マイナーなのか?
そういうスレが存在しないようだ。
今から.netやるならC#のような気がする。

59 :デフォルトの名無しさん:05/02/14 17:12:26
>>55
ヒントありがとうございます。

System::Windows::Forms::DialogResult result;

result = MessageBox::Show(this, "本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel);

if (result == DialogResult::OK)
{
return;
}

に変更してビルドしてみました。

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(353) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(353) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(353) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

また失敗。

60 :続きです。:05/02/14 17:12:58
result = MessageBox::Show(this, "本当に削除しますか?", "HomeBank", MessageBoxButtons::OKCancel);
の先頭の要素のthisをのけてビルドもしてみましたが

------ Build started: Project: HomeBank, Configuration: Debug Win32 ------
Compiling...
Form1.cpp
c:\VCNET\HomeBank\HomeBank\Form1.h(353) : error C2039: 'OK_DialogResult' : is not a member of 'System::Windows::Forms::Form'
stdafx.cpp : see declaration of 'System::Windows::Forms::Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(353) : error C2039: 'OK' : is not a member of 'Form'
c:\VCNET\HomeBank\HomeBank\Form1.h(353) : error C2065: 'OK' : undeclared identifier
Build log was saved at "file://c:\VCNET\HomeBank\HomeBank\Debug\BuildLog.htm"
HomeBank - 3 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

でまた失敗。

更に、このVC++ 2005 Express Beta1は、主にLink関係のエラーの時にですが、再起動したらなぜか
ビルドが通るようになることもあったので、再起動も試してみましたが。
同じことでした。

これは結局、こっち側の記述ミスとかコーディングミスとか設定ミスに原因があるんでしょうか。
それともベータ版だけに開発環境の問題ということはないでしょうか。

61 :43:05/02/14 17:18:53
>>58
えっ?.netでC++って超マイナーなんですか?

Visual Studio 2005 Beta 入れる時にC++をダウンしようかC#をダウンしようかさんざん迷ったんです。
で、C++の方が歴史が長いわけだし、その分C++ユーザはいっぱいいるだろうと思って
C#よりもC++の方が書籍もサイトも多いだろうと思って
なにかあったときに情報収集がしやすいんじゃないかと思ってC++にしたんです。

それが、.netだとマイナーなんですか?
今からでもC#に鞍替えしたほうがベターでしょうか。
まだ VC++ 2005 Express Beta1 入れて、まだ開発環境の操作方法勉強してるぐらい初期段階なんで
C#がいいなら、またダウンしてインストールするのすごい手間と思うけど、がんばって鞍替えしようかと
思いますけど、長い目で見た場合C#のほうがかしこい選択だったんでしょうか。

62 :デフォルトの名無しさん:05/02/14 17:23:06
マイナーってかVC6と比較してインターフェースが色々変わったって
話を聞いて乗り換えられない俺。

63 :デフォルトの名無しさん:05/02/14 17:56:17
質問です。

CFileクラスを使ってファイル操作をしています。

2GBを超えるファイルを扱った際、2GB以上のポイントにシークすると例外が発生して
「無題のファイルのシークに失敗しました」と表示されます。

これを回避する方法をご教授ください。


64 :43:05/02/14 18:07:36
開発環境の問題かもしれない可能性もはっきりさせたいので

Visual C++ 2005 Betaスレでちょっと確認してみようかなと思います。

65 :デフォルトの名無しさん:05/02/14 18:20:06
すいません、初歩的な質問なんですがVC6.0でexit以外で
何か最適なプログラム終了方法ってありますか?

66 :デフォルトの名無しさん:05/02/14 18:24:01
PostQuitMessage(0);

67 :デフォルトの名無しさん:05/02/14 18:25:50
>>65
深い所から一気に抜けるなら例外投げるといいかもしれない。

68 :デフォルトの名無しさん:05/02/14 18:32:03
>>63
CFileのseekじゃ無理。
SetFilePointerを使う。

しかし俺の環境だと何故かSetFilePointerExが使えない。
何だこれ?


69 :デフォルトの名無しさん:05/02/14 18:46:47
>>68
Platform SDK Update
最新の入れてるならWINVERを適切に。

70 :デフォルトの名無しさん:05/02/14 19:22:37
>>58
スレは一応ある。
managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/l50

71 :デフォルトの名無しさん:05/02/14 21:02:15
VC++6.0(Visualstudio6.0)はWindowsXPホームエディションにインストールしても
問題なく使えますか?
OSの一部が古いのに置き換わってしまいそうで躊躇してます。
ご教授を

72 :デフォルトの名無しさん:05/02/14 22:21:57
>>71
ここはパソコン初心者板じゃないよ
インストールしておかしくなったら自分で直せるだろ
入れて自分で試せ

73 :デフォルトの名無しさん:05/02/14 23:05:41
つまんない質問ですが、外部エディタでプログラム書いてコンパイルするのって、一々プロジェクトを作らないといけないのでしょうか。

74 :デフォルトの名無しさん:05/02/14 23:58:31
VC++にてコンソールアプリケーションを作っております。
拡張子は".c"です。

malloc等で動的に確保したメモリの中身を
デバッガで見たいのですがどうしたらよいのでしょうか

ローカル変数ですと
char ss[80];
ssの中身を見たいときに
クイックウォッチに"ss"と入力すれば
ss[0], ss[1], ss[2], ・・・, ss[77], ss[78], ss[79]
の中身が一気に表示されて楽なのですが

動的に確保したメモリですと
char *str;
str = (char *)malloc(80);
クイックウォッチに"str"と入力しても
strの中身(*str)しか表示されなくて
デバッグする際に
str[0], str[1], str[2], ・・・, str[77], str[78], str[79]
といちいち入力するのが面倒で仕方ありません。

75 :デフォルトの名無しさん:05/02/15 00:20:37
>>73
コマンドラインコンパイル

>>74
メモリビュー

76 :デフォルトの名無しさん:05/02/15 01:08:23
すいません、MSFlexGridを使ったダイアログベースのDLLを作っているん
ですが、コンパイルは通るのに、実行時にDebug Assertion Failedが出て、
「occmgr.cppのライン410にエラーがある」と表示されます。

ActiveX実行に必要なAfxOleInit()と AfxEnableControlContainer()は
DLLのInitInstanceに配置しています。DLLでなくダイアログベースの
MFCアプリケーション(ActiveX有効)にするとエラーは発生しませんでした。

この点から、子ウィンドウのポインタ辺りが原因と思うんですが、occmgr.cppを
読んでもよく分からないでいます。


実行環境はVS.2003+Win2000です。CodeProjectを読んでもよく分かりませんし、
どなたかこのような症状を経験した事のある方は居られますでしょうか?

MSFlexGridを使っている方はあまり居られないかもしれませんが、
お心当たりのある方はどうぞご助言ください。



本当は.net framework使ってインターフェースで楽したかったんですけどねえ、
過去遺産の問題でmanaged C++で作れないもので・・・。

77 :デフォルトの名無しさん:05/02/15 09:32:13
>>71
一時しか使った事ないけど特に問題無かったと思う。

78 :デフォルトの名無しさん:05/02/15 09:35:07
下のプログラムでこのままだと意図した通りにファイルが出力されます。
しかし、一段目のループで y < 11 とすると、なぜかファイルに郵便屋さんが
大量に出現します!!どなたか、解明お願いします。

int x, y, count = 0;
CString ss;
CStdioFile fout;
fout.Open("Test.txt", CFile::modeCreate | CFile::modeWrite);        
for (y = 0; y < 10; y++){
    for (x = 0; x < 8; x++){                
        if (count == 16) {
            count = 0;
            ss = ",\r\n";
        }
        else if (count > 0) 
            ss = ", ";
        else 
            ss = "{";
        fout.WriteString(ss);
        ss.Format("0x%02X", count);
        fout.WriteString(ss);
        count++;
    }
}
ss = "};\r\n";
fout.WriteString(ss);
fout.Close();  

79 :デフォルトの名無しさん:05/02/15 09:52:27
>>78
郵便屋さんってなんだ?

80 :デフォルトの名無しさん:05/02/15 10:17:49
一画面に限ってのシミュレーションゲーム(仮にファイアーエンブレム)を
作ろうと思ったら、フォーム一杯にピクチャーボックスを敷き詰めるわけですか?

81 :デフォルトの名無しさん:05/02/15 10:37:00
>>80
フォーム一杯のサイズでピクチャボックス1個
ていうか、フォームに描画

82 :デフォルトの名無しさん:05/02/15 10:41:13
ユニットとかマップチップの画像をメモリに読み込んで、
フォームに描画するような処理を1マスごとにするんですか?

83 :デフォルトの名無しさん:05/02/15 10:45:58
好きにすればいい

84 :デフォルトの名無しさん:05/02/15 12:21:30
>>82
必要なら既存のライブラリを使えばいい。

85 :デフォルトの名無しさん:05/02/15 12:57:41
>>82
それをクラス化して使いまわせばいい。

86 :デフォルトの名無しさん:05/02/15 22:08:52
>>78
やってみたけど、特に問題なかったでー。

87 :デフォルトの名無しさん:05/02/15 22:26:45
>>76
あてずっぽうで。
AfxGetStaticModuleStateを使ってみるってのは如何?

88 :デフォルトの名無しさん:05/02/15 22:45:19
環境
・win2000pro sp4
・Visual C++ .NET 2003 スタンダード

ローカルフックの質問です。
ttp://www.experts-exchange.com/Programming/Programming_Languages/Cplusplus/Q_10125997.html
ttp://www.kab-studio.biz/Programing/Codian/DLL_Hook_SClass/07.html
↑を参考に自作フッククラス内にメソッドを押し込んだんですが、

>error LNK2001: 外部シンボル ""private: static struct HHOOK__ * CKeyboardHook::m_hHook" (?m_hHook@CKeyboardHook@@0PAUHHOOK__@@A)" は未解決です。
>fatal error LNK1120: 外部参照 1 が未解決です。
が出てきてしまいます。

解決方法のご教授願います。

89 :デフォルトの名無しさん:05/02/15 22:52:14
見てないけど DLL_Hook と書いてあるな

90 :デフォルトの名無しさん:05/02/15 23:01:48
HHOOK CKeyboardHook::m_hHook = NULL; とか

91 :デフォルトの名無しさん:05/02/15 23:11:33
>90
クラス外でこれをやればよかったんですね…orz
お世話かけました、ありがとうございます。

>89
一応中身はローカルフックのことが書いてありますです。

92 :76:05/02/15 23:15:16
DLL化を諦め気味ですが、とりあえず明日試してみます。
結果は後ほど。

93 :76:05/02/15 23:16:19
あ、すいません>>87さんへの返事です。↑

94 :デフォルトの名無しさん:05/02/15 23:36:16
なんか平凡なリンクエラーの模様

95 :デフォルトの名無しさん:05/02/16 05:03:00
いったん仮想画面?に描画して、画面にコピーする、
というのをほかのソースの見よう見まねでやってみたんですができません・・・
case WM_PAINT :
hDC = GetDC( hWnd );
hDC2= CreateCompatibleDC( hDC );
SelectObject(hDC2, CreateCompatibleBitmap( hDC , 600, 400) );
SelectObject(hDC2, (HBRUSH)GetStockObject(WHITE_BRUSH) );
PatBlt( hDC2, 0, 0, 600, 400, PATPAINT );
MoveToEx( hDC2, 100, 100, NULL );
LineTo( hDC2, 400, 400 );
BitBlt( hDC, 0, 0, 600, 400, hDC2, 0, 0, SRCCOPY );
DeleteDC( hDC2 );
ReleaseDC( hWnd, hDC );
return 0;
これなんですけど、何がダメなんでしょうか・・・?

96 :78:05/02/16 09:39:56
>>86
ありがとうございます。
お手数おかけしました。
出来たファイルをメモ帳で開くと、Y < 11 の時に文字化けするんです・・・
一応、改行のつもりの\r\nの箇所を\nにしたら、何故か直りました。

97 :デフォルトの名無しさん:05/02/16 10:36:14
>>95
できない、だけじゃわかんねーよ。

98 :デフォルトの名無しさん:05/02/16 10:50:08
見よう見まねで偶然できても何の意味もないよな

99 :デフォルトの名無しさん:05/02/16 12:13:25
プロジェクト全体をビルドするのじゃなくて、
一つのソースをコンパイルする方法って有りません?
コマンドラインじゃなくて。

100 :デフォルトの名無しさん:05/02/16 12:20:32
>>99
盲人?
メニューにもツールバーにもあるだろ

101 :デフォルトの名無しさん:05/02/16 13:00:10
>>95
なんでBeginPaint使わないの?

102 :デフォルトの名無しさん:05/02/16 13:43:28
>>100
ありがと!!

103 :デフォルトの名無しさん:05/02/16 18:26:12
6.0から.net2003にバージョンアップしたのですが、
6.0のころにあったClass Wizardがなくなって困っています。
関数の追加やオーバーライドはどうやったらいいのでしょうか。
直接ソースに書いてもいいんですか?

104 :デフォルトの名無しさん:05/02/16 18:37:17
>>103
関数・変数の追加 -> クラスビューの任意のクラスで右クリック
オーバーライド -> プロパティウインドウにある、雷マークの右のボタン

105 :デフォルトの名無しさん:05/02/16 18:43:53
ありがとう。
もう一つ質問ですけど、プロジェクトとソリューションの違いは何ですか?

106 :デフォルトの名無しさん:05/02/16 18:59:33
>>105
プロジェクト + プロジェクト = ソリューション

107 :デフォルトの名無しさん:05/02/16 20:40:53
質問です。
アプリケーションに新しい機能を実装するときに、
バージョンアップではなく独立性の高いプラグインを入れる方法を用いたいのですが、
アプリケーション開発にプラグイン方式を使ったことがありません。
概要で良いので、プラグイン方式ってどうやるものなのでしょうか?をお教えください。

もし掲示板では解答が面倒で、この疑問に対して良著があるのでしたらそれをご紹介願います。

108 :デフォルトの名無しさん:05/02/16 20:53:20
>>107
Susieのプラグインあたりで練習してみれば?

109 :デフォルトの名無しさん:05/02/16 20:54:08
Susie関連を参考にしてみたら?

110 :デフォルトの名無しさん:05/02/16 22:19:52
>>107
プラグインをDLLにして、サーバ側ではLoadLibrary

111 :デフォルトの名無しさん:05/02/17 00:02:59
>>110
LoadLibraryするのはクライアント側だろ。
プラグインは機能を提供する側(サーバ)なんだから。

112 :107:05/02/17 08:45:53
参考になりました!
thx!

113 :デフォルトの名無しさん:05/02/17 11:01:56
すみません。教えてください。
<略>
int a;

while(1){
cin >> a;
if(・・・・略
}

という感じでソースを書いて、ビルド&実行してみると、
数字が入力された場合は問題ないのですが、
数字以外が入力された場合永久ループとなってしまいます。
入力値を数字かどうか判断するか数字以外だとエラーとする方法はないでしょうか?




114 :デフォルトの名無しさん:05/02/17 11:27:39
>>113
標準関数でも自分で判定してもどちらでもいいと思いまする。

115 :デフォルトの名無しさん:05/02/17 12:11:07
エディットコントロールを数字専用にする

116 :デフォルトの名無しさん:05/02/17 12:22:19
質問。
誰か>115が何の積もりでレスしているのか教えてください。

117 :デフォルトの名無しさん:05/02/17 12:35:32
ES_NUMBER

118 :デフォルトの名無しさん:05/02/17 12:40:43
>>115-117
いやだから、質問者がcin使っているのにあんたらは阿呆ですか。

119 :デフォルトの名無しさん:05/02/17 14:30:42
113はWindowsアプリでエディットコントロールを使って書いたのに
うっかりしてcinを使ってしまったのだろう。

120 :113:05/02/17 15:01:47
初心者ですので、本を見ながら勉強しています。
で、最初のプログラムが
Win32 Consol Aplication
を選択して書き始めるもので、
その中でCinが出てきます。
本のとおりに書くと113のような現象となります。
無視して次に進んでもいいのですが、
気になってしょうがないので
皆様のお知恵をお借りしたいです。
対処法をもう少し詳しく教えてください。
初心者ですみません。。
よろしくお願いします。

121 :デフォルトの名無しさん:05/02/17 15:10:25
C++初心者はC++スレへ

122 :デフォルトの名無しさん:05/02/17 15:17:03
つまり、VC厨はstd::iostreamを使ったことが無いから答えられないと。

123 :デフォルトの名無しさん:05/02/17 15:28:46
C++向きの話題をわざわざここでやる意味がない。

124 :113:05/02/17 15:36:41
C++もVC++も使ったことないんですが、
この話題はC++の話題になるのですか??
VC++で書いてるのに??
ちなみにC++の板でCinの話題をみて
解決法らしきものがあったのですが、
VC++で同じようにしたらコンパイル出来ませんでした。。

125 :デフォルトの名無しさん:05/02/17 15:57:30
>>124
VC++スレはWin32API、MFC、COMやVC++自体の操作法など標準C++には含まれない物のためのスレ。
cinは標準C++の一部なのでコンパイラにVC++を使っていようがVC++スレではスレ違い。

126 :デフォルトの名無しさん:05/02/17 16:16:48
こんなわけわからん宇宙語みたいなのをよくやるよな

もっと有意義な事に時間を使えよ

頭脳土方をそんなにやりたいのかねぇ

127 :デフォルトの名無しさん:05/02/17 16:17:09
結構シビアですね、、、
多少のすれ違いでも
困って書いてるので
分かるなら教えてくれても・・・と思うのですが。。


128 :デフォルトの名無しさん:05/02/17 16:26:04
「多少違う」 ように見えるかもしれんけど、
解ってくるようであれば 「結構違う」 ことに気づくだろう。

というわけで
>>3

129 :デフォルトの名無しさん:05/02/17 17:05:41
とりあえずコード全部書け

130 :デフォルトの名無しさん:05/02/17 17:29:23
例外はスルー
スレ違いは適当なスレへ投げろ
見苦しい

131 :デフォルトの名無しさん:05/02/17 18:47:05
>>113
CPPはよく分からんので、Cの場合。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char str[BUFSIZ];
int num;

puts("数値を入力してください");

if(fgets(str, sizeof(str), stdin) == NULL)
{
puts("入力が不正です");
exit(1);
}

if(sscanf(str, "%d", &num) != 1)
{
puts("入力内容が不正です");
exit(1);
}

printf("%d\n", num);

return 0;
}

132 :デフォルトの名無しさん:05/02/17 18:55:48
いまさらだけど、VC++6.0のリソースエディタで、バージョン情報の
特定の項目(スペシャルビルド等)を削除することってできますか?

今は使ってない項目は、リソーススクリプトをテキストエディタで
編集して削ってます。

133 :デフォルトの名無しさん:05/02/17 18:59:28
>>132
右クリックで消せそう

134 :デフォルトの名無しさん:05/02/18 12:30:16
>>133
ブロック丸ごと削除されるけどな。

135 :デフォルトの名無しさん:05/02/18 19:37:37
Visual Studio 6 と .NET 2003って同じ環境にインストールできますか?
またしても問題なく動きますか?

136 :デフォルトの名無しさん:05/02/18 19:41:14
またしても、問題なく動くことも動かないこともあります。

137 :デフォルトの名無しさん:05/02/18 19:50:00
テスト用の環境ないんじゃしょうがない
運は天にまかせろ

138 :デフォルトの名無しさん:05/02/18 20:34:56
>>135
VS2003のDiscにある readme.htm を見てみると良い。

139 :デフォルトの名無しさん:05/02/19 02:14:10
質問です。VC++5.0久しぶりに駆動させたらマニュアルみれませんでした。
サポート切れ?オンラインマニュアル?
ふるいVC使ってる人、教えてください。

140 :デフォルトの名無しさん:05/02/19 02:14:42
二週間ほど込み入っていた問題がようやく解決しそうなので
記念カキコアゲ

141 :デフォルトの名無しさん:05/02/19 03:17:02
>>140
ここはおまえの日記帳じゃねぇんだよ。

142 :140:05/02/19 05:18:43
141さん、ここは僕の日記帳ですぽ

143 :デフォルトの名無しさん:05/02/19 10:31:15
日記はチラシの裏の裏へ

144 :デフォルトの名無しさん:05/02/19 17:39:05
msxml4.dllをインポートして
XMLファイルの内容をXSLファイルに記述してある形式で
CMapStringToStringにKey(タグ名)とValue(エレメント名)に格納したいと思っています
ファイルに落とすのは、普通にTransformNodeメソッド使ったあとにテキストファイルに書き込めばいいのはわかったのですが
そのテキストファイルを読むことなくIXMLDOMDocumentのメソッドを使って、
バッファーにタグ名とエレメント名を格納する方法はあるんでしょうか
おしえてください

145 :デフォルトの名無しさん:05/02/19 18:45:08
初心者にVisual C++を教えるスレ

146 :デフォルトの名無しさん:05/02/19 19:02:43
質問させてもらいます。
一つのクラス内で処理される変数の個数に限界など存在するのでしょうか?

というのも、VisualC++6.0でダイアログベースのプログラミングをしているのですが、
その中のとある一つのヘッダに変数を二つ追加したらプログラムが正常に動作しなくなりました。
その変数はただ宣言しただけなのでプログラムに直接の影響を及ぼすはずは無いのですが…
ちなみにそれとは別のヘッダに変数を追加したところ問題なく動作しました。

よろしくお願いします。

147 :デフォルトの名無しさん:05/02/19 19:32:59
宣言すればメモリを消費するよね

148 :デフォルトの名無しさん:05/02/19 21:03:10
名前がぶつかっていたりって落ちはないよな。

149 :デフォルトの名無しさん:05/02/19 21:23:07
もともと潜在的なバグがあって、変数を追加することによりメモリ配置が変わって
バグが表面化したんだろ。

150 :デフォルトの名無しさん:05/02/19 21:35:35
ヒープ上にインスタンス生成しなきゃいけないクラスとかを
いきなりフレームスタック上のメンバ変数にしたとかいうオチ。

151 :デフォルトの名無しさん:05/02/19 22:24:00
>>146
結局プログラムの構造によってそれは起きるの結論で、C++のせいじゃない。

152 :デフォルトの名無しさん:05/02/20 03:27:03
>>139
>質問です。VC++5.0久しぶりに駆動させたらマニュアルみれませんでした。
>サポート切れ?オンラインマニュアル?
>ふるいVC使ってる人、教えてください。
だれかおしえてくれ。ヘルプが参照できなくて困っているのだ...

153 :デフォルトの名無しさん:05/02/20 05:02:21
質問です。
ウィンドプロシージャ関数内でダイアログを呼び出そうとして
DialogBox(GetWindowInstance(hWnd),MAKEINTRESOURCE(IDD_MYDIALOG),
hWnd,DlgProc);
としました。すると以下のような警告が出てしまいました。
warning C4312: '型キャスト' : 'LONG' からより大きいサイズの 'HMODULE' へ変換します。
どうやらGetWindowInstance関数でインスタンスハンドルを取得した場合に出るようなのですが
その先の改善の仕方がどうにもわかりません、この警告を消す方法を教えてください、お願いします。

154 :デフォルトの名無しさん:05/02/20 05:13:19
>>152
HDDのそのセクタかなんかがぶっ壊れてんだろ。

155 :デフォルトの名無しさん:05/02/20 06:46:57
>>153
Win64への以降を睨んで、VCやWindows.hは64bitへ対応する準備がなされている。
まずWin64ではハンドル・ポインタが64bitになるのに、int/longは32bitのまま。
だからハンドル・ポインタを格納する整数型にint/longを使っているとまずいので、
そういう警告が出る。(ハンドル・ポインタ→int/longも警告が出る)

http://pc5.2ch.net/test/read.cgi/tech/1108815602/32
ハンドル・ポインタを整数に格納するときは*_PTRを使うことになっている。
すると64bit対応したと見て警告が出なくなる。

今回のGetWindowInstanceは古いものだとGetWindowLongを呼び出すマクロだが、
最近の物だとGetWindowLongPtrを呼び出すように変更されている。
PlatformSDKをアップデートしてみろ。(直接書き替えても別に悪くは無いが)

156 :デフォルトの名無しさん:05/02/20 13:54:23
>>154
>HDDのそのセクタかなんかがぶっ壊れてんだろ。
そうなの?
ヘルプみれなくなった
=オンラインマニュアル
=サポート切れ
かとおもっていたが。。。

157 :デフォルトの名無しさん:05/02/20 14:25:36
↑インストールし直せよ。

158 :デフォルトの名無しさん:05/02/20 14:34:52
パソコン初心者板か?

159 :デフォルトの名無しさん:05/02/20 15:39:21
つーかMSに訊けよ

160 :デフォルトの名無しさん:05/02/20 18:19:54
C++でCのSprintfの代わりは何? Stringと DoubleとIntegerしか使わない
んだが、IntegerをStringにして表示したい。 (Char*でもCStringでもなく)
StringにするにはConvertとかつかうの? 普通に計算したやつを表示する
だけなんだが。

161 :デフォルトの名無しさん:05/02/20 18:22:27
sprintf

162 :デフォルトの名無しさん:05/02/20 18:45:31
>>160
SprintfもStringもDoubleもIntegerもない。あー、Charもないな。

163 :デフォルトの名無しさん:05/02/20 18:47:13
debugとreleaseってどう使い分けるのですか?

164 :デフォルトの名無しさん:05/02/20 18:56:23
プロシージャって何Cじゃー?

165 :デフォルトの名無しさん:05/02/20 19:04:12
>>163
デバッグするとき->debug
リリースするとき->release


166 :デフォルトの名無しさん:05/02/20 19:11:50
デバッグするとき〜〜〜〜〜 ->自分でモンモン・かりかりする時。
リリースするとき〜〜〜〜〜 ->世の中に解き放つ時。

167 :デフォルトの名無しさん:05/02/20 19:34:04
>>165-166
どうも^^
debugフォルダの実行ファイルを実行すると、画像が表示されないのですが、releaseにしたら表示されるんですか?

168 :デフォルトの名無しさん:05/02/20 19:35:30
>>160
C++でも#include <cstdio>でstd::sprintfは使えるが、
C++っぽいやり方がお望みならstd::stringstreamを。

169 :デフォルトの名無しさん:05/02/20 19:49:21
>>167
両方とも直接実行したらほぼ同じ、debugの方が少し遅いかな。
exeのサイズもデバック情報が入っているので大きいし。

170 :デフォルトの名無しさん:05/02/20 19:52:01
>>169
では、配布するときはreleaseフォルダに画像をいれて配布すればいいのですか?

171 :デフォルトの名無しさん:05/02/20 19:53:26
+ 自分でデバックコードを書いてあると、ユーザーもそれが見えてします。
リリースする時はデバックコードが入っていない。

172 :デフォルトの名無しさん:05/02/20 19:55:01
>>170
ソフトに必要なファイルは、releaseファイルと一緒に入れる。
同じフォルダーかどうかは、設計による。

173 :デフォルトの名無しさん:05/02/20 20:04:59
>>171-172
なるほど〜分かりました。
ありがとうございました。

174 :160:05/02/20 20:49:53
>C++でも#include <cstdio>でstd::sprintfは使えるが、
>C++っぽいやり方がお望みならstd::stringstreamを。

sprintfではString変換できないでしょ。
stringstreamはできるんでしょうが、意味的に目的が違うような気がするんですが。
VBだとIntegerがObjectだからInteger.ToString()で変換できたはず。この方が
すっきりするが、Formatなどの表示変換もある。

 ManagedではIntegerのオブジェクトがあるの?




175 :デフォルトの名無しさん:05/02/20 21:00:31
>>174
std::string toString(int foo)
{
char buf[sizeof(int) * 3];
sprintf(buf, "%d", foo);
return buf;
}

176 :デフォルトの名無しさん:05/02/20 21:02:40
自分でIntegerクラス作ればいいじゃん。

177 :デフォルトの名無しさん:05/02/20 21:08:50
インテジャーってなんじゃー

178 :デフォルトの名無しさん:05/02/20 21:13:50
>>175
それだったらここまでやろうよ
template<typename T> inline std::string toString(T n)
{
  return (std::ostringstream() << n).str();
}

179 :146:05/02/20 21:19:13
お答えくださった皆さん、ありがとうございました。レス遅れてすみません。
皆さんのヒントを参考にソースを見なおしていたら間違いらしい箇所を発見しました。
今度はそこの直し方で困っていますが、とりあえず独力で頑張ってみようと思います。

本当にありがとうございました〜!

180 :175:05/02/20 21:25:00
>>178
うん、そうも思ったんだけどsprintf()の代わりと書いてたから躊躇してsprintf()仕様にしてみた。

181 :デフォルトの名無しさん:05/02/20 22:16:20
ここVCのスレだよな?

182 :153:05/02/20 22:38:40
>>155
ありがとうございます。ためになりました!!
スタートページからPlatformSDKをアップデートしようとしたんですが
更新できる項目がなにもなかったのでwindowsX.hの中を見ていたら
GetWindowInstace関数はGetWindowLongPtr関数を呼び出すように
書かれていました。
それでもこの警告が出てしまうので、実行時には今のところ問題なさ
そうだし、この警告を消すのはあきらめることにしました。


183 :デフォルトの名無しさん:05/02/21 00:15:03
>>156
>>HDDのそのセクタかなんかがぶっ壊れてんだろ。
>そうなの?
>ヘルプみれなくなった
>=オンラインマニュアル
>=サポート切れ
>かとおもっていたが。。。
フルインストールし直してもだめだ。
半年くらい前にいじったときにはヘルプみれたのになー。
こういう現象になった人いないの?

184 :デフォルトの名無しさん:05/02/21 00:45:51
>>183
ttp://www.microsoft.com/japan/msdn/vs_previous/visualc/techinfo/tips.htm
↑の下から4つ目のQの現象じゃないの?

185 :デフォルトの名無しさん:05/02/21 02:22:51
>>160
「どうしても」というわけじゃないなら可変引数の関数は
使用しない方がよろしいかと。

boost::lexical_cast, boost::format でほとんど事足ります。


186 :デフォルトの名無しさん:05/02/21 05:52:15
WindowsとUNIXの両方で走るプログラムを書いているのですが、
ところどころOS固有の処理が必要な箇所があり、プリプロセッサの定義でスイッチしているのですが、
#ifdef _WINDOWS と
#ifdef WINDOWS のどちらを使えばいいのでしょうか。どちらでも通るようなのですが。

187 :デフォルトの名無しさん:05/02/21 05:55:15
【芸スポ本スレ】強盗自白で非難をあびる優れたタレント活動自粛★99箱【窃盗】@ニュース実況+板
http://live14.2ch.net/test/read.cgi/liveplus/1108932664/

100へ向け協力Plz

188 :160:05/02/21 11:21:31
>175
やってみましたがエラーがでます。std使うための追加コードとか
ありますか?


189 :デフォルトの名無しさん:05/02/21 11:26:54
>>188
#include <string> // for std::string
#include <cstdio> // for sprintf()

190 :160:05/02/21 11:29:43
>178
やってみましたが
C++\prjVCtest\prjVCtest\Form1.h(2): error C2059: 構文エラー : ')'
C++\prjVCtest\prjVCtest\Form1.h(2): error C2065: 'T' : 定義されていない識別子です。

になります。

使ってるnamespaceは
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
です。


191 :デフォルトの名無しさん:05/02/21 11:29:44
ここC++スレだっけ?
VCスレと思ってたけど気のせいかな?

192 :160:05/02/21 11:35:12
>189
>#include <string> // for std::string
>#include <cstdio> // for sprintf()

これってCのstringのことですか? あのー質問の趣旨は
C++のString(オブジェクト?)に変換したいんですが。


193 :デフォルトの名無しさん:05/02/21 11:44:43
>>192
>>162


194 :デフォルトの名無しさん:05/02/21 11:45:18
ManagedC++スレってなかったっけ?

195 :デフォルトの名無しさん:05/02/21 11:47:01
>>194

>>70

196 :デフォルトの名無しさん:05/02/21 11:53:52
>>160 は C++ を知らずに Managed C++ をやろうとしている模様。
sprintf で編集して String に変換汁。

197 :160:05/02/21 12:13:09
>185
これベストのようですね。ありがとう。
>196
 boostのメーリングリストができるくらいだから、まともな方法がないみたいですね。


198 :デフォルトの名無しさん:05/02/21 15:05:30
.NETのStringならString::Format()で一発

199 :デフォルトの名無しさん:05/02/21 15:37:45
>>182
Win32ではGet/SetWindowLongPtrは単にGet/SetWindowLongを呼び出すマクロになっているだけだからどうしようもない

200 :160:05/02/21 15:53:56
>198
例で示して。

201 :デフォルトの名無しさん:05/02/21 15:57:39
っていうか、欲しい機能がなかったら自分で作れよ
それがC++流

202 :160:05/02/21 16:09:16
>201
 作るための最初の例を探してる。

203 :デフォルトの名無しさん:05/02/21 16:14:20
ヘルプ読めよ。サンプル載ってる。
それともサンプルが理解できないのか?

204 :デフォルトの名無しさん:05/02/21 16:28:26
.netはスレ違い

205 :160:05/02/21 16:35:14
Stringの結合はどうやるの?
MessageBox::Show ("data=" + get_str(123)); //これはエラーする

public:
String* get_str(int i)
{
return String::Format(S"{0}",__box(i));
}


206 :160:05/02/21 16:36:39
>204
えっ、.net以外にもVC++ってあるのか?

207 :デフォルトの名無しさん:05/02/21 16:40:24
>>206
スレ見つかるまでROMってろ

208 :160:05/02/21 16:44:05
以後.netも可とする。VC++なので当然だ。

209 :デフォルトの名無しさん:05/02/21 16:45:38
>>208
http://pc5.2ch.net/test/read.cgi/tech/1014486422/l50
managed C++ やろうぜ!!

210 :160:05/02/21 16:57:14
>209
 サンクス。

 別スレがあったよ。 208はキャンセルしとく。
色々ありがとさん。
 

211 :デフォルトの名無しさん:05/02/21 17:02:41
とことん他人の書いていることを読んでない香具師だなぁ。

212 :デフォルトの名無しさん:05/02/21 20:25:19
>>139 >>152 >>156 >>183
Windows XP にSP2入れなかったか?
俺もXP SP1 + VC5にSP2 入れたら見られなくなった。
だから、XP SP2 ははずした。そしたら見られるようになたヨ。


213 :182:05/02/21 21:59:30
>>199 thx!
そうだったんですか、実質的には変わってないということなんですね
移行期間か・・まぎらわしぃーですね

214 :デフォルトの名無しさん:05/02/21 22:30:03
初歩の初歩で大変申し訳ないです。

VC++自体はまだ手をつけていないのですが、いずれやってみたいなと思っています。
仮にVS.NETでWin32アプリを作ったとしても、利用側に.NET Frameworkが無いと使用できませんか??
C#は.NET Framework利用してるものなので無くてはならないとわかるのですが...

ホントにすみません・・・

215 :デフォルトの名無しさん:05/02/21 22:35:50
".NET Framework"を使用するプログラムなら必要だね。

216 :214:05/02/21 23:16:46
>>215
レスどうもありがとうございます m( _ _ )m

.NET Frameworkに含まれるクラスを使用するなら必要で、
純粋(?)なC/C++/APIを使う程度なら必要ないということですか??

217 :デフォルトの名無しさん:05/02/21 23:18:42
>>216
そうだよ。
C/C++だってCのみを使うときは*.cファイルでコンパイルできるだろう

218 :214:05/02/21 23:44:42
どうもありがとうございます。
.NET環境ない人でも利用できるソフトを作りたいな〜と思っていまして(^^

レスありがとうございました m( _ _ )m

219 :デフォルトの名無しさん:05/02/22 00:48:25
>>212
>Windows XP にSP2入れなかったか?
>俺もXP SP1 + VC5にSP2 入れたら見られなくなった。
>だから、XP SP2 ははずした。そしたら見られるようになたヨ。
サンクス!
問題解決すますた!
しかし....どういうこっちゃい!

220 :182:05/02/22 10:05:33
おはようございます
>>153の警告を消すのをあきらめるとか言っておい
てやっぱりあきらめられず色々やってました。
結局、WinUser.hというヘッダーファイルにたどり着き
そこにGetWindowLong関数が記述してあったので、
戻り値がLONGとなっていたのをLONG_PTRに書き変えて
リビルドすると警告はきれいさっぱり消えてくれました。

結果目的は達成することができました!ですが最後に質問させてください
勝手に上のようにヘッダーファイルを書き換えてしまったのですが
それによって不具合が生じることなどが考えられるでしょうか?
よろしくお願いします。

221 :デフォルトの名無しさん:05/02/22 10:10:11
それなら戻り値をLONG_PTRにキャストしてやれば良いんじゃね?

222 :182:05/02/22 10:25:03
どうもです
戻り値をLONG_PTRにキャストするとLOGN_PTRをHINSTANCEに
変換できないという旨のエラーが出てしまいました。
それと書き換えてない状態でGetWindowInstance関数が戻すの
はあくまでLONG型のデータらしくそれをキャストしても同じ旨の
警告がでるみたいです・・

223 :デフォルトの名無しさん:05/02/22 15:37:41
開発環境:Visualstudio .net 2003
症状: 「リリースビルド」でビルドし、「デバッグなしで開始」(Ctrl+F5)で起動すると
プログラムが意図したとおりに動かない。
デバッグビルドおよび、リリースビルドをデバッガ込みで起動したときは正常に動く

質問があいまいですいませんが、このような症状の原因としては何が考えられるでしょう?

224 :デフォルトの名無しさん:05/02/22 15:40:12
>>223
バグ。
起動時の作業フォルダの違いの影響もあるかな。
デバッグビルドでCtrl+f5を試してみるとか、
リリースビルドでもExplorerから起動してみるとか、
試してみるよろし。

225 :デフォルトの名無しさん:05/02/22 15:54:28
>>224
> デバッグビルドでCtrl+f5を試してみるとか、
これは正常に動きました
> リリースビルドでもExplorerから起動してみるとか、
だめだった

デバッガが使えないとつらい……
printfデバッグでがんばります。

226 :223:05/02/22 16:11:05
原因があっさり判明しました。
メンバ変数のひとつを初期化し忘れ。情けない……

227 :デフォルトの名無しさん:05/02/22 20:42:57


228 :デフォルトの名無しさん:05/02/22 20:51:57
環境が変わると動かなくなる、良くあるバグだね。

229 :デフォルトの名無しさん:05/02/22 23:32:38
SDIでプログラムを作っています
次のような機能を実装するにはどのようにすればいいでしょうか?
  SDIからメニューを選択→自分で作ったダイアログを開く

次の方法を試してみました
まずダイアログベースでCSettingDlgを作る
次に新たなSDIプロジェクトを作って,CSettingDlg.hをインクルードする
この方法ではリソースがうまくCSettingのリソースが利用できず,断念しました

230 :デフォルトの名無しさん:05/02/22 23:39:35
>>>222
GetWindowLong の代わりに GetWindowLongPtr を使ってみる?

231 :デフォルトの名無しさん:05/02/22 23:54:45
1.挿入−リソース−Dialog
2.挿入−クラスの新規作成−クラスの種類はFormクラス、クラス名適当、
  基本クラスはCDialog、ダイアログIDはさっき作ったやつのIDを

232 :デフォルトの名無しさん:05/02/23 00:10:40
>>230
Win32の場合はただのマクロだよ。

#define GetWindowLongPtrA GetWindowLongA
#define GetWindowLongPtrW GetWindowLongW
(WinUser.hより)

233 :デフォルトの名無しさん:05/02/23 00:19:38
それにしても、なんで>>232みたいなマクロがあるのかね。
おとなしくインライン関数にしてくれればいいのに……
メンバ関数の名前がその手のマクロとぶつかってちょっと悩んだ。

234 :デフォルトの名無しさん:05/02/23 00:21:12
?

235 :デフォルトの名無しさん:05/02/23 00:32:41
C言語時代の名残ではなかろうかと。

236 :デフォルトの名無しさん:05/02/23 00:45:50
>>229
ttp://mtakahashi.com/cgi.cgi?12813
マルチポストは氏ねや

237 :デフォルトの名無しさん:05/02/23 02:37:45
Edit Controlを使って,double型の数字を表示させようとすると
0.123456790123
のように必要以上に桁が多く表示されます(>_<)
0.123
程度で表示させる方法があれば教えてください



238 :デフォルトの名無しさん:05/02/23 04:57:47
_stprintf()
CString::Format()

239 :デフォルトの名無しさん:05/02/23 11:29:25
>>233
>メンバ関数の名前がその手のマクロとぶつかって
定義位置を表示させたら、そのマクロ定義してるトコロが出て
イラッとさせられる。

240 :デフォルトの名無しさん:05/02/23 17:56:03
>>220
>>199
それと221はたぶんGetWindowInstanceを一旦LONG_PTRにキャストしてから
HINSTANCEにキャストするように直せということじゃないか?

241 :岐阜:05/02/23 21:19:10
TRACE();を使いたいんだけど、
引数を照らしあわしてもそんなのないと、
コンパイルが通りません。
なにか、includeかリンクが必要ですか?

242 :デフォルトの名無しさん:05/02/23 21:20:09
>>241
MFC使ってる?

243 :岐阜:05/02/23 21:28:30
VisualStudio.net 2003ですよ。

244 :デフォルトの名無しさん:05/02/23 21:32:28
メ モ この機能は、MFC ライブラリのデバッグ環境でのみ利用することができます。

245 :デフォルトの名無しさん:05/02/23 21:38:27
Visual C++を使っている ⊇ MFCを使っている。

246 :岐阜:05/02/23 21:41:53
つまり、コンパイルを通すにはどうすればいいんですか?

247 :デフォルトの名無しさん:05/02/23 21:52:46
>>246
MFCのライブラリをリンクするようにする。
それが嫌ならprintfデバッグをやる。(もちろんstd::coutでもいい)

248 :デフォルトの名無しさん:05/02/23 22:51:08
VS2003なら、ATLに似たようなマクロがあったと思われ。

249 :182:05/02/23 23:04:13
>>240

そっか・・そうですよね!気づきませんでした
そのことをまったく考えてなかったです。
目が覚めました。ありがとうございます!

250 :デフォルトの名無しさん:05/02/24 01:59:17
岐阜を逆から読むと溥儀
恐れ多いあいしんかくら様になる!

251 :デフォルトの名無しさん:05/02/25 02:34:24
非常に基本的な質問で申し訳ないです。

VC++で新しいプロジェクトを作ると、ソースファイル、ヘッダーファイルといった名前の
フォルダが自動的に作られますよね。

こいつらの中にソースを作っても、実際にはプロジェクトフォルダの直下に
ファイルが作られていくだけです。
自分でフォルダを作成しても、そのフォルダの作成は実際には反映されていません。

フォルダの作成が自動的に反映されるようにするにはどうすればいいんでしょうか?

252 :251:05/02/25 02:35:57
書き忘れました。
環境はVisualStudio.net 2003です。

253 :デフォルトの名無しさん:05/02/25 03:18:29
>>251
ファイルの在り処としてのフォルダと、プロジェクト内での分類としてのフォルダには関連性がありません。
どうしても、ということであれば自分でマクロでも書くしかないでしょう。

254 :デフォルトの名無しさん:05/02/25 19:32:54
8BitDIBのカラーテーブル(パレット)位置教えてください。

LPRGBQUAD pColor = (LPRGBQUAD)(pBMPTop +sizeof(BITMAPFILEHEADER)+
sizeof(BITMAPINFOHEADER));
で合ってますか?

255 :デフォルトの名無しさん:05/02/25 19:38:09
それはファイルに格納されたビットマップということ?
それなら良いよ。

256 :デフォルトの名無しさん:05/02/25 21:07:31
レス違いだったらすいません。
フリーソフトを使おうとしたら下記のようなエラーが表示されるのですが
全然意味が分からないので、教えて頂きたいのですが。
宜しくお願いします。

=== Microsofi Visual C++ Debug Library ===

Debug: Assertion Failed

program:c\ program files\Ghost Tracer\Ghost Tracer.exe
File:fpreintf c
Line:56

Expression:str!=NULL

For information on how yor program can cause an assertion
failure see the Visual C++ docuentation on asserts.
(Press Retry to debug the application)

257 :デフォルトの名無しさん:05/02/25 21:23:12
fpreintf c の56行で文字列ポインターにヌルポが発生したのでもう一度デバックしろ。

258 :デフォルトの名無しさん:05/02/25 21:33:36
>257
早々のレスありがとうございます。(^_^;)
折角レスを頂いたのですが
257さんの言っている単語などがわからないので
257さんの言っていることを勉強してきます。
ありがとうございました。

259 :254:05/02/25 22:51:00
>>255 Thanks


260 :デフォルトの名無しさん:05/02/26 01:11:54
テキストファイルから特定の文字列の入った行を一行だけ
削除することは出来るでしょうか

abc
def
ghi

ってテキストファイルのdefの行を消して

abc
ghi

にするにはどうすればいいですか?


261 :デフォルトの名無しさん:05/02/26 01:18:21
>>260
abc
ghi
を出力する。

262 :デフォルトの名無しさん:05/02/26 01:47:49
>>261
すいません
意味がよくわかりません

特定の文字列defは、テキストファイルの何行目に入っているかはわかっていません
テキストファイルを読み込んでいる時に
defの行だけを消したいのですが

263 :デフォルトの名無しさん:05/02/26 02:18:11
grep -v '^def$' hoge.txt


264 :デフォルトの名無しさん:05/02/26 02:35:33
$0 != "def" {print;}

265 :デフォルトの名無しさん:05/02/26 02:43:09
質問です。

EMアルゴリズムを回してます。
「アクティブな構成」が「Win32 Debug」と「Win32 Release」の時で
結果が違うんですけどなぜでしょうか・・・。
収束するとこも違うし、Releaseだとエラーが出て止まってしまうんです。

Visual C++ 6.0、WindowsXPです。


266 :デフォルトの名無しさん:05/02/26 02:47:18
>>262
すいません

テキストファイルを読み込んでいる時にdefの行が見つかったら無視すれば如何でしょうか?

267 :デフォルトの名無しさん:05/02/26 03:28:53
>>265
>>223

268 :デフォルトの名無しさん:05/02/26 03:29:11
>>266
概出

269 :デフォルトの名無しさん:05/02/26 13:49:13
visual c++とCのborland c++ 5.5 の違いは?




270 :デフォルトの名無しさん:05/02/26 13:58:44
Visual C++:Microsoftの製品。MFCが付いてくる。Visual C++ ToolKitと称するIDE無しの無料版がある。
Borland C++ Builder:Borlandの製品。VCLが付いてくる。古いバージョン(5.5)のIDE無しの無料版がある。

271 :デフォルトの名無しさん:05/02/26 18:43:42
>>260
その一つのファイルで解決しようとするんじゃなく
もう一つファイルをオープンしてそれに反映させていけばいい


272 :デフォルトの名無しさん:05/02/26 21:11:27
ものすごい基礎的なことかと思うのですが、
VisualC++.netでプロジェクトの保存場所の履歴や、
文字列検索なとの履歴はどうやって削除できますか?
ツール→オプション→環境などをあさっても
それらしき項目が見つけることができませんでした
よろしくお願いします。

273 :272:05/02/26 21:28:38
すみません自己解決しました。
レジストリーのそれっぽいのいじったらいけました。
お騒がせしました。

274 :デフォルトの名無しさん:05/02/27 00:15:35
質問です。
CTextに表示されている文字を画面からはみ出たら改行
されるようにしたいのですが、どのように行えば良い
のか分かりません。MULTILINEとかいうプロパティを
指定すれば良いのでしょうか?

275 :デフォルトの名無しさん:05/02/27 01:45:26
CTextって .net のクラスか何か?
MSDN見たけど載ってない。@VS 2003

276 :デフォルトの名無しさん:05/02/27 09:15:40
MFCの文字を表示するためのコントロールです。
デフォルトのプロパティのまま文字表示しようとすると
表示文字がウィンドウの画面外から文字がはみ出てしま
い、文字切れしてしまいます。

これをどうにか文字がはみ出た分だけ改行させたいのです。

CButtonのコントロールではBS_MULTILINEと指定するとボタン
内の表示文字を改行表示出来ました。

Textでもそのようなオプションを探したところ見つかりません。
どなたかご存知の方おりましたらご教授お願いします。

277 :デフォルトの名無しさん:05/02/27 09:34:53
\nで改行

278 :デフォルトの名無しさん:05/02/27 09:58:45
だからCTextなんていうコントロール クラスはMFCには用意されてないっつーの。

279 :デフォルトの名無しさん:05/02/27 09:59:56
試したところ"文字1\n文字2" と指定してもうまくいきません。
表示が「文字1・文字2」となり、改行が無視されてしまいます。

280 :デフォルトの名無しさん:05/02/27 10:16:03
>>279
\r\n

281 :デフォルトの名無しさん:05/02/27 12:38:33
すいません初歩的な質問です。
visualc++ toolkit command promptとかいうのをタダでインストールしてん
ですが。このcommand promptにコードを打ち込んでいくのですか?
それとも、どこかにコードを打ち込んでそれをcommand promptを使って
callするのですか? 

282 :デフォルトの名無しさん:05/02/27 12:45:09
どっかに無料コンパイラのスレなかったかな?

283 :デフォルトの名無しさん:05/02/27 12:57:42
>>281
後者

284 :デフォルトの名無しさん:05/02/27 13:01:23
>>281
たしか cat コマンドを使って前者でも。(うる覚え。

285 :デフォルトの名無しさん:05/02/27 13:04:13
入力ファイル名をCONにすれば。

286 :281:05/02/27 13:04:56
度々、すいません。 コード書くのははnote padとかでもいいのでしょうか?


287 :デフォルトの名無しさん:05/02/27 13:06:00
今月号の日経ソフトウェアに特集はC/C++
VC++betaの使い方ものってる

288 :デフォルトの名無しさん:05/02/27 13:11:36
>>281
右も左もわからんようなら本ぐらい買え

289 :デフォルトの名無しさん:05/02/27 13:15:45
なんか右も左も分からない人用にわかりやすく
説明してるウェブサイトないかな?

290 :デフォルトの名無しさん:05/02/27 13:18:20
最適なウェブサイト↓

http://www.google.co.jp/

291 :デフォルトの名無しさん:05/02/27 13:36:42
http://www.sgnet.co.jp/c/1-2.htm

292 :デフォルトの名無しさん:05/02/28 03:26:07
Visual C++ Toolkit + Platform SDK
でプログラムを書いてるわけだが、
cl menu01.cpp でエラーが出てしまう。
なんとかしてくれませんか。

Borland C++ ではコンパイルできるのでソースはあってると思う。

環境変数↓
Set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft SDK\bin;%PATH%
Set INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft SDK\include;.
Set LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program Files\Microsoft SDK\Lib

↓つづく

293 :デフォルトの名無しさん:05/02/28 03:26:53
エラーメッセージ↓
/out:menu01.exe
menu01.obj
menu01.obj : error LNK2019: unresolved external symbol __imp__DispatchMessageA@4
referenced in function _WinMain@16
menu01.obj : error LNK2019: unresolved external symbol __imp__TranslateMessage@4
referenced in function _WinMain@16
|
<同じようなメッセージ>
|
menu01.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 ref
erenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigne
d int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
menu01.obj : error LNK2019: unresolved external symbol __imp__SendMessageA@16 re
ferenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsign
ed int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
menu01.exe : fatal error LNK1120: 14 unresolved externals

ソース(menu01.cpp)↓
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm

SDKとToolkit はデフォルトでインストール後何も触ってないです。

294 :デフォルトの名無しさん:05/02/28 07:54:51
ライブラリが見つかってません。

295 :デフォルトの名無しさん:05/02/28 09:31:38
>>293
無料コンパイラのスレ探して質問してくれ
もし見つからないなら超マイナーで誰も使ってないから
あきらめて違うコンパイラに乗り換えるのが吉

296 :デフォルトの名無しさん:05/02/28 13:28:53
cl menu01.cpp kernel32.lib user32.lib gdi32.lib
で通るはず。
いちいちlibを指定するのが面倒なら、ソースの中にpragmaで書き込んじゃえ。

297 :292:05/02/28 23:39:05
>>294-296
ありがd

>>294
そこまではわかったんだけど。

>>295
そんなスレッドありません。。。
無料コンパイラスレ。
作ったほうがいいのかな。

>>296
できたできた。
ありがとうございますです。
しかし、環境変数LIBって何のためにあるんだろ。

298 :デフォルトの名無しさん:05/03/01 10:18:08
>>297
>環境変数LIBって何のためにあるんだろ。
実行時に DLL を検索するパス。

299 :デフォルトの名無しさん:05/03/01 10:22:47
へぇー
環境変数設定してないと実行できないんだ
知らなかった

300 :デフォルトの名無しさん:05/03/01 13:23:48
教えてください、VisualC++6.0の話しですけど。。。
ダイアログアプリケーションでボタンを置いて、これが押されたときはBN_CLICKED
というメッセージが発行されてメンバ関数を追加しておけばこれがコールされますけど、
ボタンを押している状態から放した状態に移行したイベントで関数をコールしたい
ときって、どうやったらいいんでしょうか?
普通にボタンを置くと、BN_CLICKEDとBN_DOUBLECLICKEDという2つのメッセージしか
使えないと思うのですが、メッセージを追加する方法とかあるんですかね?

301 :292:05/03/01 13:32:37

Set CL=/link user32.lib gdi32.lib
これであとは通常通りにコンパイルできるYo!
関連サイト↓
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcepbguide5/html/wce50consettingclenvironmentvariable.asp

報告カキコ。
Toolkit 質問箱ができたので
そっちに逝ってきます。

302 :デフォルトの名無しさん:05/03/01 13:41:04
>>300
BN_CLICKEDって押して離したときに来ると思ったんだけど違ったかな

303 :デフォルトの名無しさん:05/03/01 17:38:33
>>301
>>300 です。
そうでした、BL_CLICKEDは放したときのイベントでしたね。
そういう意味では、私が知りたいのは押した瞬間のイベントを捉える方法です。
(押した瞬間にある処理をさせて、放した瞬間にも別の処理をさせることをしたいので。。。)
そんな関数って定義できるんですかね?

304 :デフォルトの名無しさん:05/03/01 17:39:58
>>303>>302 に対するレスでした。スマソ。。。

305 :デフォルトの名無しさん:05/03/01 18:53:35
サブクラスすれ

306 :デフォルトの名無しさん:05/03/02 02:00:07
>>303
まずクラスの新規作成で、CButtonを基本クラスとする新しいボタンのクラス
を作成する。で、クラスWizardでダイアログに張り付けたボタンをさっき作
った新しいクラスの変数として割り当てる。さらにクラスWizardでさっき作
ったボタンに関してON_WM_LBUTTONDOWNやらのハンドラを追加して中身を作り
込むと。どすか。

307 :デフォルトの名無しさん:05/03/02 10:07:47
>>306
>>303 です。
レスどうもです。
アドバイスしてもらった方法でうまくいきました。
うまく利用すると(ボタンに限らず)色々な機能を実装できそうですね。
まったく目からうろこでございます。
ちなみに、当方今までC++BuilderばかりやっててVC++はお初なもので戸惑い多々あり。
またわからないことでスレ汚しするかも知れませんが、堪忍してやってくださいませ。

308 :デフォルトの名無しさん:05/03/02 18:39:02
Microsoft Visual Studio® .NET 2002 Service Pack 1
http://www.microsoft.com/downloads/details.aspx?FamilyID=c41d8159-b42f-4d06-a797-e510494976ee&DisplayLang=ja

309 :デフォルトの名無しさん:05/03/02 19:45:37
デバッグなしで実行するとエラーでプログラム落ちるのに、
デバッガで実行すると落ちないんですけど、
考えられる可能性は何なんでしょうか。

落ちる場所を特定(デバッガ使わない状態で)して、
デバッガで追ってみたけど落ちないし、落ちると思われる要素も無かった。

前、どこかでデバッグビルドで実行する時と、リリースビルドで実行する場合、
変数の挙動が変わるとか(うろ覚え)。
そういうのが関係してくるのでしょうか...?

310 :デフォルトの名無しさん:05/03/02 20:09:18
メモリリークあるいは解放アドレスアクセス

311 :デフォルトの名無しさん:05/03/02 20:12:07
リリース版では変数が最適化されたせいで文字列リテラルに書き込もうとして落ちてるとか

312 :デフォルトの名無しさん:05/03/02 20:14:10
デバッガでアタッチしてる時と通常実行時の話か?

313 :デフォルトの名無しさん:05/03/02 20:21:37
>>309
変数に隙間作ってご丁寧に初期化までしてくれるデバッガ使ってデバッグするのはネカマだけ

314 :デフォルトの名無しさん:05/03/03 02:32:36
MFCでXP、ダイアログベースなんですが、
モーダルダイアログでいくつかのボタンとエディットボックスがあります。
ボタンにフォーカスがあって、タブ押したらフォーカスが移動するんですが(タブオーダーで順番決めてます)
キーボードの↑↓キーでも移動してしまうんです。
しかもtabstopプロパティをfalseにしてるエディットボックスにまでフォーカスが移動してしまいます。

やりたいことは↑↓でボタン間をフォーカス移動するのはもう仕方ないとして、
tabstopがfalseなエディットボックスに、移動さてたくないんですが、どんな方法がありますか?

自分の考えた拙い方法
(1)エディットボックスのフォーカスイベントで、別のコントロールにフォーカスを移動
→エディットに入力できなくなるかも?
(2)キーボードフック?とかいうもので、↑↓キーを検出してどうにかする
→むずかしそう

315 :デフォルトの名無しさん:05/03/03 04:47:54
PreTranslateMessage()で、WM_KEYDOWN/UPを捕まえて止める。


316 :デフォルトの名無しさん:05/03/03 09:07:00
>>314
グループは設定してる?
同じグループ内のコントロールはカーソルで移動できるようになってるが。

317 :デフォルトの名無しさん:05/03/03 18:52:36
プログラムというかVC++自体の質問なんですがお願いします。
リソースエディタのString Table関連の日本語がツールから設定内容まで化けるんですけど、直す方法ってありますか?
環境はXP Home Edition のSP2で、VC++.NET 2003のアカデミックバージョンです。

318 :デフォルトの名無しさん:05/03/03 19:47:30
回答へのお願い
ここはパソコン初心者板ではないから
くれぐれも失礼のないように

319 :デフォルトの名無しさん:05/03/03 20:25:18
アカデミックバージョンはSP2では不具合出るよ。
Sp1に戻せ。

320 :デフォルトの名無しさん:05/03/03 20:32:31
そうなんですか・・・今の状態じゃ直せそうにないのであきらめます;
ありがとうございました。

321 :デフォルトの名無しさん:05/03/03 23:26:40
>>319 アカデミックバージョンをSP2で使ってた・・ぃゃ、別に問題出てないからイイカ・・・?)

322 :デフォルトの名無しさん:05/03/04 07:55:07
すいません質問です。
TrackPopupMenuEX();
で作ったフローティングメニューに、
TrackPopupMenuEX();のための一連の関数呼び出し時の前以外のタイミングで
ダイナミックにメニューを追加する方法はありませんでしょうか。




323 :デフォルトの名無しさん:05/03/04 09:41:05
>>322
WM_INITMENUPOPUP

324 :デフォルトの名無しさん:05/03/05 03:08:16
このスレのほとんどの質問がWIN32APIの質問である件について。

325 :322:05/03/05 03:30:48
>>323
丁寧でわかりやすい返答、本当にありがとう御座いました。
解決しました。

326 :デフォルトの名無しさん:05/03/05 03:35:28
丁寧...

327 :デフォルトの名無しさん:05/03/05 04:08:34
   (V)∧_∧(V)
    ヽ(・ω・)ノ  フォッフォッフォッ
.     /  /
    ノ ̄ゝ


.          (V)∧_∧(V)
           ヽ(   )ノ  フォッフォッフォッフォッ
.           /  /
       .......... ノ ̄ゝ

328 :デフォルトの名無しさん:05/03/05 19:06:06
Visual Studio.Net2003なんですが、プロジェクトのプロパティをいじっていたら、
「デバッグ」でビルドした際に固まってしまうようになりました。
ブレークポイントも「?」マークになって、効果がありません。
これってどこを設定すればいいんでしょうか?

または、プロパティをデフォルトに戻す方法があれば、教えていただきたいんですが・・・

329 :デフォルトの名無しさん:05/03/05 19:11:53
再インストールとかパソコン初心者板みたいな回答が出ませんように

330 :デフォルトの名無しさん:05/03/05 19:18:24
マネージ拡張がonになっていただけでした。
スレ汚しすいません・・・


331 :デフォルトの名無しさん:05/03/05 23:39:22
質問です。
プログラム本体から派生したショートカットから(というかショートカットから)実行すると、
プログラムに判定される現在のディレクトリ がショートカットがある場所 になってしまいます。
この問題を、使う人が本体ディレクトリをぐりぐり動かしても大丈夫なように解決するにはどうすればいいでしょうか。


332 :デフォルトの名無しさん:05/03/05 23:41:01
ショートカットのプロパティ5分見てからやり直し。

333 :デフォルトの名無しさん:05/03/05 23:59:02
>>331
微妙に言ってることがわからん。
使う人が本体ディレクトリをぐりぐり動かすってなんなんだ?

334 :デフォルトの名無しさん:05/03/06 00:06:18
>>331
GetModuleFileName でなんとかきりぬける。

335 :デフォルトの名無しさん:05/03/06 01:18:05
>>331
カレントディレクトリに依存しない作りにする。
ファイルは必ずフルパスで操作すればいい。

336 :331:05/03/06 01:43:15
>>332-225
ありがとうございます。
とりあえずGetModuleFileName()で切り抜けることにします。
さらに初心者っぽい質問でもうしわけないのですが
c:\xxx\xxxx\yyy.exeという文字列が抽出されましたが、
ここからc:\xxx\xxxx(\)というように実行ファイルが存在するディレクトリへのパスを抽出するにはどうするのでしょうか?
文字列操作関数で検討していますがいまいちです。

337 :デフォルトの名無しさん:05/03/06 02:00:02
_tsplitpath

338 :デフォルトの名無しさん:05/03/06 02:05:27
>>336
PathStripPathだったか、PathRemoveFileSpecだったかとにかくPath系の
APIでがんばる。

339 :デフォルトの名無しさん:05/03/06 02:21:07
Java使いなんですが
はじめてC++をやる場合、オススメの参考書とか勉強方法ってありますか?

Cができないとダメな本なら持ってるんですが、そもそもCがわからないし
すぐC++を覚えないと会社クビになりそうだし。
環境はVC++って言ってましたが、6なのか.NETなのか不明なのが最悪。

340 :デフォルトの名無しさん:05/03/06 02:41:34
>>339
Java使いならJava使ってたほうがいいよ。
くびになる前に転職考えたほうがいいような気がする。

341 :331:05/03/06 02:43:45
>>337,338
解決しました、本当にありがとう御座いました。


342 :デフォルトの名無しさん:05/03/06 02:49:49
>>340
転職したばかりの会社での最初の仕事なんです
前の会社は倒産寸前なので逃げました

343 :デフォルトの名無しさん:05/03/06 02:56:19
漏れがC++を勉強したときはCとC++を同時に勉強していったよ。
基礎からやって飽きて流し読みしながら行き当たりばったりで。

344 :デフォルトの名無しさん:05/03/06 04:38:58
Visual Studio 2003でC++を使っています。
VC6と違って、Ctrl + Shift + '8' を押しても
エディタにタブや半角スペースといった記号が表示されません。

空白を表示させるには、どうすればよいのでしょうか。

345 :デフォルトの名無しさん:05/03/06 08:42:05
編集 -> 詳細 -> スペース(ry

346 :デフォルトの名無しさん:05/03/06 08:53:29
>>339
javaがわかるなら楽勝でしょう。最初のうちは
ちょっと混乱するだろうけどね。

というか、プロがする質問には見えないんだけど……

347 :344:05/03/06 18:38:37
>>345
できました、ありが(ry

348 :デフォルトの名無しさん:05/03/07 01:30:18
>>339
Java使いでC++になって分からない(混乱する)所と言えば
メモリ管理とかポインタ関係か・・? 最初に詰まるのは文法かも?

そもそも、Java使いと言ってるけれど・・必要十分に使いこなせてないって印象を受けたのだが・・<プロの発言に聞こえない orz

Cを知ってる方がC++の習得は早いだろうけど、無くてもC++やりながらで問題ないと思う。

てか、会社にC++の参考書なり何なり無いのか?
とりあえず、明日会社で上司や先輩に相談して書籍を薦めて貰うのが良いかと

349 :デフォルトの名無しさん:05/03/07 11:34:37
>>339
取りあえず林 晴比古の入門書でも読んだら?

350 :デフォルトの名無しさん:05/03/07 12:45:39
VC6.0 Pro なんですが、以下のソースがコンパイル通らなくて困っています。

#include <stack>

typedef std::stack<long>STACK_TYPE;
class CHoge
{
STACK_TYPE m_stack;
};

スタックを扱いたいのですが、typedef のところで
「error C2039: 'stack' : 'std' のメンバではありません。」となってしまいます。
どう記述すればいいのでしょうか。宜しくお願いします。

351 :デフォルトの名無しさん:05/03/07 14:03:52
typedefの所が悪いんじゃなくて、それより上が悪いんじゃないの?
他の #include が影響してるとか。

ちなみに、私の環境では通った。

352 :350:05/03/07 15:31:54
>>351
どうもありがとうございます。
もうちょっと調べてみます。

353 :デフォルトの名無しさん:05/03/07 22:34:33
今ね、Doc/View無しのMDIアプリ作ってるんだけどなんか変だ。

354 :デフォルトの名無しさん:05/03/08 12:31:28
vc++にマーカーのような機能はありませんか?
ある行に印をつけて置いて、別の所に移動した後、
すぐにそのチェックした場所に戻るような機能が非常に欲しい。
エディタ

355 :354:05/03/08 12:33:45
ブックマーク発見。

356 :デフォルトの名無しさん:05/03/08 17:25:44
char[10]の配列に入った数値をint型にしたいのですが、出来るのでしょうか?

357 :デフォルトの名無しさん:05/03/08 17:55:12
>>356
atoi()

358 :デフォルトの名無しさん:05/03/08 18:40:03
>>357
char[10]の配列に入った文字列
ではなく
char[10]の配列に入った数値
だから違うのではなかろうか?

359 :デフォルトの名無しさん:05/03/08 18:40:27
エディットボックスコントロールを、"複数行"・"改行を許可"に設定して、
プログラム側からエディットボックスに文字を書き込んでいます。
XPで動作させると思った通りに動くんですが、
2000で動かすと改行するときに"・"がついてしまいます。
改行自体はできるのですが、行末に"・"がつくのが見苦しいと感じています。

どのようにしたら、"・"が取り除けるでしょうか。
ご存じの方いましたら、教えてください。

環境:Visual C++ 6.0, Windows2000

360 :デフォルトの名無しさん:05/03/08 18:45:35
>>359
改行コード何にしてます?

361 :359:05/03/08 18:49:10
>>360
\nを使っています。

362 :デフォルトの名無しさん:05/03/08 18:57:31
0D 0A で。

363 :デフォルトの名無しさん:05/03/08 20:07:24
\r\n

364 :デフォルトの名無しさん:05/03/09 18:32:34
環境 Microsoft Visual C++ .NET、WindowsXP Pro+サービスパック2です。
http://support.microsoft.com/default.aspx?scid=kb;ja;841226
これの、『Microsoft Visual C++ のプロジェクトを使用して C アプリケーションを作成する』
以降は再現出来ました。しかし、
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
これをコピペして、コンパイルすると、
fatal error C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
と、エラーになります。どうしたらいいでしょうか?

365 :デフォルトの名無しさん:05/03/09 18:33:45
>>364
プリコンパイル済みヘッダを検索しなきゃいい

366 :364:05/03/09 18:41:00
>>365
>プリコンパイル済みヘッダを検索しなきゃいい
どこをいじれば、プリコンパイル済みヘッダを検索しないようになりますか?

367 :デフォルトの名無しさん:05/03/09 18:48:06
>>366
プロジェクトの設定。

368 :364:05/03/09 18:50:59
http://rararahp.cool.ne.jp/vc/vctips/build.htm
ここを見ると、
これを直すには、「プロジェクト」→「設定」→「C/C++」のプリコンパイル済みヘッダーにて
プリコンパイル済みヘッダーを使用しない、を選ぶ。
ってあるけど、俺の環境には、「プロジェクト」の中に「設定」って設定は無いのよね。

369 :367:05/03/09 18:55:30
>>368
あぁすまん、プロジェクトメニューの一番下にある「なんとか」のプロパティだね。
まさかその程度のメニューも追えないほど終わっていると思わなかったから書きそびれたよ。

370 :364:05/03/09 18:56:26
つか、「プロジェクト」→〜〜のプロパティーにありました。
どうも有り難うございます。

371 :デフォルトの名無しさん:05/03/09 18:57:01
ジョイパッドの検知するAPIと、
ジョイパッドを押している事にするAPI(SendMessageみたいな)は何ていうやつですか?

372 :デフォルトの名無しさん:05/03/09 19:08:18
ゲーム製作板へ

373 :364:05/03/09 19:50:43
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szClassNme[] = "ウィンドウクラス・ネーム";

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,
LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS myProg;
if (!hPreInst) {
myProg.style =CS_HREDRAW | CS_VREDRAW;
myProg.lpfnWndProc =WndProc;
myProg.cbClsExtra =0;
myProg.cbWndExtra =0;
myProg.hInstance =hInstance;
myProg.hIcon =NULL;
myProg.hCursor =LoadCursor(NULL, IDC_ARROW);
myProg.hbrBackground =GetStockObject(WHITE_BRUSH);
myProg.lpszMenuName =NULL;
myProg.lpszClassName =szClassNme;
if (!RegisterClass(&myProg))
return FALSE;
}


374 :364:05/03/09 19:51:09
hWnd = CreateWindow(szClassNme,
"猫でもわかるプログラミング",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}


375 :364:05/03/09 19:54:07
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
お目汚しすみません。ここからのコピペです。これをコンパイルすると、
sample01.cpp(20) : error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
sample01.cpp(43) : warning C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。

と、エラーになります。 どうしたらいいでしょうか?

376 :371:05/03/09 19:54:49
どっちに書き込もうか迷ったんですけどね・・・
すいませんでした じゃああっち行ってきます

377 :デフォルトの名無しさん:05/03/09 19:56:03
>>375
http://www.kumei.ne.jp/c_lang/setvc.htm
ここの蛇足読め。
ようするにキャストすればいいだけ。

378 :デフォルトの名無しさん:05/03/09 20:16:32
>>364

リンク先があるならコピペすんなよ


明示的にキャストしろって言われてるんだから、キャストすれば良い。

GetStockObject(WHITE_BRUSH);
 
(HBRUSH)GetStockObject(WHITE_BRUSH)


return (msg.wParam);
 ↓
return ((int)msg.wParam);


379 :364:05/03/09 20:18:46
>>377
>ようするにキャストすればいいだけ。
すみません。 
http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm
これを出発点にしようと思ってるんですが、ここのドコをどういじったらいいでしょうか?

380 :364:05/03/09 20:19:43
>>378
おお、有り難うございます。試してみます。

381 :デフォルトの名無しさん:05/03/09 20:26:59
ついでに言うとstatic_castとreinterpert_castも覚えておいてほしい。

382 :364:05/03/09 20:31:34
>>378
ご指導の様に書き換えると、以下のミスになりました、
更なるご指導お願いします。

LIBCD.lib(crt0.obj) : error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。
Debug/sample01.exe : fatal error LNK1120: 外部参照 1 が未解決です

383 :デフォルトの名無しさん:05/03/09 20:44:21
コンパイルの仕方が悪い

環境が判らないと、それしか言えない。

384 :364:05/03/09 20:50:20
>>383
そうですか、じゃネコの所は諦めます。
http://support.microsoft.com/default.aspx?scid=kb;ja;841226
これはクリア出来たんですが、次はドコに行ったらいいでしょうか?
環境はVisual C++ .NETです。

385 :364:05/03/09 20:52:37
最終的には、SHBrowseForFolder、FindFirstFile、FindNextFile、
FindClose、CreateFileを使いこなしたいんです。

386 :デフォルトの名無しさん:05/03/09 20:53:54
多分プロジェクトが、
WIN32コンソール・プロジェクトになってるのかと。
ウィンドウプログラムはWIN32プロジェクトで作らないと。

387 :364:05/03/09 20:56:31
>>386
>WIN32コンソール・プロジェクトになってるのかと。
お、鋭い。
http://support.microsoft.com/default.aspx?scid=kb;ja;841226
これのやり方でWIN32コンソール・プロジェクトにしていました。
やり直してみます。

388 :デフォルトの名無しさん:05/03/09 21:00:35
とりあえず、IDEを使ってる物として、
コンソールとウィンドウを切り替えるのは、
構成プロパティ→リンカ→システム→サブシステムを
"Windows (/SUBSYSTEM:WINDOWS)"にすればいい。

389 :364:05/03/09 21:08:48
つか、無事コンパイル&実行、出来ました。
教えてくれた皆さん有り難うございました。感謝します。

390 :364:05/03/09 21:16:41
調べてみたらばそうなってました。 有り難うございます。 >>388

391 :デフォルトの名無しさん:05/03/11 01:01:07
>>372
関係ないだろ
ゲームプログラム板じゃねーんだぞゴルァ

392 :デフォルトの名無しさん:05/03/11 02:49:19
Win32 Debugではちゃんと動いてたのにWin32 Releaseにしたらちゃんと動かなくなる、なんてこと普通あるの?

393 :デフォルトの名無しさん:05/03/11 02:52:49
珍しい事じゃない。

394 :デフォルトの名無しさん:05/03/11 05:23:09
コンパイルオプションもリンクオプションも違うし
変数の初期化のされかたも違う。
Release側の設定をDebug側に写してやってみ。


395 :デフォルトの名無しさん:05/03/11 08:05:12
>>392 のようなことがあって、debugが大変だったな。最近ではもっぱら Release Mode だよ。
逆に Release ではOK、しかし Debug では落ちたり、というのも結構あるのかな?


396 :デフォルトの名無しさん:05/03/11 09:35:34
>>395
あるねぇ・・・・。

397 :デフォルトの名無しさん:05/03/11 10:03:35
要はプログラムの質が低いと。

398 :Rubyist!:05/03/11 10:53:08
そろいも揃って阿呆ばかり

399 :デフォルトの名無しさん:05/03/11 19:53:52
>>392
Debugで動くのにReleaseで動かない状況っていうのは、
90%以上の確率で初期化してない変数を利用している。

400 :デフォルトの名無しさん:05/03/11 20:01:58
5.0ってコード入力サポート機能ないんだな。
どうしよう。もうだめだ。

401 :デフォルトの名無しさん:05/03/11 21:22:12
入力サポートって言っても
頭から補完してくれるわけじゃないから
全然ないよりはあった方がいいかなと言う程度

402 :デフォルトの名無しさん:05/03/11 23:06:03
VC2005βを使えばいいじゃない。

403 :デフォルトの名無しさん:05/03/12 01:23:17
2005に比べたら2003も嫌になる

404 :デフォルトの名無しさん:05/03/12 14:42:37
マウスの座標取得する関数思い出せない。

405 :デフォルトの名無しさん:05/03/12 14:58:36
GetCursorPos

406 :デフォルトの名無しさん:05/03/12 17:52:59
事前に指定した座標を自動的にクリックするプログラムを書きたいのですが、
クリックを発生させるAPIが見つかりません(涙)。
ご存知の方教えてくだされ。
環境はVisualC++ 6.0です。

407 :デフォルトの名無しさん:05/03/12 18:03:27
鮮度めっせーじかぽすとめっせーじでいいのでは?

408 :デフォルトの名無しさん:05/03/12 18:03:27
mouse_event?

409 :デフォルトの名無しさん:05/03/12 19:29:44
メインウィンドウにの背景に画像を表示させて、
その上にボタン等のコントロールを配置、
というインターフェースを実装しようとしています。

が、WM_PAINTに画像表示コードを書くと、
ボタンの上に画像がかぶさって、見えなくなってしまいます。
うまいこと、画像の上にボタンを表示させたいのですが、
どのようにすべきなのでしょうか。

ウィンドウ、コントロール等はCreateWindowの手書きです。

410 :デフォルトの名無しさん:05/03/12 19:33:51
それはアルファチャネルを考慮したウインドウかな?

411 :デフォルトの名無しさん:05/03/12 19:41:02
いえ、別段考慮していません。

412 :デフォルトの名無しさん:05/03/12 19:56:27
XYZオーダー考慮すれば良いだけ

413 :デフォルトの名無しさん:05/03/12 20:39:39
>>409
WS_CLIPCHILDREN

414 :409:05/03/12 22:06:55
>>413
ありがとうございます。
期待通りの動作になりました。

415 :デフォルトの名無しさん:05/03/12 23:21:38
 Visual C++といえどもメニューやダイアログボックスはリソースエディタで
VBみたいに編集して作るのが普通なんですか。

416 :デフォルトの名無しさん:05/03/12 23:27:04
気に入らないならダイナミックに作ってください

417 :デフォルトの名無しさん:05/03/13 03:11:19
ウィンドウの形状を指定してウィンドウのサイズを取得する関数教えてください。
〜Adjust〜みたいな名前だったような気がします。

418 :デフォルトの名無しさん:05/03/13 05:40:50
AdjustWindowRectEx ?

419 :デフォルトの名無しさん:05/03/13 15:16:33
>>418
それ!
サンクス

420 :デフォルトの名無しさん:05/03/13 19:00:43
コードの折り畳みをコントロールしたいんですがいい方法ありませんか?
--- hoge.cpp ---
#include "a.h"         ) コード1
#include "b.h"         )
/*                 ]
  非常に長い行のコメント ] コード2
*/                ]
int hoge()            }
{                  } コード3
 // 省略            }
}                  }
というファイルがあるとき#includeとint hoge()だけ残して折り畳みをしたいんですが
実際折りたたもうとするとコード1とコード2は同時に折りたたまれてしまいます。
やりたいのはコード2だけを折りたたみたいのです。
コード1とコード2の間にvoid dummy(){}というコードを入れることによって対処してますが
何か違うような気がします。
知恵を貸してください。

421 :デフォルトの名無しさん:05/03/13 19:24:08
「折り畳み」を定義してくれ

422 :420:05/03/13 20:15:09
>>421
通じなかったかorz
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vsintro7/html/vxtskoutliningcode.asp
これの+とか...が折り畳まれた状態です。
>>420を折り畳んで
--- hoge.cpp ---
+[...]
#include "a.h"
#include "b.h"
+[...]
int hoge()
{
 // 省略
}
という風にしたい。
実際は
--- hoge.cpp ---
+[...]
int hoge()
{
 // 省略
}
という状態になってコメントとincludeがまとめて折り畳まれてしまう。

423 :デフォルトの名無しさん:05/03/13 21:50:16
>>420,422
.NETスレいったほうがいいと思うよ。

424 :デフォルトの名無しさん:05/03/13 21:59:11
へたれたIDEなんぞ使わずに、まともな折り畳み機能のあるエディタを使えって話かな?
つーか、別に気にするほどのことかいや。

425 :デフォルトの名無しさん:05/03/14 00:30:36
縮めたいところを選択して

右クリック -> アウトライン -> 選択範囲を非表示

じゃあかんの?

426 :デフォルトの名無しさん:05/03/14 03:25:33
VC.netってどうやって*.libライブラリのリンクするんですか(?_?)/
そんな項目が探してもみつからない・・・

427 :デフォルトの名無しさん:05/03/14 03:48:17
>>426
ソリューションエクスプローラでプロジェクト名を右クリック
リンカ、入力、追加の依存ファイル

428 :420:05/03/14 10:03:46
>>425
それだとタブ(ファイル)を閉じただけで非表示した場所を忘れてしまうんだよね。

>>423-424
どうもできないっぽいしあきらめます。
スレ微妙に違ってスマソ。


429 :デフォルトの名無しさん:05/03/14 10:12:19
そんなにしばしば折り畳んでしまいたいような情報なら捨ててしまえばいいのに。

430 :420:05/03/14 12:22:54
>>429
Doxygenに使ってるからあかんのだ。

431 :デフォルトの名無しさん:05/03/14 14:04:17
ゲームスレみたいな所なのでここで質問。
RPGやパズル、シミュレーションなどで、
独特なキー入力(十字キー)のやり方がありますよね。
キーを軽く押したら、1マス動いて、
しばらく押しっぱなしにしたら、そのままスムーズに押した方向へカーソルが
動くやつ。あれはどう実装すればいいのでしょう?
できればアルゴリズム or コードでお願いします。

432 :431:05/03/14 14:12:52
誤爆。スミマセン。

433 :デフォルトの名無しさん:05/03/14 14:14:24
>>431
アルゴリズムも何も
>キーを軽く押したら、1マス動いて、
>しばらく押しっぱなしにしたら、そのままスムーズに押した方向へカーソルが動く
をそのまんまコードにすればいいんだけど。

434 :デフォルトの名無しさん:05/03/14 14:42:13
キーが押されてる時間を見て、
押された時と、一定時間後だけ動かすようにすればいい。

435 :デフォルトの名無しさん:05/03/14 14:43:47
>>433
>431はDirectXスレで聞いてますから。

>>430
Doxygenなら尚のこと、別ファイルにすればいいのに。

436 :デフォルトの名無しさん:05/03/14 20:23:44
Visual C++ .NET Standard Version 2003 アカデミックパック
↑を購入しようと思うのですが、何か制限やアクティベートの必要はあるのでしょうか?

437 :デフォルトの名無しさん:05/03/14 22:24:03
>>436
Spoke買っとけ

438 :デフォルトの名無しさん:05/03/14 23:14:05
>>427
うおー。ありがとございました。

439 :デフォルトの名無しさん:05/03/15 00:31:54
>>436
アクチが必須
学生証もいるような

440 :デフォルトの名無しさん:05/03/15 02:25:49
Visual Studio .NET 2003を入れたのですが、
Visual Studioからでなく、Visual C++を一発で起動する
ショートカットを作りたいのですが、どうすればいいのですか?

441 :デフォルトの名無しさん:05/03/15 02:30:29
nmake.exeでも起動するようにバッチファイルでも作れば?

442 :sage:05/03/15 18:22:12
なるほど。

443 :デフォルトの名無しさん:05/03/15 19:28:07
VC++で作成したダイアログが、ある時を境に一回り小さく表示されるようになって
しまいました。
コントロールもフォントも全て約3/4のサイズで表示されます。
リソースビューを開いた段階で既に小さくなっています。
同じソースを使用しても他のマシンでは正常に表示されるので、恐らく描画用の
DLL(?)が何かの拍子に置き換わってしまったのではないかという気がしています。

お心当たりのある方がいらっしゃいましたらご教示下さい。
宜しくお願い致します。

444 :デフォルトの名無しさん:05/03/15 19:39:40
パソコン買い換えれば無問題
くだらない質問は迷惑です

445 :デフォルトの名無しさん:05/03/15 19:45:21
>>443
画面解像度を上げただけじゃね?

446 :443:05/03/15 19:54:45
>>445
いえ、そういう訳ではなく、元々800×600[px]のサイズだったものが600×450[px]くらいに
表示されています。
それに合わせてフォントも約3/4になっているので、ぱっと見は違和感がないのですが、
よく見るとバランスがおかしいです。

447 :デフォルトの名無しさん:05/03/15 20:12:55
ダイアログに合わせてフォントサイズが変わったんじゃなくて
フォントサイズに合わせてダイアログが変わったのだろう

448 :デフォルトの名無しさん:05/03/15 20:21:21
VC++.net2003なんですが
インクルードする時、stdio.hならインクルード出来るんですが
iostream.hでのインクルードが出来ないんですがどうしたら
いいですか?^^;

449 :デフォルトの名無しさん:05/03/15 20:22:29
#include<iostream>

450 :443:05/03/15 21:12:49
>>447
故意にフォントサイズを変えたりはしていません。
閉じてまた開いたら勝手に変わっていたといった感じです。
見直してみたら、全てのフォントが変わっていた訳ではありませんでした。
描画用のDLLの置き換わり(?)などによる現象ではないということでしょうか・・?

451 :デフォルトの名無しさん:05/03/15 21:25:17
>>450
OSの問題の可能性が高い。
本当にVCの問題なのかはっきりさせてから質問し直した方がいい。

452 :デフォルトの名無しさん:05/03/15 21:35:39
>>443
98系かNT系か晒したら?

453 :デフォルトの名無しさん:05/03/15 22:24:58
>リソースビューを開いた段階で既に小さくなっています。
だから、>>447に書いてあるじゃん
コントロールじゃなくてダイアログそのもののフォントを変更してしまったんだよ。
リソースエディタでダイアログのプロパティを見ると
フォントを設定出来るところがあるでしょ。そこでフォントのサイズを
変更すれば、設定したフォントに合わせてダイアログのサイズも変わるよ。
>それに合わせてフォントも約3/4になっているので
9ptを8ptにしたとか、まさにそういうこと。違うって?
じゃあ、もう一つ教えよう。リソースの種類が日本語になっているか他の
言語になっているか確認しろ。リソースの言語を変更するとフォントも
変わるよ。

454 :デフォルトの名無しさん:05/03/15 23:28:50
VS2003pro使ってるんですが
Win32のメインウィンドウだけはリソースエディタみたいなので
ビジュアルにGUIを設計できないんですか?

455 :デフォルトの名無しさん:05/03/15 23:32:14
>>454
もちつけ、VCプロジェクトで何を選んだらこうなったをいわないと
わからん

456 :455:05/03/15 23:37:35
>>455
Win32プロジェクト->Win32
です

457 :デフォルトの名無しさん:05/03/15 23:43:55
>>456
ごめん、初めて使ったが、できないみたい.
フォームアプリケーション以外は無理だな

458 :デフォルトの名無しさん:05/03/16 00:29:45
新たにダイアログを作ってメインウィンドウのクライアント領域に貼り付ければ
似たようなことはできる。

459 :デフォルトの名無しさん:05/03/16 01:15:40
ふつーはメインウィンドウを不可視で作って
代わりに一つ目の子ウィンドウをメインっぽく使う


460 :デフォルトの名無しさん:05/03/16 02:25:35
デバッガでライトアクセスブレークは設定できないのでしょうか?
VisualStudio.Net 2003を使っています。


461 :443:05/03/16 03:56:30
>>451>>452
なるほど、OSの問題の可能性ですか・・
ちなみに今使ってるOSはXPのSP2です
しかし昨日までは問題なく表示されていましたし、現時点で正しく表示されるマシンも
SP1だったり2だったりしますが、全てXPです

462 :デフォルトの名無しさん:05/03/16 09:13:59
>>451
だから、ダイアログのプロパティでフォントの設定が変わっていないか確認しろってば。

463 :443:05/03/16 14:43:05
>>447>>451>>453>>451、他

画面のプロパティやダイアログのプロパティを見ても元々設定したまま
だったので途方に暮れていましたが、
コントロールパネル>フォント
を見てみたら怪しいファイルが幾つか紛れていたので、削除したところ
元通りになりました。

フォント名のところに(#Set6)という風に書かれていたので、推測ですが
画面のプロパティで設定したものよりも優先されるシステムフォントのような
位置づけのフォントだったのではないかと思います。
※#Set6というのはうろ覚えです。またおかしくなったら怖いので入れ直して
 いません・・。

どうも有難うございました。

464 :デフォルトの名無しさん:05/03/16 23:00:40
>>454-459
つか、CFormView

465 :デフォルトの名無しさん:05/03/17 00:17:54
>>464
MFCじゃんか
死ねよカス

466 :デフォルトの名無しさん:05/03/17 02:00:19
VC++2003のデバッガなんですが
何らかの原因で実行行を指すカーソルやブレークポイントが
ずれて表示されてしまう現象がでます。
これはどんな原因でなってしまうのでしょうか?
ソリューションのリビルド等試しても直らないので
デバッガが非常に使いにくくて困っています…。

467 :デフォルトの名無しさん:05/03/17 02:01:33
最適化が掛かってしまってるとか。

468 :デフォルトの名無しさん:05/03/17 02:18:34
>>466
実行してからソースを修正してもずれることがある。

469 :466:05/03/17 02:20:28
>>467
設定はデフォルトから弄ってないです。
先ほど、プロジェクトを一回消去して作り直したのですが
直りませんでした…。

470 :デフォルトの名無しさん:05/03/17 02:25:25
よもやReleaseビルドじゃあるまいな。

471 :デフォルトの名無しさん:05/03/17 02:31:12
>>470
いえ。Debugビルドです。
昨日まで何ともなかったんですが、気づいたらずれてました。

472 :466:05/03/17 02:51:01
今、直りました。
変なコードでも混入したのかと思い、一度別のテキストエディターにコピーしてから
VCにコピーしなおしてみたらずれなくなりました。

473 :デフォルトの名無しさん:05/03/17 17:50:34
実はコンパイルしなおせばいいだけだったとかね。

474 :466:05/03/17 21:47:09
何となく予想がついたので確認してみたところ再現出来ました。
ソースコードにCR+LFとCRのコードが混ざっていたのが原因みたいです。
VSのエディターはにCR+LFとCRどちらでも改行表示されるのですが
デバッガーのカーソルはCR+LFのコードしか見ていないので実際の位置と
ずれてしまったようです。

昔のHELPファイルからAPIの引数をコピペしたときにCRだけのコードが混ざったようです。
デバッガーがCR+LFしか見てくれないなら
エディタ側でCR+LFに変換しくれてもいいと思うのですけどね…。

475 :デフォルトの名無しさん:05/03/18 07:00:07
勝手なことされちゃ困る

476 :デフォルトの名無しさん:05/03/18 09:42:02
変換されるのが普通だろ。
Microsoftの改行仕様なんだから。

477 :デフォルトの名無しさん:05/03/18 10:08:20
LFだけの場合も変換しないのはUnixでリビジョン管理をしていると助かる。
しかし、VisualStudio内で改行してしまうとCRLFになってしまうから、
結局フィルタリングする羽目になる。

478 :デフォルトの名無しさん:05/03/20 13:26:28
質問です

VC++2003のには、変数の読み書きを監視するウォッチポイント
のような機能はないのでしょうか?

あとメモリの表示も各進数でしか表示できないのですが
指定した構造体で表示したりできないのでしょうか?







123 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)