[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 10:44 / Filesize : 111 KB / Number-of Response : 467
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【漏れは】猫でもわかる質問スレ【猫以下です】



1 名前:デフォルトの名無しさん mailto:sage [03/06/05 20:40]
初心者にはやっぱり難しいWindowsプログラミング。
そこでこの本を買った人も多いのではないでしょうか。
それでもわからない事がたくさんある!
そんな時はここで質問しましょう。

本家サイト
ttp://www.kumei.ne.jp/c_lang/index.html

458 名前:454 mailto:sage [2009/09/19(土) 15:21:05 ]
case WM_CHAR:
if(wp == VK_SPACE && !bStart) {
bStart = TRUE;
TypeStart(hWnd);
break;
}
if(bStart == FALSE)
return DefWindowProc(hWnd, msg, wp, lp);
if(wp == VK_ESCAPE) {
lstrcpy(szMondai, TEXT(""));
lstrcpy(szInput, TEXT(""));
lstrcpy(szCheck, TEXT(""));
InvalidateRect(hWnd, NULL, TRUE);
bStart = FALSE;
break;
}
wsprintf(szInput, TEXT("あなたの入力=\"%c\""), (int)wp);
if(szMondai[6] == szInput[14]) {
bSeikai = TRUE;
mm.wType = TIME_MS;
timeGetSystemTime(&mm, sizeof(MMTIME));
dwEnd = mm.u.ms;
wsprintf(szCheck, TEXT("反応時間[%dミリ秒]"),
dwEnd - dwStart);
TypeStart(hWnd);
} else {
bSeikai = FALSE;
MessageBeep(MB_OK);
lstrcpy(szCheck, TEXT("タイプミス!"));
}
InvalidateRect(hWnd, NULL, TRUE);
break;

459 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 15:21:46 ]
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, msg, wp,lp));
}
return 0;
}
int TypeStart(HWND hWnd)
{
int n;
MMTIME mm;

n = rand() % 26;
wsprintf(szMondai, TEXT("問題=\"%c\""), 'a' + n);
mm.wType = TIME_MS;
timeGetSystemTime(&mm, sizeof(MMTIME));
dwStart = mm.u.ms;
InvalidateRect(hWnd, NULL, TRUE);
return 0;
}

460 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 15:23:52 ]
書籍に乗ってるソースコードの転載はまずいだろ

461 名前:デフォルトの名無しさん [2009/09/19(土) 15:44:38 ]
流れからいって微妙w

462 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 16:22:32 ]
何事もなく動いた
www.geocities.jp/c_zelos/file_up2/nekotype.cpp

463 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 16:40:06 ]
追記: 
 もしかしたら
 動かないんじゃなくて、スペースキーー押して開始させてないんじゃね(と思った

90行目あたりの
case WM_CHAR:
 if(wp == VK_SPACE && !bStart) {
  bStart = TRUE;
  TypeStart(hWnd);
  break;
 }
 if(bStart == FALSE)
  return DefWindowProc(hWnd, msg, wp, lp);
これ
プログラム起動したらまずスペースキー押して bStart == TUREにしておかないと
  return DefWindowProc(hWnd, msg, wp, lp);
が実行されてそれ以下の処理が通らなくなってる

464 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 00:27:05 ]
>>462
そのままコピペしてやってみたんですが、動きませんでした。
#include<time.h>などを追加してエラーなくしてみましたが、
ウィンドウにszMondai、szInput、赤字でszCheckと表示され、
スペースを押すと問題があるので終了しますとなって終了してしまいました。
>>463
スペースキー押しての開始はもちろんしてますよ。
ただ、間違えたキーを押してもタイプミス!がでないんですよね・・・
デバッグしてもif文の分岐で、間違えたときもelse(タイプミス!と表示される)の方にいかないんです。


465 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/20(日) 07:57:39 ]
>>464
悪い、俺のソースは変数宣言を間違っていた
char * szMondai = "szMondai";
char * szInput = "szInput";
char * szCheck = "szCheck";

char szMondai[256];
char szInput[256];
char szCheck[256];
にすれば動く

466 名前:454 mailto:sage [2009/09/21(月) 18:53:17 ]
>>464
無事できました!ありがとうございます

どうやら原因は文字セットがUnicodeになっていたせいみたいでした。
マルチバイト文字セットを使ったら上手くいきました。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<111KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef