aris-wiz の回答履歴
- directxのspriteの描画について
VisualStudioによりc++とdirectxを使って3Dオブジェクト(xファイルなど)とspriteによるテクスチャの描画をしたいのです。3Dの格闘ゲームのようにカメラが動いているのに、ライフバーが固定されているようなものを作りたいのです。 3Dオブジェクトはプロジェクション変換とビューポート変換をして描画し、spriteのテクスチャは画面の左上を座標(0,0)として描画したいのですが、どのように実装すればいいのでしょうか? 現時点ではspriteを描画する前にプロジェクション変換とビューポート変換のときに使うポインタを初期化してパイプラインに送ればいいと考えやったのですが、3Dオブジェクトは描画されているのですがspriteはうまくいきませんでした。
- ファイルの入力がうまくできません。
ファイルの読み込みがうまくできません。 char buffer[起こりうる最大バイト数]; fread(buffer, 最大バイト数を超えないデータ量 で,うまく読み込めず、 buffer = (char *)malloc(必要なだけの領域) fread(buffer, 最大バイト数を超えないデータ量 だとうまくいきます。 最大バイト数は27*181と小さく、またbufferをstaticにしても 関数の外部においてもバグります。 いったいなにがおかしいのか、こころあたりあるかた教えてください。 ちなみに、fread直後ですでに読み込みデータがおかしくなっています 読み込みデータはバイナリでfopen("filename","br");でよんでます
- directxのspriteの描画について
VisualStudioによりc++とdirectxを使って3Dオブジェクト(xファイルなど)とspriteによるテクスチャの描画をしたいのです。3Dの格闘ゲームのようにカメラが動いているのに、ライフバーが固定されているようなものを作りたいのです。 3Dオブジェクトはプロジェクション変換とビューポート変換をして描画し、spriteのテクスチャは画面の左上を座標(0,0)として描画したいのですが、どのように実装すればいいのでしょうか? 現時点ではspriteを描画する前にプロジェクション変換とビューポート変換のときに使うポインタを初期化してパイプラインに送ればいいと考えやったのですが、3Dオブジェクトは描画されているのですがspriteはうまくいきませんでした。
- Windowsを2つインストール
今のPCにはWindowsVistaSP1がCドライブインストールされています。 最近インターネットでWindows7betaが出回っているようなので、Dドライブにインストールしようかな~、 とか思っています。 で、インストールした後、 PC起動時にデュアルブートの画面がでて、 OSを選ぶと思うのですが、 それ出させない方法はありますか? つまり、通常は、PCを起動したら、 いままでどうりそのままWindowsVistaSP1を起動したいのです。 Windows7betaは、例えば、 起動Diskみたいなのを入れておいてから、PCを起動した時のみ、 起動できるようにしたいのです。 こういうことはできるんですか? (別に起動Diskの方法以外でも構いません) あとWindowsVistaをインストールしているPCにWindowsXPをインストールすると、ブートファイルの関係で、 WindowsVistaが起動できなくなるのは知っています。なのでちょっと作業をしないとVistaが起動できないと思うのですが。 Windows7betaはこのあたりは心配無いのでしょうか? いろいろ質問してすみません。
- 締切済み
- Windows系OS
- tekunikaru
- 回答数11
- 構造体のメンバ初期化について
構造体のメンバを初期化したいのですが、 メンバ数が多いので1個ずつ初期化するのは面倒です。 そのため、一度に初期化する方法を探していたのですが、 memsetやZeroMemoryなどで可能だということが解りました。 しかし、パディング等の問題を含めて この関数を使用しても問題ないのでしょうか? 以下に例を挙げます。 typedef struct SAMPLE { char a; int b; int c; float d; SAMPLE(){ ZeroMemory( this, sizeof(Sample) ); } } Sample; 構造体Sampleは32bitマシンでは 一見13byteに見えますが、パディングが入るので、 実際にはsizeof(Sample)は16byteと表示されます。 また、構造体には自動的に初期化と解放するための、 コンストラクタ・デストラクタのみがあり、 関数や仮想関数などの実装はありません。 この方法の安全性について、 ご存知の方がいらっしゃればアドバイスいただけると助かります。 よろしくおねがいします
- インストーラと突然の電源断
VisualStudio2008のVC++でインストーラを作成しています。 ターゲットはXP/Vistaです。 CopyFile()でファイルをコピーして、ショートカットを作成し、レジストリを登録した直後ぐらいで電源断を発生させると、CopyFile()でコピーしたファイルで1Mを越すものがほとんど壊れています。またショートカットも無かったり、あってもショートカットの中身が壊れていたり(ショートカット先無し、作業フォルダも空)、レジストリもキーだけあって中身が無かったりします。 普通、これらの事象についてどうやって解決するのでしょうか? ちなみにCreateFileでキャッシュ無し指定をして書き込んでも、いきなり電源断するとファイルが壊れてしまっていました。 ノートPCだとあまり見られないのですが、デスクトップPCで顕著に見られます。 よろしくお願いします。
- DLLからEXEのクラスを呼び出すとリンクエラーになります。
私は昔VC++6.0を少し触っただけの初心者に近い状態のレベルです。 作っているプログラムは、1つのソリューションの中にEXE実行するプロジェクトとDLLを作るプロジェクトの2つプロジェクトを含んでいます。 DLL側からEXEのクラスを使用すると、ビルド時にリンクエラーになります。LNK2019でシンボルのエラーなのですが、なぜそうなのか?がわかりません。 ご教授いただけますでしょうか。 <ソリューションの構成> A ソリューション Aプロジェクト(.exe) AAクラス ERR親クラス ← ERR子クラスの継承 Bプロジェクト(.dll) 静的リンク(.defファイル使用) BAクラス BAクラスの実装 { try { throw ERR子クラス } catch(ERR子クラス) { } } やりたいことは、BプロジェクトにあるERR子クラスをBプロジェクトと Cプロジェクトの両方で使用したいです。 ビルド時に上のBAクラスのERR子クラスのところでコンパイルはとおるのですが、リンクエラーになります。エラーコードはLNK2019です。 何が足りないのでしょうか? dllからexeのクラスを呼び出すようなことはできないのでしょうか? このやり方自体に問題があり、他の方法にする方がいいですか? ERR親クラス、ERR子クラスともヘッダー定義があり。 CAクラスのヘッダー定義内でinclude宣言しています。 versionはVC2003++です。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- isakitsusi
- 回答数3
- WinXPでPowerUsersか否かを調べる方法
WindowsAPIで、IsUserAnAdminというのがあり、これで、 ユーザーがAdministratorsかどうかがわかりますが PowerUsersか否かをプログラムが知るには 何か方法がありますでしょうか?
- ベストアンサー
- C・C++・C#
- kurinkurinkurin
- 回答数1
- CD-ROMからexeを起動するとファイルを読み込まない
自作したゲームのexeファイルを起動したところ、ファイルを読み込んでくれないので困っています。 自分は、 if(NULL == (fp = fopen("ファイル名","r+t"))) としているのですが、普通にWindows上でexeを起動すると普通に読み込んでくれるのですが、何故かCD-ROMに焼いてから、CD-ROMからexeファイルを起動させるとファイルを読み込んでくれません。 他の方法でfopen("../フォルダ名/ファイル名")にしても駄目でした。 なにか別の方法がないのでしょうか? 教えていただけると助かります。 ちなみに開発環境は、VS.NET2003 C++です。
- CD-ROMからexeを起動するとファイルを読み込まない
自作したゲームのexeファイルを起動したところ、ファイルを読み込んでくれないので困っています。 自分は、 if(NULL == (fp = fopen("ファイル名","r+t"))) としているのですが、普通にWindows上でexeを起動すると普通に読み込んでくれるのですが、何故かCD-ROMに焼いてから、CD-ROMからexeファイルを起動させるとファイルを読み込んでくれません。 他の方法でfopen("../フォルダ名/ファイル名")にしても駄目でした。 なにか別の方法がないのでしょうか? 教えていただけると助かります。 ちなみに開発環境は、VS.NET2003 C++です。
- * の役割について
windows プログラミングをVC 2003 で始めたばかりの初心者です。参考書を元にウィンドウプロシージャに変数を書いているときに、 char *szStr = "Windows program"; という文があったのですが、このszStrの前の * はいったいどうゆう役割をはたしているのでしょうか? それに影響されてかTextOut関数を使うときも TextOut{hdc, 10, 10, (LPCTSTR)szStr, (int)sizeof(szStr)}; となってszStr の前に(LPCTSTR)がついています。この(LPCTSTR)がついていない例文もあるのですが どうゆうときに必要でまたどうゆうときに不必要なのでしょうか? 説明に足りないところがあればまた足しますのでよろしくお願いします。
- ベストアンサー
- C・C++・C#
- ganfuji142
- 回答数5
- DLL関数を使ったプログラム
DLL関数を使ったプログラムを動かしたんですが、ERRORが解決できず 困っています。DLLを作成したのはいいのですが、それをLoadLibraryで読み込もうとしても指定したプロシージャが見つからないというエラーになるようです。使用している環境はVisual Studio.NET2003です。 以下はDLLのソースです。 // plug.c // #include <windows.h> #include <stdio.h> __declspec(dllexport) void CALLBACK TestFunc() { printf("DLLのTestFunc()関数が実行されました。\n"); } これをビルドするとplug.dllとplug.expとplug.libが作成されました。 そしてこれを使用したプログラムが // stab.c // #include <windows.h> #include <stdio.h> typedef void (*TestFunc)(void); void main() { HMODULE hModule; DWORD error; TestFunc funcPointer; hModule = LoadLibrary(TEXT("plug")); error = GetLastError();//error値が127 funcPointer = (TestFunc)GetProcAddress(hModule,TEXT("TestFunc")); funcPointer(); FreeLibrary(hModule); getchar(); } LoadLibrary関数を使用してアプリのメモリ空間にDLLを読み込もうとしているんですが、ここでハンドルが正確に渡されていないみたいなんです。どうしてこうなるのか分かりません。わかる方いらっしゃったらよろしくお願いします。
- DLL関数を使ったプログラム
DLL関数を使ったプログラムを動かしたんですが、ERRORが解決できず 困っています。DLLを作成したのはいいのですが、それをLoadLibraryで読み込もうとしても指定したプロシージャが見つからないというエラーになるようです。使用している環境はVisual Studio.NET2003です。 以下はDLLのソースです。 // plug.c // #include <windows.h> #include <stdio.h> __declspec(dllexport) void CALLBACK TestFunc() { printf("DLLのTestFunc()関数が実行されました。\n"); } これをビルドするとplug.dllとplug.expとplug.libが作成されました。 そしてこれを使用したプログラムが // stab.c // #include <windows.h> #include <stdio.h> typedef void (*TestFunc)(void); void main() { HMODULE hModule; DWORD error; TestFunc funcPointer; hModule = LoadLibrary(TEXT("plug")); error = GetLastError();//error値が127 funcPointer = (TestFunc)GetProcAddress(hModule,TEXT("TestFunc")); funcPointer(); FreeLibrary(hModule); getchar(); } LoadLibrary関数を使用してアプリのメモリ空間にDLLを読み込もうとしているんですが、ここでハンドルが正確に渡されていないみたいなんです。どうしてこうなるのか分かりません。わかる方いらっしゃったらよろしくお願いします。
- DLL関数を使ったプログラム
DLL関数を使ったプログラムを動かしたんですが、ERRORが解決できず 困っています。DLLを作成したのはいいのですが、それをLoadLibraryで読み込もうとしても指定したプロシージャが見つからないというエラーになるようです。使用している環境はVisual Studio.NET2003です。 以下はDLLのソースです。 // plug.c // #include <windows.h> #include <stdio.h> __declspec(dllexport) void CALLBACK TestFunc() { printf("DLLのTestFunc()関数が実行されました。\n"); } これをビルドするとplug.dllとplug.expとplug.libが作成されました。 そしてこれを使用したプログラムが // stab.c // #include <windows.h> #include <stdio.h> typedef void (*TestFunc)(void); void main() { HMODULE hModule; DWORD error; TestFunc funcPointer; hModule = LoadLibrary(TEXT("plug")); error = GetLastError();//error値が127 funcPointer = (TestFunc)GetProcAddress(hModule,TEXT("TestFunc")); funcPointer(); FreeLibrary(hModule); getchar(); } LoadLibrary関数を使用してアプリのメモリ空間にDLLを読み込もうとしているんですが、ここでハンドルが正確に渡されていないみたいなんです。どうしてこうなるのか分かりません。わかる方いらっしゃったらよろしくお願いします。
- DLL関数を使ったプログラム
DLL関数を使ったプログラムを動かしたんですが、ERRORが解決できず 困っています。DLLを作成したのはいいのですが、それをLoadLibraryで読み込もうとしても指定したプロシージャが見つからないというエラーになるようです。使用している環境はVisual Studio.NET2003です。 以下はDLLのソースです。 // plug.c // #include <windows.h> #include <stdio.h> __declspec(dllexport) void CALLBACK TestFunc() { printf("DLLのTestFunc()関数が実行されました。\n"); } これをビルドするとplug.dllとplug.expとplug.libが作成されました。 そしてこれを使用したプログラムが // stab.c // #include <windows.h> #include <stdio.h> typedef void (*TestFunc)(void); void main() { HMODULE hModule; DWORD error; TestFunc funcPointer; hModule = LoadLibrary(TEXT("plug")); error = GetLastError();//error値が127 funcPointer = (TestFunc)GetProcAddress(hModule,TEXT("TestFunc")); funcPointer(); FreeLibrary(hModule); getchar(); } LoadLibrary関数を使用してアプリのメモリ空間にDLLを読み込もうとしているんですが、ここでハンドルが正確に渡されていないみたいなんです。どうしてこうなるのか分かりません。わかる方いらっしゃったらよろしくお願いします。
- DLL関数を使ったプログラム
DLL関数を使ったプログラムを動かしたんですが、ERRORが解決できず 困っています。DLLを作成したのはいいのですが、それをLoadLibraryで読み込もうとしても指定したプロシージャが見つからないというエラーになるようです。使用している環境はVisual Studio.NET2003です。 以下はDLLのソースです。 // plug.c // #include <windows.h> #include <stdio.h> __declspec(dllexport) void CALLBACK TestFunc() { printf("DLLのTestFunc()関数が実行されました。\n"); } これをビルドするとplug.dllとplug.expとplug.libが作成されました。 そしてこれを使用したプログラムが // stab.c // #include <windows.h> #include <stdio.h> typedef void (*TestFunc)(void); void main() { HMODULE hModule; DWORD error; TestFunc funcPointer; hModule = LoadLibrary(TEXT("plug")); error = GetLastError();//error値が127 funcPointer = (TestFunc)GetProcAddress(hModule,TEXT("TestFunc")); funcPointer(); FreeLibrary(hModule); getchar(); } LoadLibrary関数を使用してアプリのメモリ空間にDLLを読み込もうとしているんですが、ここでハンドルが正確に渡されていないみたいなんです。どうしてこうなるのか分かりません。わかる方いらっしゃったらよろしくお願いします。