トップページ⇒tech
989コメント314KB

★初心者にVisual C++を教えるスレ★ Part35

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/10/27(火) 21:15:13
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

【過去スレ】
Part34 ttp://pc12.2ch.net/test/read.cgi/tech/1245382769/
Part33 ttp://pc12.2ch.net/test/read.cgi/tech/1235292263/
Part32 ttp://pc11.2ch.net/test/read.cgi/tech/1225422971/
Part31 ttp://pc11.2ch.net/test/read.cgi/tech/1217494948/
0002デフォルトの名無しさん2009/10/27(火) 21:18:12
おおおおおおおおおおおおおおにぃぃぃぃちゃああああああああああああああああああああああんん
0003デフォルトの名無しさん2009/10/27(火) 21:26:29
【関連スレ】
■MFC相談室 mfc21d.dll■
http://pc12.2ch.net/test/read.cgi/tech/1250919279/
Win32API質問箱 Build82
http://pc12.2ch.net/test/read.cgi/tech/1253699773/
【C++】 DirectX初心者質問スレ Part26 【C】
http://pc12.2ch.net/test/read.cgi/tech/1256403984/
C言語なら俺に聞け(入門篇) Part 54
http://pc12.2ch.net/test/read.cgi/tech/1254829314/
C++相談室 part74
http://pc12.2ch.net/test/read.cgi/tech/1256397778/
C/C++の宿題片付けます 131代目
http://pc12.2ch.net/test/read.cgi/tech/1255709298/
【初心者歓迎】C/C++室 Ver.69【環境依存OK】
http://pc12.2ch.net/test/read.cgi/tech/1256022655/
0004デフォルトの名無しさん2009/10/27(火) 21:30:42
【関連サイト】
MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/default.aspx

Windows SDK for Windows Server 2008 and .NET Framework 3.5
http://www.microsoft.com/downloads/details.aspx?FamilyID=f26b1aa4-741a-433a-9be5-fa919850bdbf&DisplayLang=en
0005デフォルトの名無しさん2009/10/27(火) 22:18:30
ぬるぽ
0006デフォルトの名無しさん2009/10/27(火) 22:23:39
↓まかせた
0007デフォルトの名無しさん2009/10/28(水) 01:32:44
int型の変数の偶数奇数を調べる方法を教えてください
一番下のビットを調べればいいような気がしますが、やり方がわかりません
000872009/10/28(水) 01:45:36
ビット演算子というのを使って

