[表示 : 全て 最新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

433 名前:425 mailto:sage [2009/03/04(水) 20:29:17 ]
>>432
ありゃ、つまりDrawTextExを使う場合はLPCTSTRじゃなくてLPWSTR
を使わないとダメってことですか。
んじゃあ本の方が間違っていて、おまけで付いて来たソースの方が合っていたってことで
いいんでしょうか?

434 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 21:24:39 ]
>>433
本は持っとらんからなんとも言えん

435 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:33:14 ]
プロジェクトのプロパティからマルチバイト文字を使う設定を選べ。

あるいは、説明になっていないような気がするWeb上の説明。
www.kumei.ne.jp/c_lang/net2005/sample.htm

436 名前:425 mailto:sage [2009/03/04(水) 22:47:13 ]
DrawTextExの定義をよく見てみたしたところ、
2番目の引数はLPTSTR で宣言されていまして、
LPTSTR で値を渡さないといけないのにLPCTSTR で渡しちゃってたのが原因みたいです。

まだウィンドウズプログラミングは始めたばっかりなので
どっか抜かしたりタイプミスしたのが原因かもしれないんで断定は出来ないんですけれども
たぶんそれで合っていると思います。

>>435
ありがとうございます。
でも、それをやっても同じエラーが表示されるだけで効果はありませんでした。

437 名前:デフォルトの名無しさん mailto:sage [2009/03/06(金) 15:00:03 ]
うお、本当だ。この手のconst付きだろ常考な引数はCreateProcess系だけだと思っていた。

438 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 07:28:45 ]
iniファイルの読み書きをしようと思ってKeyに対応する文字列を拾う処理で
詰まり、下にあげる虎の巻を参考にしているのですが、EXEと同じディレクトリ
に読み込みたいiniファイルがある場合はどうしたらいいですか?相対パスとい
うのでしょうか?

完全手詰まりです。

OS:WindowsVistaHomePremium
IDE:VisualStudioExpress2008
言語:C++

参考サイト::candy.zapto.org/ese/madoca%27s_tips/c,c++.html

439 名前:デフォルトの名無しさん [2009/03/18(水) 07:48:15 ]
おながいします。

440 名前:デフォルトの名無しさん [2009/03/18(水) 11:56:54 ]
>>438
#include <mbstring.h>
...
TCHAR szIniFile[MAX_PATH];
LPTSTR pch;
GetModuleFileName(NULL, szIniFile, MAX_PATH);
pch = _mbsrchr(szIniFile, '\\');
lstrcpy(pch, "\\file.ini");
GetPrivateProfileString(..., szIniFile);

441 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 12:46:20 ]
>>440
ありがとうございます。試してみます。



442 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 13:29:04 ]
>>440
_mbsrchrより_tcsrchrにしろよ。
msdn.microsoft.com/ja-jp/library/ftw0heb9.aspx

自分ならlstrcpyより_tcscpyにするけど、そこはさすがに好みの問題。

443 名前:デフォルトの名無しさん [2009/03/18(水) 19:49:12 ]
OE6の重複メールを削除しようと
questionbox.jp.msn.com/qa557649.html
を参考にして実行してみたのですが、うまくいかず、
デスクトップや開いているフォルダ、
また起動中のアプリに対して勝手な操作がしばらくの間行われてしまい、
少なくとも起動中のタスクのいくつかは終了してしまうなど、
思わぬ事態に陥ってしまいました。

Ctrl+Alt+Delでwscript.exeを停止しOS再起動して動作は止まったのですが、
起動中だったアプリが取り扱っていたデータが書き換えられて上書きされていないか?
また、何かファイルが操作、削除されてしまったりはしていないか、非常に不安です。

このVBSが具体的にどういう挙動をするものなのか教えてください。

444 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 21:00:59 ]
>>443
鼬害

445 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 12:28:04 ]
>>443
ウイルス板に池

446 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 14:40:37 ]
ちょw

447 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 19:20:09 ]
24ビットカラーのBMPを16ビットカラーに減色するプログラムを書いていたのですが
24ビットカラーBMPの各色を取ってB&0x1F、G&0x2F、R&1Fをあてて各色を減色し
R<<11 | G<<5 |Bっていった感じに繋げてみたのですがどうにもうまくいきません。
何か参考になるサイトや書籍、ヒント等いただけないでしょうか・・・。

448 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 20:57:02 ]
>447
> 24ビットカラーBMPの各色を取ってB&0x1F、G&0x2F、R&1Fをあてて各色を減色し
本当にこの通りなら減色してなくね?
128, 128, 128 を 5 bit, 6 bit, 5 bit に縮めるなら 16, 32, 16 になるべきだと思わないかい?
今だと 0, 0, 0 になるよ?
単純にやるにしてもマスクじゃなくてビットシフトだと思う。

減色自体は画像処理定番だからぐぐれば腐るほどヒットすると思うが。

449 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:04:33 ]
>>448
24ビットカラーは各色8bitだから256*256*256だぞ・・・128ビットって各色4ビットで12bitになっちまうじゃねーか・・・


450 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:38:14 ]
> B&0x1F、G&0x2F、R&1F
ちょ・・・ったく、もう。

たとえば赤を例にとって
8びっと=0〜255
5びっと=0〜31

0〜255の値を取りうる数値を単純に31で頭打ちしちゃダメだろ。
R=R×32÷256
つまり0.125倍に圧縮しなきゃダメだろ。頭打ちじゃ無くて圧縮ね!
インチをミリにしたり、ポンドをグラムにしたりするのと考え方は同じだよ〜

緑は6びっとだから後は自分で考えろ。
あと、G&0x2F も間違ってる。もういっぺん2進数、16進数を最初から勉強しなおせ。
これじゃ自転車に乗れないのにバイクの免許を取ろうとしてるのと同じ。無謀だよ。

451 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 01:01:19 ]
>>450
0x3Fって後カラから気がついて問題そこじゃないからいっかと。



452 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 01:36:11 ]
>>450
知り合いに、自転車乗れないベテランライダーがいるぞ。
自分で漕ぐときの動的バランス感覚がないらしい。

453 名前:デフォルトの名無しさん mailto:sage [2009/09/07(月) 12:51:18 ]
>>447
下位のビットじゃなくて上位のビットを使おう
R >>= 3; G >>= 2; B >>= 3;
R<<11 | G<<5 | B;


454 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:11:40 ]
猫でもわかるWindowsプログラミング第3版の5.2タイピングソフトのプログラムって、
本の通り書くと「タイプミス!」にならないんですが、これは本が間違ってるんでしょうか?
もし間違えているなら、どこが間違っているのか教えていただけると助かります。

455 名前:デフォルトの名無しさん [2009/09/19(土) 14:39:54 ]
おねがいします

456 名前:ぅゅ ◆e6.oHu1j.o mailto:sage [2009/09/19(土) 14:45:46 ]
ソースうp
第二版にはタイピングゲームは載っていない

457 名前:454 mailto:sage [2009/09/19(土) 15:20:24 ]
ウィンドウプロージャ部のみですが、
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
HDC hdc;
PAINTSTRUCT ps;
MMTIME mm;
switch (msg) {
case WM_CREATE:
srand((unsigned)time(NULL));
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 0, 0, szMondai, lstrlen(szMondai));
TextOut(hdc, 0, 40, szInput, lstrlen(szInput));
if(bSeikai)
SetTextColor(hdc, RGB(0,0,0));
else
SetTextColor(hdc, RGB(255,0,0));
TextOut(hdc,0,80,szCheck,lstrlen(szCheck));
EndPaint(hWnd, &ps);
break;


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