★初心者にVisual C++を教えるスレ★ Part26at TECH
★初心者にVisual C++を教えるスレ★ Part26 - 暇つぶし2ch2:デフォルトの名無しさん
07/04/12 23:28:11
Part25 スレリンク(tech板)
Part24 スレリンク(tech板)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板)
Part09 スレリンク(tech板)
Part08 URLリンク(pc5.2ch.net)
Part07 URLリンク(pc5.2ch.net)
Part06 URLリンク(pc5.2ch.net)
Part05 URLリンク(pc5.2ch.net)
Part04 URLリンク(pc5.2ch.net)
Part03 URLリンク(pc5.2ch.net)
Part02 URLリンク(pc3.2ch.net)
Part01 URLリンク(pc3.2ch.net)

3:デフォルトの名無しさん
07/04/12 23:29:27
【関連スレ】
■MFC相談室 mfc17d.dll■
スレリンク(tech板)l50
Win32API質問箱 Build48
スレリンク(tech板)l50
鬱だ氏のう DirectX (Part 16)
スレリンク(tech板)l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
スレリンク(tech板)l50
C++相談室 part55
スレリンク(tech板)l50
C/C++の宿題を片付けます 80代目
スレリンク(tech板)l50
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
スレリンク(tech板)l50

【関連サイト】
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
MSDN ライブラリ ※変更された
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com) (2005のことはこっち)
Platform SDK Update ※変更された
URLリンク(www.microsoft.com)
Google
URLリンク(www.google.co.jp)

4:デフォルトの名無しさん
07/04/12 23:30:00
【このスレの前身 VisualC++相談室 過去スレ】
part 1 URLリンク(piza.2ch.net)
part 2 URLリンク(piza.2ch.net)
part 3 URLリンク(piza2.2ch.net)
part 4 URLリンク(pc.2ch.net)
part 5 URLリンク(pc.2ch.net)
part 6 URLリンク(pc.2ch.net)
part 7 URLリンク(pc.2ch.net)
part 8 URLリンク(pc.2ch.net)
part 9 URLリンク(pc5.2ch.net)

5:デフォルトの名無しさん
07/04/12 23:31:17
以上、前スレ997でした。

>>前スレ998-1000
ありがとうございました。

6:デフォルトの名無しさん
07/04/13 00:03:01
1乙

7:前987
07/04/13 01:54:08
関係ありそうなとこにはvolatileつけましたが一緒でした
変数の初期化はしてあると思うのですが
もう一度確かめてみることにします
CEventと変数では同期をとるのになにか違いがあるのですか?
大分前に同じと言われたような

8:デフォルトの名無しさん
07/04/13 08:41:59
>>7

変数だと
たとえばaが0以外になると次の処理に進む。
while(true) {
if( a != 0 ) break;
Sleep(100);
}
最適化されて
if( a == 0 ) {
while(true) {
Sleep(100);
}
}
になってしまうことないようにvolatile使うんじゃないの。
でも俺は最適化とvolatileが上手く機能するか調べたことない。

同期イベントなら関数コールして調べるので前期のような最適化はかからない。

また、上記だと1秒間に10回aを調べる。
aの値が変化しても反応が最大で100ミリ秒遅れる。
かといってSleepを減らすとこの空回りするループにCPU処理を使ってしまい無駄。

9:デフォルトの名無しさん
07/04/13 08:47:34
>>8

以下のようにすれば最適化はされないはず。
これでも駄目なら別の原因?

//宣言のみ
bool check();

void thread()
{
while(true) {
if( check() ) break;
Sleep(100);
}
......
}

//threadの後または別のファイルに
//checkがあれば最適化不可能だろう
bool check()
{
return a != 0;
}

同期イベントならループにしたりSleepつけなくていい。

10:デフォルトの名無しさん
07/04/13 09:58:53
>>7
> CEventと変数では同期をとるのになにか違いがあるのですか?
・同時に複数のスレッドから変数を変更する可能性
・リードする側がチェック直前/直後で変数が書き換わる可能性(それで動作が異なってしまう場合)
等、気をつける必要があると思。

11:デフォルトの名無しさん
07/04/13 12:07:46
VisualC++ 2005 Expressを使用しています。使用歴は1週間だけです。
UNIXのプログラムにWindowsのガワをつけたプログラムの作成をして配布しようと思っている
のですが、配布の段階でつまずいてしまいました。

プログラムはWindowsフォームアプリケーションでCLIに依存しています。
OSはWindows Vista x64です。
インストーラの作成を行いたいのですが、その方法が分かりません。
私が検索してたどりついたのは以下のところまででした。
お力をお借りできないでしょうか。

1.MSDNで
URLリンク(msdn2.microsoft.com)(VS.80).aspx
にあるように「その他のプロジェクトの種類」を行おうと思ったのですが、見当たりませんでした。
「Visual Studioにインストールされたテンプレート」と「マイテンプレート」だけでした。
2.ヘルプを参照するとプロジェクトのプロパティで「ビルド」を選択すると必須コンポーネントが
選択できるということでしたが、そのような項目はみあたりませんでした。
(Visual C#には「発行」にありましたが、VisualC++ではこれも見つかりませんでした)
3.Windows Installerをインストールしようと思ったが、「このコマンドを実行するのに十分な
記憶領域がありません。」というエラーでインストールできなかった。

経験が全くないため見当違いな部分が多く、検索も下手で要領を得ませんが、解決法をご存知の
方がいらっしゃったらお力を貸していただけないでしょうか。

12:デフォルトの名無しさん
07/04/13 12:20:26
Visual C++ 6.0を再インストールしようと思って、
一旦削除してもう一回インストールし直したら、
「プライマリ プラットフォームがありません。
ビルドシステムは使えません。セットアップがインストールしたアドオン プラットフォーム(.pkg)のロードに失敗した可能性があります。」
といわれ、エラーで落ちる。
何回インストールし直してもだめ。

教えてエロい人><

13:デフォルトの名無しさん
07/04/13 12:49:00
Visual Sutdio 2005を初めて使うのですが、Eclipseのインポートの再編成のような機能はないのでしょうか。
言語はJAVAからの応用がききますが、クラスや関数はまだ覚えられていないため、
#includeやusingを設定するのに苦闘しています。

※例外処理でfinallyが無いのが納得できない……

14:デフォルトの名無しさん
07/04/13 16:35:17
>>11
たぶんそれはExpress Editionにない機能と思う

15:デフォルトの名無しさん
07/04/13 18:08:20
>>14
お返事ありがとうございます。
今日ずっと調べた所、VisualC++ではインストーラーは作成できないようですね。
VisualC#であればClickOnceを使ってインストーラーの作成ができたので、つらいですが
VisualC#でプログラムを書き直そうと思います。
予算があればStandard Editionを買いたい所ですが・・・

16:デフォルトの名無しさん
07/04/13 22:02:57
VisualStudio2005のスタンダード版ってMFCと静的リンクできますか?出来るなら買いたい。

17:デフォルトの名無しさん
07/04/13 22:19:35
>>16
OK

18:デフォルトの名無しさん
07/04/13 22:28:10
階層構造でtodoを記述できるような補助機能ってあります?

19:デフォルトの名無しさん
07/04/13 22:33:53
性的リンク

20:デフォルトの名無しさん
07/04/13 22:34:47
WindowsXP環境でVisualStudio2005・C++で単純なWin32アプリケーションを作成したのですが、
これをWindowsVistaで実行しようとすると、
「このアプリケーションのサイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした」
というエラーが出て起動できません。
Vistaで動かすにはどうしたらいいでしょうか?

21:デフォルトの名無しさん
07/04/15 00:08:40
WindowsXPでVisual C++ 2005 Express Editionを使っています。
「Windowsゲームプログラミング」という本のプログラムを実行してみたところ、
アクセス違反と表示されてしまいました。
デバッガでステップ実行してみるとWM_DESTROYのreturn 0;からDispatchMessageを出るまでの間に
表示されるのですが、どこが悪いのか分かりません。
どうしたらアクセス違反を無くせるでしょうか。
以下、出力抜粋とコードです。

test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
プログラム '[3220] test_window2.exe: ネイティブ' はコード 0 (0x0) で終了しました。

#include <windows.h>
#define APP_NAME TEXT("Sample_MainWindow")
#define DRAW_STRING TEXT("Kitty on your lap")
LRESULT CALLBACK WindowProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR lpCmdLine, int nCmdShow) {
WNDCLASS wc;
MSG msg;
HWND hWnd;
HDC hdc;

22:21
07/04/15 00:10:29
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)COLOR_BACKGROUND + 1;
wc.lpszMenuName = NULL;
wc.lpszClassName = APP_NAME;
if (!RegisterClass(&wc)) return 0;
hWnd = CreateWindow(APP_NAME, TEXT("Window Title"),WS_OVERLAPPEDWINDOW | WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL);
if (hWnd == NULL) return 0;

/* デバイスコンテキストのハンドルを取得 */
hdc = GetDC(hWnd);
/* デバイスに文字列を描画 */
TextOut(hdc, 10, 10, DRAW_STRING, lstrlen(DRAW_STRING));
/* デバイスコンテキストのハンドルを解放 */
ReleaseDC(hWnd, hdc);
while(GetMessage(&msg, NULL, 0, 0) > 0) {
DispatchMessage(&msg);
}
return msg.wParam;
}
よろしくお願いします。


23:デフォルトの名無しさん
07/04/15 00:30:22
>>21
実行してみたが、ウチの環境では問題なし。

24:21
07/04/15 02:38:05
わざわざ実行までして頂いてありがとうございます!!
問題なしですか、どうしよう…
そうするとコードではなくてうちの環境が悪い可能性がありそうですね。
………
ということで環境を疑う前提で再度ググりまくってみたところ、おかげさまで解決策が見つかりました!
ImeWatcherというソフトを起動していたのですが、そちらを終了させるとアクセス違反が発生しなくなりました。

その結論に至った流れとしては、こちらのページ URLリンク(forums.belution.com)
を参考に出力に知らないソフトが混じっていないか見てみたところ、
なぜか起動中のソフトのdllがいくつか混じっていたため試しに一つ一つ終了させて確認していたら
それを終了させておけばアクセス違反が発生しないということが判明したという次第です。
これが相性とかいうやつなのか、単にImeWatcherのバグなのか分かりませんが、
原因(と一応の対策)がわかってすっきりしました。ありがとうございました。

下記はアクセス違反発生時の出力の抜粋です。
'test_window2.exe': 'C:\src\test_window2\debug\test_window2.exe' を読み込みました。シンボルが読み込まれました。
'test_window2.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'test_window2.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。

ここ→'test_window2.exe': 'C:\Program Files\Takubon\ImeWatcher\ImeWatch.hook' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。

'test_window2.exe': 'C:\WINDOWS\system32\oleaut32.dll' を読み込みました。シンボルが読み込まれていません。
test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
test_window2.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a2c7fc を読み込み中にアクセス違反が発生しました。
プログラム '[2644] test_window2.exe: ネイティブ' はコード 0 (0x0) で終了しました。


25:デフォルトの名無しさん
07/04/15 09:31:03
MS VC++ VS2005なんですが
#include <stdio.h>
int main(void)
{
FILE *fp1;
 if( (fp1 = fopen( "d:\\tmp\\aaa.txt", "r" )) == NULL ){
}else{
}
}
だと、警告がでるんですが
でない書き方(fopenを使わない)を教えて下さい


26:デフォルトの名無しさん
07/04/15 09:55:25
どんな警告が出るんだ?

27:デフォルトの名無しさん
07/04/15 10:01:50
>>26
レスどうもです
warning C4996: 'fopen': This function or variable may be unsafe. Consider
using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNING
S. See online help for details.C:\Program Files (x86)\Microsoft Visual
Studio 8\VC\include\stdio.h(234) : 'fopen' の宣言を確認してください。

ググったらfopenは古いから使うなってことらしいです


28:デフォルトの名無しさん
07/04/15 10:09:51
>>27
移植性を考慮するなら、言語規約にあるfopen()を使うのが妥当。
MSの甘言に載せられて移植性を度外視するのなら、fopen()の派生版でもAPIでも使えば宜しい。

