axsies の回答履歴
- win32api複数のタイマーを同時に処理するには
いつもお世話になっています。 いま、タイマーを使ったアニメーションをやっているのですが、 SetTimer(VisualWnd,ID_YOKOUGOKI,200,NULL); SetTimer(VisualWnd,ID_MOJIOKURI,20,NULL); ようにすると、下のID_MOJIOKURIの部分しか処理されません。 case WM_TIMER: switch(wParam){ case ID_YOKOUGOKI: if(syouninkaiwa<13){ if(playeryoko==1){ playeryoko=2; }else if(playeryoko==2){ playeryoko=3; }else if(playeryoko==3){ playeryoko=4; }else if(playeryoko==4){ playeryoko=1; } if(syouninyoko==1){ syouninyoko=2; }else if(syouninyoko==2){ syouninyoko=3; }else if(syouninyoko==3){ syouninyoko=4; }else if(syouninyoko==4){ syouninyoko=1; } } break; case ID_MOJIOKURI: if(syouninkaiwa==1){ mojiokuri+=1; } break; } InvalidateRect(VisualWnd,NULL,FALSE); return 0; また描画処理は if(playeryoko==1){ BitBlt(hdcv, 250,132, 34, 32, memdc[50], 0, 0, SRCCOPY); }else if(playeryoko==2){ BitBlt(hdcv, 249,130, 34, 32, memdc[55], 0, 0, SRCCOPY); }else if(playeryoko==3){ BitBlt(hdcv, 250,132, 34, 32, memdc[50], 0, 0, SRCCOPY); }else if(playeryoko==4){ BitBlt(hdcv, 249,130, 34, 32, memdc[56], 0, 0, SRCCOPY); } if(syouninyoko==1){ BitBlt(hdcv, 220,130, 29, 32, memdc[51], 0, 0, SRCCOPY); }else if(syouninyoko==2){ BitBlt(hdcv, 220,130, 29, 32, memdc[57], 0, 0, SRCCOPY); }else if(syouninyoko==3){ BitBlt(hdcv, 220,130, 29, 32, memdc[51], 0, 0, SRCCOPY); }else if(syouninyoko==4){ BitBlt(hdcv, 220,130, 29, 32, memdc[58], 0, 0, SRCCOPY); } }else{ BitBlt(hdcv, 250,130, 34, 32, memdc[50], 0, 0, SRCCOPY); BitBlt(hdcv, 220,130, 29, 32, memdc[51], 0, 0, SRCCOPY); } SetTimer(VisualWnd,ID_YOKOUGOKI,200,NULL); SetTimer(VisualWnd,ID_MOJIOKURI,20,NULL); if(syouninkaiwa == 0){ TextOut(hdcv,350,350,TEXT("push Enter"),lstrlen(TEXT("push Enter"))); }else if(syouninkaiwa == 1){ if(mojiokuri==1){ wsprintf(TEXT1,L"○"); }else if(mojiokuri==2){ wsprintf(TEXT1,L"○○"); }else if(mojiokuri==3){ wsprintf(TEXT1,L"○○○"); }else if(mojiokuri==4){ wsprintf(TEXT1,L"○○○○"); }else if(mojiokuri==5){ wsprintf(TEXT1,L"○○○○○"); }else if(mojiokuri==6){ wsprintf(TEXT1,L"○○○○○○"); }else if(mojiokuri==7){ wsprintf(TEXT1,L"○○○○○○○"); }else if(mojiokuri==8){ wsprintf(TEXT1,L"近頃、冒険者が多"); } ・・・・・・・・・・・・・・・・・・・・ TextOut(hdcv,20,240,TEXT1,lstrlen(TEXT1)); というふうです。 どちらが悪いのか分かりません。 ちなみに、タイマーの時間を同じにしたら、同時にできましたが、両方の処理が遅くなりました。 どのように解決したらよいのか教えてください。お願いします。
- 【C#】StreamReaderクラスのエンコード
こんばんは。 .NetFramework1.1のStreamReaderクラスを使用して、csvファイルを読み込んでいるのですが、 エンコードでShift_JISを指定しても、"€"などの環境依存文字がそのまま取得されてしまいます。 Shift_JISに存在しない文字は文字化けして取得されるものだと思っていましたが、違うのでしょうか? DBの文字コードがShift_JISなのでこのままDBへ渡すとエラーになってしまい困っています。 ご教授下さい。宜しくお願いします。 -- ソース ---------------------------------------------- StreamReader sr = new StreamReader(path,Encoding.GetEncoding("Shift_JIS")); string str = sr.ReadLine();
- ベストアンサー
- C・C++・C#
- mirumiru36
- 回答数1
- ヒープソート 追加操作について
配列を用いたヒープにデータを追加する。 この際、データの追加は配列の最後の要素に新たなデータを加え、ヒープ条件を満足するまで 親子間でデータの交換を行う。 要素数をnとしたら、この追加操作にかかる最悪時間計算量を求めよ。 この問題なのですが、ただ単にデータを一つ追加する際の最悪時間計算量だったら、 オーダlog n ですが、 追加する要素がnこだったら、n* log nになります。 この問題ではどちらがより適切なのでしょうか? どなたかご教授ください。
- 締切済み
- C・C++・C#
- denbuntarou
- 回答数2
- OpenCVでキャプチャした画像をbmp保存したい
OpenCVでカメラからキャプチャした画像(コマ画像)をbmpで保存しようと思っています。 以下のプログラムで一応bmp画像は保存できるのですが、キー入力をしないと保存できません。 #include <iostream> #include <stdio.h> #include <cv.h> #include <highgui.h> #include <math.h> #include <stdlib.h> int main(void){ //画像保存用 char str[32]; //キー入力用 int key; //カメラの用意 CvCapture *capture; IplImage *frame = NULL; //カメラ画像用 //カメラ・デバイスの先頭ポインタを取得 capture = cvCaptureFromCAM(-1); //カメラ画像のサイズ double height = 240; double width = 320; //カメラ初期化 if(capture == NULL){ //カメラが見つからなかった場合 printf("カメラが見つかりません\n"); return (0); } //カメラ画像を表示するウィンドウの生成 cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, height); cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, width); cvNamedWindow("CaptureFromCamera", CV_WINDOW_AUTOSIZE); //キー入力されたら画像をキャプチャ while(1){ //カメラ画像からフレーム画像を取り込む frame = cvQueryFrame(capture); if(frame == NULL) break; //画像の表示 cvShowImage("CaptureFromCamera", frame); //sキー入力で画像を保存、Escキー入力でループから抜ける key = cvWaitKey(10); if(key == '\x1b') break; else if(key == 's'){ sprintf(str, "Capture_Bitmap.bmp"); cvSaveImage(str, frame); } } //キャプチャの解放 cvReleaseCapture(&capture); //ウィンドウの破棄 cvDestroyWindow("CaptureFromCamera"); } 自分が作りたいプログラムは、 ・カメラからコマ画像を取得 ↓ ・それをbmp形式にする ↓ ・変換した画像はファイルにではなく、プログラム中の変数に保存 ↓ ・プログラムが動いている間ずっとこの処理を行う というものです。 特に変換した画像をプログラムが動いている間、ずっと変数に保存し続ける方法がわかりません。 プログラム中の変数に保存したい理由は、保存したコマ画像を用いてテンプレートマッチングなどを行いたいからです。 どなたか教えていただけると助かります。
- 締切済み
- C・C++・C#
- miyuki_setsuna
- 回答数1
- 正規表現の応用
C言語のソースコードを扱っています。 デバッグのため(関数がどういう順番で呼び出されているかを知るため)、関数の先頭にprint文をつけようと思っています。 例えば、 int hoge(引数の並び) { 関数の中身 } なら int hoge(引数の並び) { printf("hoge"); 関数の中身 } といった具合です。 関数が膨大なので、手作業で一つずつprintfを書くのは現実的ではありません。 関数の最初の1行のパターンマッチは、/int\s\w*(.*)/ でうまくいくのですが、次の行の{まで含んだ正規表現に対応させるやり方がわかりません。 また、printf文を読み込んだソースコードに挿入するにはどうしたらよいのでしょうか。 どなたか分かる方がいらしたらご教授よろしくお願いいたします。
- ベストアンサー
- Perl
- noname#182748
- 回答数4