int y = 1;
if((x & y) == 1){

こんな条件式でいいんでしょうか?
0009デフォルトの名無しさん2009/10/28(水) 02:16:55
それでいいし
if (x & 1) { ... }
だけでもいい
0010デフォルトの名無しさん2009/10/28(水) 02:31:43
>>7-8

BOOL IsKisuh( int nValue)
{
  if ( nValue == 0) return FALSE;
  return ( nValue % 2);
}
0011デフォルトの名無しさん2009/10/28(水) 04:24:45
>>10
関数名がキモイ
0012デフォルトの名無しさん2009/10/28(水) 09:07:11
>>10
なんで0を例外扱いしているの?
まさか、0を2で割ってはいけないなんて寝惚けたことは言わないよね?
0013デフォルトの名無しさん2009/10/28(水) 09:10:26
それは兎も角、BOOLを返す関数に割り算の結果を突っ込むのは問題だな。
0014デフォルトの名無しさん2009/10/28(水) 10:01:44
BOOLだから負の値があっても大丈夫w
0015デフォルトの名無しさん2009/10/28(水) 13:13:33
0って偶数だよな
0016デフォルトの名無しさん2009/10/28(水) 15:06:30
XP VC2005 MFC での質問です。
ボタンイベント【OnBnClickedButton1()】で、
AfxBeginThread( ThreadFunk1, NULL );
を実行したいです。

その下に、
UINT CStringTestDlg::ThreadFunc1(LPVOID dummy)
{
AfxMessageBox(_T("スレッドが呼ばれた"));
return( 0 );
}

また、TestDlg.hファイルに、
static UINT ThreadFunc1(LPVOID);

を追加しました。

C2065: 'ThreadFunk1' : 定義されていない識別子です。
C2653: 'CStringTestDlg' : 識別子がクラス名でも名前空間名でもありません。

ですが、上記のエラーが出てわかりません。

他のツールソースを見ながら少しずつ出来ることを増やしていこうと勉強中なのですが、
これは他のソースからAfxBeginThreadを勉強しようと思いそれを使用している部分をコピーしました。

エラーが出るので、クラスビューから追加しなければいけないのかとも思いましたが、
UNIT は選択できないため、もしクラスビューから追加するのであればその方法も教えて頂きたいです。

同じ方が見ているかわかりませんが、Part34  949 です。

宜しくお願いします。
0017デフォルトの名無しさん2009/10/28(水) 15:17:48
>>16
ThreadFunc1 を宣言してるのに、ThreadFunk1を使おうとしてるから。
k と c な。
おかしいと思ったら変数とかはコピペでもっていってみるといい。
0018162009/10/28(水) 15:30:20
>>17
ご指摘ありがとうございます。
盆ミスですみません。

error C2653: 'CStringTestDlg' : 識別子がクラス名でも名前空間名でもありません。

しかし上記にスペルミスはありませんでした。(「TestDlg」検索でたくさんひっかかるのを確認。)
0019デフォルトの名無しさん2009/10/28(水) 15:43:00
は?そっちもかよ。
それはファイル名からの推測だが、
CTestDlgクラスを作ったのに雑誌通りCStringTestDlgのメンバとして書いてるんだろ。
CStringTestDlg → CTestDlgでどうよ
0020デフォルトの名無しさん2009/10/28(水) 15:44:23
って雑誌じゃないか、本・・だっけ
0021162009/10/28(水) 15:52:01
>>19
ああああああああああああ。

ありがとうございます。


CStringなんとか  と、先入観で勘違いをしていました・・・。

CTestDlgで通りました。

ありがとうございます。
0022デフォルトの名無しさん2009/10/28(水) 15:57:18
>>21
>C2065
>C2653
コンパイラ エラー のコードがちゃんと出ているんだから、
ヘルプ(MSDN)で調べるクセをつけといたほうがいいぞ。

考えられる原因も、ちゃんとそこに載っているから。
0023162009/10/28(水) 16:06:19
>>22
了解しました。
MSDNもよくみるようにします。
0024デフォルトの名無しさん2009/10/28(水) 20:56:43
一番最初で詰まってしまいました
プロジェクト : error PRJ0015 : NULL デバイスがシステム内にありません。ビルドを実行できません。
と出てビルド?できません
ググったらhttp://msdn.microsoft.com/ja-jp/library/c22s4fy4.aspxが出てきたんですが
リソースをあけても出てくるので
”NULL デバイスに対する適切な特権がないためにこのエラーが発生することもあります。”
ということなんでしょうか? これをどうすればいいのかわかりません。
0025デフォルトの名無しさん2009/10/28(水) 21:02:37
あきらめよう
0026デフォルトの名無しさん2009/10/28(水) 21:34:46
ディスクとかメモリ足りてる?
0027デフォルトの名無しさん2009/10/29(木) 15:57:03
配列をひとつずつ宣言することはできますか?
たとえば最初にint A[5]とか宣言した後に6番目の要素を追加するような感じで
メモリ領域を確保とかすれば可能なんでしょうか?
0028デフォルトの名無しさん2009/10/29(木) 16:27:35
>>27
いみふ。日本語でOK
0029デフォルトの名無しさん2009/10/29(木) 16:29:43
std::vectorつかうとか、cならmallocとrealllocの組み合わせとかだな
0030デフォルトの名無しさん2009/10/29(木) 17:15:40
malloc()とrealloc()を組み合わせるくらいなら、malloc()は要らない。
0031デフォルトの名無しさん2009/10/29(木) 17:17:21
まあ書くこと無くてそう突っ込むやつも出るとは思ったけどな。
無くても書けるだけであったほうがわかりやすい時は使った方がいい。
0032デフォルトの名無しさん2009/10/29(木) 17:52:44
初回だけ例外的にmalloc()を使って処理するようなみっともないプログラミングの方が判り易いと思うならその通りだね。
0033デフォルトの名無しさん2009/10/29(木) 21:46:14
クラスAの関数内で宣言している配列Bを使って、クラスCの関数をループして使いたい場合、
�@クラスAの関数内でループさせ、クラスCの関数に配列Bからひとつずつデータを渡して何度も呼び出す
�A配列Bを(グローバルに宣言して)クラスCの関数に受け渡して、クラスCの関数内でループさせる

どちらの方法を使うほうがよりスマートでしょうか?
詳しく書くと、クラスCは描画処理関連のクラスで、描画はクラスCでしか行えません
クラスAの関数で描画用の情報をまとめてローカルな配列Bに入れています
�Aの方が速度的に速そうな気がしますが、�@の方がグローバル宣言しなくていいのでプログラム的に簡単なようにも思います
描画処理自体の回数はどちらも変わらないので、�@の方が良いんでしょうか
0034332009/10/29(木) 21:49:06
追記:配列Bは、構造体の配列です
0035デフォルトの名無しさん2009/10/29(木) 22:13:10
>>32
教わった通りのことしかかけない自分で考えることのない人はそれでいいよ
0036デフォルトの名無しさん2009/10/29(木) 23:23:36
CもしくはC++スレでやればいい話
0037デフォルトの名無しさん2009/10/30(金) 02:14:08
F10キーの”ステップ オーバー”で、次の行に移ろうかという時に、Visual C++がフリーズして
WindowsのGUI自体もほとんど反応しなくなってしまうのですが、どういった要因でフリーズしてしまうのでしょうか。

デスクトップのGUI全体が半死状態になって
Ctrl+Shift+Escでタスクマネージャを起動させてもまともにコントロールが表示されず、Visual C++のプロセスを殺すこともできなくて
PCの再起動かけないといけない状態です。

使用しているソフトはVC++2008EE SP1、XP Home Edition SP3で用いています。
0038デフォルトの名無しさん2009/10/30(金) 09:58:14
>>37
それだけの条件では何が起きているかまでは想像しようがありません。ステップオーバーしようとしている関数が悪さをしているのでは?

>>33
クラスAの関数から配列BをクラスCの関数に渡すことはできないの?
構造体の配列でも引き数で渡すことはできますよ。
尤も、配列ではなくvectorにしておけばサイズ情報を別パラメータにしなくていい分よりシンプルになりますが。
0039デフォルトの名無しさん2009/10/30(金) 11:47:17
int型の単純な代入文ですら発生します。
0040デフォルトの名無しさん2009/10/30(金) 11:51:43
>>39
>37? だとしたら、動作環境が劣悪なんじゃないの? 特にメモリ容量辺りを見直すべし。
0041デフォルトの名無しさん2009/10/30(金) 11:56:20
メモリは2GBなんですが・・・
仮想メモリというか、ページファイルも含めれば十分にあると思います。
0042デフォルトの名無しさん2009/10/30(金) 12:12:12
XPたまにそういうことあるなあ
OS入れなおしで直ったが・・・
0043デフォルトの名無しさん2009/11/01(日) 22:10:51
リリース版の作り方を教えてください
0044432009/11/01(日) 22:23:50
ttp://funini.com/kei/vs/を見て設定してみましたが、
「プリコンパイル済みヘッダーがありません」というのが
#include "stdafx.h" を書いていっても消えません
0045432009/11/01(日) 22:31:14
「プリコンパイル済みヘッダを使用しない」で解決しました
VC++ 2008 Express Editionでした
0046デフォルトの名無しさん2009/11/02(月) 08:59:08
Visual C++ プログラマだと思い込んでいる、
ただの Visual C++ ユーザー、Visual Studio ユーザー
って多いよね。
プログラマではなく、ただの統合環境(IDE)ユーザーでしかない人。

IDEをそれなりに使いこなして、アプリっぽいものを作れる人と、
IDEがあってもなくても、アプリをガツガツ組める人とは
雲泥の差がある。
0047デフォルトの名無しさん2009/11/02(月) 09:55:35
使いこなして無い奴のが多くないか?
デバッガ使える環境なのに使わないとかありえんだろ。
検索と同じように、コツというものはあるけどな
0048デフォルトの名無しさん2009/11/02(月) 11:20:14
プログラミング自体始めてのやつもいれば
VCは初心者だけど他で経験あるやつ
万年初心者のやつ
初心者といってもいろいろだろ
0049デフォルトの名無しさん2009/11/02(月) 11:22:18
いつもコマンドライン使ってるから
IDEの使い方は必要最小限しか知らない
0050デフォルトの名無しさん2009/11/04(水) 13:00:07
GetGlyphOutlineという関数をループ中で
size = GetGlyphOutline(hdc, str[i], GGO_GRAY4_BITMAP, &gm, 0, NULL, &Mat );
こんな感じで使っているのですが、この関数の戻り値がループの初回は460で二回目は0xFFFFFFになります
それぞれの引数を初期化したり定数にしてみたりしましたが変わりません
この関数が0xFFFFFFを返すというのはどういう状況なんでしょうか
0051デフォルトの名無しさん2009/11/04(水) 13:29:51
>>50
MSDNによると、
--
戻り値
フラグ GGO_BITMAP、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP または GGO_NATIVE が指定されていて関数が成功した場合、
0 を超える値が返ります。失敗した場合は、GDI_ERROR が返ります。これらのフラグのうちの 1 つが指定されていてバッファサイズまたはアドレスが 0 の場合、必要なバッファのサイズがバイト単位で返ります。
GGO_METRICS フラグが指定されていて関数が失敗した場合、GDI_ERROR が返ります。

--
ということだそうだ。
0052デフォルトの名無しさん2009/11/04(水) 13:36:38
成功じゃなかったら失敗だろ
0053デフォルトの名無しさん2009/11/04(水) 13:37:15
>51
どうも
#define GDI_ERROR (0xFFFFFFFFL)
ということなので、どうやらGDI_ERRORが返ってきてるようですね
引数変えたりしてもうちょっと試してみます
0054デフォルトの名無しさん2009/11/04(水) 13:48:55
いやいやいや・・・
エラーが返ってきてるのがわかったら次はGetLastErrorだろ
0055デフォルトの名無しさん2009/11/04(水) 15:14:21
str[i]
ここがループ内で変わってるから、違う結果になってるだけだと思う
0056デフォルトの名無しさん2009/11/04(水) 15:24:28
実はループ制御変数はiではなかったって落ちだったりして。
0057デフォルトの名無しさん2009/11/06(金) 03:21:30
1>c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(32) : error C2143: 構文エラー : ';' が '文字列' の前にありません。
1>c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(32) : error C2059: 構文エラー : '文字列'
1>c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(32) : error C2143: 構文エラー : ';' が '{' の前にありません。
1>c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(32) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)