29:デフォルトの名無しさん
07/04/15 10:27:18
C/C++言語の初心者が使うには余計な機能

30:デフォルトの名無しさん
07/04/15 12:08:54
>Consider using fopen_s instead

31:デフォルトの名無しさん
07/04/15 12:21:21
>>21
GetMessage(&msg, NULL, 0, 0)
で&msgで参照する時、ImeWatcheあたりがmsg使ってて、
それでプロテクトメモリ競合が発生して、AccessViolation出してるっぽいなあ
while(GetMessage(&msg, NULL, 0, 0) > 0) {
DispatchMessage(&msg);
}
return msg.wParam;
}

REGETMESSAGE:
if(&msg){
while(GetMessage(&msg, NULL, 0, 0) > 0) {
DispatchMessage(&msg);
}
}
else{goto REGETMESSAGE;}
return msg.wParam;
}
なんてするとどうなるんだろか?


32:デフォルトの名無しさん
07/04/15 12:31:43
MSG msg;
で、このmsgがぶつかる場合というのは
ウィンドウメッセージキュー
なのか
PostThreadMessageキュー
どっちかで、他がつかんでて、ぶつかってるんだろう。

33:デフォルトの名無しさん
07/04/15 15:33:16
Web API(Yahoo! API)をVisual C++で使いたいのですが、
Web APIを利用するためのクラスなどはありませんか?

34:デフォルトの名無しさん
07/04/15 16:04:41
>>30
レスサンキューです


35:デフォルトの名無しさん
07/04/15 16:23:54
>>33
スレ違い。

そして無視される>28、>29

36:デフォルトの名無しさん
07/04/15 16:39:48
>>25
C++のstd::ifstreamを使えばOk

>>28
ところがどっこい、あのセキュリティ強化のライブラリ関数はTR 24731として公開されており、
下手すると将来の標準Cに取り込まれる可能性すらある。現時点ではまだどうなるかわからないけどな。
ちなみにOpen Watcomのも実装しているようだ。

37:デフォルトの名無しさん
07/04/15 18:07:53
>>36
M$のはSafer Cと相違点が多すぎる。
警告通りに直したら後でひどい目にあうのは確実。

38:デフォルトの名無しさん
07/04/15 18:18:01
fopen_s なんか使ってるやついるんか?
winアプリならapi使うだろうし
学習用途なら標準Cライブラリだろうし

39:デフォルトの名無しさん
07/04/15 19:32:11
XP VS2002 MFC。
大文字と小文字を区別せずに文字列(char)を検索したいのですが、
速くて簡単な方法ありましたら教えて下さい。

40:デフォルトの名無しさん
07/04/15 19:44:58
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて
結局派遣やってるバカがいるんだけどw
なんか派遣先といい関係、とか言ってたから思わず吹き出しちゃったよw
最近はマネージャーもやってるとか寝言言ってるし、派遣がまねぇじゃぁ?はあ!?w

そもそも信頼されてるなら直接契約するか正社員にするはずだが、
いつでも切れる派遣会社経由って舐められてんだよ

派遣期間が長くならないうちに早く就職しろ、と忠告したら、ウッキー!って逆ギレw
バカで頑固だから何度言っても理解できない
騙されたとはいえ結局は自分で決めて派遣やってる癖に逆ギレしちゃってまぁ
人間として本当に恥ずかしい


41:デフォルトの名無しさん
07/04/15 20:23:48
>>39
stricmp()

42:39
07/04/15 21:36:55
>>41
レスありがとうございます。
先頭からstricmpで比較していって検索するモノが出来ました。

43:デフォルトの名無しさん
07/04/16 22:19:58
SDKで作ったサンプルプログラムですがアプリの動作で
ちょっとおかしなところがありまして質問します。

ファイルから読み込んでビットマップを表示させます。
画像がクライアント領域よりも大きければ、表示と同時にウィンドウ標準の
スクロールバーを各種設定をして表示させます。
スクロールバーはきちんと機能して画像がスクロールされます。

ところがウィンドウのサイズを小さくして水平スクロールバーが
クライアント領域が消えるくらいまで小さくすると水平スクロールバーが
消えたと思ったら下側のフレームに水平スクロールバーが薄く表示されています。
そこからもっとウィンドウのサイズを小さくするとタイトルバーの×ボタンに重なって
スクロールバーのサイズグリップが重なって見えます。
これでは見栄えが悪いと思い解決方法はないかと思い質問しました。
よろしくお願いします。

開発環境はVisual C++ 6.0 Pro
OSはXP Pro SP2

44:デフォルトの名無しさん
07/04/16 23:08:24
なんか難解な日本語だなw

下側のフレームに薄く表示されるって状態がいまいちわからんのだけど
言ってる各状態のスクリーンショットとか撮れん?


45:43
07/04/17 00:06:02
>>44
説明が下手で済みません。画面のスクリーンショットは自分のホームページに載せて
リンクしました。
以下がリンクです。

水平スクロールバーが下側のフレームに薄く表示されている画像。
URLリンク(www3.zero.ad.jp)

スクロールバーのサイズグリップがタイトルバーの×ボタンに重なっている画像。
URLリンク(www3.zero.ad.jp)

よろしくお願いします。

46:デフォルトの名無しさん
07/04/17 05:44:09
最小のサイズを決めておけば?

47:デフォルトの名無しさん
07/04/17 07:16:21
>>45
CreateWindowでウィンドウスタイルにWS_HSCROLLとWS_VSCROLLを指定してスクロールバーを出して
その時に一緒に表示されるサイズグリップの挙動ってことでいいんだよな?
VCが作る雛型にスタイル追加してやってみたけど、サイズ小さくしたら普通に消えていったけどなぁ
2000とXPの違いなんだろうか・・・

48:デフォルトの名無しさん
07/04/17 07:32:24
3つほど質問があります。

①C++はクラス外に関数を記述できますが、main()やWinMain()以外を
 クラス外に記述する意味はあるのでしょうか?
 単にCからの引き継ぎ、慣習ということであれば
 なるべく全ての処理をクラス内に記述したいのですが。
②Visual C++には、JavaのLoggerクラスの様な標準ログ出力クラスは用意されていないのでしょうか。
 見あたりませんでした。clogをリダイレクトする処理を実装するしかないでしょうか。
③GUIアプリを、コンソール出力無しに作成する場合は、
 WinMain()関数を使用するしかないのでしょうか?(Google検索だとそのように記述するサイトがヒット)
 機種依存するコードはなるべく外出し、極小化したいのですが、
 WinMain()からmain()を呼ぶように記述するしかないでしょうか。

49:デフォルトの名無しさん
07/04/17 08:16:53
1. まあみんながみんなOOPというわけではないからね。
Cみたいな手続き型プログラミングだけでなく、
STLアルゴリズムみたいにジェネリックプログラミングでは非メンバ関数も必要に応じて使う。
何にせよ、OOPのときでも静的メンバだけのクラスなんて作るなんて馬鹿げていると俺は思うけどね。

2. Logger(というよりJava自体)を俺は知らないが、clogをリダイレクトするくらいなら、
適当なファイルをofstreamで開けば十分だと思う。ちなみにVC++のclogは、バッファリング付の標準エラー出力。

3. プロジェクトのプロパティ→リンカで
•システム→サブシステムにWINDOWS(コンソールを使わない指定)、
•詳細→エントリポイントにmainCRTStartup(main用のスタートアップルーチン)
を指定すると、mainから始まる非コンソールアプリケーションが作れるはず。
あまり一般的な手法ではないかもしれないが。

50:デフォルトの名無しさん
07/04/17 08:59:53
>>48
GUIアプリって時点で十分環境依存だからWinMainを排除したところで意味はないぞ。

51:デフォルトの名無しさん
07/04/17 09:07:46
>適当なファイルをofstreamで開けば十分だと思う。ちなみにVC++のclogは、バッファリング付の標準エラー出力。
(cin, )cout, cerrの他に用意されてるの?
#尤も、cerrはバッファリングしないが。

52:デフォルトの名無しさん
07/04/17 12:34:20
質問があります。

開発環境、実行環境ともにWindowsXP(SP2)
仕様環境はVC++6.0です

レジストリの
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\USBSTOR
のStartを3から4に書き換えた(USB大容量記憶デバイス禁止)状態で
USBポートに挿入されているリムーバブルディスクの確認(空き容量と場所(E:などの割り当てられる文字))を行う方法が
存在するのなら、ご教示ください。

53:デフォルトの名無しさん
07/04/17 20:27:35
>>48
1:C++は不完全OOPです。

2:所詮テキストをフォーマットしてファイルに出力するだけなのでそもそも特別に必要でない

3:Windowsの標準的なGUIアプリにおいてはそもそもコンソールなんて使ってません
  ていうか規定のエントリポイントを排除しないでください

54:デフォルトの名無しさん
07/04/17 20:32:30
>>51
そうだよ
無論標準C++に含まれている

55:48
07/04/17 20:34:52
>>49
ご丁寧にありがとうございます。
1につていは、Javaの癖なんですよね。C++では非メンバ関数が当たり前ということであれば
郷に従う必要がありそうです。
2については、ログレベル(外部ファイルで、出力する下限レベルを設定)を
実現したいので、やはり個別実装しないと駄目なんでしょうね。
3については、なるべく一般的なコーディングを心がけて移植性を高めたいと思うので、
一般的でないなら止めた方が良さそうですね。

>>50
そのまま他でコンパイルできることまでは望みませんが、
このクラスは機種依存、と明確にして移植性を高めるのが目的です。
確かに、WinMainでそれを考える意味はあまりないのかもしれませんね。
イベントドリブンでなければともかく。

56:48
07/04/17 20:39:34
あ、返事中に新たな回答が。

>>53
1、そう意識していくしかないのでしょうね。
もっとも、自分で制約をかければほぼ完全にOOP的に
実装できそうだと思ってはいますが(それが良いかはともかく)
2、>>55で書いてしまったのですが、ログレベルを実現したいのです。
個別実装したいと思います。
3、わかりました。WinMainを使って素直に実装しようと思います。

57:デフォルトの名無しさん
07/04/17 21:00:15
Windows用のプログラムを作れる環境では、
どんなコンパイラでもWinMainが使えると思って平気。
その程度の移植性ならある。

58:デフォルトの名無しさん
07/04/17 22:16:19
ていうかWinMainが使えなきゃWindows用のGUIプログラムなんて作れなくね?


59:デフォルトの名無しさん
07/04/17 22:54:30
>>58
>>49
インスタンスハンドルはGetModuleHandle(0)で、
WinMainの最後の引数の代わりはSW_SHOWDEFAULTで代用すればいい。
(どうしても拘るのならGetStartupInfoと言う手もあるが)

60:デフォルトの名無しさん
07/04/18 07:37:19
そこまでする意味が理解できない件

61:デフォルトの名無しさん
07/04/18 07:58:28
環境依存コードはどうやったって出てくるだろうしね。
自分は環境依存コードにWinMain書いておいて、そこからmainを呼ぶようにしているが、
それは48氏が初めに書いているね。(それでいいと思うけど)

62:デフォルトの名無しさん
07/04/18 16:23:15
URLリンク(freepg.fc2web.com)
以前のパソコンで上のサイトよりVisual C++ 2005 Express Editionを
インストールできたのですが新しいパソコンでインストールできません(VISTA)

CDイメージ(.iso)インストール(AIR-EDGEだと途中でダウンロードが止まる)
Webからインストール(これで試しています)

Microsoft Platform SDK を一緒に使うで
[PSDK-x86.exe]を実行すると

下のメッセージがでます
「インストールパッケージを開くことができませんでした。
アプリケーションベンダに問い合わせ、このパッケージが有効な
Windowsインストーラパッケージであることを確認してください」

3日間悩んでいます>_<;よい意見などあれば宜しくお願い致します。<(_ _)>

63:デフォルトの名無しさん
07/04/19 00:34:31
Vistaを捨てるのはどうだろう。

64:デフォルトの名無しさん
07/04/19 10:52:50
MSに訊いてみるのはどうだろう。

65:デフォルトの名無しさん
07/04/23 22:44:35
Visual C++ 6.0で質問です。

サービスプログラムから複数のスレッドを起動し、中でDLL関数を明示的に
呼び出しているのですが、この関数に不具合があるらしく、アクセス違反が
発生するうえ、呼出元のスレッドごと堕ちてしまいます。

DLLを直せば済むんでしょうが、とある事情によりDLL自体に手を入れ難い状況です。
そこで質問なのですが、DLLのエクスポート関数内で発生した保護エラー等を
呼出元でトラップし、処理続行するようなことはできるものでしょうか?

よろしくお願いします。


66:デフォルトの名無しさん
07/04/23 23:01:36
自分がやってることは疑わずに悪いのはこの関数と決めつけてるし
ほっといてあげよう

67:デフォルトの名無しさん
07/04/23 23:20:49
適当に言うけど

catch(...)

で捕らえられんの?

68:デフォルトの名無しさん
07/04/24 01:08:41
>>66
仰るとおりです。以後気をつけます。

DLLのソースは入手しまして、fopen()が失敗した際にNULLが返っているにも
関わらずfclose()を実行してそこでコケているので、>>65 のような書き方を
してしまいました。

>>67
レスありがとうございます。
catch(...)で試してみたのですが、拾ってくれない(そこまで到達してない)
ようです。
一度通常のコンソールアプリに組み込んでトラップできるか試してみます。
何かお気付きの点ありましたら、お願いします。


69:デフォルトの名無しさん
07/04/24 08:20:39
プログラムの1機能的な例外ではなくOSが発する例外なのにcatchできるわけないべw

70:デフォルトの名無しさん
07/04/24 08:25:44
>fopen()が失敗した際に

失敗の原因が
>サービスプログラムから複数のスレッドを起動
だったりしないよな

71:デフォルトの名無しさん
07/04/24 17:02:09
>>68
/EHaを付けて、SEH (__tryと__expect)の方を使えば受けられるかもしれない。
SEHで受けられるなら、_set_se_translatorでC++例外へ変換する道が開ける。

72:デフォルトの名無しさん
07/04/26 07:55:05
>68
そのDLLの内部でfopen()お呼びfclose()が行われてるってことかな。
ソースあるなら呼ばないで自分で似たようなの作り直すってのはダメなのか?
あるいは、そのDLLの問題部分を完全に突き止めて、ここをこう直せと指摘するとか。

73:デフォルトの名無しさん
07/04/26 08:28:27
お前らの話しを全部理解できてないので間違えてるかもしれんが
俺も例外をcatch(...)で取れないことが最近あった。
で、調べた。

記憶が確かなら
VC6のころはメモリアクセス違反をcatch(...)で取れた。

VC2005はコンパイルオプションを変えないと
その手のCPUがだす例外をcatch(...)で取れない。
あるいは例外ハンドラを自分で書くのかな。
コンパイラオプションは覚えとらんので書けない。

とりあえずメモリアクセス違反を握りつぶすのも問題だから
VC2005でデフォルトが例外をcatch(...)で取れないようになったのは
妥当なことなのかな。

74:デフォルトの名無しさん
07/04/26 08:33:44
>>72
それが一番だよな。
エラー処理が不十分てことだからDLLを直させるべき。

でも自分の担当じゃないDLLの細部まで調べないと云々は納得いかんな。

社外の作成したDLLだからソースなしで
責任転嫁だとか本当にお前の担当部分にバグがないのかとか・・・
愚痴になってしまったのでおしまい。

75:デフォルトの名無しさん
07/04/26 09:30:00
>>73
C++例外でないアクセス違反を、C++の構文で捕捉できた事が異常。

76:デフォルトの名無しさん
07/04/26 17:52:57
>74
>でも自分の担当じゃないDLLの細部まで調べないと云々は納得いかんな。
他人に直させるにしても、問題が本当に相手のソースにあるのかまではつきとめないと
やっぱり自分のミスでしたって事になった場合、人間関係に亀裂が入り易いからなぁ。
(はっきり指摘してやって逆ギレするのもいるが、そういうのは置いといて^^;)

少ない修正で済むような問題なら、教えてやった方が結果的にロスタイムも少ないしな。

77:デフォルトの名無しさん
07/04/26 18:43:19
なぜfopen()が失敗するのか

78:デフォルトの名無しさん
07/04/26 19:02:47
>>76
別に細部まで調べなくても
渡すデータがDLLの仕様どおりで、呼び出し部以外でコケてなけりゃどう考えてもDLLの問題だし

79:デフォルトの名無しさん
07/04/26 19:10:47
下手に全部調べてからDLL担当者に「バグってますよ」というより、
「巧くいかなくて困っているんで、DLL側で助けてもらえませんか」と下手に出たほうが
協力を得やすく労力も減るかもしれない。

80:デフォルトの名無しさん
07/04/26 19:27:43
もしそのDLLが普通に使われてるんなら
仮にバグがあったとしても今まで問題にならなかったということだ。

81:デフォルトの名無しさん
07/04/26 19:47:25
とある事情によりDLL自体に手を入れ難い状況ということは今まで何事もなく使われてたんだろ

82:デフォルトの名無しさん
07/04/26 21:40:04
まあ、ファイル名を引数等で指定して処理させるような形だったら
一度呼び出し側でfopen()して開けなきゃDLLの関数は呼ばなきゃいいんじゃね?
2度手間になるから、もちろんいじれるならDLLいじった方がいいが。

83:デフォルトの名無しさん
07/04/27 08:03:55
VC++ .NET 2003のオプションで指定するインクルードファイルとかのパスって
どこに保存されてるの?

84:デフォルトの名無しさん
07/04/27 11:32:52
デフォルトの設定 レジストリ
プロジェクトの設定 プロジェクトの定義ファイル

85:デフォルトの名無しさん
07/04/27 19:15:31
レジストリ内の場所ってわかる?
レジストリエディタで目的のパスで検索かけてもHitしないんだけどさ・・・

ちなみにオプションのVC++ディレクトで設定する、インクルードファイルとか実行可能ファイルとか指定するとこなんですが

86:デフォルトの名無しさん
07/05/06 14:30:15
VC++2005なんですが
自作のクラスにメンバを追加したり、STLなどの既存のクラスを読み込んだりしたときに
かなりの頻度で、プロジェクトを閉じて開いたり、VSを再起動したりしないと
:: や . や -> などを入力した後の一覧に追加したメンバが表示されないのですが
再起動などせずに解決する方法は無いのでしょうか

87:デフォルトの名無しさん
07/05/06 20:29:25
MSに要望出せ

88:デフォルトの名無しさん
07/05/08 20:40:19
なぜかある場所でメンバ関数呼び出すと
thisポインタを使わないとメンバ変数が使えなくて
thisで指定しないでその変数に行くとランタイムエラーだされるんですが

これはメモリの領域破壊のバグのひとつでしょうか?

89:デフォルトの名無しさん
07/05/08 21:05:01
ある場所をはっきりさせてから質問してください

90:デフォルトの名無しさん
07/05/08 21:09:54
ランタイムエラーが出るんならランタイムに行ってんだろ

91:デフォルトの名無しさん
07/05/08 21:14:06
ランタイムの使い方がおかしいんだろうね。
その辺りのコード晒してみ?

92:デフォルトの名無しさん
07/05/09 15:54:38
スレ違いでしたらすみません。
質問があります。
ホームページビルダーを久しぶりに起動したら、
次のようなエラーメッセージが出て、起動できなくなりました。
何か解決方法はありますでしょうか?よろしくお願いします。
環境はOSがXP、HBはV9です。

-----------------------------------------------------
Microsoft Visual C++ Runtime Library

Assertion failed!

Program: ... Files\IBM Homepage Builder V9\bin\hpbpage.exe
File: .\RegistryBase.cpp
Line: 81

Expression: code == ERROR_SUCCESS
-----------------------------------------------------

93:デフォルトの名無しさん
07/05/09 16:19:41
ホームページビルダー作った会社に訊け

94:デフォルトの名無しさん
07/05/09 18:57:27
>>92
ここは「Microsoft Visual C++を使う人」のためのスレです
Microsoft Visual C++を「使って作られたソフトを使う人」はお帰りください

95:デフォルトの名無しさん
07/05/09 21:27:25
ウェブ上に公開されているサンプル プロジェクトをビルドすると、次のエラーが出て失敗します。
環境はWinXP、VC++2005です。

> error C2678: 二項演算子 '<' : 型 'const ErrorEntry' の左オペランドを扱う演算子が見つかりません (または変換できません) (新しい動作; ヘルプを参照)。
> c:\program files\microsoft visual studio 8\vc\include\xutility 267


試したサンプルはWinsock Programmer's FAQのAsynchronous I/O Clientです
URLリンク(www.kt.rim.or.jp)
(ページの下のほうの「project package (33 KB)」からダウンロード)

ファイルはVC++5のプロジェクトが丸ごと圧縮されており必要なものは全てそろっているそうです。
VC++2005でプロジェクトを変換して開いたのですが、上記のようになりました。
エラーの場所が場所なのでコンパイラに渡すオプションあたりをいじる必要があるのでしょうか?

ご教示お願いします。

96:デフォルトの名無しさん
07/05/09 21:40:31
全然関係ないけど
P.J. Plaugerが自ら語るVS2005搭載C++テンプレートライブラリ
STL.NET

97:デフォルトの名無しさん
07/05/09 23:36:26
従来のSTLの機能の大半は.NET Frameworkクラスで事足りるのにSTL.NETとはこれいかに

98:デフォルトの名無しさん
07/05/09 23:39:31
>>97
まぁ読んでみれ
URLリンク(www.microsoft.com)

99:デフォルトの名無しさん
07/05/10 20:00:32
なんでこう、バージョンアップするごとにIntelliSenseがバカになってくいんだ・・・

100:デフォルトの名無しさん
07/05/10 20:03:28
新しいものに慣れるのがつらい年頃なのかね。

101:デフォルトの名無しさん
07/05/10 20:19:52
そうか、いくらファイルを保存してもインテリの情報が更新されないのが新しいものなのかw

102:デフォルトの名無しさん
07/05/11 00:49:58
>>99
IMEも98ぐらいの時が一番賢かった気がする。

103:デフォルトの名無しさん
07/05/11 00:55:58
それはない

104:デフォルトの名無しさん
07/05/11 08:08:03
ATOK使おうぜ

105:デフォルトの名無しさん
07/05/11 17:06:10
いやVCのインテリは付いたときから馬鹿だろ
それだけがVBの取り柄

106:デフォルトの名無しさん
07/05/11 19:29:34
>>104
そのあたりは無理に標準でついてるもの以外を使う必要が無いからなぁ

107:デフォルトの名無しさん
07/05/11 23:10:48
Japanist2003

108:デフォルトの名無しさん
07/05/14 17:47:08
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPTSTR lpCmdLine,int nCmdShow){
MessageBox(NULL,lpCmdLine,"1",MB_OK);
if (lpCmdLine=="/abc"){
MessageBox(NULL,lpCmdLine,"2",MB_OK);}
return 0;}

これで実行ファイルを1.exeとしますと、1 /abcとコマンドラインから実行しても
2つ目のメッセージボックスが出ないんですが何故でしょうか?VS2005,WinXPです。

109:デフォルトの名無しさん
07/05/14 18:22:15
何それ?

110:デフォルトの名無しさん
07/05/14 19:04:09
>>108
文字列の比較方法を調べなさい

111:デフォルトの名無しさん
07/05/14 19:15:58
できました、ありがとうございました。

112:デフォルトの名無しさん
07/05/14 20:03:30
_tWinMain

113:デフォルトの名無しさん
07/05/18 22:31:06
他のC++用IDEにある、IntelliSense同等の機能の方が、圧倒的に性能いいの?

114:デフォルトの名無しさん
07/05/19 02:34:02
他は知らんが
個人的には VS2003 のインテリセンスの具合が好き
2005 はインテリセンスに限らず全体的使えないと思う

