aris-wiz の回答履歴

全480件中261~280件表示
  • DirectX ~テクスチャに値を書き込む~

    m_pDevice->CreateTexture( 128, 128, 1, 0, D3DFMT_A32B32G32R32F, D3DPOOL_MANAGED, &pTex, NULL ); で生成したテクスチャに浮動小数点の値を 自分で書き込みたいのですが、うまくいきません。 テクスチャのサーフェスをロックしたあと、操作できるようですが・・ ソースコードを記述します。 D3DLOCKED_RECT rect; LPDWORD data; float a = 0.0; float r = 0.56; float g = 0.24; float b = 1.0; /* テクスチャのサーフェスをロック */ surface->LockRect(&rect, NULL, 0); for(int y=128-1; y>=0; y--){ /* 書き込む行の先頭アドレスに移動する */ data = (LPDWORD)((LPBYTE)rect.pBits + rect.Pitch * y); for( int x=0; x<128; x++){ /* カラーデータを書き込む */ *data = ((DWORD)a << 96) | ((DWORD)b << 64) | ((DWORD)g << 32) | ((DWORD)r );     data++; } } スペースで余白を空けることができなくて、少々見にくくなってしまいました。 1つの色につき32bitななので、32bitづつシフトしています。 また、float型は4バイト(32bit)なので間違ってはいないと思うのですが・・。 何かアドバイスできる方はお願い致します。

  • DirectX ~テクスチャに値を書き込む~

    m_pDevice->CreateTexture( 128, 128, 1, 0, D3DFMT_A32B32G32R32F, D3DPOOL_MANAGED, &pTex, NULL ); で生成したテクスチャに浮動小数点の値を 自分で書き込みたいのですが、うまくいきません。 テクスチャのサーフェスをロックしたあと、操作できるようですが・・ ソースコードを記述します。 D3DLOCKED_RECT rect; LPDWORD data; float a = 0.0; float r = 0.56; float g = 0.24; float b = 1.0; /* テクスチャのサーフェスをロック */ surface->LockRect(&rect, NULL, 0); for(int y=128-1; y>=0; y--){ /* 書き込む行の先頭アドレスに移動する */ data = (LPDWORD)((LPBYTE)rect.pBits + rect.Pitch * y); for( int x=0; x<128; x++){ /* カラーデータを書き込む */ *data = ((DWORD)a << 96) | ((DWORD)b << 64) | ((DWORD)g << 32) | ((DWORD)r );     data++; } } スペースで余白を空けることができなくて、少々見にくくなってしまいました。 1つの色につき32bitななので、32bitづつシフトしています。 また、float型は4バイト(32bit)なので間違ってはいないと思うのですが・・。 何かアドバイスできる方はお願い致します。

  • ウインドウのプロセス終了について

    今C++でタスクバーのウインドの列挙を行い、またプロセスIDの取得を できたのですがこれらを終了させる方法がわかりません。 いろいろ調べてみたのですが、UNIXでのkillコマンドに匹敵する 関数がわかりません。 自分が調べたところ使えそうなのは。 CloseMainWindow関数 TerminateProcess関数 などができそうなのではと考えています。 また http://akky.cjb.net/mfc/appclose.html ここに書いてあるソースを打ってみたのですが、 思うように動きませんでした。 どうしたらよいでしょうか。 具体的な方法(プログラム)がほしいです。 よろしくお願いします。

  • c言語の難しい問題について

    (c言語の問題) 下記のプログラムを完成させ、キーボードから文字列を読み込み、-1文字ずらすことによって暗号化を行うプログラムを作りなさい。ただし、ピリオド、空白などはそのままにするようにすること。 例)this is a pen. sghr hr @ qdm. #include<stdio.h> #define CHAR_NUM 256 void angou( I ) { II } int main(void) { unsigned char text[CHAR_NUM]; char moji; int i; puts("暗号化する文字を入力しなさい。"); while((moji=getchar()) !=EOF){ text[i]=moji; i++; } angou(text i); printf("%s",text); return(0); } I、IIに入る文を書きなさい。 私はIには「char x[],int y」 IIには 「if('A'<x[i]<'Z' && 'a'<x[i]<'z') int j; for(j=0;j<y;j++) x[j]=x[j]-1 else」 といれたのですが、出力がうまくでません。どうすればいいのですか?

  • DirectXのサンプルフレームワーク

    今現在、卒業制作でC#で3Dゲームを作っています。 そこで質問なのですが、DirectXにはサンプルフレームワークとゆうのがあるとおもうのですが、それに関する資料がなくて困っています。なんらかのC#のサンプルフレームワークについての資料やサイトがあれば、是非、ご教授ください。

  • ファイル操作やポインタ、構造体について(C言語)

    C言語の課題で詰まってしまいました。宜しければ助言を宜しくお願いします。 コマンド選択で,0) 終了,1) 追加,2) 検索(id),3)変更 が行える学生成績管理プログラムを作成する。 データは,学生の番号 名前 GP 総単位数 形で学生のデータを持っているファイルである。 #include<stdio.h> #include<stdlib.h> #include<string.h> struct student{ int id; char name[25]; int gp; int credit; }; void add(char *, struct student);//追加 int search(char *, struct student *);//検索 void change(char *, struct student);//指定したidの学生の情報を変更 main(int argc,char *argv[]) { FILE *fp; int i = 0; int num; struct student students; if(argc == 1){ printf("set filename\n"); return 1; } while(1) { printf("1)add 2)search 0)quit "); scanf("%d",&num); if(num == 0) break; /* 追加 */ if(num == 1) { printf("id name gp credit ? "); scanf("%d %s %d %d", &students.id, students.name, &students.gp, &students.credit); add(argv[1], students); } /* 検索 */ if(num == 2) { printf("id ? "); scanf("%d", &students.id); if(search(argv[1],&students)){ printf("%d %s %d %d\n", students.id, students.name, students.gp, students.credit); } else{ printf("ID %d Not Found.\n",students.id); } } if(num == 3){ //変更 } } } /* 追加ルーチン */ void add(char *filename, struct student students) { FILE *fp; if((fp = fopen(filename, "a")) == NULL){ printf("can't open %s\n", filename); exit(1); } fprintf(fp,"%d %s %d %d\n", students.id, students.name, students.gp, students.credit); fclose(fp); } /* 検索ルーチン */ int search(char *filename, struct student *students) { FILE *fp; int id; char name[25]; int gp; int credit; if((fp = fopen(filename, "r")) == NULL){ printf("can't open %s\n", filename); exit(1); } while(fscanf(fp,"%d %s %d %d", &id, name, &gp, &credit) != EOF) { if(id == students->id){ students->id = id; strcpy(students->name ,name); students->gp = gp; students->credit = credit; return 1; } } return 0; fclose(fp); } /* 変更ルーチン */ void add(char *filename, struct student students){ } ------------ここまで------------ ファイルの操作での入出力は"a"や"r"、また"w"を利用するのかとも思いましたが、 指定したIDの内容を書き換えるにはポインタを2つ使う方法しか思いつかないのですが、与えられた問題で、変更のプロトタイプは void change(char *, struct student); となっていて、どうやるのかまったく見当もつきません。 稚拙な文で伝わりにくいかもしれませんが、 変更のやり方についてご教授願います。 見難くて申し訳ありません。 どうか宜しくお願いします。

    • QP51
    • 回答数4
  • パーサーに関する良本

    計算式の文字列を外部から渡し、計算結果を返すプログラムを作ろうとしています。 色々調べた結果、パーサーという物があることが分かったのですが、 使い方が分りません。 日本語での良い本(サイト)があれば、教えてください。

    • tk332
    • 回答数4
  • ウインドウのプロセス終了について

    今C++でタスクバーのウインドの列挙を行い、またプロセスIDの取得を できたのですがこれらを終了させる方法がわかりません。 いろいろ調べてみたのですが、UNIXでのkillコマンドに匹敵する 関数がわかりません。 自分が調べたところ使えそうなのは。 CloseMainWindow関数 TerminateProcess関数 などができそうなのではと考えています。 また http://akky.cjb.net/mfc/appclose.html ここに書いてあるソースを打ってみたのですが、 思うように動きませんでした。 どうしたらよいでしょうか。 具体的な方法(プログラム)がほしいです。 よろしくお願いします。

  • ポインタについて

    C言語では char *p; と宣言しておいてそのポインタに p = "ABC"; というように指定できると思います。 参考URL http://www9.plala.or.jp/sgwr-t/c/sec10-3.html このようにしてポインタを使用した場合、freeで開放する必要はあるのでしょうか。 配列で文字列を指定した場合 char str[] = "ABC"; スタック領域に確保されるので、宣言したメソッドが終わった場合、自動的に開放されると思いますが、malloc等でヒープ領域にメモリを確保した場合、freeで開放されるまではメモリ上に残っていると思います。 動きを見てみると、 char *p; p = "ABC"; もメソッドが終わってもメモリ上に残っているように思えるのですが、 開放する必要があるのでしょうか。 上記のような指定の仕方は使わなければいいだけなのですが、 気になってしまいました。 変な質問ですいませんが、宜しくお願いします。

  • PlgBltのマスク処理

    VC++2005、Win32APIで開発を行っています。 ビットマップを回転、反転させながら描画を行うときの処理について、画像の背景を透過させたいのですが、マスクの処理がうまくいきません。 BOOL PlgBlt( HDC hdcDest, // 転送先のデバイスコンテキストのハンドル CONST POINT *lpPoint, // 転送先平行四辺形の頂点 HDC hdcSrc, // 転送元のデバイスコンテキストのハンドル int nXSrc, // 転送元長方形の左上隅の x 座標 int nYSrc, // 転送元長方形の左上隅の y 座標 int nWidth, // 転送元長方形の幅 int nHeight, // 転送元長方形の高さ HBITMAP hbmMask, // ビットマスクのハンドル int xMask, // ビットマスク長方形の左上隅の x 座標 int yMask // ビットマスク長方形の左上隅の y 座標 ); 上記パラメータの、ビットマップマスク部分で指定したのですが、画像自体が表示されません。 用意したマスク画像の色の設定が間違っているような気がするのですが、元画像の背景および、マスク画像の背景と画像の下地部分は何色で設定するといったようなきまりはあるのでしょうか。 ご存知の方、よろしくお願いします。

    • accum
    • 回答数1
  • 計算結果を出力するコード

    ある参考書に 「次の計算結果を出力するコードを記入せよ」 との問題がありました 問   0-4   3.14*2   5 / 3   30 / 7のあまりの数   (7+32)/ 5 これのコードを作成したのですが答えがなくて自己流で作成したものが正しいのか判断がつきません もっとスマートにコードを組み立てられるのであれば教えてください 自分で作ったコードです #include <stdio.h> int main(void) { int a, b, sum; double aa, bb, cc, ssum; a = 0; b = 4; sum = a+b; printf("a+bは%d\n", sum); aa = 3.14; bb = 2; ssum = aa*bb; printf("aa*bbは%f\n", ssum); a = 5; b = 3; ssum = (double)a/(double)b; printf("a/bは%f\n", ssum); a = 30; b = 7; sum = a%b; printf("a%%bは%d\n", sum); aa = 7; bb = 32; cc = 5; ssum = (aa+bb)/cc; printf("(aa+bb)/ccは%f\n", ssum); return 0; } 採点お願いします。。。

  • exeファイルの起動について教えてください

    はじめまして。 現在c言語を勉強しているのですが、プログラム内で別のプログラムのexeファイルを呼び出し起動させたいのですが、サイトをいろいろ回ったのですが上手くいきませんでした。 環境は、Microsoft Visual C++ 2005 Express Edition 現在の呼び出し方法は、 case IDC_AI: /* 表示の次へボタン有効化 */ // SendMessage( hwnd, WM_SETREDRAW, TRUE, 0); /* 表示 */ // ShowWindow( IAhwnd, SW_SHOW); // CGMain(IAhwnd, message, wParam, IParam, nCmdShow2); // ShellExecute(hwnd, "open", "C:\\Documents and Settings\\c319-1037\\デスクトップ\\卒業研究\\プログラム\\11-12\\SQL組と合わせるよう\\Debug\\D3DFWSample2005.exe", NULL, NULL, SW_SHOW); path=(char*)calloc(MAX_PATH+1,sizeof(char)); if(0!=GetModuleFileName( NULL, buf, MAX_PATH )){// 実行ファイルの完全パスを取得 char drive[MAX_PATH+1] ,dir [MAX_PATH+1] ,fname[MAX_PATH+1] ,ext [MAX_PATH+1]; _splitpath(buf,drive,dir,fname,ext);//パス名を構成要素に分解します // file = '"'; // file += "\\"; // file += '"'; file = drive; file += dir; file += "SQL組と合わせるよう\\Debug\\D3DFWSample2005.exe"; // file += '"'; // file += '"'; MessageBox( hwnd, file.c_str(), "完全パス", MB_OK); // MessageBox( hwnd, drive, "ドライブ", MB_OK); // MessageBox( hwnd, dir, "ディレクトリ パス", MB_OK); // MessageBox( hwnd, fname, "ベース ファイル名 (拡張子なし)", MB_OK); } ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); MessageBox( hwnd, "秀丸を起動します", "完全パス", MB_OK); // 秀丸を起動する if( !CreateProcess( NULL, // No module name (use command line). (LPSTR)file.c_str(), // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi ) // Pointer to PROCESS_INFORMATION structure. ) { MessageBox( hwnd, "CreateProcess failed.", "実行エラー", MB_OK); iRtn = -1; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); MessageBox( hwnd, "秀丸を終了しました", "完全パス", MB_OK); return iRtn; です。 よろしくお願いします。

    • meren
    • 回答数2
  • 計算結果を出力するコード

    ある参考書に 「次の計算結果を出力するコードを記入せよ」 との問題がありました 問   0-4   3.14*2   5 / 3   30 / 7のあまりの数   (7+32)/ 5 これのコードを作成したのですが答えがなくて自己流で作成したものが正しいのか判断がつきません もっとスマートにコードを組み立てられるのであれば教えてください 自分で作ったコードです #include <stdio.h> int main(void) { int a, b, sum; double aa, bb, cc, ssum; a = 0; b = 4; sum = a+b; printf("a+bは%d\n", sum); aa = 3.14; bb = 2; ssum = aa*bb; printf("aa*bbは%f\n", ssum); a = 5; b = 3; ssum = (double)a/(double)b; printf("a/bは%f\n", ssum); a = 30; b = 7; sum = a%b; printf("a%%bは%d\n", sum); aa = 7; bb = 32; cc = 5; ssum = (aa+bb)/cc; printf("(aa+bb)/ccは%f\n", ssum); return 0; } 採点お願いします。。。

  • exeファイルの起動について教えてください

    はじめまして。 現在c言語を勉強しているのですが、プログラム内で別のプログラムのexeファイルを呼び出し起動させたいのですが、サイトをいろいろ回ったのですが上手くいきませんでした。 環境は、Microsoft Visual C++ 2005 Express Edition 現在の呼び出し方法は、 case IDC_AI: /* 表示の次へボタン有効化 */ // SendMessage( hwnd, WM_SETREDRAW, TRUE, 0); /* 表示 */ // ShowWindow( IAhwnd, SW_SHOW); // CGMain(IAhwnd, message, wParam, IParam, nCmdShow2); // ShellExecute(hwnd, "open", "C:\\Documents and Settings\\c319-1037\\デスクトップ\\卒業研究\\プログラム\\11-12\\SQL組と合わせるよう\\Debug\\D3DFWSample2005.exe", NULL, NULL, SW_SHOW); path=(char*)calloc(MAX_PATH+1,sizeof(char)); if(0!=GetModuleFileName( NULL, buf, MAX_PATH )){// 実行ファイルの完全パスを取得 char drive[MAX_PATH+1] ,dir [MAX_PATH+1] ,fname[MAX_PATH+1] ,ext [MAX_PATH+1]; _splitpath(buf,drive,dir,fname,ext);//パス名を構成要素に分解します // file = '"'; // file += "\\"; // file += '"'; file = drive; file += dir; file += "SQL組と合わせるよう\\Debug\\D3DFWSample2005.exe"; // file += '"'; // file += '"'; MessageBox( hwnd, file.c_str(), "完全パス", MB_OK); // MessageBox( hwnd, drive, "ドライブ", MB_OK); // MessageBox( hwnd, dir, "ディレクトリ パス", MB_OK); // MessageBox( hwnd, fname, "ベース ファイル名 (拡張子なし)", MB_OK); } ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); MessageBox( hwnd, "秀丸を起動します", "完全パス", MB_OK); // 秀丸を起動する if( !CreateProcess( NULL, // No module name (use command line). (LPSTR)file.c_str(), // Command line. NULL, // Process handle not inheritable. NULL, // Thread handle not inheritable. FALSE, // Set handle inheritance to FALSE. 0, // No creation flags. NULL, // Use parent's environment block. NULL, // Use parent's starting directory. &si, // Pointer to STARTUPINFO structure. &pi ) // Pointer to PROCESS_INFORMATION structure. ) { MessageBox( hwnd, "CreateProcess failed.", "実行エラー", MB_OK); iRtn = -1; } // Wait until child process exits. WaitForSingleObject( pi.hProcess, INFINITE ); // Close process and thread handles. CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); MessageBox( hwnd, "秀丸を終了しました", "完全パス", MB_OK); return iRtn; です。 よろしくお願いします。

    • meren
    • 回答数2
  • RadioButtonについて

    C#でプログラミングをしています。 RadioButtonをいくつか使ってるんですが、ユーザーが選択するときに何個か選択できるようにしたいです。今は、一つをクリックして、もう一つをクリックすると片方が消えてしまう状態です。どうすれば両方選択できるようになりますか? 初心者なので全然分かりません。教えて下さい。

    • noname#46927
    • 回答数1
  • freeで開放される範囲

    お世話になります 例えばある構造体を、 typedef struct {  char* yoso1;  int yoso2; } kozotai; とし、これをmallocで確保した後中身のポインタにもmallocし、 kozotai* test = (kozotai*)malloc(sizeof(kozotai)); test->yoso1 = (char*)malloc(128); freeで開放すると、 free(test); 中の要素の指すメモリも開放されるでしょうか? 今はどちらか分からないので、 free(test->yoso1);free(test);としています。。。

  • 副プログラム内(void mystery(char s1[],char s2[]))の動作確認文 

    お忙しい中失礼します。 下記のプログラム内の動作について質問があります。宜しければご回答願います。 void mystery(char s1[],char s2[]) { int i=0; while(s2[i]!='\0'){ //s2[i]内に文字が入力され、エンターキーが入力されるまで{s1[i] = s2[i]; ++i;}内の動作を行う。 s1[i] = s2[i];    //s1[i] を基準にs2[i]の文字数を++iを使い、カウントする。 ++i;         //++iはただs1[i] とs2[i]の文字が合致してるか確認を行う。s1[]=”Good”なら s2[]=”Good”の各文字が合致してるかどうか。 } s1[i] = '\0';    //s1[i]にエンターキーが入力されて、void mystery(char s1[],char s2[])内のループを抜ける。 return;       //s1[i] = '\0'で'\0'が定義されているのでreturn 0;でない? } ↑上記動作質問://より右側の文章は文章的に正しいでしょうか? void mystery(char s1[],char s2[])内でどんな動作をしてるのかが、イマイチよく分からないのです。 ↓下記のプログラム #include <stdio.h> #include <stdlib.h> void mystery(char [], char[]); int main() { char m1[81],m2[81]; int i; printf("Message?"); gets(m1); mystery(m2,m1); puts(m2); system("PAUSE"); return 0; } void mystery(char s1[],char s2[]) { int i=0; while(s2[i]!='\0'){ s1[i] = s2[i]; ++i; } s1[i] = '\0'; return; }

  • C言語でのLinux再起動方法とは?

    QNo.3555570の質問と関連しているのですが。。 「system("shutdown -r now");」で、システムを再起動する プログラムを作成しております。 しかし、別のプロセスにて無効なメモリアドレスへのアクセスを した後に上記を実行すると再起動されません。 shutdownコマンドによるログは出力されております。 不足な情報がございましたらご指摘ください。 環境&コンパイラ  RedHat 7.3 2.96-110  Kernel 2.4.18-3 on an i686  gcc 2.96  GNU Make 3.79.1

    • himaspo
    • 回答数2
  • C言語での例外処理の検出方法とは?

    下記Linux環境にて、C言語で例外処理を検出したいのですが 何か方法は有りますでしょうか? 回答するにあたり、不足な情報がございましたらご指摘ください。 環境&コンパイラ  RedHat 7.3 2.96-110  Kernel 2.4.18-3 on an i686  gcc 2.96  GNU Make 3.79.1

    • himaspo
    • 回答数3
  • C言語での例外処理の検出方法とは?

    下記Linux環境にて、C言語で例外処理を検出したいのですが 何か方法は有りますでしょうか? 回答するにあたり、不足な情報がございましたらご指摘ください。 環境&コンパイラ  RedHat 7.3 2.96-110  Kernel 2.4.18-3 on an i686  gcc 2.96  GNU Make 3.79.1

    • himaspo
    • 回答数3