#ifdef __cplusplus
extern "C" {
#endif

インクルードファイルの" extern "C"{ "という部分で何故か怒られます
何かインクルードファイルが足りてないとかでしょうか?
0058デフォルトの名無しさん2009/11/06(金) 03:28:00
全部貼れ
0059デフォルトの名無しさん2009/11/06(金) 03:39:42
お前の書いたコードの stdio.h をインクルードする前の部分がおかしい
0060デフォルトの名無しさん2009/11/06(金) 03:55:27
なんとなくわかりました どうも
0061デフォルトの名無しさん2009/11/07(土) 10:12:35
StdAfxにプロジェクトで使う標準ライブラリまるごとインクルードして
プロジェクト共通の名前空間内でusing namespace std;
みたいな使い方してるんだけどStdAfxってこういう使い方でいいんでしょうか?
0062デフォルトの名無しさん2009/11/07(土) 12:06:18
ファイルサイズの調べ方を教えてくだしあ
0063デフォルトの名無しさん2009/11/07(土) 13:52:01
>>62
FindFirstFile() API を呼んで、返ってきた WIN32_FIND_DATA の
nFileSizeHigh および nFileSizeLow メンバを調べる
0064デフォルトの名無しさん2009/11/07(土) 14:49:11
#include <iostream>
#include <boost/filesystem.hpp>
int main()
{
namespace fs = boost::filesystem;
fs::path p;
std::cin >> p;
if(fs::exists(p)){
if(fs::is_directory(p)){
std::cout << "Directory." << std::endl;
}else{
std::cout << "size: " << fs::file_size(p) << " bytes." << std::endl;
}
}else{
std::cout << "Not found." << std::endl;
}
}
0065デフォルトの名無しさん2009/11/07(土) 17:46:57
>>64
if と else の間の文にはより短いほうを記述しなさいって習わなかった?
0066デフォルトの名無しさん2009/11/07(土) 18:01:28
例外・除外する処理を先に書け、と言われた。
短い方とか聞いたことない。
0067622009/11/07(土) 20:14:30
>63
ありがとうございます
その構造体、調べてみると上位32ビットと下位32ビットを記録するってあるんですが、
32ビット超えててもWIN32APIで扱えるんでしょうか?
0068622009/11/07(土) 20:15:46
>64 こちらの方もありがとうございました
0069デフォルトの名無しさん2009/11/07(土) 20:38:06
上位32ビットと下位32ビットなら
当然32ビット超えなら余裕で大丈夫だろ
0070デフォルトの名無しさん2009/11/07(土) 21:26:57
DirectXとWin32APIを使用して開発しているのですが
DirectXも含めた形でコンパイルするにはどうすれば良いでしょうか?
0071デフォルトの名無しさん2009/11/07(土) 23:32:24
>>65
そこしか突っ込むところが見つけられなかったんですねw
0072デフォルトの名無しさん2009/11/08(日) 09:55:40
>>70
普通にやればいい、どこで困ってんの?
0073デフォルトの名無しさん2009/11/09(月) 01:25:09
>>64でスペースを含むファイルを指定できるようにする場合はまた複雑なんですかね
0074デフォルトの名無しさん2009/11/09(月) 09:54:45
>std::cin
これをスペースまで含んでも入力できるやつに差し替えればいいだけだろう。
0075デフォルトの名無しさん2009/11/09(月) 10:05:31
newで確保した領域って、deleteしない限り確保されっぱなしなんでしょうか?
0076デフォルトの名無しさん2009/11/09(月) 10:13:28
スマートポインタを使って見えないところでdeleteしてるとかでない限りそうだな
0077デフォルトの名無しさん2009/11/09(月) 18:19:31
>76
ってことは、ある関数内でchar * str = new char[10]とかで宣言したら、
returnする前にdeleteしないと、ポインタが失われて開放できなくなるんでしょうか?
0078デフォルトの名無しさん2009/11/09(月) 18:45:43
そうだよ、それがメモリリーク
0079デフォルトの名無しさん2009/11/09(月) 19:16:28
わかりました、どうもありがとうございます
0080デフォルトの名無しさん2009/11/09(月) 22:32:59
文字列からダブルクォーテーション+カンマをstrstrで検出したいのですが、
ダブルクォーテーションを含んだ文字列を扱うにはどうすればいいんでしょうか
現在は下のように一文字ずつシングルクォーテーションで代入しているんですが
 char search[3];
 search[0] = '"';
 search[1] = ',';
 search[2] = 0;
 char * strtmp = strstr( str, search);
もっと簡単な方法はあるでしょうか?

それからもうひとつ別の質問ですが、文字列でswitchしたいのですが、switchは整数でしか使えないため、
現在else ifを何度も繰り返してやってる状態です
もっとすっきりした書き方はないでしょうか?
if(element == "TEST1"){   //elementはchar*型です
} else if(element == "TEST2"){
} else if(element == "TEST3"){
} else if...
こんな感じで何度も繰り返してます
0081デフォルトの名無しさん2009/11/09(月) 22:51:58
>>80
エスケープシーケンスを使う
"\","

>if(element == "TEST1"){   //elementはchar*型です

elementはCString型かstring型の間違いよな?
せいぜい条件をvectorに入れてfindするくらいか。
0082デフォルトの名無しさん2009/11/09(月) 23:05:06
>81
どうも \を入れれば特殊文字も使えるんですね 勉強になりました
0083デフォルトの名無しさん2009/11/10(火) 00:30:37
>if(element == "TEST1"){   
>} else if(element == "TEST2"){
>} else if(element == "TEST3"){

この例のように比較すべき文字列の最後の文字だけが異なるのなら、方法はある。
switch()は確かに文字列は扱えない。が、文字なら扱えるのだから。
0084デフォルトの名無しさん2009/11/10(火) 04:25:18
クラスのメンバ宣言で
 WCHAR * FILENAME;
どこかで
 FILENAME = new WCHAR[20];
 FILENAME = L"xxx.jpg";
どこかで
 delete [] FILENAME;

これでコンパイルして実行すると、deleteしようとしたときに
AssertionFailure:BLOCK_TYPE_IS_VALIDが出ます
何故かdeleteできないようなのですが、どうすればいいでしょうか?
0085842009/11/10(火) 04:54:36
ポインタだから代入したら別のとこに移動しちゃうからdeleteできないんですかね
WCHAR FILENAME[20];で宣言して、memcpyで代入したら特に問題なさそうだったのでそちらにします
0086デフォルトの名無しさん2009/11/10(火) 05:02:42
アドレス 値
0x0100  "XXXXXXXXXXXXXXXXXXXX"
0xf200  "xxx.jpg"

FILENAME = new WCHAR[20]; // FILENAME = 0x0100; FILENAME は確保したメモリアドレスを指す。
FILENAME = L"xxx.jpg";    // FILENAME = 0xf200; FILENAME はL"xxx.jpg"が置いてあるメモリアドレスを指す。

delete [] FILENAME; // 0x0100を解放しなければならないのに、0xf200のアドレスを解放しようとしたのでエラー

つまり、FILENAME = L"xxx.jpg"; がダメ。たとえば以下のようにする。

FILENAME = new WCHAR[20]; // FILENAME = 0x0100; FILENAMEは確保したメモリのアドレスを指す。
wcscpy(FILENAME, L"xxx.jpg"); // 0xf200のアドレスから、0x0100のアドレスに文字列をコピーしてくる。
delete [] FILENAME; // 0x0100に確保したメモリアドレスを解放する。
0087デフォルトの名無しさん2009/11/10(火) 05:03:27
orz
0088デフォルトの名無しさん2009/11/10(火) 09:46:33
>86
ありがとうございました

続けて質問ですが、例えば
char str[6] = "123456";
という文字列から、int型の整数123456を導きたい場合はどうすれば良いのでしょうか
double k = 0;
for(i = 0; i < strlen(str); i++)
 k += (char[i] - 48) * pow( 10 , strlen(str) - i - 1);
これで多分求められる気がしますが、関数として用意されてるかな?と
0089デフォルトの名無しさん2009/11/10(火) 09:58:36
int n = atoi(str);
0090デフォルトの名無しさん2009/11/10(火) 10:16:32
ありがとうございました
0091デフォルトの名無しさん2009/11/10(火) 10:26:55
>>88のはかなり無理やりだなw
数ヵ月後にもういちど書いてみて、全然違うコードになると思うから。
0092デフォルトの名無しさん2009/11/10(火) 10:45:22
そろそろ教科書読み返して、MSDNの見方とググり方覚える時期だろw
0093デフォルトの名無しさん2009/11/10(火) 10:58:04
>>88
"123456"という文字列を入れるのにstr[6]はサイズが足りないから、
atoiは動かない可能性がある。
0094デフォルトの名無しさん2009/11/10(火) 11:02:35
コンパイラもちょっとは気を利かして配列を拡張してくれよな。
Javaとか普通にやってくれるぞ?
もう少し顧客満足度について考えるべき。
0095デフォルトの名無しさん2009/11/10(火) 11:09:31
ご主人様の書いた内容に忠実に従っているんだから、いいコンパイラだと思うがなw
0096デフォルトの名無しさん2009/11/10(火) 12:35:37
C言語初心者用のスレがあるだろ
0097デフォルトの名無しさん2009/11/10(火) 14:52:48
>>94
サイズを指定しなければ気を利かしてくれる
0098デフォルトの名無しさん2009/11/10(火) 15:02:11
まあ気を利かせるのが実行時なのかコンパイル時なのかの違いだな
0099デフォルトの名無しさん2009/11/14(土) 12:56:03
>>94
気を利かせるってのがそもそもおかしい。
それを認めると、書いた通りに動かない可能性が出て来てしまうではないか。


プログラムはあなたが思ったようには動かないが、あなたが書いたようには動く
0100デフォルトの名無しさん2009/11/15(日) 02:25:29
Win32API質問箱の方はC++専用でもないみたいなので、こっちでいいんでしょうか

CreateEventで作ったイベントオブジェクトの状態を知るにはどうすればいいんでしょうか
マルチスレッドにしてWaitForSingleObject()とすればイベントが起きるごとに作業ができるようですが、
マルチスレッドではなく、フレームごとに状態をチェックするようなことはできないのでしょうか
0101デフォルトの名無しさん2009/11/15(日) 10:07:27
さあ?ここは初心者スレだから、初心者にも回答できる範囲ならすぐレスがつくと思うけど
■ このスレッドは過去ログ倉庫に格納されています