115:デフォルトの名無しさん
07/05/19 09:18:05
あー俺も。2003から離れられない。

116:デフォルトの名無しさん
07/05/19 09:57:05
pimplイディオムを使うとインテリセンスも利かなくなるんだけど
これって意図された動作なのかただの偶然なのか?

117:デフォルトの名無しさん
07/05/19 12:09:55
昔VC6.0で作ったプログラムをVC2005に移植したいんですが、
そのままだとビルド出来ませんでした。

プロジェクト自体は変換とか出来たんですが、StdAfx.hでインクルードされてた
Windows ヘッダー ファイル群(windows.hとか)が、No such file or directoryでエラーになります。
かといってこれを外したらコンパイル通らないし・・。

1から組むのは大変なんで、何とか使い回せないかと思うのですが、
何かいい方法ありますでしょうか。


118:デフォルトの名無しさん
07/05/19 12:12:36
Express EditionでPlatform SDKをインストールしてないとか、
パス通してないとかってオチはないよな?

119:デフォルトの名無しさん
07/05/19 12:16:38
No such file or directoryぐらいの簡単な英語なら理解できるだろ

120:デフォルトの名無しさん
07/05/19 12:23:22
>>117
おいおい初心者の俺でも分かるぜ。

121:117
07/05/19 14:01:08
117です。
すみません、仰るとおり、SDKをインストールしていませんでした。。。
インストールしたらインクルードは解決しました。

今度はコンパイルエラーとwarningがいっぱい出てきましたが
ワーニングは無視してコンパイルエラーを修正。
(コンパイルエラーは for(int i=0) の i を for以降で使ってました)

次に「ファイル 'LIBC.lib' を開くことができません」が出ましたが、これはググッて解決。
(プロジェクトのプロパティで特定ライブラリの無視にLIBC.lib追加。)


現在、このエラーと格闘中です。
「zlib.lib(gzio.obj) : error LNK2019: 未解決の外部シンボル _errno が関数 _gz_open で参照されました。」


122:デフォルトの名無しさん
07/05/19 14:21:28
VCのインテリセンスは昔からウンコ

123:デフォルトの名無しさん
07/05/19 14:27:05
errno は VC2005 だとマクロになってた気がするよ。
余計な warning が鬱陶しければ #pragma warning(disable:警告番号) で消した方が。

124:デフォルトの名無しさん
07/05/19 14:27:29
こんどはzlibの追加だネ!

125:デフォルトの名無しさん
07/05/19 15:24:53
VC2005についてるSTLとSTLportでは何が違うの?

126:117
07/05/19 15:37:14
117です。

zlib.libを作り直そうと思って調べてるんですが、
VC2005でStatic Libraryは作れないんでしょうか?


2005、全部1から作るには楽なんだろうけど、ちょっと違うコトしようとしようとすると途端に・・

127:デフォルトの名無しさん
07/05/19 15:43:35
初心者の俺でも作れるし

128:デフォルトの名無しさん
07/05/19 17:31:04
VC6使ってたんなら初心者というわけじゃないだろうし
自分で調べてみるぐらいしようよ
ちょっとでも調べてたらそういう質問はないと思う

129:デフォルトの名無しさん
07/05/19 20:10:17
ダイアログの大きさがフォントの大きさによって変わってしまうのですが、
常に設計時の大きさになるようにする設定ってありますか?

130:デフォルトの名無しさん
07/05/19 20:12:03
あ、実行時にフォント変えてもダイアログの大きさは変わらないのかな?
↑は無視してください。

131:デフォルトの名無しさん
07/05/19 20:28:46
VC++.NETとVC++とは違うものなのでしょうか?


132:デフォルトの名無しさん
07/05/19 20:34:45
.NET使わないなら単なるVC7、VC8

133:デフォルトの名無しさん
07/05/19 20:55:23
>VC2005についてるSTL

そもそもそんなものは無い

134:デフォルトの名無しさん
07/05/19 20:55:34
クグって見たんですが.NET Framework?MFC見たいな物?

VC++ .NET?って?
.NET Framework?って?

VC++6.0で知識が止まってますorz

135:デフォルトの名無しさん
07/05/19 21:10:09
VistaマシンでVC6.0は使用できないのでしょうか。
(「VMWare等で旧OS(XPや2k)入れて使え」と言うのは取り合えず置いておいて)

インストール試してみようと思いsetup.exe実行
→「このプログラムには基地の互換性の問題があります。」

と表示されたところでいったん止めてWeb漁ってるのですが、なかなか有効な解放が得られず。。。

136:デフォルトの名無しさん
07/05/19 21:33:02
>>134
JavaのVMに相当

137:デフォルトの名無しさん
07/05/19 21:40:23
VC++.NETという表現は使われなくなりました。

138:デフォルトの名無しさん
07/05/19 21:52:02
>>135
MS的にはサポート外です。

139:117
07/05/19 22:08:00
117です。

何とか解決しました。

ググってはいたんですが、VS2005の用語が全然分からなくて、とっかかりがなかったです。
ソリューションて何?とかいう浦島太郎状態で。

5年前に自作したツールの、数字を決め打ちしてた部分を1カ所直したいだけだったんですが
結局ビルド通すのに丸一日かかりました。


で、通ったら今度はデータが読めない・・・。

fwrite(this,sizeof(Cdata),1,fp);
ってやってクラス丸ごとバイナリで保存しておいたデータを
fread(this,sizeof(Cdata),1,fp);
で読み込んでるんですが、読み込んだデータが化けてるっぽい。

この辺の仕様も変わっちゃってるのかなぁ・・・

140:デフォルトの名無しさん
07/05/19 22:16:11
ひとりごと

141:117
07/05/19 22:25:25
昔に保存したデータをあきらめて、データ作り直したら行けるっぽいです。めんどいけど。
長々チラ裏に付き合ってもらってありがとうございました。


142:デフォルトの名無しさん
07/05/19 22:45:48
考えられる原因はこんなとこか?
バイナリモード指定していない
アラインメントの指定がおかしい
データ型の大きさが変わった (ex time_t)

143:デフォルトの名無しさん
07/05/19 22:46:43
インスタンスのメモリイメージをそのままをバイナリ保存って無謀すぎ。
普通はシリアライズ用関数とか用意するもんだ。

144:デフォルトの名無しさん
07/05/19 22:47:52
あと、文字列がANSIだったとか。

145:デフォルトの名無しさん
07/05/19 22:57:12
手抜きなんだからしょうがない

146:デフォルトの名無しさん
07/05/19 23:04:21
>>117
vtable の事もたまには思い出してあげてくださいね。

147:デフォルトの名無しさん
07/05/20 06:42:57
どうせ ANSI 文字列をユニコードで表示しようとしてるんだろう。

148:デフォルトの名無しさん
07/05/20 17:31:22
旧バージョンのVisual C++4.0で「コンソールプログラムを作成する」
というような使用条件であれば、十分に活用できますか?
(主にRS232CをWin32APIから使用するのが目的です)

また、当時NT4.0との組み合わせで不具合(多分使用できない機能?)
があるとかの話を耳にしたような記憶があります。
WinXPおよびWin2000での動作はどうでしょうか?
バージョンからして、既に現状に沿った話でなくて恐縮ですが、ご教示下さい。


149:デフォルトの名無しさん
07/05/20 17:37:58
そこまでしてVC4を使う理由が判らない。
つーか、Win32APIからRS232Cを使うというのが何を意味しているのか判らない。
単にシリアル伝送したいだけならmodeコマンドで条件設定してcopyコマンドでもtypeコマンドでもできるだろうに。

150:デフォルトの名無しさん
07/05/20 17:40:38
XP+VC5を使ってる人は知ってるけど、
VC4はわからないなぁ。

151:デフォルトの名無しさん
07/05/20 17:42:38
昔のプログラムでも動くのは動くし、動かないのは動かない
適当なの探してきて動かしてみればいい

152:デフォルトの名無しさん
07/05/20 18:48:47
include の path 指定の書式について質問です。

stdafx.h
#include <../creptopp/sha.h>

と記述してこれをコンパイルすると、
--------------------------------------------------------------------------------
コンパイルしています...
debug.cpp
c:\test\Anonymous\stdafx.h(126) : fatal error C1083:
include ファイルを開けません。'../../creptopp/sha.h': No such file or directory
--------------------------------------------------------------------------------

ファイルの階層は下のようになっています。
test
- creptopp/
- Anonymous/stdafx.h

#include <sha.h>
#include <../creptopp/sha.h>
#include <../../creptopp/sha.h>
と試してみたのですが、うまくいきませんでした orz

どうぞよろしくお願い致します。m(__)m



153:152(追記)
07/05/20 18:53:27
* Crypto++ Library 5.4
URLリンク(www.cryptopp.com)
cryptopp/sha.h
cryptopp/sha.cpp

展開するとみたいになっていました。これを利用したいです。

154:デフォルトの名無しさん
07/05/20 18:54:15
#include <file-name>
使うならちゃんとpath通しとけよ

155:デフォルトの名無しさん
07/05/20 18:59:35
>>152
相対パスの元は、stdafx.h の場所ではなく
コンパイルしている cpp の置かれた場所なんじゃね?

156:デフォルトの名無しさん
07/05/20 19:13:50
解凍してそのまんまビルド
ライブラリができたらヘッダとlibを適当な場所へ置いて使うだけ

157:デフォルトの名無しさん
07/05/21 21:29:58
C++で普通に関数にするのとクラスのメンバ関数にするのとではとちらが遅いのでしょ?

158:デフォルトの名無しさん
07/05/21 21:38:42
一概には言えない。コンパイラの最適化で、実質的な差が出ない可能性も高い。
速度に関しては、個別に実測する以外は全てただの憶測。

159:デフォルトの名無しさん
07/05/21 22:33:48
オーバーヘットとかは無いの?

160:デフォルトの名無しさん
07/05/21 22:40:45
非仮想関数ならthisを積む程度の差しかないだろうなあ
まぁそんなこと考えるのは時間の無駄だから、コードの見易さ・美しさを考える方がいいよ

161:デフォルトの名無しさん
07/05/22 00:00:15
>オーバーヘットとかは無いの
なんですか? その「オーバーヘット」って。

162:デフォルトの名無しさん
07/05/22 00:06:05
夏塩蹴

163:デフォルトの名無しさん
07/05/22 00:54:16
まあ韓国の文化は冷麺のどんぐり麺?あれだけは評価できるね

164:デフォルトの名無しさん
07/05/22 01:07:28
VC++2005アカデミック日本語版で質問です

「warning C4996: 'scanf' が古い形式として宣言されました。」

scanf()を使うと2005から上記の警告が出ることはググって分かったのですが
当方の警告文は全て英語のままで上記の一文が出てきません

↓これだけ
'This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

日本語の警告文の説明を表示させたいのですがどこを設定すればいいのでしょうか?
よろしくお願いします


165:デフォルトの名無しさん
07/05/22 07:41:21
C4996でググればいい。
というより、MSDNライブラリインストールしろ

166:デフォルトの名無しさん
07/05/22 07:58:06
役に立たねぇ香具師だなぁ。警告を日本語にしたいって書いてんだろ。
C4996だけの問題じゃねぇんだよ。判ってねぇなら書くなよ。

167:デフォルトの名無しさん
07/05/22 08:11:29
すいませんした。俺が悪いんです。この通りです。許してください。読み違えただけなんです。怒らないでください。日本語にするやり方分かります。でも教えないです。ごめんなさい。

168:デフォルトの名無しさん
07/05/22 08:13:17
どんな警告・エラーもCxxxxの番号が振られているんだから、
C4996以外もその番号でググればいい。

169:デフォルトの名無しさん
07/05/22 09:58:06
わざわざ英語で出るように自分で設定変えたくせに
元に戻す方法は人に聞くのってどういう了見なんだ?

170:デフォルトの名無しさん
07/05/22 11:00:13
C4996でググったらみんな日本語で警告が出るのに
俺の環境じゃ英語しか出ねえよ

て解釈した

英語にアレルギーがあるかしらんがこの機会に慣れたら?

171:デフォルトの名無しさん
07/05/22 11:32:05
VC++2005日本語版に付属のコンパイラとは別に英語版のコンパイラも入れたの?

172:デフォルトの名無しさん
07/05/22 11:33:59
特に何もしてない

173:デフォルトの名無しさん
07/05/22 11:37:29
何もしないで変わるかっつーの

174:デフォルトの名無しさん
07/05/22 13:00:30
MSのサポートに訊けばいい

175:デフォルトの名無しさん
07/05/22 17:58:17
MSマンセー

176:デフォルトの名無しさん
07/05/22 18:24:09
誰かがVC++2005EEでも入れて混ざってんじゃないのかね

177:デフォルトの名無しさん
07/05/22 21:31:25
VS2005無印にSP1当てたら俺も英語だけになったぞ
でもたいして問題じゃねえしMSDNライブラリあれば心配ねえよ

178:デフォルトの名無しさん
07/05/22 23:27:34
それは、英語版のSP1を入れてしまったのでは?

179:デフォルトの名無しさん
07/05/23 09:56:28
(´,_ゝ`)プッ ソンナオチダッタノカ

180:デフォルトの名無しさん
07/05/23 11:14:52
んなわけない

181:デフォルトの名無しさん
07/05/23 11:24:41
そうだな。
本人は「特に何もしてない」と言ってるんだからSP1だってあててるわけが無い

182:デフォルトの名無しさん
07/05/23 11:31:01
痴呆か。

183:デフォルトの名無しさん
07/05/23 11:31:36
俺もSP1当てたからかしらんが英語だよ
その程度の日本語の説明なら要らんけど
あと、うちはProfessionalだな

184:デフォルトの名無しさん
07/05/23 11:38:23
SP1入れてない。
MicrosoftUpdateで時々入れようとしてるんだけど毎回失敗する。


185:デフォルトの名無しさん
07/05/23 14:17:33
俺も前失敗続いてたけど最近あらためてやったら成功したな
何が原因だったんだろ

186:デフォルトの名無しさん
07/05/23 14:43:17
ちょっとツンだっただけさ

187:デフォルトの名無しさん
07/05/23 17:18:31
SP1を当てたが別に英語になっていないぞ

188:デフォルトの名無しさん
07/05/24 10:37:27
MFCで×ボタンを押してアプリケーションを終了するとき
どこになんと言う名前でその処理が書かれているか教えてください
終了するときに処理を付け加えたいのでお願いします

189:デフォルトの名無しさん
07/05/24 10:54:40
WM_CLOSEのハンドラを追加

190:デフォルトの名無しさん
07/05/24 10:58:08
SC_CLOSE → WM_CLOSE → WM_DESTROY
の順じゃないかな。それぞれのデフォルトハンドラで
MFCだと、OnSysCommand() からクローズ投げて
OnClose() が呼ばれ、そこでDestroyWindow()して OnDestroy()が呼ばれる。
もしかしたら違うかも。spy++やデバッガで確認してみて

191:デフォルトの名無しさん
07/05/24 11:00:22
処理内容によっちゃExitInstanceでという選択肢も

192:デフォルトの名無しさん
07/05/24 11:16:42
ありがとうございます処理内容はダイアログを表示させて
パスワード入力とOKボタンを押し終了させるものです
パスワードが違っているかキャンセルボタンを押した場合終了しません

という処理をしようと思っています

193:デフォルトの名無しさん
07/05/24 11:47:00
クラックしてやんよ

194:デフォルトの名無しさん
07/05/24 11:47:19
連レスすいません
ハンドラの追加でON_WM_CLOSE()を追加したんですが
対応する関数に反応ありませんでした

195:デフォルトの名無しさん
07/05/24 11:54:15
×ボタンってダイアログの話なの?
何がどうなってるのかよくわからん、反応が無いとは何で判断?

196:デフォルトの名無しさん
07/05/24 11:57:31
>>195
フォームビューによるダイアログです
プロパティのメッセージから追加しました

ブレークポイントをつけて通っているか判断しました

197:デフォルトの名無しさん
07/05/24 11:58:45
URLリンク(www.kumei.ne.jp)

↑簡単に言うとこういうことをMFCでやりたいのです

198:デフォルトの名無しさん
07/05/24 11:59:40
んーと、WM_CLOSEが来るのはその閉じるウィンドウにくるんだよ。
こないのはおかしいね。spy++で観察してみては。

199:デフォルトの名無しさん
07/05/24 12:14:47
spy++でみてみるとWM_CLOSEはちゃんとありました

200:デフォルトの名無しさん
07/05/24 12:17:58
エスケープキーでダイアログが閉じないようにするので、そのへんやったことあるけど
ダイアログベースじゃない場合は、どのクラスがメッセージを処理してるかだな

201:デフォルトの名無しさん
07/05/24 12:25:40
sdi/MDIでeditビューの場合は編集中にプログラム閉じようとすると
保存しますか?
みたいな確認でたような気がするけどどうだったかな?

202:デフォルトの名無しさん
07/05/24 12:27:28
観察した結果は

WM_DESTROY→WM_NCDESTROY→WM_CLOSE→WM_SYSCOMMAND

でした

203:デフォルトの名無しさん
07/05/24 12:45:28
CMainFrame::OnCloseにちゃんと来るじゃん
そのあと閉じていいか確認が出る

204:デフォルトの名無しさん
07/05/24 13:13:44
閉じていいか確認が出ないのですが
CMainFrame::OnCloseをオーバーライドして使えばいいということですか?
そこも通らないような・・・

205:デフォルトの名無しさん
07/05/24 13:15:33
あとWM_DESTROYは反応ありましたがウィンドウが閉じたあとでした

206:デフォルトの名無しさん
07/05/24 13:24:39
sdi/MDIでeditビューが基本
最初からそういう風に動作するようになってる

207:デフォルトの名無しさん
07/05/24 13:37:57
>>205
まあいろいろ試してあちこちにハンドラ置きまくってみればいろいろわかることもある。

208:デフォルトの名無しさん
07/05/24 13:40:25
通りました!!CMainFrame::OnCloseでした!!
ありがとうございます!

209:デフォルトの名無しさん
07/05/24 16:34:45
自作ダイアログ表示させようとしたら
自分でつけたコントロールのほかに

TODO: コントロールをここに置く のテキストボックスと
OKとキャンセルボタンがついてごっちゃになってました

Jisakudlg dlg(this);
dlg.DoModal();

なぜなのか教えてください

210:デフォルトの名無しさん
07/05/24 16:47:48
>>209
ダイアログの選択したパーツを整列するボタン押したんじゃないの?

211:デフォルトの名無しさん
07/05/24 16:52:44
すいませんよくわからないですけどhtmlが入ってたみたいで
作り直したらいけました

212:デフォルトの名無しさん
07/05/24 22:34:23
可変個引数の簡単な使い方(できれば、va_arg,va_end,va_startを使わない)を教えてください。

やりたいことは、下記のようにprintf系の関数に引数をそのまま渡したいのです。
void printfWithHeader(char *str, ...) {
char buf[1000] = "Header:";

strcat(buf,str);
printf(char *str, ...);
}

環境は、Visual Studio 2003です。
皆様、お願いいたします。

213:デフォルトの名無しさん
07/05/24 22:53:23
VCというか普通のCの質問だろ
そんなことをわざわざVCスレで質問する意味がわからん

214:デフォルトの名無しさん
07/05/24 22:57:12
できません
規約も護れないやつぁ帰れ

215:デフォルトの名無しさん
07/05/24 23:00:07
vprintf 系を使えよ・・・。

216:デフォルトの名無しさん
07/05/25 00:06:50
Visual Studio.net2003を使っているのですが、
UTF-8のソースを扱うにはどうすればいいのでしょうか。
コンパイルはできるのですが、日本語の表示ができません。

217:デフォルトの名無しさん
07/05/25 00:24:02
>>215
thx.
vprintf系でできそうです。


>>213
> VCというか普通のCの質問だろ
> そんなことをわざわざVCスレで質問する意味がわからん

レスありがとうございます。
VCの拡張機能も含めて、回答を頂きたかったからです。
老婆心ながら、>>213さんは行間をうまく読めないようですので、コミュニケーション能力を鍛えた方がよろしいかと思いました。

218:デフォルトの名無しさん
07/05/25 00:27:25
質問等で、行間を読んでくれる事に期待するってのは、
一般社会ではコミュニケーション能力不足と判定されます。

219:217
07/05/25 00:29:21
確かにその通りですね... (-_-;)

220:デフォルトの名無しさん
07/05/25 00:34:52
>>216
先にShift_Jisに変換してからコンパイル、が一番楽。
.NETベースのコンパイラは、文字列=Unicodeで保持、と決め打ちできるんだけどねえ。

221:デフォルトの名無しさん
07/05/25 00:51:21
Windows は UTF-16 で動いてるけど、
.NET を通す場合だとどうなんだろう。
よく知らん。

222:デフォルトの名無しさん
07/05/25 01:03:25
>217
人が多いスレで質問した方が適切な回答が得られやすい
ここはVC限定でしかも初心者限定だから人が少ない

223:デフォルトの名無しさん
07/05/25 04:26:27
いやこんな質問初心者レベルだろ

224:デフォルトの名無しさん
07/05/25 07:09:43
>>216
VS2003にもVBとか色々あるが、ここで質問するからにはVC++2003でいいんだな?

225:デフォルトの名無しさん
07/05/25 09:14:21
仕様書の行間なんぞ読まれたらと思うと・・・

226:デフォルトの名無しさん
07/05/25 11:24:20
>>217 は技術者としては失格だろ
技術者が設計図の行間とか読んだら、ものは出来上がらない
行間読むくらいなら、設計を詳細まで確認するのが正しい

227:デフォルトの名無しさん
07/05/25 12:26:21
VC2002を初めて使っているのですが、DllプロジェクトとMainのプロジェクトがあり
DLL側のヘッダをincludeし、定義しているクラスをメインのexeで使いたいのですが
宣言はできるのですがビルドすると 未解決の外部シンボル と怒られます。

どうしたらよいのでしょうか。

228:デフォルトの名無しさん
07/05/25 12:54:27
複数のプロジェクトをいっしょに扱うのが難しかったら
DLLを先にビルドしてしまえば、DLLで配布されてるライブラリなんかと同様に扱える

229:デフォルトの名無しさん
07/05/25 13:29:18
即レスありがとうございます。

実はcppUnitを使用したいと思いまして、現在のプロジェクトをそのままに
新規でテスト用のプロジェクトから該当のクラスにアクセスしたいと考えておりました。

おっしゃられるように入出力だけのテストなら、dll呼び出せばできそうです。
ありがとうございます。

230:デフォルトの名無しさん
07/05/27 07:54:30
フリーでVisualC++用のリファクタリングアドインある?

231:230
07/05/27 08:29:21
自己解決
URLリンク(www.devexpress.com)

232:デフォルトの名無しさん
07/05/28 12:20:46
VisualC++6.0でCDialogについて質問です。

1つのプロジェクトに複数のダイアログ画面でがあり、
各画面で同じ処理を行うメンバ変数・関数が存在します。
これをまとめるため、CDialogから派生したCCustomDialogを作成し、
各画面の基底クラスに使用することを考えました。

通常のC++クラスであれば、上記のことが可能であるとわかりますが、
CDialogクラスでも可能でしょうか?
(Windowsのイベントとかメッセージとかが、正常に処理されるのか心配しています。)


233:デフォルトの名無しさん
07/05/28 12:32:20
>>232
CDialogを派生して各ダイアログクラスを作るように、CCustomDialogを派生すればいい。
CCustomDialogの作成には幾つかMFC特有のおまじないが必要だから、どっかでサンプルを探すのがいいね。

234:232
07/05/28 19:36:24
>>233
レスありがとうございます。
参考にさせていただきます。

235:デフォルトの名無しさん
07/05/29 20:40:37
メッセージループとか使わないプログラムで、
キーボードの入力を待たないでキーボードの入力を取得するにはどうすればよいのでしょう?
(押されてなかったらNULLかなんかで抜けてくれる関数等)


236:デフォルトの名無しさん
07/05/29 20:54:06
GetAsyncKeyState

237:デフォルトの名無しさん
07/05/29 22:26:24
>>236
これで出来ました。どうもありがとう。

238:デフォルトの名無しさん
07/05/30 13:17:56
VisualC++2005,XPで開発してます。
ダイアログボックスに画像とその説明のテキストのリストを載せたいのですが、
どのコントロールを使えば最適でしょうか?

239:デフォルトの名無しさん
07/05/30 13:19:49
さあ

240:デフォルトの名無しさん
07/05/30 13:43:28
>>238
ケースバイケース

241:デフォルトの名無しさん
07/05/30 14:26:19
ありがとうございます。
適当にやります。

242:デフォルトの名無しさん
07/05/30 15:29:04
使わないのが最適

243:デフォルトの名無しさん
07/05/30 16:01:43
初めまして、VisualC++2005のC++/CLI でフォームのすべてのイベントに反応させたいのですが、
そのようなイベントが見つかりません。
そのようなデリゲートはないのでしょうか?

244:デフォルトの名無しさん
07/05/30 16:33:18
メソッドだけどWndProcは?

245:デフォルトの名無しさん
07/05/30 16:58:28
HideCaret(static_cast<HWND>(this->textBox1->Handle.ToPointer()));
で、キャレットを非表示にすることまでは分かったのですが、常に非表示にするにはすべてのテキストのイベントで実行させなければなりません。
もっと効率よくキャレットを非表示にする方法はないものでしょうか?

246:デフォルトの名無しさん
07/05/30 16:59:47
またお前か

247:デフォルトの名無しさん
07/05/30 17:11:25
ご無沙汰しております。

248:デフォルトの名無しさん
07/05/30 17:27:57
ないだろ
どうせ普通はそんなこと誰もやらないし

249:デフォルトの名無しさん
07/05/30 17:29:32
サブクラス化してしまえ

250:デフォルトの名無しさん
07/05/30 17:31:36
テキストつかわなきゃいい

251:デフォルトの名無しさん
07/05/30 17:34:25
ウインドウズの電卓はテキストBOX使ってない

252:デフォルトの名無しさん
07/05/30 17:51:14
キャレットに用意されているマウスカーソルイメージを弄れば。

253:デフォルトの名無しさん
07/05/30 17:57:34
ShowCaret使わないなら同じこと

254:デフォルトの名無しさん
07/05/30 20:20:18
テキストボックスコントロールを自作すれば?

255:デフォルトの名無しさん
07/05/31 00:22:57
タイマーで監視しとけ。

256:デフォルトの名無しさん
07/05/31 02:19:05
>>255
プログラマーとしてそんな行為が許されると思っているのですか?

257:62
07/05/31 06:44:08
目的:Windows アプリケーションを選択して
(現状選択できない)ビルド、実行したい!コンソールアプリケーションは選択可!

>>62 VC++2005EE VISTA Microsoft Platform SDK をインストールは
自分でぐぐったり、繰り返しやったことでなんか組み込むことができたようです!^^
原因はおそらくVC++2005EEを起動したままインストール作業を
したからだと思います!(たぶん!)原因がこんなことだったとは・・・><;

Windowsゲームを作るように Windowsアプリケーションで
キャラクターを表示させたい。必要と思ったためDirectX SDKもインストールしました!^^
DirectX Sample Brawserも見れす。Microsoft .NET Framework Version 2.0もOK!
参考サイト
URLリンク(freepg.fc2web.com)
URLリンク(www.plustarnet.com)
URLリンク(www5b.biglobe.ne.jp)
時間ばかりかかり、どうか・・・みなさまのお力を><;

258:デフォルトの名無しさん
07/05/31 06:48:26
>>257
何だ何だすごく読みづらいぞ

259:デフォルトの名無しさん
07/05/31 06:51:19
もうDestroyCaretで殺しチャイナYO

260:デフォルトの名無しさん
07/05/31 06:51:41
>>257
再インスコ

261:257
07/05/31 07:14:02
>>258
読みやすくしたつもりですが・・・長文過ぎたか ><;
>>260
一応何回かやっています。どなたぞ宜しく願い^^
もう少し待ってつつ頑張ります。 ><;

262:デフォルトの名無しさん
07/05/31 07:21:26
いや長文じゃないし日本語じゃない

263:257
07/05/31 07:23:08
>>262
すません><;

264:デフォルトの名無しさん
07/05/31 09:46:34
何がやりたくて、何をしたけど現状どうなってるのか

265:デフォルトの名無しさん
07/05/31 10:01:25
>すません><;
言葉を注意されてすぐにもこんな事書くのか。

266:デフォルトの名無しさん
07/05/31 10:14:00
><;

267:デフォルトの名無しさん
07/05/31 11:32:31
><;><;><;><;><;><;

268:257
07/05/31 11:43:11
>>263
>何がやりたくて
Windowsアプリケーションで Windowsのゲームを作りたい!
よってWin32アプリケーションの生成と実行をしたい!
>何をした
VC++2005EE、Microsoft Platform SDK をインストールした
DirectX SDK、Microsoft .NET Framework Version 2.0 もインストールした
主にインストール設定以下の3つを参考にした
URLリンク(freepg.fc2web.com)
URLリンク(www.plustarnet.com)
URLリンク(www5b.biglobe.ne.jp)

>現状どうなっているのか
URLリンク(www5b.biglobe.ne.jp)
のWindows アプリケーションのビルドのアプリケーションの設定の
アプリケーション種類でWindowsアプリケーションが選択できない
(コンソールアプリケーションのみ選択できる)
なのでWin32アプリケーションの生成と実行ができない
------------------------------------------------------
他にインストールや設定が必要なのでしょうか?前向きな意見を^^
OSはVISTAです。コンソールアプリケーションは作成できます
分かりにくかったらごめんなさい <(_ _)>

269:デフォルトの名無しさん
07/05/31 11:46:04
バカじゃねぇのw
そんな簡単な所で躓いてんのかよwww
既出も既出大既出

270:デフォルトの名無しさん
07/05/31 11:49:13
>>268
やっぱり、「現状どうなっているのか」は大事だね。

それで正常だよ。Win32アプリケーションを作りたかったら
もうちょっとこことか、他のサイトでも調べてごらん。

271:デフォルトの名無しさん
07/05/31 11:50:42
>>268
もっと具体的に何をしたか書いてみ。
例えば、AppSettings.htmはどう修正したとか。

272:デフォルトの名無しさん
07/05/31 11:57:03
で、コンソールアプリケーションを作成はしてみたのかな。
コンソールアプリケーション作成時に、ウィザードの選択肢はチェックしたのかな。

273:257
07/05/31 15:55:17
>>269 どうもです^^
>>270>>271
>それで正常だよ >例えば、AppSettings.htmはどう修正したとか。
この意見は大きかったです <(_ _)> その辺を意識して再調査しました
>>272
コンソールアプリケーションも動かしてみます

意見を聞いて調べ実行した結果。種類でWindowsアプリケーションが選択できました(^_^)ノ
Googleキーワード 「Windows アプリケーション AppSettings.htm corewin_express.vsprops」
URLリンク(forums.microsoft.com)
を発見!それまでは秀丸で編集して反映されてOKと思っていたのですが・・・(AppSettings.htm)
メモ帳で開く反映されていない!え~><;・・・ならばメモ帳で編集すればOKかと思ったのですが
反映されませんでした><;なんで~T_T;意味分かりません><;・・・サイトの通りに
管理者権限でやるとうまくいきました・・・勉強します orz

多くのレス有難うございました。又何かありましたら宜しく願います。<(_ _)>

274:デフォルトの名無しさん
07/05/31 16:01:10
>>273
ExpressEditionはしばらくしたら爆発するから気を付けろ

275:デフォルトの名無しさん
07/05/31 18:23:49
現在のプロジェクトのフォルダを一発で開くような便利な技はありませんか?

276:デフォルトの名無しさん
07/05/31 18:39:13
ツール(T)->オプション(O)->環境->スタートアップ->スタートアップ時(P):
を、最後に読み込んだソリューションにする

277:デフォルトの名無しさん
07/05/31 18:39:18
開くって何で開くのさ

278:デフォルトの名無しさん
07/05/31 18:42:25
フォルダなら2発目ぐらいで開ける

279:デフォルトの名無しさん
07/05/31 18:42:56
愛で開くのさ

280:デフォルトの名無しさん
07/05/31 18:48:41
開く押したら開くけど

281:デフォルトの名無しさん
07/05/31 18:57:35
フォルダを開くって言ったらエクスプローラーで開くことなんだけど

282:デフォルトの名無しさん
07/05/31 18:59:08
>>275
ファイルを開くダイアログで十分操作はできると思うぜ。

283:デフォルトの名無しさん
07/05/31 19:08:16
    〃〃∩  _, ,_      
     ⊂⌒( `Д´) エクスプローラーじゃなきゃヤダ
       `ヽ_つ ⊂ノ          ヤダ
              ジタバタ


284:デフォルトの名無しさん
07/05/31 19:09:51
それくらい自分で作れやカス

285:デフォルトの名無しさん
07/05/31 19:12:09
馬鹿には無理だけど、ダイアログからエクスプローラは1発で開ける

286:デフォルトの名無しさん
07/05/31 19:22:53
ΩΩ <な、なんだってー!!

287:275
07/05/31 19:40:50
ふっ・・・できたぜ・・・世話んなったな。アバヨ!!!!!!!!

288:デフォルトの名無しさん
07/05/31 23:07:50
 ___  見えませ~ん
∥    |     ∨
∥現実 ∧_∧   .ヘ∧
∥ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U

 ___  読めませ~ん
∥    |     ∨
∥空気 ∧_∧   .ヘ∧
∥ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U

 ___  知りませ~ん
∥    |     ∨
∥常識 ∧_∧   .ヘ∧
∥ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )  (   と)
凵    し`J   U U

 ___  ありませ~ん
∥    |     ∨
∥未来 ∧_∧   .ヘ∧
∥ \ ( ・∀・) (゚A●)
|| ̄ ̄⊂   )   (  と)
凵    し`J   U U

289:デフォルトの名無しさん
07/06/02 02:13:55
WisdomSoftのWinAPI講座のメッセージボックスのページ、「文字列フォーマット」に倣って
#include <windows.h>

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow ) {
CHAR chStr[128];

wsprintf(chStr , "インスタンスハンドル : %d" , hInstance);
MessageBox(NULL , chStr , TEXT("Kitty on your lap") , MB_OK);

return 0;
}
とやっているのですが、UNICODEでコンパイルしようとすると(勿論マルチバイトではコンパイルできます)
error C2664: 'wsprintfW' : 1 番目の引数を 'CHAR [128]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2664: 'MessageBoxW' : 2 番目の引数を 'CHAR [128]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。
と型変換のエラーではねられます。
CHARをTCHARにしてみたり、とりあえず無闇にキャストしてみたりしたのですが、上手く行きません。
wsprintfをUNICODEでコンパイル通すにはどうしたら良いのでしょうか。


290:デフォルトの名無しさん
07/06/02 02:32:38
#include <windows.h>
#include <tchar.h>

int WINAPI _tWinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
LPTSTR lpCmdLine , int nCmdShow ) {
TCHAR chStr[128];

wsprintf(chStr , _T("インスタンスハンドル : %d") , hInstance);
MessageBox(NULL , chStr , _T("Kitty on your lap") , MB_OK);

return 0;
}

291:289
07/06/02 21:19:53
>>290
あふ。wsprintfでもTEXTマクロ噛ませないといけなかったのですね。
情けなや……
どうもありがとうございました。

292:デフォルトの名無しさん
07/06/03 17:20:11
winnt.h内で
#define VOID void
typedef char CHAR;
typedef short SHORT;
typedef long LONG;
やら、
windef.hで
typedef int INT;
やら定義されていますが、これら大文字の型を用いる時(或いは用いることが望ましいとされている時)
はどのようなときでしょうか。
或いは過去or未来との互換性の為に存在するのでしょうか。
また、もしMSDNに参考となるドキュメントがあれば、それもお教え下さい。


293:デフォルトの名無しさん
07/06/03 17:25:36
apiの仕様にあわせやすい
将来仕様変更あってもいい

294:デフォルトの名無しさん
07/06/03 18:40:41
>>292
> 或いは過去or未来との互換性の為に存在するのでしょうか。
じゃねーか。

295:292
07/06/04 00:58:10
>>293-294
解答ありがとうございます。
Win32App的には大文字で記述した方が将来的に互換性が維持されることが期待される、ということでしょうか。
サンプル漁ってもVOIDはたまに見かけますが、INTとかは今のところ見つけられていないので、現実にはほとんど利用されていない、のかな。


296:デフォルトの名無しさん
07/06/04 01:09:12
>>295
> 大文字で記述した方が
というわけではなく。
たとえばintのビット数が現在のコンパイラと違うものがあった場合(実際あるよ)、
直接INTを使うよりもtypedef されたものを使っていた方が移植が簡単。
typedefのところ1箇所を変えればいいのだから。
てなとこじゃないかと・・・・

297:296
07/06/04 01:09:58
間違えた 「直接int」 ね。

298:デフォルトの名無しさん
07/06/04 02:03:08
あ、なるほど。訂正ありがとうございます。
コンパイラ側の設定(と呼んでいいのかな)としてintのビット数を将来的に変更しやすいようにしているわけですね。
どうもありがとうございました。

299:デフォルトの名無しさん
07/06/04 07:28:27
すいません質問があるんですが、ゲーム中に
visual c++ runtime library
runtime error
abnormal prpgram tarmination
っていうエラーが起こってしまいましてゲームが進まないのですが、どのように対処したらよいでしょうか?
ちなみにXPです

300:デフォルトの名無しさん
07/06/04 07:44:58
     ⊿      ○   ∇ 、,、´`゙;~、  ';冫 ☆
           ┏  ━ゝヽ''人∧━∧从━〆A!゚━┓。
 ╋┓“〓┃  < ゝ\',冫。’ 、 ._〃Ν ; ゛△│´' 'ゝ'┃...   ●┃
 ┃┃_.━┛ヤ ━━━,/\.\━━━━━ .━┛
        ∇        //\\.\ 火、ヽ,,"∧.: .┨'゚,。
           .。冫▽ < //   \\.\ 十   乙  ≧   ▽
         。 ┃ . Σ、\.     \\|, 、\'’│   て く
           ┠ .ム┼\\.    /// ,,’.┼ ァΖ.┨ ミo'’`
         。、゚`。、   i/\,\// レ' o。了 、'’ ×  个o
        ○  ┃   `、,~´+√ ▽   ',!ヽ.◇    o┃
            ┗〆━┷ Z,.' /┷━''o ヾo┷+\━┛,゛;


301:デフォルトの名無しさん
07/06/04 07:55:31
>>299
作ったやつに文句言う。

302:デフォルトの名無しさん
07/06/04 08:05:41
>>299
OSがC++でできてるの知ってる?
そのエラーはね爆発予告なんだよ。
だから>>300の言うように今すぐPC投げ捨ててぶっ壊さないとダメなんだよ。
地球を滅ぼしたくないならね。

303:デフォルトの名無しさん
07/06/04 08:16:57
ウイルス

304:デフォルトの名無しさん
07/06/04 08:55:47
そのゲームをキミが作ったんじゃなけりゃ
そのゲームのスレかPC初心者あたりのスレで

305:デフォルトの名無しさん
07/06/06 13:02:24
環境 WindowsXP
VisualStudio2005 VC++
文字セット UNICODE
目的 読み出したテキストと同じ内容を表示

//TCHAR szStrは外部のメモ帳で作成したテキストファイルから読み出し
//内容=>test.txt "テスト1234テスト"

int Len;
TCHAR buf[1024*64];

Len = MultiByteToWideChar(CP_ACP,0,(LPCSTR)szStr,-1,buf,0);
MultiByteToWideChar(CP_ACP,0,(LPCSTR)szStr,-1,buf,Len);

//違うのは当たり前だけど、いい方法が解らない
buf[(Len-1)/2] = '\0';
//Lenは27
//出力すると=>"テスト1234テストフフフ"

目的通りに元の文字列を表示させるにはどうしたらいいでしょうか?

306:305
07/06/06 13:42:57
試行錯誤してたら出来ましたが、これで問題無いんでしょうか?
int buflen;
TCHAR buf[1024*64];
int len = _tcslen(szStr);

buflen = MultiByteToWideChar(CP_ACP,0,(LPCSTR)szStr,-1,buf,0);
MultiByteToWideChar(CP_ACP,0,(LPCSTR)szStr,-1,buf,buflen);
buf[buflen-len-1] = '\0';

307:デフォルトの名無しさん
07/06/06 14:20:44
>>306
何がしたいのかわからん。
MultiByteToWideChar の戻り値をよく考えろ。
バッファサイズに0を指定した場合、ヌル終端も含めたバイと数が返ってこないか?
わざわざ '\0' を入れてるのは何で

308:デフォルトの名無しさん
07/06/06 14:22:11
バイト数じゃないや、文字数ね

309:デフォルトの名無しさん
07/06/06 15:52:43
>>305
test.txtの文字コードが定まっているのなら、
szStrはTCHARではなく、CHARやWCHARあるいはその他の大きさが変化しない型にすべき

310:デフォルトの名無しさん
07/06/06 20:29:20
ビルドがUNICODEってことか?
改行文字を"\0\0"でやってみそ
ここのMultiByteはUTF16(エンディアンは忘れた)だからエスケプ文字も2バイト長だったかな
Sjis→Uni変換ならCP_ACPはNULLでもよかったような希ガス

311:310
07/06/06 20:32:13
改行文字じゃないよ、EOFだよ俺('A`)

312:デフォルトの名無しさん
07/06/07 02:36:53
URLリンク(phys.cool.ne.jp)
このページに書いてあるGetCharABCDWidths関数の使用方法と必要なヘッダファイルを教えてください。
ググってもぜんぜんヒットしないんです。
なんかすごく便利そうなのに。

313:デフォルトの名無しさん
07/06/07 02:50:25
ヤフれカス

314:デフォルトの名無しさん
07/06/07 03:04:00
>>313
ヤフっても出てこないけど?
いいから教えてください。

315:デフォルトの名無しさん
07/06/07 03:11:23
そんな簡単な事も分からんのに・・・

316:デフォルトの名無しさん
07/06/07 03:25:47
だからいいから早く教えろよ。
検索しても出てこないから聞いてるんだろうがよ。

317:デフォルトの名無しさん
07/06/07 03:27:21
なんなんだよ

318:デフォルトの名無しさん
07/06/07 03:28:54
全然寝てないのに加わってめちゃくちゃイラ回るな。
もったいぶらずに教えろよ。

319:デフォルトの名無しさん
07/06/07 03:28:55
書いてあるやんw
日本語も分からんのか(´・ω・`)

320:デフォルトの名無しさん
07/06/07 03:30:09
寝て起きたら分かるよ

321:デフォルトの名無しさん
07/06/07 03:39:12
GetCharABC”D”Widths って何だよ・・・。GetCharABCWidthsかよ・・・。
ひでーよなんだよ・・・。くそー。スマンカッタ


322:デフォルトの名無しさん
07/06/07 08:21:00
包囲網かとオモタ

323:デフォルトの名無しさん
07/06/07 14:40:14
\(^o^)/ワーイ

324:デフォルトの名無しさん
07/06/08 23:16:35
>>313
ググること自体が検索するの意味なので「ヤフれ」はおかしい。
大抵の用語集には「ググる」とはグーグルで検索することとあるがしかし、
これはグーグルが「勝手に名前を使うな」とちゃちゃを入れたことから始まる。
昔は「ググる」とは一般的に検索するという意味で使われていたのである。
そんな痛々しい策略に乗ってヤフれなど言うのは恥ずかしいことこの上ない。

325:デフォルトの名無しさん
07/06/08 23:19:55
ヤフれ

326:デフォルトの名無しさん
07/06/08 23:37:13
Googleがチャチを入れる前からヤフるも見受けられていた

第一Googleが問題にしていたのは、英語としてのgoogleで、
少なくとも日本法人は、日本語のググるを問題視していない
URLリンク(japan.cnet.com)

327:デフォルトの名無しさん
07/06/10 01:30:25
ググレカスで初心者も含めてgoogleに流れるなら、
それはググルにとっても利点だろう

328:デフォルトの名無しさん
07/06/10 07:12:56
ググレカレ

329:デフォルトの名無しさん
07/06/10 11:07:06
Google独裁社会

330:デフォルトの名無しさん
07/06/10 13:55:37
ググルもいいけど、やふーもね

331:デフォルトの名無しさん
07/06/10 19:34:13
孫某というハゲがウザいので、アホーは使わない

332:デフォルトの名無しさん
07/06/14 01:07:27
書籍スレで評判がよかったので
「プログラマ養成入門講座 VisualC++ 山本信雄」
という本でVisualC++を学習しているのですが、
本で使っているソフトがVisualC++6.0で、当方2005でを使っているのですが
操作方が原型を留めていないのですよ。

VisualC++6.0はもう手に入らないのでしょうか?
もしくは手に入れる方法はないのでしょうか?



333:デフォルトの名無しさん
07/06/14 01:22:19
それだけの理由で6を使うくらいなら本を替えたら?
6はまだインストールされてるけど、2005使うともう使う気になれないな・・・

334:デフォルトの名無しさん
07/06/14 02:11:30
つーか、操作方法を本で勉強したからといってプログラマにはなれないわけだが。

335:デフォルトの名無しさん
07/06/14 05:55:13
やってることの意味が理解できてればバージョン違っても大丈夫なはず
付録のCDがついてると思うけど
サンプルをそんまんまビルドして動かしてみればいいと思う。

336:332
07/06/14 09:44:58
>>333
三冊で約8000円ですよ。
今さら買いかえるなんてあんまりです。・゚・(ノД`)・゚・。
本にこんなに注ぎ込んだのは大学以来ですよ~。。
ちなみに。、MFCが消えるって知ったのは最近です。

>>334
いやーでもビジュアル面は大事ですよ。
操作方法が判ってるとびびらなくなりまし。
会社でC#使ってるんですが、標準C#入門読み終わって。
VS.netみたらびびりましたもん、なんじゃこれ?って。。

>>335
あんましよく理解できてないかも。。
APIなんて触ったの初めてだし。
OSとかAPIとかの本読まなきゃダメなのかな orz



337:デフォルトの名無しさん
07/06/14 10:34:34
操作方法なんてその場でヘルプ見ればいい
本は言語関連だけ参考にすればいい

338:デフォルトの名無しさん
07/06/14 13:01:11
でも初心者は本があった方が助かることも事実
本買う金が惜しかったら、ネットで調べるしかないな

339:デフォルトの名無しさん
07/06/14 19:45:04
VC++2002
MFC7.0

フォルダを探してそのフォルダの中にテキストファイルを作成
すでにテキストファイルがあればテキストを追加
もしフォルダが存在しない場合フォルダを作成してからテキスト作成

テキスト作成はC言語のやり方でやろうと思っています
フォルダの作成でいいのがあれば教えてください

340:デフォルトの名無しさん
07/06/14 21:23:06
>>339
好きなのどぞ~
複数階層を纏めて掘れるSHCreateDirectory/Exは、
残念ながらdeprecated扱いなので注意。

// C Runtime
_mkdir
system("mkdir ○○○")
// Win32
CreateDirectory/Ex // _mkdirかこれが無難か
SHPathPrepareForWrite // 一番楽?
// Automation
Scripting.FileSystemObject.CreateFolder // WSHでは標準的な方法
Shell.Application.NameSpace - Folder.NewFolder // マニア向け
// .NET
System.IO.Directory.CreateDirectory
System.IO.DirectoryInfo.Create
Microsoft.VisualBasic.FileSystem.MkDir // 昔のVBLoveな人向け
Microsoft.VisualBasic.FileIO.FileSystem.CreateDirectory

341:デフォルトの名無しさん
07/06/14 22:39:56
つ[system("/cygwin/bin/mkdir -p /foo/bar/baz")

342:デフォルトの名無しさん
07/06/15 05:28:01
MakeSureDirectoryPathExists

343:デフォルトの名無しさん
07/06/15 15:22:59
すみません教えてください

ExecuteSQLでテーブルにInsertする際
データにダッシュ(―)が入っていた場合
実行後にテーブルを見てみると―が?に
変換されています。どうしたらよいのでしょうか?

344:デフォルトの名無しさん
07/06/15 15:28:09
―って、SJISで815Cだけど、エンコードの指定は問題ない?

345:デフォルトの名無しさん
07/06/15 15:35:20
回答ありがとうございます

プロジェクトの文字セットはUNICODEにしています
文字列もwchar_t型で扱っていますがそういう意味では
ないのでしょうか?

346:デフォルトの名無しさん
07/06/15 15:53:38
えーと、ファイルから読んでるのかどこから読んでるのかによるし
問題がどっちにあるのか切り分けできない?
環境(と、バージョン)がわかればもうちょっと何とかなるかもよ

347:デフォルトの名無しさん
07/06/15 16:41:22
申し訳ありません。
OS環境:WinXP SP2
開発環境:VS2005 MFC使用

DBはSQLServerで構築しました。
データはただ単にダイアログのエディットに
入力された文字をSQL文と連結しています
(どちらもCString型です)

348:デフォルトの名無しさん
07/06/15 17:15:14
問題あるコードの一つみたいだな。
URLリンク(www.fiberbit.net)
ここに出てる文字を片っ端から試してみて

349:デフォルトの名無しさん
07/06/20 18:07:59
アクセラレータ(ショートカット)をエクセルみたいな一覧表にしたいのだけど
ツールとかないかしらん?

350:デフォルトの名無しさん
07/06/20 18:52:40
>>349
***.rcファイルをコピーして、拡張子をcsvに変え、必要なとこだけコピーペーストする。
とかではダメか?

351:デフォルトの名無しさん
07/06/21 13:59:26
>>350
rcにあったのねん
サンンクス

352:デフォルトの名無しさん
07/06/21 14:01:29
サンンクス

353:デフォルトの名無しさん
07/06/22 03:11:00
質問です
現在、複数のプロジェクトでリソースファイルを共有しています。
リソースファイルに複数のバージョン情報リソースを定義し、実行している
EXEによって表示するバージョン情報を変えたいと思っているのですが、
どうやったら異なるバージョン情報リソースのデータを取得するかが分かりません。
EXEファイルからリソース情報を取得する方法はよく見かけるのですが
リソースファイルから取得する方法はなぜかありませんでした。
ご教授をお願い致します。


354:デフォルトの名無しさん
07/06/23 00:16:36
質問です。
VC2005で作成されたプロジェクトファイルを
2003でも開けるように、変換してくれるような
ツールってありませんか?



355:デフォルトの名無しさん
07/06/23 01:28:16
自分でスクリプトでも書けば?
事実上、バージョン番号書き換えるだけでしょ。

356:デフォルトの名無しさん
07/06/23 12:04:11
メモ帳で十分だった気がする

357:デフォルトの名無しさん
07/06/24 13:42:42
コンパイルしたら

------ ビルド開始: プロジェクト: saiki, 構成: Debug Win32 ------
コンパイルしています...
WinMain.cpp
.\WinMain.cpp(5) : fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
kooh2.cpp

というエラーが出たんだが、どうすれば解決できるの?
超初心者にもわかりやすい説明希望。

358:デフォルトの名無しさん
07/06/24 14:02:06
WindwosSDKをダウソ・インスコして、INCLUDEとLIBを設定する。

これで判らないなら、VisualStudio2005 StandardEdition Upgradeを
買ってインスコしとけ。

359:デフォルトの名無しさん
07/06/24 14:36:29
教えてください。
CTest クラスのInit()というメンバ関数を、複数のスレッドがコールします。
しかし、Init()関数の中には一度だけしか行ってはいけない処理があります。
(実装ライブラリの初期化処理)

どうすれば、実現できるのでしょうか?

360:デフォルトの名無しさん
07/06/24 14:39:07
>>358
ダウンする以外の方法はないの?
うちのパソ、ダウンにかなりの時間かかるからそれだとできないのだが。

361:デフォルトの名無しさん
07/06/24 14:41:58
じゃあStd版買えばいいじゃん。

362:デフォルトの名無しさん
07/06/24 14:42:47
自分でwindows.h書けばいいと思うよ。

>ダウンする以外の方法はないの?
>VisualStudio2005 StandardEdition Upgradeを
買ってインスコしとけ。

363:デフォルトの名無しさん
07/06/24 14:45:19
>>361
Stdがなんなのか知らないけど、それ以外の方法はないの?

364:デフォルトの名無しさん
07/06/24 14:46:29
じゃあダウンすればいいじゃん。

365:デフォルトの名無しさん
07/06/24 14:47:05
>>363
向いてないからプログラミングやめる

366:デフォルトの名無しさん
07/06/24 14:47:14
ダウンも購入もしない方法はないの?

367:デフォルトの名無しさん
07/06/24 14:47:53
WindowsSDKは郵送でも送ってくれるよ
URLリンク(www.qmedia.ca)

368:デフォルトの名無しさん
07/06/24 14:51:04
了解しました。もっと勉強して出直して参ります。

369:デフォルトの名無しさん
07/06/24 16:00:22
>>359
そいつは実装の問題だな。

色々やり方あるけど
とりあえず CriticalSection あたりを利用してみれ
# 当然コレだけじゃ出来んぞ


まぁそもそも、全体的な構成が悪い気もするけど。

370:デフォルトの名無しさん
07/06/24 16:18:38
>>369
ありがとうございました。調べてみます。

371:デフォルトの名無しさん
07/06/24 22:48:53
ダウンにかなりの時間って、まさか今時アナログとかISDNとか言うんじゃないだろうな
ADSLなら余裕だろ

372:ちんこ
07/06/24 22:58:23
ダイヤルアップでちゅ

373:デフォルトの名無しさん
07/06/24 23:26:25
音響カプラーでふ。

374:デフォルトの名無しさん
07/06/24 23:32:59
脳内電波でちゅ

375:デフォルトの名無しさん
07/06/25 10:08:31
伝書鳩

376:デフォルトの名無しさん
07/06/25 13:50:34
矢文

377:デフォルトの名無しさん
07/06/25 14:58:11
>>355
それは本当か?

378:デフォルトの名無しさん
07/06/25 21:44:01
助けてくれ~。
当方初心者、Windows XP、Visual Studio 2005使用。
簡単なウィンドウアプリを書いて無事ビルドできたんだが、
いざ実行しようとしたら
「'C:\WINDOWS\system32\ほにゃらら.dll'を読み込みました。
シンボルが読み込まれていません」というメッセージがずらーってできた。
今まで同じようなアプリは普通に実行できたのに。
俺何もしてないはずなのになぜ、ひねくれるの?おしえておじいさん。

379:デフォルトの名無しさん
07/06/25 21:45:31
気にするな。

380:デフォルトの名無しさん
07/06/25 21:45:40
ググレカス。お前より年下の方が多そう

381:デフォルトの名無しさん
07/06/25 21:55:04
help me お兄さん。
同じく初心者、WinXP VisualStudio2005使用。
フルスクリーンのウィンドウを表示してbmpを全画面に貼り付けようといじっててフルスクリーンのウィンドウは出るんですが、
全くいじらずデバッグ開始しているにも関わらず、bmpがキチンと画面全体に描画される場合と下に空白ができる場合があって悩んでます。
ちょっと曖昧過ぎて答えにくいかもしれませんがお願いします。

382:デフォルトの名無しさん
07/06/25 22:46:00
main関数がないだけであたふたする僕

383:デフォルトの名無しさん
07/06/25 22:51:31
>>377
違うの?

384:デフォルトの名無しさん
07/06/26 01:27:54
>>381
もちろんWM_PAINTのタイミングで描画してるよな。

385:デフォルトの名無しさん
07/06/26 01:42:35
>>384
してます・・。

386:381
07/06/26 02:42:06
>>384
すみません、できているとは思うんですが自信がなくなってきたので質問・・。
それができていなかった場合>>381で書いたような不安定な不具合が起こるんでしょうか?

387:デフォルトの名無しさん
07/06/26 02:42:21
>>381
ちょっと曖昧過ぎて答えにくいな。

388:デフォルトの名無しさん
07/06/26 03:14:45
そんなに長いソースじゃないし
どこにでもあるようなものだろ?
全部上げるか問題部分だけ上げれば?

389:デフォルトの名無しさん
07/06/26 09:40:32
下の空白ってなんだ?
タスクバー分?

390:378
07/06/26 13:37:30
解決しました~。Ctrl+F5ってすればいいんだな。
>>379
教えてくれてありがとう、おじいさん。
>>380
孫娘に「口笛はなぜ~♪」って聞かれて「自分で調べろカス!」って、
おまいに人の心はないのか。・゚・(ノД`)・゚・。

391:デフォルトの名無しさん
07/06/26 13:59:09
孫など出来るのは後何十年以上掛かる
孫娘でも知ってるような事を分からなくて孫娘に聞くって、
おまいはどんだけ~。・゚・(ノД`)・゚・。

392:デフォルトの名無しさん
07/06/26 15:43:02
マルチスレッドでclock関数を使っても大丈夫しょうか?

393:デフォルトの名無しさん
07/06/26 17:12:50
ちょっとスレ違いかもしれませんが
Visualstudio6.0を入れてるPCに2005Expressを入れてしまったのでアンインストしようと思うんですが
普通に2005をアンインストしても6.0の動作に問題はありませんか?

394:デフォルトの名無しさん
07/06/26 18:14:55
うん

395:381
07/06/26 19:25:52
帰宅しました。
空白はタスクバー分の空白だと思います。

396:381
07/06/26 21:23:35
長々とすみません、再描画処理を入れたらなんとか全画面化できました。
何故再描画入れないとタスクバー分空白ができるのか結局分からず仕舞いでしたがありがとうございました。

397:デフォルトの名無しさん
07/06/27 06:55:41
そんなこったろうと思ったよ

398:デフォルトの名無しさん
07/06/27 16:41:40
空白ができるときとできないときで、描画範囲の数字が違ってると思うんだけど
GetClientRectあたりで取ってきてんのかな

399:sage
07/06/27 23:38:35
VC++6で作ったプロセスをWindowsのクラスタサービスの
汎用アプリケーションリソースにしています。
最近Windows2000からWindows2003にOSをアップグレードしたところ、
プロセスのオフライン時にデバッガが起動して、
オフラインに失敗する事象が頻発するようになってしまいました。
デバッガを見てもアセンブリが読めないため、難儀しております。
このような場合、考えられる問題は何がありますでしょうか。

400:デフォルトの名無しさん
07/06/27 23:41:29
>考えられる問題は何がありますでしょうか。
名前欄にsageと書くバカらしさ

401:デフォルトの名無しさん
07/06/28 00:46:16
ソースとpdbもちこんでは

402:デフォルトの名無しさん
07/06/28 02:09:28
プログラム経験ない管理部門ですが、突然C++使えるようになれと命令
されたんですが、独学で可能ですか?いろいろ調べるとC言語が理解して
いないと無理なように思えたんですが。

403:デフォルトの名無しさん
07/06/28 04:30:21
>>402
独学も可能だしC言語の知識がなくてもわかると思うけど…
でもやっといてもいいんじゃないかな?

404:デフォルトの名無しさん
07/06/28 08:09:23
>>402
基本的にCからやったほうがいいと思いますが
センスがあればC++でも問題ないと・・・
しかし初心者にはC++は難しい
自分は入りやすいように
DXライブラリというサイト利用してゲームを作っています。
グーグル検索してみて~
後は本を買ったりして基本と必要なことだけを覚えていくこと

405:デフォルトの名無しさん
07/06/28 09:00:39
>>402
よし、替え玉2号の俺に任せろ!


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch