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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
1 : ◆Manna2uCLg :2005/04/15(金) 13:33:14
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html
  http://myu.daa.jp/osiete/

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

過去スレ、関連スレなどは>>2-5
2デフォルトの名無しさん:2006/02/24(金) 01:25:47
3デフォルトの名無しさん:2006/02/24(金) 01:29:12
【関連スレ】
■MFC相談室 mfc15d.dll■
http://pc8.2ch.net/test/read.cgi/tech/1131958904/
Win32API質問箱 Build40
http://pc8.2ch.net/test/read.cgi/tech/1138893959/
鬱だ氏のう DirectX (Part 16)
http://pc8.2ch.net/test/read.cgi/tech/1133007002/
C言語なら俺に聞け! Part 122
http://pc8.2ch.net/test/read.cgi/tech/1139570025/
C++相談室 part47
http://pc8.2ch.net/test/read.cgi/tech/1139931895/
C/C++の宿題を片付けます 61代目
http://pc8.2ch.net/test/read.cgi/tech/1140039002/
【初心者歓迎】C/C++室 Ver.24【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1135828083/

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
Google
http://www.google.co.jp/
4デフォルトの名無しさん:2006/02/24(金) 01:30:19
5デフォルトの名無しさん:2006/02/24(金) 11:16:24
otu
6デフォルトの名無しさん:2006/02/24(金) 20:30:21
プロジェクトにlibファイルの追加はどうやるんでしょうか?
VC++.net2003です
7デフォルトの名無しさん:2006/02/24(金) 20:30:52
ヘルプ嫁
8デフォルトの名無しさん:2006/02/24(金) 20:40:20
>>6
プロジェクトのプロパティからリンカの入力の追加の依存ファイルのところ。
構成に気を付けて設定すること。
9デフォルトの名無しさん:2006/02/24(金) 20:56:09
>>8
gdi;pus.libを追加したらうまくいきました。構成に気をつけるっていうのは
何を気にするんですか?
10デフォルトの名無しさん:2006/02/24(金) 21:05:58
>>9
デバッグ構成だけにlibを追加していてリリース時にエラーになって騒いだり、
デバッグとリリースで別libファイルなのに両方ともデバッグ版を指定してエラーになって騒いだりという人がいる。
11デフォルトの名無しさん:2006/02/24(金) 21:14:46
いろいろやってみたんですが、どうもうまくいかないので教えてください。

public __gc class Form1 : public System::Windows::Forms::Form
{ public: CString test;
.....
}
で、error C3633: マネージ '<不明>' のメンバとして '<不明>' を定義できません。変換には reinterpret_cast が必要です。
と出るのですが、どうすればいいのでしょうか?

VisualC++ 2003です。
12デフォルトの名無しさん:2006/02/24(金) 21:31:41
>>11
gcクラスはアンマネージドクラスを持てないはず。
13デフォルトの名無しさん:2006/02/24(金) 21:36:36
>>12
ではこの中でCStringは使えないのでしょうか?
14デフォルトの名無しさん:2006/02/24(金) 21:51:40
pragmaでもリンクできる。
15デフォルトの名無しさん:2006/02/24(金) 21:54:28
ていうかさ、

ライブラリをリンクしないと使えないヘッダファイルは、
#pragma comment(lib, "hogehoge")
を書いておいてほしいよね。
16デフォルトの名無しさん:2006/02/24(金) 21:57:21
ライブラリをリンクしなくても使えるヘッダファイル・・・
17デフォルトの名無しさん:2006/02/24(金) 23:24:56
>>11=13
CStringはMFC/ATLです
>>11はどう見ても.NETです、本当に(ry
18デフォルトの名無しさん:2006/02/25(土) 03:09:09
JNIを使ってJava関数を呼んだ時の
戻り値(文字列型)の取得方法について教えてください。

int型などは以下で戻り値を取得できたのですが
jint iRtn = jni_env->CallStaticIntMethod( j_class, j_methodId );

以下のようなString[][]を返すJava関数を呼んだ時は
VC++側でどのように取得すればよいのでしょうか?
jobjectなどでいろいろ試したのですが行き詰まりました。。
static string[][] getStringTest() {
String[][] str = { {"aa","bb"}, {"cc","dd"}, {"ee","ff"} };
return str;
}
19デフォルトの名無しさん:2006/02/25(土) 10:10:26
>>18
Javaスレで訊いた方がいいんで内科医?
2011:2006/02/25(土) 10:15:12
System::Stringを使ったところ、うまくいきました。
ありがとうございました。
21デフォルトの名無しさん:2006/02/25(土) 18:29:58
VC8です、新しいプロジェクトで
CLRからWindowsフォームアプリケーションを選択してプログラムの
学習をしています
外観はFormに、buttonとtextboxを一個ずつ貼り付けた形です
やりたいことは、テキストボックスに文字を入力して、ボタンを押したら
input.txtというファイルに入力した文字を書き込みたいのですが
どの様に書いたらいいでしょうか、よろしくお願いします
ここはド初心者にプログラムの仕方を教えるスレではありません

まずは本でも買って勉強しろ
23デフォルトの名無しさん:2006/02/25(土) 18:52:42
>>21
くだすれに池
24デフォルトの名無しさん:2006/02/26(日) 00:37:52
ド素人です。
VC++2005 Express Edition落としてC++のプログラム始めようとしてるんですが、
買った初心者向けの本(VS2003用)や、ネットのサイトは基本的に最初はMFCを使ったプログラムです。
ExpressにはMFCは同梱されていないようで、のっけからつまづいてる状況です。

ExpressにMFCを追加するのは可能ですか?Standard買えって話でしょうか。
25デフォルトの名無しさん:2006/02/26(日) 00:40:23
MFCが使いたいなら買えって話です
26デフォルトの名無しさん:2006/02/26(日) 00:53:56
>>24
或いはMFCを使わないWindowsプログラムの本を買うと言う手もある。
27デフォルトの名無しさん:2006/02/26(日) 01:00:46
>>25 >>26
ども。どっちか買ってきます。
28デフォルトの名無しさん:2006/02/26(日) 08:43:04
テキストデータを
読み込んでバイナリーで表示したいのですが。
29デフォルトの名無しさん:2006/02/26(日) 09:15:10
>>28
ですがなんでしょうか。
30デフォルトの名無しさん:2006/02/26(日) 09:34:25
独り言に話しかける奴きんもーっ
31デフォルトの名無しさん:2006/02/26(日) 15:13:47
質問です。

+Rootディレクトリ          //ルートのディレクトリ
  +コンポーネントディレクトリ  //コンポーネントなくラスが入ってるディレクトリ
  +ネットワークディレクトリ   //ネットワーク用のクラスが入ってるディレクトリ
      +ベースディレクトリ    //ネットワークの基本的なクラスが入っているry

このようにクラスのファイルをフォルダ分けして整理したいのですが、
ベースディレクトリに入っているファイルから、コンポーネントディレクトリに入ってるファイルをインクルードしたいときに

#include "./../コンポーネントディレクトリ/Component1.h"

と書くのではなく

#include "Rootディレクトリ/コンポーネントディレクトリ/Component1.h"

とは書けないのでしょうか?
32デフォルトの名無しさん:2006/02/26(日) 15:20:17
>>31
書けます。そりゃもう、好きなように書けますとも。
それ相応のMakefileかプロジェクトの設定をする手間を厭わなければ。
33843:2006/02/26(日) 15:53:59
できました。

>>それ相応のMakefileかプロジェクトの設定をする手間を厭わなければ
ということは皆さんはこのようにフォルダ分けをしていない方が多いのでしょうか?
つーか、しないのが普通?
34デフォルトの名無しさん:2006/02/26(日) 17:27:13
しなきゃいけないほどファイル多くない
35デフォルトの名無しさん:2006/02/26(日) 18:28:57
ローカルなら相対パスだし、そうでないならMakefileに追加。
36デフォルトの名無しさん:2006/02/28(火) 09:25:53
ツリーコントロールで質問させて下さい。
親を選んだら、即座に子を選択したいのですが、
例えば、ABCをクリックしたらDEFが選択される・・・

ABC
   DEF
   GHI
JKL
MNO

丁度VS2003のオプション画面の様な動きをさせたいのです。
なにか良い方法はありますでしょうか?
(シングルクリックで子が開く様、Single ExpandはTrueにしてあります)
37デフォルトの名無しさん:2006/02/28(火) 09:33:27
何か良い方法って、コードで選択させりゃいいじゃない
38デフォルトの名無しさん:2006/02/28(火) 09:37:06
っ[SendMessage]&[TVM_SELECTITEM]

っ[TreeView_Select]
3936:2006/02/28(火) 09:44:44
ありがとうございます
もしかしたら、プロパティにそういう設定があるのかと思いまして・・・
コーディングでがんばります
40デフォルトの名無しさん:2006/02/28(火) 15:56:10
VS2003で.NETプログラミングをしています。
DropDownListスタイルでComboBoxを使っているのですが、初期値を上手く設定できません。
SelectedIndexを使っても、デザイン画面とコード画面を切り替えたりしている間にいつの間にか消えてしまいます。
どうすれば上手く設定できるのでしょうか。
41デフォルトの名無しさん:2006/03/01(水) 21:43:44
マルチには死を
42デフォルトの名無しさん:2006/03/01(水) 22:01:07
ピクチャーボックス等で絵を表示している領域上に
見えないボタン(下のピクチャーが表示できるように)を設置する方法ってありますか?
visibleをFalseにするとボタンの存在自体がなくなってしまうので・・・。
43デフォルトの名無しさん:2006/03/01(水) 22:16:41
見えないなら、WM_LBUTTONDOWNで処理すればいいのでは?
44デフォルトの名無しさん:2006/03/01(水) 22:17:06
VC6.0なんですが、プロジェクト名って変えられないんですか(涙)?
45デフォルトの名無しさん:2006/03/01(水) 22:24:45
見えないボタンなんて存在しないのと何が違うのかサッパリわからん
ていうか邪魔
46デフォルトの名無しさん:2006/03/01(水) 22:25:06
>>44
自分でファイルいじって書き換える
47デフォルトの名無しさん:2006/03/01(水) 22:27:21
フラットツールバーみたいなもの?
フラットにして絵を貼れば
48デフォルトの名無しさん:2006/03/01(水) 22:49:15
>>46
それやってみたんですが、やりかたまずかったらしくてプロジェクトが開けなくなってしまったんですが。
具体的にどのファイルのどこを書き換えればいいかわかりますか?
49デフォルトの名無しさん:2006/03/01(水) 22:55:46
わかる
50デフォルトの名無しさん:2006/03/01(水) 23:21:51
>>49
ぜひ教えてください!お願いします。
51デフォルトの名無しさん:2006/03/01(水) 23:24:32
だが、マルチっぽいので断る!
52デフォルトの名無しさん:2006/03/01(水) 23:27:56
クラス名じゃなくてプロジェクト名だけなら馬鹿でもできるだろ
5342:2006/03/01(水) 23:35:44
レスを求めといて、自己解決で申し訳ありませんが、
TransParentで目的が達成できることが分かりました。
>>43
見えないボタンという表現が良くありませんでした。失礼しました。
ボタン等を透明にする方法を知りたかったのです。
>>45
ピクチャーの一部をクリックするとイベントが起こるようなプログラムに
したいと思っています。別にボタンじゃなくてもいいです・・・。
>>47
そうするとジグゾーパズルみたいになるので、透明の方法を探してました。

駄レス失礼しました。
54デフォルトの名無しさん:2006/03/01(水) 23:36:17
VC++ができて、あの書き換えができないのは不思議だ・・・
55デフォルトの名無しさん:2006/03/01(水) 23:59:42
>>52
クラス名のほうがソースとヘッダをいじるだけだからはるかに簡単だと思うんですが。
56デフォルトの名無しさん:2006/03/02(木) 01:07:28
>>55
プロジェクトファイル書き換えるだけだが。
57デフォルトの名無しさん:2006/03/02(木) 01:07:45
>>51
どこら辺にマルチされてるん?マルチっぽかったら答えるのやめよと思うんだけど。
58デフォルトの名無しさん:2006/03/02(木) 01:13:08
>>57
OKWave
59デフォルトの名無しさん:2006/03/02(木) 01:21:17
>>58
情報ありがとー!本当だ。スルーします。
60デフォルトの名無しさん:2006/03/05(日) 21:43:09
VS2005のVC++を使ってるんですが、
OPENFILENAME構造体のlpstrFileが
LPTSTR型からLPWSTR型に変わっているみたいで困っています。
どなたか解決法をご存じないでしょうか?
61デフォルトの名無しさん:2006/03/05(日) 21:48:32
プロジェクトの設定で使用する文字がUNICODEになってるんじゃないか?
62デフォルトの名無しさん:2006/03/05(日) 21:52:09
#undef _UNICODE
#undef UNICODE
63デフォルトの名無しさん:2006/03/05(日) 21:53:55
>>60
2005でもLPTSTRだよ。
設定次第でLPSTRにもLPWSTRにもなるのがLP*T*STR。

プロジェクトの設定でマルチバイトを使用するようするのは一時的な回避手段だと心得ておくべき。
64デフォルトの名無しさん:2006/03/05(日) 22:08:29
>>61-63
レスどうもありがとうございます。
マルチバイト文字セットを使うようにしたらコンパイル通りました。
今までVS2003を使っていた時は普通にコンパイル通っていて、
型の意味などは特に意識しておらず、どうしたらよいか全然分かりませんでした。
みなさん本当にどうもありがとうございました。
65デフォルトの名無しさん:2006/03/05(日) 22:44:08
VS2003はデフォルトが非UNICODE(typedef LPTSTR LPSTR)
VS2005はデフォルトがUNICODE(typedef LPTSTR LPWSTR)
ただそれだけのお話
66デフォルトの名無しさん:2006/03/06(月) 08:31:22
Unicode もそうだけど、2005 にしてから
プロジェクト作るたびにいろんな設定 OFF にしまくり・・・

デフォルトの設定自体をいじることってできたっけ?
6765:2006/03/06(月) 09:10:59
typedefの文法前後逆じゃん俺・・・
68デフォルトの名無しさん:2006/03/06(月) 11:16:07
VC++6.0でMFCActiveXコントロールプロジェクトを作成するときに、
MFC ActiveX ControlWizardの「このプロジェクトのコントロールにランタイム ライセンスをつけますか?」
のところを「ランタイムライセンスなし」で作成してしまいました。
あとになってつける必要ができたのでつけたいのですが、この場合、プロジェクトを再度
作成するしかないのでしょうか?どこかに設定があるのでしょうか?
69デフォルトの名無しさん:2006/03/06(月) 11:18:33
VS2003使ってるんですが、
変数名や関数名にマウスのポインタを当ててポプアップするヒントがありますよね。
あれが、特定の関数の、特定の行から出なくなっちゃったんですけど、
なんでですか?
70デフォルトの名無しさん:2006/03/06(月) 13:12:37
>>66
2005になって慌てているほうが間抜け。
どーんと構えていれば問題ない。
71デフォルトの名無しさん:2006/03/06(月) 13:25:15
>>69
その行の前にミスがあったりすると出なくなる事があるような気がする。
72デフォルトの名無しさん:2006/03/06(月) 15:19:07
>>71
ビルドも通ってるから明らかなミスは無いんですけどね、
2行前の変数宣言を1行から2行に分けて書いたら治った。
分けが分からん。
73デフォルトの名無しさん:2006/03/06(月) 15:23:09
それがMSクオリティ

まぁ、MSの作るIDEはどうも変な動作が多いからな
_TEXT("")構文使って日本語入力するとクイックヒントが戻らなくなったりな
74デフォルトの名無しさん:2006/03/06(月) 17:22:36
中でヒント出してる人とコンパイルしてる人は全然別だし
75デフォルトの名無しさん:2006/03/06(月) 19:34:55
Visual Studio 6.0にバッファオーバーフローの脆弱性

「Visual Studio 6.0」とWebアプリケーション開発ツール「Visual InterDev 6.0」本体に、
バッファオーバーフローの脆弱性が存在する。パッチは存在しない。

http://www.itmedia.co.jp/enterprise/articles/0603/06/news039.html
76デフォルトの名無しさん:2006/03/06(月) 20:39:24
VS2003なんですが、いつの頃からかデバッグしようとすると
しばらく固まったままになってしまうのです。大体30秒から1分ほどすると
何事も無かったようにようやくデバッグが動き出すんです。
いったいなぜ?
77デフォルトの名無しさん:2006/03/06(月) 22:12:36
アンチウィルスソフトが関係しているとか
78デフォルトの名無しさん:2006/03/07(火) 00:02:42
マシンのメモリがすくにゃい、デバッグしてるプログラムに大量のメモリをとるバグがある。
79デフォルトの名無しさん:2006/03/07(火) 00:04:57
なんでメモリ確保が遅いんだとおもったら、
1MBじゃなくて、1GB確保しててワロタことがあったな
8076:2006/03/07(火) 00:19:06
レスありがとう。
ひょっとして既出の問題なのかなと思ったけど、うち固有の問題みたいですね。
マシンのメモリは1G積んでて、P4 2.4GHzなんです。
セカンドマシンの、P3 800MHz 128M ではなんとも無いんですこれが。
プロジェクトに関係なく固まるのでプログラムのバグじゃないです。
ノートンか、それともVC2003再インスコしてみよう。
81デフォルトの名無しさん:2006/03/07(火) 01:12:50
こんばんわーVS2003を使ってvcを使っているものです。

プロジェクトを作る時【Win32 プロジェクト】っていうの選んで作っています
いまコモンコントロールのリストビューをCreateWindowで作る途中なんですが
プロジェクト作るときの自動生成されるコードについて質問があります
コモンコントロールを使うための
【#include<commctrl.h>】【#pragma comment(lib, "comctl32.lib")】
などの文を【stdafx.hまたはcpp】(自動生成された)に書かず、
【プロジェクト名.cpp】に直接書くとエラーが発生してLV_COLUMN構造体などが
定義されていないとでます、これはなぜなんでしょうか?

それと自動生成されたコードのWinMainは【int APIENTRY _tWinMain(..】
のようになっています、これはなんなんでしょうか?
もしわかる方がいたら、答えてもらえるとサイワイです!

自分の知識レベルは猫でもわかるWindowsプログラミングを読めるくらいです。
82デフォルトの名無しさん:2006/03/07(火) 01:40:24
なぜ、って定義されてないんだろ。inclueより前に出現したかか、includeしたのとは翻訳単位が別か。
83デフォルトの名無しさん:2006/03/07(火) 01:42:47
すみません質問です。

ダイアログベースのMFCです。
ワーカースレッドなるもので、とある処理をさせています。
ここまでは無事完成したのです。
そしてその処理結果をエディットボックスに表示させたいのですが、
ワーカースレッド中の処理の終わりに、エディットボックスに割り当てたDDX変数に文字列を代入して
UpdateData(FALSE);するとそこでアサートしてしまいます。
wincore.cpp の 889行目、ASSERT((CWnd*)p == this); // must be us
だそうです。うん、よく分からない。

そこでワーカースレッドが処理を終わった頃を見計らって、
ワーカースレッドの外でUpdateData(FALSE)すればいいんじゃないか
と思ったのですが、いつワーカースレッドが終わったのか、どうやって知ればいいのかが分かりません。
SPY++で見ていてもそれらしきメッセージも見当たりませんでした。
ど、どうすれば・・・
84デフォルトの名無しさん:2006/03/07(火) 01:47:57
::PostMessageでも使って勝手に投げろよ。
8583:2006/03/07(火) 01:59:36
あ、コントロール変数でSetWindowTextでなんとかなりそう
>>84
それもいいですね。ありがとう、気づかんかった。酒飲み過ぎた
86デフォルトの名無しさん:2006/03/07(火) 03:27:25
>>83
スレッドハンドルはイベントオブジェクトだから、ハンドルがあれば終了チェックが出来る。
Win32 APIだよ。わかる? わかんなかったら自分で調べてね。
87デフォルトの名無しさん:2006/03/07(火) 07:51:56
>>81
APIENTRYはWINAPIと同じ意味。
_tWinMainは3番目の引数に対してWinAPIと同じようにTCHARを使うようにしたもの。
8883:2006/03/07(火) 10:57:49
http://www.hi-ho.ne.jp/hawk/mfc0401.html#thread
>>84と同じヒントが書いてあった。ごめん。
>>86これまた情報ありがとう。調べてみる。
89デフォルトの名無しさん:2006/03/07(火) 13:30:26
>自分の知識レベルは猫でもわかるWindowsプログラミングを読めるくらいです。

誰 で も 読 め ま す
90デフォルトの名無しさん:2006/03/07(火) 14:17:14
猫には読めないと思う
91デフォルトの名無しさん:2006/03/07(火) 14:23:44
( ゚д゚)<
92デフォルトの名無しさん:2006/03/07(火) 15:04:46
猫ひろしにも読めないと思う
93デフォルトの名無しさん:2006/03/07(火) 19:50:58
江戸屋子猫なら読めるかな?
94デフォルトの名無しさん:2006/03/07(火) 22:25:24
ダイアログボックスにコントロールを配置する時
その位置や大きさを数値で直接指定できませんか?
リソースを直接編集やコーディング以外で。
95デフォルトの名無しさん:2006/03/07(火) 22:28:16
グリッドつけるとかじゃ?
96デフォルトの名無しさん:2006/03/07(火) 23:34:53
res だっけかRCファイルだったか位置情報を持ってる
構成設定ファイルなかったかなあ?なんか昔客に尋ねられて調べたような
しらべてないような。
97デフォルトの名無しさん:2006/03/08(水) 09:03:57
>リソースを直接編集やコーディング以外で。
98デフォルトの名無しさん:2006/03/08(水) 09:53:54
リソースの直接編集やコーディング以外っていったいどんな事を指しているの?
99デフォルトの名無しさん:2006/03/08(水) 10:14:45
最近のやつはVBのフォームエディタのような形式にかわったから
プロパティで座標が指定できそうな気がするけど
VC6使ってるからよくわからん。
100デフォルトの名無しさん:2006/03/08(水) 12:43:34
少なくともVC7.1のリソースエディタのプロパティには位置情報がない。
101デフォルトの名無しさん:2006/03/08(水) 12:56:47
スタティックテキストとエディットコントロールが
高さ方向の位置、微妙に合わないので嫌になります
10294:2006/03/08(水) 12:57:23
ウィンドウの大きさを自由に変えられるアプリなら別にいいんですよ。
適当に配置してコーディングで位置決めするから。
でもウィンドウ固定のアプリやダイアログで、みんなどうやって大きさ決めてるんですか?
リソースエディタで適当に配置?やっぱり大きさは切りのいい数値じゃないと気持ち悪いんですが。
VS7.1のリソースエディタじゃ正方形のボタンを配置するだけでも苦労する。
103デフォルトの名無しさん:2006/03/08(水) 13:02:53
そのくらいの問題ならレイアウトグリットで充分って希ガス。
104デフォルトの名無しさん:2006/03/08(水) 13:03:40
[← →] こういうようなボタンで他のコントロールに合わせる
105デフォルトの名無しさん:2006/03/08(水) 13:54:02
すいません。どうしてもわからないことがあるので教えてください
ld:Undefined symbols:
_answer_check

というエラーが出るのですがこの原因がよくわかりません。
マックでemacsでやっています。
どなたかわかりましたら教えていただきたいです。
よろしくお願いします
106デフォルトの名無しさん:2006/03/08(水) 13:56:17
>>105
一度なんて堅いこと言わずに、300回ほど死んだら?
107デフォルトの名無しさん:2006/03/08(水) 14:35:01
マックでemacsでldのエラーのどこがVisualC++なのか
108デフォルトの名無しさん:2006/03/08(水) 14:40:04
大方Visualという文字が見えなかったのだろう
109デフォルトの名無しさん:2006/03/08(水) 18:59:17
VC++のobjをldでリンクしようとでもしてるんかいな
110デフォルトの名無しさん:2006/03/10(金) 11:42:29
CString items = _T("111 222 333");

という文字列を対象に

CString a, b ,c にそれぞれ
a = "111", b = "222", c = "333" と格納したい場合は、どうすれば良いですか?
_stscanfを使いたいんですが、使い方がいまいち分かりまへん。
111デフォルトの名無しさん:2006/03/10(金) 11:55:46
>>110
CStringT::Tokenize
112デフォルトの名無しさん:2006/03/10(金) 12:02:47
有難うございます。
でも、ぐるぐる回すのではなく、一発で出来ないものでしょうか。

_stscanf(items, _T("%s %s %s"), a, b, c);
どうもこれだと、うまく取れないのですが
113デフォルトの名無しさん:2006/03/10(金) 12:20:39
CStringでデータ受けるなら
114112:2006/03/10(金) 13:05:04
たびたびすいません。
有難うございました。TCHARの配列で受け取ることにします。
115デフォルトの名無しさん:2006/03/10(金) 18:39:43
1>マニフェストをリソースにコンパイルしています...
1>リンクしています...
1>マニフェストを埋め込んでいます...
1>プロジェクト : error PRJ0002 : エラーの結果 1 が 'C:\WINDOWS\system32\cmd.exe' より返されました。
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

VC2005でビルドするとこんなかんじでエラーします。
VC6では動いていたんですが・・・
どうすれば、ビルドできますか?
116デフォルトの名無しさん:2006/03/10(金) 18:48:03
その質問どっかで見た
117デフォルトの名無しさん:2006/03/10(金) 18:58:47
ハライテー
118デフォルトの名無しさん:2006/03/10(金) 19:50:57
>>117
つ正露丸
119デフォルトの名無しさん:2006/03/11(土) 00:50:00
>>115
マニフェストを埋め込んだ後エラーになっているのだから、
まずはマニフェストの埋め込みで何かが起こっていると考えるべきだ。

しかもVC6にマニフェストなんて無かった。
だからVC6では上手くいくのも説明が付きそうな気がするだろ。
120デフォルトの名無しさん:2006/03/11(土) 02:24:36
VC++6.0でMFC ActiveX Controlを作成し、Javascriptからメソッドを呼び出すように
したいのですが、動作させるマシンにより、動くマシンと動かないマシンが
出てきてしまいました。

・ActiveXはウィザードで作成し、そのままビルドしたもの。なのでメソッドはAboutBox()しかありません。
・HTMLはこんな感じです
<html>
<object id="hoge"
codebase="http://サーバURL/hoge.cab#version=1,0,0,1
classid="CLSID:クラスID>
</object>

<body onload=hogehoge()>
<sctipt language="javascript">
function hogehoge()
{
hoge.AboutBox();
}
</script>
</body>
</html>
121120:2006/03/11(土) 02:25:07
で、上記HTMLを開くと、動くマシンでは当然バージョンダイアログが表示されるのですが、
動かないマシンだとランタイムエラー
「オブジェクトにてサポートされていないプロパティまたはメソッドです
コード:0」
が出力されてしまいます。

環境が違っているのかと思い、OSやIEのバージョン等調査したのですが、
どちらも同じでした。
ほかに問題があるとすると、どのあたりに原因があるのでしょうか?
教えてください。

ちなみに、環境は
OS:Windows2000 SP4
IE:Version6.0.2800.1106
IEパッチ:Q832894,Q831167,Q837009,Q867801,Q833989,Q903235
です。
もちろんインターネットオプションのセキュリティ等は設定済みです。
(信頼済みサイトにサーバを登録)

長々と書いて申し訳ありませんが、よろしくお願いいたします。
また板違いでしたらすみません。
122デフォルトの名無しさん:2006/03/11(土) 14:48:32
インクルードのパスなんですけど、
例えばプロジェクト全体が入っているのがHogeフォルダだとして、
この直下に.dswとか.dspとかが入ってます。
で、Hogeの中に直にヘッダやらソースが増えてきたので、
Hogeの中にフォルダをいくつか作ってその中にヘッダとソースを分野ごとに仕訳しました。
main.cppなどメイン部分をMainフォルダ、グラフィック部分はGraphフォルダ、といった具合にです。
そうした時に、Mainのフォルダに入っているソースから
Graphフォルダの中のヘッダなどをインクルードしようとしたときに
見つけられないみたいでコンパイルするとエラーになるのですが、
こういうときはどうやって#includeを書いたらよいでしょうか?
123デフォルトの名無しさん:2006/03/11(土) 14:52:09
>>122
DOSと同じ相対パス指定でおk
124デフォルトの名無しさん:2006/03/11(土) 15:06:42
>>123
あれ、いけました。すいませんありがとうございました。
125デフォルトの名無しさん:2006/03/11(土) 18:24:10
未だにVC6なんですけど、visualstudio2005とか買ったら
コンパイルエラーのメッセージとか
アホにも分かりやすく親切になってたりしますか?
126デフォルトの名無しさん:2006/03/11(土) 18:46:54
コンパイルエラーがアホみたいに出て来たりしてな
127デフォルトの名無しさん:2006/03/11(土) 18:51:13
アホイラネ
128デフォルトの名無しさん:2006/03/11(土) 21:20:50
スマポーのコードを例示してください。
本当に分からず、こまってます。
C++3版読んでもよく分かりません。
129デフォルトの名無しさん:2006/03/11(土) 21:53:22
質問です。

visual C++ 2005 Express を使い始めました。
PlaySound関数を使いたいので
リンカに「winmm.lib」を追加し、#include <Mmsystem.h>と書いてるんですが
ビルドすると
「fatal error C1083: include ファイルを開けません。'Mmsystem.h': No such file or directory」
になります。

いったいどうすれば良いのか途方にくれています。
どなたか教えてください。
130デフォルトの名無しさん:2006/03/11(土) 22:06:43
>>129
Mmsystem.hが本当にあるか調べる
131デフォルトの名無しさん:2006/03/11(土) 22:26:47
無いようです。
Mmsystem.hが無いとPlaySound関数は使えないのでしょうか?
132デフォルトの名無しさん:2006/03/11(土) 22:43:03
いいえ。
133デフォルトの名無しさん:2006/03/11(土) 22:46:54
>>129
Platform SDKはインストールしたか?
134デフォルトの名無しさん:2006/03/11(土) 22:57:30
>>133
なるほどこれですか。
さっそくDLします。ありがとうございます。
135129:2006/03/12(日) 08:11:03
Platform SDKをインストールして
mmsystem.hもincludeさせたんですが、ビルドすると

>>error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

というエラーメッセージが大量に出てきます。
どうすればよいのでしょうか?
136デフォルトの名無しさん:2006/03/12(日) 09:04:06
なんだかよくわからんけど、
そのエラーになってる行のコードを貼り付けてみるとよいかもしれん。
137デフォルトの名無しさん :2006/03/12(日) 20:41:25
メンバにwstring m_wtext を持ってるクラスCHogeがあります。
CHogeのコンストラクタのなかで

m_wtext.empty();
m_wtext = L"あああ";
MessageBox(NULL,narrow(m_wtext).c_str(),"",NULL);

のようなことをしてみると、なぜか文字列がヘヘヘヘへ・・・・ンンンンのように既に壊れて表示されます。
narrowはCHogeの基底クラスで定義されている、wstringをstringに変換する関数です。

string CBase::narrow(const wstring& input) {
char* buffer = new char[input.size() * MB_CUR_MAX + 1];
wcstombs(buffer, input.c_str(), input.size() * MB_CUR_MAX + 1);
string result = buffer;
delete[] buffer;
return result;
}
別のもっと単純なアプリの中で同じ事を試しても問題はでないのですが、
なぜか今回ちょっと大きめなプロジェクトに組み込んでみたところおかしくなりました。
アプリごとの何かしらの動作順序の違いかなにかでこういうことは起こり得ることでしょうか?
でもコンストラクタのなかで関数を一個挟んだだけなのにアプリによって違いがでるというのは
理由がさっぱりわかりません。何かここが怪しげってところがあったら教えてください。
環境はW2k VC6.0++です。よろしくお願いします。
138137:2006/03/12(日) 20:42:13
うわ、すいません、スレ間違えました。
139デフォルトの名無しさん:2006/03/14(火) 01:26:32
モードレスダイアログを呼び出したときに、
モーダルダイアログのように呼び出したダイアログ以外をロックしてしまい、
モードレスダイアログを常にトップに表示したいのですが、
どうするのがベストでしょうか。
今は、モードレスダイアログがときどき後ろに隠れてしまいます。
140デフォルトの名無しさん:2006/03/14(火) 01:34:20
EnableWindowかな
141デフォルトの名無しさん:2006/03/14(火) 07:33:46
EnableWindowで他窓無効化
SetForegroundWindow

ただし、いかなる場合でもEnableWindowで無効化を解除できるようにコーディングしろよ
さもないと、ダイアログ閉じたら二度とアプリが操作できなくなるからな
142デフォルトの名無しさん:2006/03/14(火) 10:08:01
モードレスでも親子なら裏にいかないよ
143デフォルトの名無しさん:2006/03/15(水) 22:48:40
2003のリソースエディタなんだけど、ツールバーのボタン削除ってどうやるの?
切り取りやDelしても消えないんだけど…
144143:2006/03/15(水) 22:59:49
あ、ヘルプに書いてあった。枠外にD&Dすればいいのね。
145デフォルトの名無しさん:2006/03/16(木) 12:50:58
僕の人生もD&Dしたいです。
ていうかもうしてしまいました。
どうしたらいいですか?
146デフォルトの名無しさん:2006/03/16(木) 13:29:47
VS.NET2005で作業しています。
MFCでフォームビューのシングルドキュメントのアプリを作っています。
最初に作成されたウインドウに貼り付けたコントロールの類は正常動作するのですが、
そこから派生したダイアログ(ボタンを押して新たに出現するダイアログ)に貼り付けたコントロールが
うまく動いてくれません。

コンパイルは完了するのですが、
Debugモードでは
Debug Assertion failed!
と出て落ちてしまいます
Releaseモードでは
エラーこそ出ないものの、期待した動作一切が無視された状態です。

派生したダイアログを定義したクラス内に、リストなどのコントロール変数を宣言、
コンストラクタ内でそのダイアログ内のコントロール変数を利用して初期化。
この作業に入った瞬間にエラーが発生しているようです。

すみませんが、どなたかご教授願います。
147デフォルトの名無しさん:2006/03/16(木) 13:33:52
>>146
クラスオブジェクトが生成されただけではウィンドウは作成されていない。
148デフォルトの名無しさん:2006/03/16(木) 13:46:51
>147
ありがとうございます

ということは
ダイアログ.DoModal();
より後で、ダイアログが閉じるより前に
コントロール変数をいじるということでしょうか?

その場合は、ダイアログを定義したクラス内のどこに配置すれば、
ウインドウが開いた瞬間に適応されているように出来るのでしょうか。?

重ね重ね申し訳ありませんがお願いします。
149デフォルトの名無しさん:2006/03/16(木) 14:04:40
CDialog::OnInitDialog
150デフォルトの名無しさん:2006/03/16(木) 14:11:54
>147, 149

本当にありがとうございました、無事表示できました。
151デフォルトの名無しさん:2006/03/16(木) 22:57:04
CString cstr[1000][10][30];
CMyClassの中にtableのデータを1000件保持したいのですが、
使っても問題ないですか。
152デフォルトの名無しさん:2006/03/17(金) 00:02:36
>>151
つーかそれ、30万件の文字列ってなんだよ。
あっさりスタック食い潰しそうだからヒープに確保するようにして置けよ。
153139:2006/03/17(金) 00:14:54
>140-141

遅くなりましたが、ありがとうございました。
無事に解決しました。

ところが、次の問題が出ていまして。
モードレスダイアログでOKボタンが連打できてしまうために、
処理が終わる前にまたOKが押されたときの処理をやろうとしてしまっているようで、
エラーが出ています。
OKが押されたらその処理が終わるまでOKが押せないようにするにはどうしたらよいでしょうか。
モードレスダイアログはDLLで表示していて、DLLのソースはいじれないので、
Exeで押さえ込まなければならないのですが。。。
154デフォルトの名無しさん:2006/03/17(金) 00:54:53
処理が終わるまでフラグかなんかで弾けばいいじゃない
155デフォルトの名無しさん:2006/03/17(金) 05:41:38
>>153

OKが押されてから、その処理が終わるまで、メッセージの発行をする処理を実行していないか?
例えば、コントロールに値を設定したり、メニューを変更したり。

基本的にメッセージループに飛び込まなければ次のメッセージは Pump されないはず。
ただ、DLLのソースの中でやられちゃってたらダメだから。
その場合は、>>154 のような逃げ技で…。

って感じ?
156デフォルトの名無しさん:2006/03/17(金) 06:58:50
OKボタン押された時の処理ってのはどっちでやってるんだ?
DLL側でやってるんならどうにもならん
157デフォルトの名無しさん:2006/03/18(土) 00:14:35
CStringの比較で==とCompareがありますが
どちらを使ったほうがいいのでしょうか?
158153:2006/03/18(土) 00:54:35
OKボタン押された後の処理はEXEでやっています。
DLL側でOKボタン押されたらユーザメッセージを投げるので、
それを受けとったら処理が走ります。
EXE側でやってるのは、DLLで設定した内容を元にデータを作って通信しています。
通信部分はメソッドが確立しているので詳しく見ていないのですが、
おそらくwinsockかなんかで通信しているのだと思います。

159153続き:2006/03/18(土) 00:55:20
質問ばっかりで申し訳ないのですが、
今日、とりあえずリリースビルドを作ってみたところ、
モードレスダイアログの呼び出し部分でエラーになることがわかりました。
デバッグビルドでは問題ありません。
調べてみたところ、MSDNを見るとヒープの問題でこのようなことが起きることが多いようなのですが、
AfxCheckMemoryなどでチェックしても問題は特に出てきていません。
リリースビルド時の最適化を無効にすると問題ないことも分かりました。

動作の流れは
(1)コンストラクタでLoadLibrary。
(2)ダイアログを呼び出すメソッド内でモードレスダイアログをクリエイトする関数呼び出し。
(3)1つ目の質問部分で書いている処理が正常終了したらダイアログクローズ。異常ならそのまま。
(4)デストラクタでFreeLibrary。
となっています。
メッセージボックスを表示させる方法でチェックしたところ[1]部分でエラーとなっています。

typedef int (__stdcall *DLGCREATE)(const char* szString, UINT nNum)

DLGCREATE pDllCall = (DLGCREATE)GetProcAddress(m_hDll, "Create");
if (pDllCall != NULL){
 nRet = pDllCall(m_szString, 10);  ---[1]
}

コードに問題があると思うのですが、どこから手をつけていいのか分かりません。
これだけの情報では分からないことが多い(というかほとんど分からないと思う)のですが、
もしこのような問題に遭遇したことがあればそのときの解決の方法などを教えていただければと思います。
よろしくお願いします。
160デフォルトの名無しさん:2006/03/18(土) 09:14:36
>>159
そういうときは、まずエラーになる部分で各変数の値がどうなっているか確かめろ。
161デフォルトの名無しさん:2006/03/18(土) 10:47:38
VC6でダイアログを作って勉強中なのですが、
namespaceでコンパイルエラーになってしまいます。
namespaceの宣言やら関数を、呼び出すCdialog.cpp内に書くと問題ないのですが
自前のmyfunc.cpp内に書いて Cdialog.cpp内で呼び出すようにするとうまくいきません。

出来なかったりしまう?
162デフォルトの名無しさん:2006/03/18(土) 11:03:26
cppをインクルードすりゃいいかも
163デフォルトの名無しさん:2006/03/18(土) 11:07:46
>>161
もしやヘッダは?
164161:2006/03/18(土) 11:28:15
(myfunc.cpp)

#include "stdafx.h"

namespace abc
{
 自作関数
};



(CDialog.cpp)

#include "stdafx.h"

using namespace abc;
  ・
  ・
 プロジェクト作成時に出来た関数等々
  ・
  ・
BOOL CDialog::OnInitDialog()
{
  自作関数
}

ざっくりこんな感じに書いてます。
エラーは↓とでます。
error C2871: 'abc' : 存在しないか名前空間ではありません。
error C2065: '自作関数' : 定義されていない識別子です。
165デフォルトの名無しさん:2006/03/18(土) 11:31:52
>>164
C++では他のファイルに書いたものはそのままでは使えない。
宣言によって名前が見えている必要がある。
だからヘッダを作ってそこに宣言を書き、ソースファイルで定義(実装)を書く。
そして使うファイルでヘッダをインクルードする。
166161:2006/03/18(土) 11:46:14
>>165
やてみるよ姉貴!
167http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 18:51:43
TextSS の64bit化おながいします

もしくは64bitにネイティブ対応した置換ソフトないですか?
168デフォルトの名無しさん :2006/03/18(土) 22:17:12
今回Visual C++ 2005 Express Editionを入れてみて
ヘルプがみれるので嬉しいのですが
家にあるVisual C++6.0 のヘルプを呼び出すとMSDNのコレクションが無いと
表示されて、終わってしまうのですが
VC6++の場合は、html work shopで一から作らなければならないのでしょうか
それともどこからかダウンロードして、インストールしなければならないのでしょうか
よくわからないので、書き込みさして頂きました。
解る人がいればご教授願いたいです。
169デフォルトの名無しさん:2006/03/19(日) 08:51:24
>>168
意味がわからん。
VC++6のヘルプはVC++6についていただろう?

新しいMSDNはVC++6には対応していないので
VC++6のIDEからは呼び出せないがそういうことか?
170デフォルトの名無しさん:2006/03/19(日) 21:43:42
コンボボックスにリストから選択されたのではなく、
新たにキー入力された文字列を取得する方法を教えてください。

コンボボックスへ文字列入力→コマンドボタンでコンボボックスリストへ追加
の処理を作ろうとしているのですが、いきなり積まず息巻いた。
171デフォルトの名無しさん:2006/03/19(日) 21:58:55
>>170
getWindowText()で取れない?
172デフォルトの名無しさん:2006/03/19(日) 21:59:43
173デフォルトの名無しさん:2006/03/19(日) 22:50:46
>>171-172
C++も初心者なもので継承に気が付かずコンボのメンバーしか
見てませんでした。
無事できましたm(_ _)m
174153:2006/03/21(火) 13:31:24
一応報告を兼ねて。

解決しました。
/GZを使って調べたところ、呼び出し規約が違うって出てきました。
DLL側が__stdcallでは無かったようです。
__stdcallを削除したら問題なく動作しました。

ま、DLLが__stdcallだったとしても名前を装飾してなかったんで動かなかったと思いますが。。。
175デフォルトの名無しさん:2006/03/21(火) 19:04:04
なんだよそれ…。

でも、解決して良かったね。
176デフォルトの名無しさん:2006/03/21(火) 21:48:06
何がしたいという訳ではなく、単なる知的好奇心としての質問なのですが…。

コンパネの地域のオプションでシステムロケールを英語に設定した上で、非UNICODEアプリを実行すると、
メッセージボックス等の文字が化け化けになってしまいます。

非UNICODEで〜A系のAPI(MessageBoxA等)が使われているので当たり前なのですが、
なぜかメニューバーだけは文字化けせず、普通に日本語が表示されます。
なんでかなーとexeの中を覗いてみたところ、
非UNICODEでも、メニューバーで使用されている文字列はUNICODEで格納されているようなのです。
(VC++6.0、2005experessで確認)

リソース内の文字列って、常にUNICODEで扱われるのでしょうか。
もしそうだとしたら、Win9xの時代からずっとそんな仕様だったのでしょうか。

177デフォルトの名無しさん:2006/03/21(火) 23:25:34
>>176
そうだよ。

ついでに言うと文字列リソースもUnicodeで格納されている。
だが、それなのに9xではLoadStringWが機能しない。酷い仕打ちだ。
178176:2006/03/22(水) 19:42:54
なるほど、ありがとうございます。
ヘンテコな仕様ですね。

そうすると、リソース内のUNICODEな文字列を
LoadStringAの内部でわざわざSJISに変換しているってことですね。
179デフォルトの名無しさん:2006/03/22(水) 23:38:46
Visual Studio .NET 2003 アカデミック
を買ったのですが、これは、シェアウェアや商用で利用してもいいのでしょうか?
180デフォルトの名無しさん:2006/03/22(水) 23:43:47
ライセンスを確り読むと答えが書いてあると思うよ。
181デフォルトの名無しさん:2006/03/22(水) 23:53:27
>>180

ありがとうございます。
ttp://www.microsoft.com/japan/education/ap/faq.mspx
に書いてありました。


しかし、会社で使用する場合、通常版を買い直さなければならない
と表記してありますが、個人でシェアを作成することは
かまわないと言うことなのでしょうか?

よろしくお願い致します
182デフォルトの名無しさん:2006/03/23(木) 09:05:22
なんでそういう事を2ちゃんで訊くかな。
M$に電話しろよ。
183デフォルトの名無しさん:2006/03/23(木) 12:30:12
Visual Studio 2003 アカデミックを使っているのですが、
VC++でなぜかデバッグよりもリリースでのビルドの時の方が
処理速度が大幅に遅くなってしまっていて、
なにが原因かわからず困っています。

状況としてはデバッグの時には50fps以上の速度が出ていたのに
リリースビルドした時には7fps程度しかでなくなってしまっているといった感じです。
色々と調べてみたところどうやら下記の部分が原因になっているようでした。
ang_cos, ang_sin, xtemp, ytempはdoubleで他の変数はintになっています。

x = (int)((j - length_temp) * ang_cos - xtemp + xbase);
y = (int)((j - length_temp) * ang_sin + ytemp + ybase);

どうも暗黙のうちに使われているらしいftolが怪しいのかなと考えているのですが…
ビルドオプションを色々と変えてみても解決することができませんでした。
何かご存じの方がいたら教えていただけないでしょうか?
よろしくお願いします。
184デフォルトの名無しさん:2006/03/23(木) 12:44:38
> 色々と調べてみたところどうやら下記の部分が原因になっているようでした
何故そういう結論になったの?


別のところに致命的な原因があるような気がするけど…
どこかの変数が初期化されてなくて云々…みたいな。

と個人的には思ってみる。
185デフォルトの名無しさん:2006/03/23(木) 12:56:01
IDEから実行した場合、exe直実行より遅くなった事があったような希ガス。
186デフォルトの名無しさん:2006/03/23(木) 13:08:48
>>183
すいません、説明不足でした。
DevPartner Profiler Community Editionを使って
処理に時間がかかっていた部分を調べてみたり、
x = (int)((j - length_temp) * 1 - 1 + xbase);
y = (int)((j - length_temp) * 1 + 1 + ybase);
と言うような風にした時は遅くなることがなかったからです。
x = (int)((j - length_temp) * 1.1 - 1.1 + xbase);
y = (int)((j - length_temp) * 1.1 + 1.1 + ybase);
と言うようにしてみた場合には処理が遅くなってしまいました。
x,yに直接適当な数値を入れてみた場合は遅くなることはありませんでした。

>>185
レスありがとうございます。
いま直接exeを実行してみたのですが、やはり速度は遅いままでした。
187183:2006/03/23(木) 14:57:21
何度もすいません。
x = (int)((j - length_temp) * ang_cos - xtemp) + xbase;
y = (int)((j - length_temp) * ang_sin + ytemp) + ybase;
と言うようにしてみたところ、
リリースでもある程度の速度が出るようになりました。(40fpsくらい)
なぜか小数点以下の数値の扱いに違いがあるのですが…
ビルドの最適化オプションを変えてみても症状はかわりませんでしたが
最適化関連の問題なのでしょうか?

一応解決はできましたが原因がよくわからないので
何かご存じの方がいましたらお教えいただけると助かります。
よろしくお願いします。
188デフォルトの名無しさん:2006/03/23(木) 15:01:13
コードは見てみた?
189183:2006/03/23(木) 15:19:16
>>188
コードというとアセンブリ言語の事でしょうか?
アセンブリ言語はよくわかっていないので
短くはなっているかな位にしか考えてませんでした。
>>183 の時のコードでは下記のようになっていました。
長文で申し訳ありません。

リリースビルドの時
x = (int)((j - length_temp) * ang_cos - xtemp + xbase);
00401DB0 fild dword ptr [esp+28h]
00401DB4 fld st(0)
00401DB6 fmul st,st(5)
00401DB8 fsub qword ptr [esp+38h]
00401DBC fadd st,st(3)
00401DBE call __ftol2 (406DD0h)

デバッグビルドの時
x = (int)((j - length_temp) * ang_cos - xtemp + xbase);
0043065B mov eax,dword ptr [j]
0043065E sub eax,dword ptr [length_temp]
00430661 mov dword ptr [ebp-0A0h],eax
00430667 fild dword ptr [ebp-0A0h]
0043066D fmul qword ptr [ang_cos]
00430670 fsub qword ptr [xtemp]
00430673 fiadd dword ptr [xbase]
00430676 call @ILT+3965(__ftol2) (42BF82h)
0043067B mov dword ptr [x],eax
190デフォルトの名無しさん:2006/03/23(木) 15:25:35
うちの VS20003 じゃ、ほぼ同じようなコード吐いてるけど
Release で偉い遅くなるような事は無いなぁ。


j って変数があるってことは、ループの中?
もしそうなら、実はループがおかしいとか。
191デフォルトの名無しさん:2006/03/23(木) 15:27:11
つかそれ、40fps出るほうのリリースビルドでは
192デフォルトの名無しさん:2006/03/23(木) 15:28:58
ああ、1.1 のとはまた別なのか、すまん
193183:2006/03/23(木) 16:01:26
iとjのループの中にあります。
値を出力させて見たところリリースとデバッグでループ回数に違いはありませんでした。
ほかに気になるところと言ったらjpgとpngとzlibのライブラリをリンクしていることなどでしょうか?
全てマルチスレッドのDLLを使うようにしています。
とりあえずいま新しくソリューションを作って問題の部分だけを試してみています。
194デフォルトの名無しさん:2006/03/23(木) 16:53:32
原因がわかりました。
libpngにこんなようなコードが書いてあったので
もしやと思って削除してみたところリリースビルドでも
遅くなると言ったことはなくなりました。

#if (_MSC_VER >= 1300) && (WINVER < 0x0500)
//VC7 or later, building with pre-VC7 runtime libraries
extern long _ftol( double ); //defined by VC6 C libs
extern long _ftol2( double dblSource ) { return _ftol( dblSource ); }
#endif

ありがとうございました。
おかげ様で何とか検討つけて原因探すことができました。
195デフォルトの名無しさん:2006/03/23(木) 22:42:50
ODBC APIについて、他に適切なスレが見つからなかったので、
ここで質問させてください。

開発環境:Windows 2000、Visual C++ 6.0、ODBC 3.0、MSDE 2000 SP4

まず、下記のようなSQL文を作成し、SQLPrepareを実行しました。
UPDATE TestTable SET Field1=?
※Field1はCHAR型(30バイト)で、NULL値を許可されたフィールドです。

次に、パラメータにNULL値をバインドしたかったのですが、どうしても
うまくいきません。(UPDATE TestTable SET Field1=NULL を実行した
のと同じ結果にしたい、ということです。)

char szName[30 + 1];
strcpy(szName, "");
SQLINTEGER sNull = SQL_NULL_DATA;
として、
(続く)
196195:2006/03/23(木) 22:43:35
(続き)
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
  SQL_C_CHAR, SQL_CHAR, 30, 0, NULL, sizeof(szName), &sNull);
とすると、SQLBindParameter自体は上手くいくのですが、SQLExecuteで
エラーとなり、エラー情報を取得すると
HY090 文字列長またはバッファ長が正しくありません。
が返ってきます。

また、
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT,
  SQL_C_CHAR, SQL_CHAR, 30, 0, szName, sizeof(szName), &sNull);
とすると、SQLExecuteもうまくいくのですが、Field1がNULLではなく、
30バイト分半角スペースで埋められたデータが格納されてしまいます。

おそらくSQLBindParameterの8番目のパラメータの指定の仕方がまずいの
だと思うのですが、どのようにすればよろしいでしょうか。

分かる方がいらっしゃいましたらお願いします。
197デフォルトの名無しさん:2006/03/23(木) 23:23:23
誤爆?
198デフォルトの名無しさん:2006/03/26(日) 10:47:32
.netでの画像の取り扱いについて教えてください。
win32APIでの透過GIFの扱いについてなのですが、どうも上手くいきません。

ググっても本当に情報が少なく困っております。助けて下さいorz
199デフォルトの名無しさん:2006/03/26(日) 12:02:14
ビットマップのマスク透過じゃいかん?
RLE圧縮すれば容量もそこそこ減らせる。
そういう問題じゃないとも思うが。
200デフォルトの名無しさん:2006/03/26(日) 12:57:50
>>199さん
画像っていざ本格的に扱うと難しいもので、とても参考になります。有難うございます。
ビットマップ画像の「ビットマップのマスク透過」で検討してみたいと思います。トンクスです。
201デフォルトの名無しさん:2006/03/26(日) 17:40:12
WaitForMultipleObjects に自動リセットのイベントオブジェクトを指すポインタ配列を渡して
"どれか 1 つがシグナル状態になったときに制御が返る"ようにしたとき、

(1) 制御が返ったとき、全ての自動リセットオブジェクトは非シグナル状態にリセットされる

(2) 制御が返ったとき、最初にシグナル状態になっていた自動リセットオブジェクトのみ
 非シグナル状態にリセットされる
 (配列の先頭から順にシグナル状態がチェックされるという仮定)

のどちらの動作になるのでしょう?

ご存知の方、ご教授ください
202デフォルトの名無しさん:2006/03/26(日) 18:19:10
なぜ試さないの?
203デフォルトの名無しさん:2006/03/26(日) 21:20:14
>>201
なんでMSDN読まないの?
204デフォルトの名無しさん:2006/03/26(日) 22:11:37
使用したclオプションとlinkオプションを取得したいのですがいい方法ありますか?
今は環境変数CL、LINKにオプションをセットしてgetenv_sしてるけど
もっといい方法があれば知りたいです。
205デフォルトの名無しさん:2006/03/28(火) 07:18:34
Visual C++で簡単なゲームのプログラミングをしているのですが、
debugバージョンの時にはちゃんと動くのですが、releaseバージョンの時には
ゲームのはじめの画面が少し映ってすぐに終了してしまいます。
なぜでしょうか?
206デフォルトの名無しさん:2006/03/28(火) 07:20:41
原因はバグです
207デフォルトの名無しさん:2006/03/28(火) 12:24:32
まず間違いなく自分のバグだ。

初期化してない変数を利用してる可能性が強い思う。
メンバ変数とか忘れがちなので確認してみるといい。
208デフォルトの名無しさん:2006/03/29(水) 21:01:28
あと自分が経験したのは、配列の領域を超えて書き込みしていたのに
Debugビルドではたまたま動いていたが、Releasビルドでは落ちたと
いうのがある。
たぶん配列の確保される領域が違ったんだと思う。
209デフォルトの名無しさん:2006/03/29(水) 21:04:56
境界越えでSEGVとかが投げられるのってレアケースだしな
210デフォルトの名無しさん:2006/03/30(木) 11:17:24
先生!質問です。
CWnd*から、コントロールのタイプ(Static Text, Check Box等)を判別するには、
どのようにすれば、可能ですか?
211デフォルトの名無しさん:2006/03/30(木) 11:26:37
GetRuntimeClass
212デフォルトの名無しさん:2006/03/30(木) 11:27:37
それだと一時オブジェクトの場合ダメじゃないか?
213デフォルトの名無しさん:2006/03/30(木) 11:32:32
サブクラス化されてたら100%判別不可能だな
214デフォルトの名無しさん:2006/03/30(木) 11:37:01
まあ悪あがきにはなるでしょ。
215210:2006/03/30(木) 11:39:51
ありがとうございます。
判別したいコントロールは、サブクラス化してないので、
>>211さんの方法で出来ました。
それでは、あがいてきます。m(_ _)m
216デフォルトの名無しさん:2006/03/30(木) 11:41:39
禿ヲタなら「そんな設計する方が(ry」っていうんだろうね。
217デフォルトの名無しさん:2006/03/30(木) 15:57:09
dynamic_cast とか。
218デフォルトの名無しさん:2006/03/30(木) 16:26:28
RTTIとか
219デフォルトの名無しさん:2006/03/32(土) 09:57:13
3/32
220デフォルトの名無しさん:2006/03/32(土) 11:27:14
探してもメニューの物だけだったので質問させて下さい。
チェックボックスのオンオフをアクセスキー?でも出来るようにしたいのですが
ダイアログの場合だとキャプションで「&A」など指定あげれば勝手に実装されると思うんですが
ダイアログでは無くウィンドウ?に表示させてあるチェックボックスをアクセスキーでも切り替え可能にしたいんです
調べてもそんな関数は無いようなので作ってみたのですが
チェックボックスが選択中の枠で囲まれていない場合はキーで切り替え可能なのですが(周りの選択枠が出ないでチェックのみ変わります…これが原因の本丸っぽいですが…)
一度マウスで選択したあとでキーで切り替えが出来ない状態です…
コードはプローシャ内の上記部分です
switch (msg) {
case WM_COMMAND:
switch (LOWORD(wp)){
case ID_CHECKBOX:
break;
}
return 0;
case WM_KEYDOWN:
if (GetKeyState(VK_CONTROL) < 0)
if (BST_CHECKED == SendMessage(GetDlgItem(hWnd,ID_CHECKBOX), BM_GETCHECK, 0, 0))
CheckDlgButton(hWnd,ID_CHECKBOX,BST_UNCHECKED);
else
CheckDlgButton(hWnd,ID_CHECKBOX,BST_CHECKED);
return 0;
根本から違う気がしますが よろしくお願いします。
221デフォルトの名無しさん:2006/03/32(土) 12:00:57
読んでないけど

コントロールにフォーカスがあるとキー入力はそっちに行ってしまうから
キーメッセージをディスパッチする前に処理する仕組みが必要になる。
MFCやATL/WTLのPreTranslateMessageみたいなの。
222220:2006/03/32(土) 13:16:45
"ディスパッチする前に処理する仕組み"という事で
メッセージループの方にWM_KEYDOWNの処理を入れたら出来ました
ありがとうございました
223デフォルトの名無しさん:2006/04/02(日) 20:29:23
プログラムに関する質問ではないんですが
最近久しぶりに.NET 2002でC言語書いてまして
エディタで宣言や定義を+-ボタンで折りたためる機能があった気がしたんですが
見当たらなくて、どうやって出すかわからなくなってしまいました
使ってる人少なそうだけどどなたかご存じないですか?
(もしかしたら勘違いか気のせい・・・?)
224デフォルトの名無しさん:2006/04/03(月) 23:21:54
はじめまして。Visual C++を勉強して3日目の超初心者です。
データ型に数値を格納する際、オーバーフローというエラーが出てしまいます。
デバックしてみると、変数に「5.011456E+09」が格納されています。
これは指数表記で、5011456000のことでしょうか?
225デフォルトの名無しさん:2006/04/03(月) 23:29:58
どんなプログラム作ったらそんなエラーがでるか見てみたいな
226デフォルトの名無しさん:2006/04/04(火) 09:10:59
>>224
そう
227デフォルトの名無しさん:2006/04/04(火) 13:50:35
マルチバイト文字作った奴を殴りたい
228デフォルトの名無しさん:2006/04/04(火) 15:27:10
    _, ,_  パーン
  ( ‘д‘)
   ⊂彡☆))Д´) ←>>227
229デフォルトの名無しさん:2006/04/04(火) 16:05:34
    _, ,_  パーン
  ( ‘д‘)
   ⊂彡☆))Д´) ←>>228
230デフォルトの名無しさん:2006/04/04(火) 16:16:48
    _, ,_  パーン
  ( ‘д‘)
   ⊂彡☆))Д´) ←>>229
231デフォルトの名無しさん:2006/04/04(火) 16:38:22
ケンカはやめて
232デフォルトの名無しさん:2006/04/04(火) 17:09:58
    _, ,_  パーン
  ( ‘д‘)
   ⊂彡☆))Д´) ←>>231
233デフォルトの名無しさん:2006/04/04(火) 18:22:59
二人を止めて
234デフォルトの名無しさん:2006/04/04(火) 18:27:20
    _, ,_  パーン
  ( ‘д‘)
   ⊂彡☆))Д´) ←>>234
235デフォルトの名無しさん:2006/04/04(火) 18:36:24
   _, ,_  パーン
  ( 'Д((☆
  ⊂彡
パーン _, ,_
  ☆))Д´)
    ミ⊃

   _, ,_
 (*))'Д´((*) ハァハァ…




俺に免じて二人ともケンカはやめて
236デフォルトの名無しさん:2006/04/04(火) 19:37:14
ここで、なんと、

      ●
     〜▲〜  オデンマ〜ン 登場!!!
      ■
      ハ
237デフォルトの名無しさん:2006/04/04(火) 19:38:15
    _, ,_  パーン
  ( ゜д゜)  
   ⊂彡☆======●
     〜▲〜
       ■
       ハ
238デフォルトの名無しさん:2006/04/04(火) 19:48:24
            パーン  _, ,_
                 (゜д゜ )  
      ●======☆ミ⊃
              ▲〜
          〜   ■
          〜  >>
239デフォルトの名無しさん:2006/04/04(火) 19:53:57
    _, ,_  パーン
  ( ゜д゜)  
   ⊂彡☆======●
     〜▲〜
       ■
       ハ
240デフォルトの名無しさん:2006/04/04(火) 20:04:44
            パーン  _, ,_
                 (゜д゜ )  
      ●======☆ミ⊃
              ▲〜
          〜   ■
          〜  >>
241デフォルトの名無しさん:2006/04/05(水) 15:33:03
私のために争わないで
242デフォルトの名無しさん:2006/04/05(水) 20:20:35
もう、何が何だか!?
243デフォルトの名無しさん:2006/04/15(土) 22:31:01
質問があるんですが、VC++とC++は違うんでしょうか?
いやですね、C++を学習するつもりで本を買ったのですがVC++を買ってました。
C++を学ぶならC++のやつを買いなおした方がいいでしょうか?
すいませんがあげさせてもらいます
244デフォルトの名無しさん:2006/04/15(土) 23:08:39
>>243
VC++は、C++言語を使ってアプリケーションを開発する
マイクロソフト製作・販売の統合開発環境ソフトの名称。
245デフォルトの名無しさん:2006/04/15(土) 23:19:19
マルチだったか。
答えて損した。
246デフォルトの名無しさん:2006/04/15(土) 23:19:31
>>244
ありがとございます
開発するということなので、どの道C++の知識がないとダメということですよね?
247デフォルトの名無しさん:2006/04/15(土) 23:22:41
日本語が分からずに日本語の小説かけると思うか?
248デフォルトの名無しさん:2006/04/15(土) 23:22:58
プログラムを組んでいる時に、APIを選択してF1を押すとそのAPIの説明のページが表示されます。
日本語の説明ページがあるのにもかかわらず、英語のページが表示されるのはどこの設定をかえればよいのでしょうか?

ずっと悩んでいるのでおねがいします。
249デフォルトの名無しさん:2006/04/15(土) 23:28:10
>>247
VC++でいいよって言う人もいるんですよぉ
何でもMSを使うからとか何とか。
250デフォルトの名無しさん:2006/04/15(土) 23:40:53
>>249
「MSを使う」ってなによ?
質問する前に日本語勉強してくれ。
251デフォルトの名無しさん:2006/04/15(土) 23:54:47
>>249
VC++の本を買っちまったならまずはじめることだな本によってはC++の説明をしながらのものもある。
252デフォルトの名無しさん:2006/04/16(日) 00:00:38
>>243
の質問と回答って、レンプレ入りしてもいい気がするんだ。

>>248
IDE もしくは Document Explorer の ツール -> オプション -> 国際対応の設定 とか?
253デフォルトの名無しさん:2006/04/16(日) 11:48:22
.net2003(spoken)を使っていて
猫でもわかるwindowsプログラミングの本の付録についている
何も無いウィンドウを描画するプログラムというサンプルをビルドしました。

2003環境では普通にコンパイル通って問題無いのですが
この度2005に移行したら
エラー1error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。MSVCRTD.lib
エラー2fatal error LNK1120: 外部参照 1 が未解決です。C:\Documents and Settings\***\My Documents\Visual Studio 2005\Projects\pra_01\Debug\pra_01.exe

というエラーが出てビルド出来ずに困っています。
初心者なのでエラーの意味もわかりませn。ソース見ないとわかんないかもしれませんが…・

環境移行した理由は学校で使う環境が2005なので合わせる為です。
254デフォルトの名無しさん:2006/04/16(日) 11:56:13
はじめまして。WM_MOUSEMOVEメッセージに関する質問です。
WM_MOUSEMOVEイベントが起こると関数A()が実行されるようにしてるんですが、
A()は処理が重いため、マウスを速く動かすとA()の処理が終わる前に
WM_MOUSEMOVEメッセージが更新されてしまい、マウスを速く動かしている間は
A()の処理が完了してくれません。
私としては、A()の処理が終わってから
次のWM_MOUSEMOVEメッセージを処理しにいってほしいのですが、
どのようにすれば実現できるでしょうか?
255デフォルトの名無しさん:2006/04/16(日) 12:15:39
>>253
.NET 2003のソリューションを2005で開くよりは、
2005で新しく作ってそこへソースコードをコピペで持ってきたほうがいいと思う。
http://www.kumei.ne.jp/c_lang/net2005/project.htm
http://www.kumei.ne.jp/c_lang/net2005/sample.htm
256253:2006/04/16(日) 15:01:22
>>255
ありがとうございます。

2005で新規プロジェクトを作製し
その後ソースのみのコピーで253の事象が発生するのです。。。

猫さんの所のを見て色々やってみたのですが…うーん
257デフォルトの名無しさん:2006/04/16(日) 15:25:37
>>256
つ[プロジェクトの形式]
258デフォルトの名無しさん:2006/04/16(日) 15:29:25
何も無いウィンドウを描画するプログラムなら
ウイザードで作ればいい。
259デフォルトの名無しさん:2006/04/16(日) 16:57:35
>>254
A()を別スレッドで動かさない限り
>()の処理が終わる前に WM_MOUSEMOVEメッセージが更新されて
は起こりえない。
260デフォルトの名無しさん:2006/04/17(月) 22:05:43
>>259さん
レスどうもありがとうございます。
詳しく調べてみたところ、A()の処理は完了していました。
InvalidateRectのあとに、UpdateWindowを実行していなかっただけでした。
お手数をおかけしました。
261デフォルトの名無しさん:2006/04/18(火) 05:01:53
const array[10];

みたいな事をしたいのですがどうすればいいのですか?
262デフォルトの名無しさん:2006/04/18(火) 09:01:40
263261:2006/04/18(火) 11:52:32
>>262
いえ、constで定義されてる物を配列で使いたいのですが
出来なくてこまってます。
264デフォルトの名無しさん:2006/04/18(火) 11:58:00
>>261日本語でおk
265デフォルトの名無しさん:2006/04/18(火) 12:43:21
>>263
どんなソース書いたのよ?
266デフォルトの名無しさん:2006/04/18(火) 20:22:03
ふつうに、const T array[10]とかやれば、array[1]はconst Tになるはずだが。
267デフォルトの名無しさん:2006/04/19(水) 00:20:07
型をかかずに

const array[10]

とそのまま書いたに3000点。
268デフォルトの名無しさん:2006/04/19(水) 08:12:13
ゴールデンハンマー
269261:2006/04/19(水) 21:17:19
ビンゴー
270デフォルトの名無しさん:2006/04/20(木) 17:41:37
はじめまして。
VC初めて1週間の初心者です。質問させてください。
環境はVisual Studio 2005のVC++MFCです。

@ダイアログを表示する
AOKが押されるとHTMLのページを開く(CreateProcess使ってます)
B開いたページのテキストボックスに自動的に文字列を入力する
※HTML側の設定でテキストボックスにフォーカスが当たった状態になります。
※文字列はプログラム内で固定で持っているものを使います。

上記のようなことを行いたいと思っているのですが、
Bのやりかたがわかりません。
どのような関数を使えばよいのか教えてください。
よろしくお願いします。
271デフォルトの名無しさん:2006/04/20(木) 18:45:58
自分でHTML取ってきてフォーム解析して自分でテキストボック表示して
そこにテキスト表示した方が100倍ぐらい楽だと思う。
とりあえずそれやってみろ
272デフォルトの名無しさん:2006/04/20(木) 18:56:58
自動ログインプログラムを書きたいようにも見える
273270:2006/04/20(木) 19:19:38
>>271
実はそれも作ってあるのですが、
そのページでログインした後にもう一回パスワード入力画面が出るような作りで、
その2枚目に自動入力させるようなものが作れないかなと思いまして。

>>272
そうです。
その練習として作っています(;´Д`)
ログインでユーザ名とパスワード入力するのまんどくせーから自動化しろ言われてまして。

274デフォルトの名無しさん:2006/04/20(木) 19:33:51
firefox使えあと氏ね、とか答えてあげてください(w
275270:2006/04/21(金) 12:03:36
一応、自己解決しました。
SendInputでそれっぽいことができましたので、
勉強してみます。
ありがとうございました。
276デフォルトの名無しさん:2006/04/23(日) 15:45:42
VS8を使っていますが、どうしても解決できないので教えて下さい。
CDialogを継承したCLinkDlgというクラスを作っていますが、
下記のエラーがでて、コンパイルが通りません。

エラー 1 error C2248: 'CObject::CObject' : private メンバ (クラス 'CObject' で宣言されている) にアクセスできません。c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxcoll.h593
(出力の内容)
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxcoll.h(593) : error C2248: 'CObject::CObject' : private メンバ (クラス 'CObject' で宣言されている) にアクセスできません。
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(553) : 'CObject::CObject' の宣言を確認してください。
c:\program files\microsoft visual studio 8\vc\atlmfc\include\afx.h(524) : 'CObject' の宣言を確認してください。
コンパイラでのこの診断により関数 'CStringArray::CStringArray(const CStringArray &)' が生成されました。

どうもコンストラクタがあやしいようです。 このクラスにCStringArray型のメンバ変数があり、初期化でひっかかるようなのですが。。。
やりたいことは、CStringArray型の変数を作成中のLinkDlgに渡すといったことです。
以下がソースになります。 宜しくお願いします。

(CLinkDlg.h内)
public:
CLinkDlg(CWnd* pParent = NULL); // 標準コンストラクタ
 virtual ~CLinkDlg();
 CLinkDlg(CWnd* pParent, CStringArray& nameList , CStringArray& idList);
 CStringArray m_idList;
 CStringArray m_nameList;

(CLinkDlg.cpp内)
CLinkDlg::CLinkDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLinkDlg::IDD, pParent)
{}
CLinkDlg::CLinkDlg(CWnd* pParent, CStringArray& idList, CStringArray& nameList)
: CDialog(CLinkDlg::IDD, pParent)
,m_nameList(nameList),m_idList(idList)
{}
277デフォルトの名無しさん:2006/04/23(日) 16:03:24
>>276
CStringArrayにはコピーコンストラクタが無いので、デフォルトのコピーコンストラクタが生成される。
その過程でCStringArrayの基本クラスCObjectのコピーコンストラクタを呼び出す事になるが
privateなのでアクセスできない。
よってエラーとなる。
278デフォルトの名無しさん:2006/04/24(月) 01:31:30
>>277
ありがとうございました!
解決できました。
279デフォルトの名無しさん:2006/04/24(月) 02:32:24
全く見当違いな質問だったらすいません。
VC6.0でwindows.hをインクルードして使えるようになる関数って、
プラットフォームSDKの関数なんですか?
280デフォルトの名無しさん:2006/04/24(月) 14:34:01
はじめまして、.net 2003で開発している者です。
MSNメッセンジャーやout look,skypeのように、デスクトップの右下のタスクトレイの上部に
アラートポップアップみたいなウィンドウを出したいのですが、どのように行っているのでしょうか。
MSNメッセンジャーで"○○がサインインしました。"と通知がでるウィンドウです。

調べてみましたが、調べるためのキーワードすら分からなかったので、
宜しくお願いします。
281デフォルトの名無しさん:2006/04/24(月) 14:43:21
バルーンとかツールチップのことか?
282280:2006/04/24(月) 15:21:03
>>281
レス、どうもっす。
ツールチップでウィンドウ型のGUIが実現できるのですか??
MSNメッセの場合、×ボタンやオプションボタンがバルーン内に配置されているのですが。
283281:2006/04/24(月) 15:26:28
キーワードをあげただけ、詳細は知らない。
昔はツールチップを自作してたやつもいたような気がする。
284280:2006/04/24(月) 15:30:41
ありがとうございます。
ツールチップ、もう少し調べてみます。
285デフォルトの名無しさん:2006/04/24(月) 20:02:59
フォームでボタンを一個作り、そこを押すとwavを再生するようにしたいのですが・・・

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
          sndPlaySound("J:\asfd\Win.wav",SND_ASYNC);
}

上記の場合だと
Form1.h(159) : warning C4129: '' :
Form1.h(159) : warning C4129: 'W' : エスケープ シーケンスとして正しく認識されませんでした。
Form1.h(159) : error C2065: 'SND_ASYNC' : 定義されていない識別子です。
Form1.h(159) : error C3861: 'sndPlaySound': 識別子が見つかりませんでした
こんな感じで怒られてしまいます。

環境はVisualStudio 2005で
Winmm.libはリンカに追加済みです。
ちなみにMMsystem.hをインクルードするとかなりの数のエラーが発生してしまいました。

よろしくお願いします。
286デフォルトの名無しさん:2006/04/24(月) 20:05:05
これはこれはご丁寧に、こちらこそよろしくお願いします。
287デフォルトの名無しさん:2006/04/24(月) 21:48:31
>>285
\ → \\
288285:2006/04/24(月) 22:00:09
>>287
ありがとうございました。エラーは減りましたが下記エラーが表示されたままです。

Form1.h(159) : error C2065: 'SND_ASYNC' : 定義されていない識別子です。
Form1.h(159) : error C3861: 'sndPlaySound': 識別子が見つかりませんでした

どうみてもインクルードの問題ですよね…
でもmmsystem.hをインクルードすると88個エラー出ちゃって うーん

289デフォルトの名無しさん:2006/04/24(月) 23:01:19
#include した場合に発生する問題を解決する方法は考えんのか。
290285:2006/04/24(月) 23:42:35
SoundPlayer
を別に使ってみたところ、インクルードも何もなしで使えました

2005はよくわかりませんが、一応巧く動いてくれたので終わりということで
ありがとうございました。
291デフォルトの名無しさん:2006/04/25(火) 02:42:33
VC++6.0でbzip2のlibを静的リンク?とかいう
DLLを呼び出さなくて良いのにビルドしたいのです。
どうやればいいのでしょうか?
292デフォルトの名無しさん:2006/04/25(火) 04:17:26
そのbzip2とかいうものの .lib と .h を探して、それらをプロジェクトに追加してみたら。
293デフォルトの名無しさん:2006/04/25(火) 08:49:24
失礼、ちゃんと理解してませんでした。
スタティックリンクライブラリのLIBを生成する為には
どうしたらいいかを教えて頂きたいのです。
294デフォルトの名無しさん:2006/04/25(火) 08:53:34
普通のライブラリの作り方と同じ
DLLの方が特殊なやりかた
295デフォルトの名無しさん:2006/04/25(火) 09:46:54
そのやり方が…どこか参考になるサイトとかあれば良いのですが…。
296デフォルトの名無しさん:2006/04/25(火) 09:49:32
bzip2ならWin用スタティックLIBもどこかに転がってた希ガス。
少なくともCygwin用はあったが……
297デフォルトの名無しさん:2006/04/26(水) 03:05:50
散々探したのですが見つかりませんでした。
スタティックでない方ならあったのですが…。
298デフォルトの名無しさん:2006/04/26(水) 06:08:54
オープンソースだからソースからビルド
でもスタティックリンクするとソース公開しないとだめだろ
そういうことで普通はDLLにするんだな
299デフォルトの名無しさん:2006/04/26(水) 08:19:39
>>298
BSDスタイルだから公開する必要ないでしょ。

DLLの場合免れるのはLGPLで、
GPLだったらDLLにしても避けられないし。
300デフォルトの名無しさん:2006/04/26(水) 08:55:04
>>293
コマンドプロンプトでbzip2のフォルダで
"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
nmake -f makefile.msc
インストール先変えてるならパス変えてね。

てかさぁ、ビルドの仕方READMEに書いてあるんだけど???
まさか、READMEも読まずに、VC++の.dspファイル開いて、
DLLでしかビルドできませんとかほざいてるわけじゃないよね?
301デフォルトの名無しさん:2006/04/28(金) 01:24:10
エディットボックスとOK・キャンセルボタンだけのダイアログを作りました。
OKボタンはDefault ButtonをTrueにしてます。
エディットボックスにカーソルがある状態で、Enterを押すとOKボタンが反応するようにしたいです。

DialogBox()だと、思ったとおりの動作になるんですが
CreateDialog()だとEnterを押してもBEEP音が鳴るだけです。

CreateDialogでも期待通りの動作をさせることはできますか?
DialogBox()ではメインの処理が止まってしまうので困ってます。
302デフォルトの名無しさん:2006/04/28(金) 06:05:51
ID_OK
303デフォルトの名無しさん:2006/04/28(金) 11:43:39
IsDialogMessageしてないとか
304デフォルトの名無しさん:2006/04/28(金) 16:22:54
>303それでした。
お手間取らせてすいません。ありがとうございました。
305デフォルトの名無しさん:2006/04/29(土) 23:34:59
VC++6.0で、プログラム行数が多くなると(と言っても5000行超え程度)、
エディタの動作がものすごく重くなるのですが、こういうものなのでしょうか?
306デフォルトの名無しさん:2006/04/30(日) 00:59:05
1ファイルに5000行も書くなバカ。
307デフォルトの名無しさん:2006/04/30(日) 01:01:33
俺には見える…
スパゲッティコードが…
308デフォルトの名無しさん:2006/04/30(日) 06:13:58
VC++6で重いなんて初めて聞いた
309デフォルトの名無しさん:2006/04/30(日) 11:41:37
>306
500ファイルも作るなバカ。
310デフォルトの名無しさん:2006/04/30(日) 12:26:06
>>309
Firefoxを否定するなバカ。
311デフォルトの名無しさん:2006/04/30(日) 16:16:32
インラインアセンブラで質問なんですが
asm,_asm,__asmの違いって何なのでしょうか?
312デフォルトの名無しさん:2006/04/30(日) 16:19:32
_の数じゃないかな。
313デフォルトの名無しさん:2006/04/30(日) 16:35:38
最近、VC++6.0を使いはじめた初心者です。

あるファイルで使われている変数の中身を、違うファイルで使いたいのですが、
どうすれば値の引渡しができるんでしょうか?
314デフォルトの名無しさん:2006/04/30(日) 16:41:03
#include
315デフォルトの名無しさん:2006/04/30(日) 17:33:16
>>311
asmがISO C++でのキーワードだけどVC++では対応していなかった気がする。
_asmと__asmはVC++の独自拡張。どっちも同じだから好きなほうを使え。
316311:2006/04/30(日) 19:04:05
>>315
そういうことですか。
レス有難う御座いました。
317デフォルトの名無しさん:2006/04/30(日) 19:12:03
ダイアログではなくウインドウに EDIT コントロールを WS_CHILD で生成した際に、現在のシステムに設定されているフォントサイズに応じて、EDIT コントロールの高さを設定するには、どのようなパラメタを見たらよいでしょうか。

現在は EDIT コントロールの DC から GetTextMetrics( ) を使って TEXTMETRIC 構造体の tmHeight メンバと、GetSystemMetrics( ) から取った SM_CYBORDER * 2 を使っていますが、サイズがズレているようです。
318デフォルトの名無しさん:2006/04/30(日) 20:59:59
>>317
AdjustWindowRectを使ったらどう?
319デフォルトの名無しさん:2006/04/30(日) 21:19:19
tmHeight 高さ でぐぐったらそれらしきのが見つかるけど
320317:2006/05/01(月) 12:50:54
>>318,319
レスありがとうございます。

1) GetTextMetrics( ) から tmHeight でフォントの高さを取得
2) GetSystemMetrics( ) から SM_EDGE で EditBox 内側の幅を取得
3) AdjustWindowRect( ) あら WS_BORDER で外側の枠線幅を取得

この 1) 〜 3) の値を足すと Just になりました。
GetSystemMetrics( ) で SM_EDGE と SM_BORDER 両方を取得すれば
AdjustWindowRect( ) は不要になるかもしれません。(未確認

321デフォルトの名無しさん:2006/05/04(木) 20:56:15
初心者的質問でもないのですが、どこに投稿すべきかわからないのでここに。
IEでpdfとか開くとAcrobat ReaderプラグインがIE上で開きますよね?
ああいうプラグインってどうやって作ればいいのでしょう。
何がやりたいかというとbbs2chreaderのIE版みたいなのを作りたいのです。
2chの板やスレのURLを開こうとしたら自作の2chビューワープラグインに渡すイメージです。
322デフォルトの名無しさん:2006/05/05(金) 09:58:47
お前には無理だと思う
323デフォルトの名無しさん:2006/05/05(金) 10:35:31
同意
324デフォルトの名無しさん:2006/05/05(金) 11:43:32
ATL COM で作るんだっけ?
325デフォルトの名無しさん:2006/05/06(土) 21:07:49
>>321
BHOでInternet Explorerに潜入して、
DownloadCompleteイベントを捕まえれば開かれようとするときがわかる。
そしてIHTMLDocument2のURLプロパティでURLが得られる。
それが2chのものなら、IHTMLDocument2インターフェイスを通じて自分好みに書き換えればよい。
http://www.microsoft.com/japan/developer/library/jptech/msdnnews/top.htm
326デフォルトの名無しさん:2006/05/07(日) 17:11:39
ネットワークがらみのコードを書いているんですが、
ISO-2022 <-> Unicode な変換をする Windows API もしくはライブラリはありませんか?
#フリーで配布する予定なので、ライブラリの場合はライセンス的に問題のないものが良いです。GPL, BSD2, etc..
327326:2006/05/07(日) 17:43:28
引き続き調べてみると
HRESULT ConvertINetMultiByteToUnicode(
LPDWORD lpdwMode,
DWORD dwSrcEncoding,
LPCSTR lpSrcStr,
LPINT lpnMultiCharCount,
LPWSTR lpDstStr,
LPINT lpnWideCharCount
);
Requirements
OS Versions: Windows CE .NET 4.0 and later.
Header: Mlang.h, Mlang.idl.
Link Library: Mlang.dll.
が使えそうなので、MLang.h を include して
DWORD dwMode = 0;
ConvertINetMultiByteToUnicode( & dwMode, 50932, jisdata, nJSize, ucdata, & nUSize);
のようにしてみましたが
error C3861: 'ConvertINetMultiByteToUnicode': 識別子が見つかりません
となるようです。
(参考にしたURL)
ttp://www2d.biglobe.ne.jp/~msyk/cgi-bin/charcode/bbs.cgi?c=gr&n=211
ttp://www.kaede-software.com/2005/01/libiconv.html
MLang.h を include する以外にコード的になにか必要なのでしょうか。
(MLang.hの存在とAPIの宣言は確認しました
328デフォルトの名無しさん:2006/05/07(日) 22:42:03
>>327
http://msdn.microsoft.com/workshop/misc/mlang/reference/functions/convertinetmultibytetounicode.asp]
IE 5.5以上が必要と書いてあるから#define _WIN32_IE 0x0550が必要であるはず。
329321:2006/05/08(月) 01:01:28
>>325
IE7入れたら設定のところで各機能拡張が何でできてるか見られますね。
AdobeとかはActiveXですね。
なんにせよ、できなくはなさそうなので、頑張ってみます。
330デフォルトの名無しさん:2006/05/10(水) 18:42:36
ポインタとstaticがよく分からないのですけども
staticのメンバを使えなくて困ってます。
class hoge {
public:
  static char* str;
  hoge() {
    str = new char[10];
  }
  ~hoge() {
    delete[] str;
  }
};
これは通るのですけども、ヘッダとして以下のように分けると
LINK2001:外部シンボル""public static char* hoge::str"(?str@hoge@@2PARA)"は未解決です。
LINK1120:外部参照1が未解決です。
と出てしまいます。
class hoge {
public:
  static char* str;
  hoge();
  ~hoge() {
    delete[] str;
  }
};
hoge::hoge() {
  str = new char[10];
}
ビルドはVS2003です。staticでなければ行くのですけども。
何が原因でしょうか?
331デフォルトの名無しさん:2006/05/10(水) 19:12:20
str = new char[10];
これをコメントにすれば通るんじゃないか?
332デフォルトの名無しさん:2006/05/10(水) 19:14:20
ああそうか上は通るのか
333デフォルトの名無しさん:2006/05/10(水) 20:09:31
>>330
クラス内の静的変数の宣言はあくまで宣言でしかない。
普通のグローバル変数のようにどこかで定義をする必要がある。
334デフォルトの名無しさん:2006/05/10(水) 20:19:18
どっかで、hoge::strを定義しろや。
上が通るようにみえるのは、リンカがclass hogeのコードを最適化で
リンクしなかったからじゃねーの。
335デフォルトの名無しさん:2006/05/10(水) 23:06:34
そして hoge クラスのインスタンスを2つ作ってあぼーんするわけだな
336デフォルトの名無しさん:2006/05/11(木) 00:53:29
質問します
座標が与えられている(x1,y1)をa
(x2,y2)をb
ab間に線を引くとして、このabの線の長さを求める式はどのようにしたらいいでしょうか?
337デフォルトの名無しさん:2006/05/11(木) 00:55:52
スレ違い
338デフォルトの名無しさん:2006/05/11(木) 00:56:07
>>336
ここはおこちゃまの数学講座じゃないんだが。
ま、hypot()でも使っておけ。
339デフォルトの名無しさん:2006/05/11(木) 01:01:26
>>338
ありがとうございます!
これで三角形の面積のプログラムがかけれます!
340デフォルトの名無しさん:2006/05/11(木) 01:17:49
日本語も怪しいな
341330:2006/05/11(木) 10:02:12
クラスの外で
char* hoge::str;
を定義したらできるようになりました。
ありがとうございました。

342デフォルトの名無しさん:2006/05/12(金) 19:09:25
ウィンドウのクライアント領域のみを半透明で表示したいのですが、
SetLayeredWindowAttributesを使って半透明表示すると、ウィンドウ
全体が透過されてしまいます。
タイトルバーや枠線など非クライアント領域はそのまま表示し、
クライアント領域のみ半透明にするには、どのようにしたらよいのでしょうか?
343デフォルトの名無しさん:2006/05/12(金) 19:53:56
UpdateLayeredWindow
344デフォルトの名無しさん:2006/05/13(土) 14:24:44
>>343
ありがとうございます。試してみます。
345デフォルトの名無しさん:2006/05/13(土) 22:38:41
MFCのCHTMLEditViewみたく、HTMLファイルをプレビューしながら編集する機能を
MFC使わずにSDKで作るにはどうすればいい?
検索ワードだけでも教えてけれ。
346デフォルトの名無しさん:2006/05/13(土) 22:53:04
ActiveXをSDKだけでホスティングするのは骨だと思うよ。
347デフォルトの名無しさん:2006/05/13(土) 23:18:28
そうですよね。
ATLを使って作る、の間違いです。
いずれにせよ骨が折れるのは変わらなさそうだけど。
348デフォルトの名無しさん:2006/05/14(日) 00:23:30
>>347
そこまでわかっているなら検索ワードとか必要ないと思うけど。

---------------
自分で構文解析しながら、なんちゃってプレビューって言う手もあるよ。
349デフォルトの名無しさん:2006/05/14(日) 03:28:02
質問です。

GDI+ のスレが見つからないのですが、GDI;+ に関してです。
画面上の 1pixel のみに点を打つ関数がみあたらないのですが、
ひょっとして無いのでしょうか?

宜しくお願いします。
350デフォルトの名無しさん:2006/05/14(日) 12:02:51
関数内で意図的にthrowしている部分があるのですが、
デバッグモードで動かすと、デバッグウインドウに
「xxx.exe の 0x7c81eb33 で初回の例外が発生しました : Microsoft C++ exception: bool @ 0x05b9fe53。」
というメッセージが表示されてウザいです。
これを表示させなくする方法はありますか?
IDEはVisualC++2003です。
351デフォルトの名無しさん:2006/05/14(日) 12:05:32
おまえの質問がうざい
352デフォルトの名無しさん:2006/05/14(日) 16:14:14
>>350
ありますよwwwwwwwwwwww
353デフォルトの名無しさん:2006/05/14(日) 16:35:35
どこで質問して良いか迷ったのですが、
レジストリを変更せずにデフォルトの状態で
カレントフォルダのDLLを優先して使用するようにすることは
どうにかして出来ないのでしょうか?
強引な方法でもかまわないのですが…
何かありましたら教えていただけないでしょうか?
開発環境はVisual C++ .NET 2003です。
よろしくお願いします。
354デフォルトの名無しさん:2006/05/14(日) 16:41:00
そのDLLと同名のDLLを予め削除しておく。
355デフォルトの名無しさん:2006/05/14(日) 16:44:20
カレントフォルダに置いたつもりで実はそうじゃないとか
356デフォルトの名無しさん:2006/05/14(日) 16:56:49
自分で作るプログラムならどうにでもなるはずだが
357353:2006/05/14(日) 17:01:38
>354
削除はちょっと出来そうにないDLLで…

>355
実行ファイルと同じ所において直接実行しているので
間違い無いと思います。

>356
すいません説明不足でした。
自分で作るプログラムではなくて、
他のアプリケーションが呼び出しているDLLの関数の動作を変えたいのです。
358デフォルトの名無しさん:2006/05/14(日) 17:18:45
それができるとウイルスが作れそうだね
359デフォルトの名無しさん:2006/05/14(日) 18:11:35
>>357
参考までに言っておくと、DirectXSDKについてるD3DSpyは
対象アプリのカレントにd3dspy9.dllをd3d9.dllにリネームして配置している。
360353:2006/05/14(日) 18:42:17
>359
ありがとうございます。
試しにDirectXを使っているアプリのディレクトリに「d3d9.dll」を
コピーしてみたところ確かに呼び出しているDLLはカレントディレクトリのものになりました。
ところが同じアプリの他のDLL、たとえば「gdi32.dll」をコピーしてみてみたところ
カレントディレクトリのものをロードしてくれませんでした。
呼び出しているDLLの確認には「Dependency Walker」を使っているのですが…
この違いは何からきているのかわかりませんでしょうか?

WindowsXPだとデフォルトで
System32フォルダ→Systemフォルダ→Windowsフォルダ→プログラム本体があるフォルダ
の順でDLLを探すとあったのでどういう優先順位なのかがよくわかりません…
http://takuki.com/dennou/120-madotsukai.htm
361デフォルトの名無しさん:2006/05/14(日) 18:59:36
マニフェストファイルちゅーのが必要なのだよチミ
362デフォルトの名無しさん:2006/05/14(日) 23:03:00
>>360
gdi32.dllなんかは常にシステムフォルダのものを使用するようレジストリに記載されている。
(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs)
363353:2006/05/14(日) 23:31:32
>361
マニフェストファイル…調べてみて「****.exe.manifest」ファイルを適当に書いてみたところ
どうやら目的のファイルをロードできるようになったようです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<file name="********.DLL" hash="DLLファイルのSHA1ハッシュ値" hashalg="SHA1"/>
</assembly>
と言うように書いたのですが、assemblyIdentityなども必ず記述しなくてはいけないのでしょうか?
いまいちnameやらpublicKeyTokenの値の書き方がよくわかりません。
もう少し調べてみることにします、ありがとうございました。

>362
KnownDLLsで検索してみたところ色々と情報が見つかりました。
なるほど、逆に言うとKnownDLLsに書いてあるDLLをコピーして別に用意するというのは危険なのでしょうか?
なかなかうまくいかないものですね…
364デフォルトの名無しさん:2006/05/19(金) 14:38:24
微妙に空気が違うがちょっと教えてくれ。
久しぶりにw2kをインスコして、VC6.0+MSDNもぶちこんだんだが、VCからMSDNを起動しようとすると、

ヘルプを表示出来ません。
必要なファイルが見つかりません。
インストールをやり直してください。

こんなことになる。何度再インスコしても同じ。普通にスタートメニューからなら、MSDNも起動するんだが。
むかーーーし昔にもなった気がするが、何とか治した気がするが、今回はどうにも治らない!
解決法知ってる人、手ぇ貸してくださいorz
365デフォルトの名無しさん:2006/05/19(金) 14:53:21
ヘルプのパスを設定すればいいんじゃないか
366デフォルトの名無しさん:2006/05/19(金) 14:58:21
どこで設定するのだろう!
いやさっきから色々やってんだけど(´・ω・`)みつからんでね
367デフォルトの名無しさん:2006/05/19(金) 15:09:10
368デフォルトの名無しさん:2006/05/19(金) 16:34:18
>>367
なるほど、どうやらウチの場合、VC++のインスコでアレされている可能性がナニそうだね。
いい加減6.0も古いからなぁ。学生はいいなぁアカデミックエディション・・・・・・・
という訳でがんばってみます。ありがとう!
369デフォルトの名無しさん:2006/05/19(金) 17:39:30
素早く後日談
アンインスコして再インスコしても駄目(´・ω・`)駄目だこりゃ
何とかしてアカデミックパックを仕入れる事に決定!
370デフォルトの名無しさん:2006/05/19(金) 17:43:09
割れ厨は氏ね
371デフォルトの名無しさん:2006/05/19(金) 17:45:20
ちゃうがな。学生親戚頼り厨やがな(´・ω・)
372デフォルトの名無しさん:2006/05/19(金) 17:50:27
君にはライセンスが無いんだから、いくら金払ったとしてもワレと同じだろw
373デフォルトの名無しさん:2006/05/19(金) 17:52:07
ぇーやっぱだめー?
取り敢えずしかるべき物を熟読して、何とか合法な道を探そう(w
374デフォルトの名無しさん:2006/05/19(金) 17:53:24
>>373
どうあがいても無理だろww
そういや学生の時にアカデミックライセンスでVS買った場合って
卒業した後はどうなるんだ?
375デフォルトの名無しさん:2006/05/19(金) 17:53:53
素直にexpressからのアップグレートでVS2005買っとけ
376デフォルトの名無しさん:2006/05/19(金) 17:54:40
>>374
そのまま使える
377デフォルトの名無しさん:2006/05/19(金) 17:58:45
くう・・・・あの頃に戻りたいぜ!
ええっと、19800円?
出せる金額では有るがなんか悔しいwwwwwwww
378デフォルトの名無しさん:2006/05/19(金) 18:44:36
>>376
そうなのか、thx
もっとも卒業まで最短でも後3年あるし、それまでにはC++0xのが出るだろうから
どうせ買うことになるんだろうが・・・
379364:2006/05/19(金) 19:24:24
たびたび済まぬ。
ttp://support.microsoft.com/?scid=kb;ja;250334&spid=3042&sid=1237
即ち、 regsvr32 "C:\Program Files\Common Files\Microsoft Shared\VS98\VSHELP.DLL"
これでいけたヽ(`Д´)ノ というわけで後進のために検索ワード入れておくかw
visual studio vc 6.0 ヘルプシステム 言語の選択 日本語 空 f1 msdn まあなんかこれくらいで。

・・・・・・・・・・・という訳で当座は凌げるんだが、やっぱ2005欲しいよ(*´・ω・)(・ω・`*)ネー
380デフォルトの名無しさん:2006/05/19(金) 21:35:04
DirectX9.0の最新SDKは、 .NET 以降の環境でないとインスコ出来ない、
と言う認識でいいのでしょうか。8.1は問題が無かったのですが。
381デフォルトの名無しさん:2006/05/20(土) 01:46:52
>>379
俺は普段からVC6使うときにMSDNは別に起動するが、IDEから起動しなくてはならない理由って何?
382デフォルトの名無しさん:2006/05/20(土) 05:53:49
これ知らないで人生無駄にしてるやつがいたとは
383デフォルトの名無しさん:2006/05/20(土) 09:55:26
>>382
しらねーなw
384デフォルトの名無しさん:2006/05/20(土) 10:16:26
IEでは左上の’戻る’ボタンを押せば戻れるのに、5ボタンマウスを使う理由って何?
ソフトウェアキーボードが有ればマウスで文字が打てるのに、わざわざメカニカルキーボードを使う理由って何?
バイナリエディタが有ればexeなんて書けるのに、わざわざCコンパイラを使う理由って何?

こりゃ極端な例だが、まあ、微妙にだが、手間が、違う、のだろう。
385デフォルトの名無しさん:2006/05/20(土) 10:59:47
>>384
キーワードを見に行ってくれちゃうお茶目なF1キーのことか?
386デフォルトの名無しさん:2006/05/20(土) 19:39:43
何より一番の手間はやっぱり、これまでのスタイルをかなり変えないといけない、って点なんじゃないですか。
キーボードのAとBが入れ替わってしまったら、とか考えると、ぞっとしますね。
人には人の価値観が有りますから、そっとしておいてあげましょう。
387デフォルトの名無しさん:2006/05/23(火) 01:51:28
あほな質問ですみません。
サービスパック6をインストールしたのですが、
Visual C++のバージョン情報が変わっていません。
msdev.exeのバージョンは6.0.9782.2なのですが、
これって本当にアップデートされてるんでしょうか?

Visual Studio Service Pack がインストール済みか確認する方法
ttp://support.microsoft.com/default.aspx?scid=kb;ja;194295

を見たのですが、サービスパックにもリンク先にも
readme.txtなんてありませんでしたorz
388デフォルトの名無しさん:2006/05/23(火) 03:04:59
VB を起動して見れ
389デフォルトの名無しさん:2006/05/24(水) 02:01:09
>>388
ありがとうございます。
VBはちゃんとSP6と表示されてました。
390デフォルトの名無しさん:2006/05/24(水) 19:41:19
すみませんが質問です。
VB++で開発をやることになったのですが、
試験ツールを調べるように言われました。
有料無料一切関係なく、調べ上げろと言われたのですが、
DevPartnerというソフトしか見つかりませんでした。
他に普及しているソフトなどはありますか?
よろしくお願いします。
391デフォルトの名無しさん:2006/05/24(水) 19:48:02
進化したなVB…
392390:2006/05/25(木) 01:32:03
すみません。>>390です
VB++って・・・
VC++の間違いです・・・orz
393デフォルトの名無しさん:2006/05/25(木) 01:36:11
>>390
BoundsChecker
394デフォルトの名無しさん:2006/05/25(木) 16:15:14
VB(6)のActiveX DLLをVC(6)で使用して不具合が発生しました。
なぜなのか誰かご教授下さい。WinXP
以下が詳細です。
---------VB側---------
Public Type Test
a As Double
b As String
a As Double
End Type
Public Function TestApi( ByRef Buf As Test )
Buf.a = 1: Buf.b = "TEST": Buf.c = 2
End Function
---VC側----
#import でVB DLLのタイプライブラリ情報読み込み、
Com関連初期化してインターフェース取得後以下のように上記関数呼び出し
Test tTest;
memset( &tTest, 0, sizeof(tTest) );
pTest->TestApi( &tTest );
以上で、tTest内容のa, bはVBで設定した内容となっているが、
cが不定のめちゃくちゃな値になっている。
なぜcが2にならないのでしょうか??
395デフォルトの名無しさん:2006/05/25(木) 16:39:19
VB知らんけど間違ってるように見える
たぶん間違いだろう
396394:2006/05/25(木) 16:44:26
・・・・・・・・訂正です^^;;
Public Type Test
a As Double
b As String
c As Double
End Type
397デフォルトの名無しさん:2006/05/25(木) 19:58:58
cが無茶な値、というのはVBで確認したの?
398394:2006/05/26(金) 09:18:29
>>397
VBの関数終了直前ではcには2が入っていて、
VCに戻ってきてすぐ構造体の中を見たらcがめちゃくちゃな値に
なっていました^^;
ActiveX DLLとCとの間の変換?かなにかが悪さをしているのでしょうか?
399デフォルトの名無しさん:2006/05/26(金) 19:33:23
winsockでネットワークソフトを作成するときに、サーバー側のソフトをVisual Cで作成して
クライアント側のソフトをVisual Basicで作成するという事は可能ですか?
具体的には、Visual C側のソフトでlisten関数で待ち続け、Visual Basic側のソフトで
connect関数で接続することは可能ですか?どなたか教えてください。m(_ _)m
400デフォルトの名無しさん:2006/05/26(金) 19:38:18
VCで確認したの?VBでつくられたActvieXオブジェクトを構造体と見立てて?
その構造体はどこから出てきた?
401デフォルトの名無しさん:2006/05/26(金) 19:38:47
>399
VC側でacceptで待ち続けないと接続はできない。
402デフォルトの名無しさん:2006/05/26(金) 19:53:24
>>401

お返事ありがとうございます。listenで待てばいいと思っていたのですが、
acceptで待ち続けるが正解だったんですね。ということは、言語が違って
いてもサーバーソフト(Visual C) と クライアントソフト(Visual Basic)の接続
は可能だと言うことなんですね。ありがとうございました。m(_ _)m
403デフォルトの名無しさん:2006/05/26(金) 19:57:10
インターネットの仕組み
404390:2006/05/27(土) 05:59:40
>>393
ありがとうございます。
BoundsCheckerもDevPartnerシリーズ(?)のですよね。
やはりそれしかないんですかね・・・
405390:2006/05/27(土) 06:00:14
>>393
ありがとうございます。
BoundsCheckerもDevPartnerシリーズ(?)のですよね。
やはりそれしかないんですかね・・・
406デフォルトの名無しさん:2006/05/31(水) 01:33:25
VCを使って、ソースファイルを追加しデバッグをしようとしたのですが、
「シンボル情報がありません。」
と出て、デバッグができませんでした。
これを対処するにはどうしたらいいんでしょうか?

ビルドは成功して、エラーはなかったみたいなんですけど・・・
407デフォルトの名無しさん:2006/05/31(水) 01:37:54
408デフォルトの名無しさん:2006/05/31(水) 19:02:56
デバッグビルドであるかを確認。
それでもダメなら /ZI あたりを調べれ
409デフォルトの名無しさん:2006/05/31(水) 21:46:56
質問なのですが、子ウインドウ生成ってどうやるんですか?
410デフォルトの名無しさん:2006/05/31(水) 23:06:48
411デフォルトの名無しさん:2006/06/01(木) 20:26:37
質問です、最近学校でプログラムを始めたばかりの者ですが、
学校ではVisualStdio.Net2003でプログラミングしたものを
家の2005で開くと、ビルドエラーがおきて実行できないです。

変換画面が現れて、正常に変換が終了しました。とメッセージも出るんですが。
何回やってもビルドエラーが出ます、2003では間違いなく動くんですが

例えばただの
#include <stdio.h>
main()
printf("Hello");
↑これだけの物もビルドエラーが出てしまいます。
一体なぜなのでしょう
412デフォルトの名無しさん:2006/06/01(木) 20:32:17
初心者未満はお帰りください。
413デフォルトの名無しさん:2006/06/01(木) 21:11:21

学校の授業でC言語のプログラミングがあって
家でも練習したいんですが、コンパイラとか実行させるソフトとかって
どこで何を手に入れればいいんでしょうか?
学校はLinuxですが、家ではWindowsです。

教えてください。
414デフォルトの名無しさん:2006/06/01(木) 21:18:13
>>413
コンパイラにVisual C++を使いたいというわけではなさそうだな。
Cygwinなら、Windows上でUnix風の(ということはLinuxにも近い)環境が再現できる。

学校でやるのと忠実に操作感を再現したいわけではなければ、Visual C++も悪くない。

すれ違いだから、こんなスレで聞くよりよそで聞いた方がずっといいと思うぞ。
415デフォルトの名無しさん:2006/06/01(木) 21:18:13
学校の先生か友達に聞けばいい
416デフォルトの名無しさん:2006/06/02(金) 00:18:00
>>414
そうですか
操作とかは別にいいです。
プログラムを作ってコンパイルして走らせてそのとおりの結果が出る・・・というのができればいいんです。
Visual C++とか調べてみます。

>>415
そこまで詳しいやつがいない
「自分はどうでもいい」的な人ばっかりなんで
417デフォルトの名無しさん:2006/06/02(金) 03:00:50
CComBSTRについて教えてください。

UNICODE環境で
CComBSTR strA( "あいうえお" );

で生成した文字列から前から"うえ"の部分文字列をコピーしたい場合

CComBSTR strB( 2 , strA + 2 );
と書いてよいのでしょうか?

printfで標準出力した結果を見ると問題ないようです
しかし、CComBSTRクラスに対して+UNICODE2文字バイトずらすという行為は
本来NGだと思うのですが・・・

個人的には下のどちらかを利用したいと考えています。
CComBSTR strB( 2 , strA.m_str + 2 );
CComBSTR strB( 2 , (BSTR)strA + 2);

すみませんが詳しい人教えてください。
418デフォルトの名無しさん:2006/06/02(金) 18:23:42
>>417
CComBSTR strB(2 , strA + 2);
これで平気。

CComBSTRはBSTRへの暗黙の変換があり、
BSTRは単なるOLECHARへのポインタとして扱えるから、
CComBSTR(int, LPCOLESTR);のコンストラクタが呼ばれ、新たなBSTRが作られる。

あと、BSTRをリテラルから構築するつもりなら、L"あいうえお"で初めからワイド文字にしておくほうがよい。
419デフォルトの名無しさん:2006/06/02(金) 22:48:20
XP、VC2005で作業をしています。
2003でコーディングしたソースを実行すると、
ファイルをオープンする箇所で、
文字化けをしてパスが正しく取得できていません。
ちなみに、英語のみでのパスだとファイルをオープンします。
すみませんが、詳しい人適切な方法をよろしくお願いします。
420デフォルトの名無しさん:2006/06/02(金) 23:06:34
構成プロパティ
全般
文字セット
マルチバイト文字セットを使用する
421デフォルトの名無しさん:2006/06/02(金) 23:29:58
>>422
プロパティの設定は確認して、マルチバイト文字をセットするに
なっていました。

CString path;
ifstream is(path);
if(!is)
return;

でリターンされてしまいます。
422デフォルトの名無しさん:2006/06/03(土) 00:03:18
初めまして。
基礎的なことですが、Visual C++6.0(MFC)でわからないことがあったので質問させていただきます。

ダイアログボックスの中に簡単な線を描画したいと思っています。
一般的なウィンドウ上であれば、OnDraw関数において例えば
  Cpoint Line[2];
CPen lPen;

Line.x[0] = 0;
Line.y[0] = 0;
Line.x[1] = 100;
Line.y[1] = 0;

lPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
oDC->SelectObject(&lPen);

pDC->PolyLine(Line, 2);
とすれば、長さ100太さ3の直線が引けます。

しかし、ダイアログボックス上において線を引く際に、線は引けるのですが、
lPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0)); 、pDC->SelectObject(&lPen);
のような機能を持った関数(?)が見つからないために、太さ1のペンでしか
描画できずに困っています。(というのも、CDCクラスの使い方がわからない?)
ダイアログボックス上に自由自在に破線を引いたり、太さを変えた線を引きた
いと考えています。

どなたか詳しい方がいらっしゃったら、ご教授ください。
423デフォルトの名無しさん:2006/06/03(土) 00:31:24
Windowsの描画の仕組み(デバイスコンテキスト)を理解しよう。
424デフォルトの名無しさん:2006/06/03(土) 00:53:31
>>422
OnPaintでやってみたが普通に太さ3になったがな?
下のコードはデフォで出来てるCAboutに書いてみたコード

void CAboutDlg::OnPaint()
{
CPaintDC dc(this); // 描画用のデバイス コンテキスト

CPoint Line[2];
CPen lPen;

Line[0].x = 10;
Line[0].y = 90;
Line[1].x = 120;
Line[1].y = 90;

lPen.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
dc.SelectObject(&lPen);

dc.Polyline(Line, 2);
}

> 線は引けるのですが
どうやって引いたの?
425デフォルトの名無しさん:2006/06/03(土) 01:20:32
f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める 
初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力する方法を教えてください。 
426デフォルトの名無しさん:2006/06/03(土) 01:22:34
スレ違い
427デフォルトの名無しさん:2006/06/03(土) 23:39:29
428デフォルトの名無しさん:2006/06/04(日) 17:34:57
↓ここ(ZIPです。解凍したらBMPが出てきます。)
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1981.zip
のスクリーンショットみたいな簡単なプログラムをVC++.NETのMFCアプリケーションで作りたいのですが、
クリックして点を打つコントロールで、どのコントロールをどう使ったらよいのか分からんのです。

あと、
・コントロール上の座標を得る方法
・座標に点を描く
もよく分からんのです。

だれか手取り足取り教えてくれませんか。
よろしこお願いしマソ。
429デフォルトの名無しさん:2006/06/04(日) 18:40:06
>>428
.NETFRAMEWORKとMFCを混ぜて使いたいのか?
ttp://msdn2.microsoft.com/ja-JP/library/0xb61xs7.aspx
を読んでみるといい。

手取り足取りが必要な段階でやりたがるのは無駄だと解るだろう。
MFCだけで逝くか、.NETFRAMEWORKで逝くか決めろ
430デフォルトの名無しさん:2006/06/04(日) 19:21:27
Visual Studio 2003でMFC使ってダイアログ作ってます

ダイアログ内のコントロールの初期化は
OnInitDialog、OnCreate のいずれで行うものなのでしょうか?

ヘルプには下記にように書いてありましたが、使い分けが、いまいちわかりませんでした

OnInitDialog
このメッセージは、Create 関数、CreateIndirect 関数、
または DoModal 関数が呼び出されている間に、ダイアログ ボックスの
表示直前にダイアログ ボックスに対して送られます。

OnCreate
ウィンドウが作成された後で、それが可視状態になる前に、
新しい CWnd オブジェクトはこの呼び出しを受け取ります。
OnCreate は、Create または CreateEx メンバ関数から戻る前に呼び出されます。
431デフォルトの名無しさん:2006/06/04(日) 19:36:21
ダイアログベースならOnInitDialogを使うのが普通
ダイアログ以外はOnInitDialogは使えない。
432デフォルトの名無しさん:2006/06/04(日) 19:43:01
>>428
とりあえずVCのチュートリアルのScribbleでもやっとけ
http://msdn2.microsoft.com/ja-JP/library/92y4h944.aspx
433デフォルトの名無しさん:2006/06/05(月) 01:28:42
>>430
ダイアログ内のコントロールはOnInitDialogでやる。
434デフォルトの名無しさん:2006/06/11(日) 11:23:27
>>406

http://msdn2.microsoft.com/ja-jp/library/ms235629(d=printer).aspx

上記のURLが役に立つのではないでしょうか?
見当違いならばごめんなさいm(_ _)m。
435デフォルトの名無しさん:2006/06/11(日) 12:08:25
sz−−−−−−−−−−−−−−−

Cドライブ検索しても
user32.libが蜜からねぇぇl−−−−−
どこいったんだー!
436デフォルトの名無しさん:2006/06/11(日) 12:15:48
PDKにあったぜぇぇl!!
437デフォルトの名無しさん:2006/06/11(日) 12:27:34
マルチバイトオンリー野郎にUNICODE/マルチバイト兼用コードの書き方を教えて下さい。
_stprintf()を使おうとすると、「warning C4996: '_swprintf' が古い形式として宣言されました。」と怒られます。
要はsprintf()を使いたいのですが、正しくはどうすりゃいいのでしょうか。
VC8EEでtchar.hはインクルードしてあり、プロジェクトの文字セットは取り敢えずUNICODE(デフォルト)にしてあります。

http://www.246.ne.jp/~y-ookubo/program/tips/unicode.html
ここを参考にしたのですが…他に良いとこあったら教えて下さい。
438デフォルトの名無しさん:2006/06/11(日) 12:40:38
その警告は、_stprintf_sを使え、という意味。
439デフォルトの名無しさん:2006/06/11(日) 12:46:16
>>438
直りました、有難うございます。

この辺を解説したリンクってないすかね。
tchar.hを嫁ってのはカンベン
440デフォルトの名無しさん:2006/06/11(日) 13:15:02
>>437
その警告は無視しろ
441デフォルトの名無しさん:2006/06/11(日) 17:12:27
visual studio 2003 で本にある演習の階乗を計算するプログラムを作ろうとしていて
for next文を使うということは分かったんですが、そのあとが全くと言っていいほど分かりません。
どなたかご教授お願いします。
442デフォルトの名無しさん:2006/06/11(日) 17:24:08
宿題スレへ
443デフォルトの名無しさん:2006/06/11(日) 17:32:28
for nextって何?
nの階乗
int f=1;
for(int i=1; i<=n; i++) f *= i ;
444441:2006/06/11(日) 19:28:10
スレ汚し申し訳ありませんでした
宿題スレ行ってきます
445デフォルトの名無しさん:2006/06/11(日) 23:11:16
Visual C++ 2005でプログラムをコンパイルしたとき、LIBC.libが無いって怒られるんだけど...
VC++2005のインストールフォルダを全部検索したけどLIBC.libが入ってない。
もとから入ってないの?
446デフォルトの名無しさん:2006/06/11(日) 23:30:31
>>445
無い。
シングルスレッド用のランタイムは無くなった。
447デフォルトの名無しさん:2006/06/12(月) 15:16:32
VC++ 2005 Express Edition をインストールして、C++ の勉強中です。
新しいプロジェクトで、Windows フォームアプリケーションを選択すると、
Form1 という名前で生成されてしまいます。

この Form1 っていう名前を変えたい場合は、どうすればいいのでしょうか?
Form1 のプロパティ->デザインに、(Name) っていうのが無いので、どう
すればいいのかわかりません。表示される文字列は、表示->Text で変
更できたのですが・・・・。
448デフォルトの名無しさん:2006/06/14(水) 12:28:30
VC++6なんですが
TRUEとtrueはどう違うんでしょうか?
ヘルプ見てみたんですがTRUEに関しては
JavaのTRUEの説明しかなかったです
449デフォルトの名無しさん:2006/06/14(水) 13:41:01
trueはC/C++言語のキーワード
TRUEはWindowsSDKで#defineされているもの
450448:2006/06/14(水) 13:52:42
>>449ありがとうございます

#define TRUE 1;
だったのですね
451デフォルトの名無しさん:2006/06/14(水) 16:43:57
>>449
Cでは(たとえC99でも)trueはキーワードではない。
452デフォルトの名無しさん:2006/06/15(木) 06:43:39
VC++.NET2003でMFC使っています。

チェックボックスの見た目をボタンにし、
ONならONの画像
OFFならOFFの画像をボタンに表示したいのですがうまくいきません。

具体的に以下をやってみました。
@チェックボックスのプロパティにあるPush LikeとBitmapをTrueにする
ASetCheck関数で値をセット(TRUEorFALSE)
BSetBitmapで画像をセット

SetCheckが無視されているようなのですが
何か良い方法をご教示願えませんでしょうか?
453デフォルトの名無しさん:2006/06/15(木) 09:32:42
@チェックボックスのプロパティにあるPush LikeとBitmapをTrueにする
ASetCheck関数で値をセット(TRUEorFALSE)

ここまでやってみたら問題なく動く
454デフォルトの名無しさん:2006/06/15(木) 11:12:35
まさか、画像を一種類しか用意していないって落ちか?
455452:2006/06/16(金) 20:33:11
自己解決しました。

AでTRUEorFALSEをセットせずに
GetCheck()で判定するだけでよかったみたいです。

AでTRUEorFALSEをセットするとGetCheck()は常に0となってしまいます。
456デフォルトの名無しさん:2006/06/24(土) 19:31:38
VC++.NETをはじめたばかりの者ですが、charやint等のように
CString a;
と宣言しても
----------error----------
'a' : 定義されていない識別子です。
'CString' : 定義されていない識別子です。
';' が、識別子 'a' の前に必要です。

とエラーが発生します。
他にSYSTEMTIMEなどもすべて同じようなエラーになるのですが、何か足らないものがあるのでしょうか?
457デフォルトの名無しさん:2006/06/24(土) 20:16:18
>>456
適切なヘッダをincludeしたのか?
458デフォルトの名無しさん:2006/06/24(土) 22:01:38
D&Dしたフォルダのパスをファイルへ書き込み、
2回目以降実行したときにそのファイルからパスを読み込みたいと考えています。
しかし、以下のコードでは「"C:」までしかファイルに記録されません。
自分で調べた限りではfgetsを使えばスペースや予約文字も関係ないとは思うのですが。
どうかご教授お願いします。

void get_pass(char savefile[],char pass[])
{
FILE *file;
if((file = fopen(savefile,"r")) == NULL)
{
fgets (pass, sizeof (pass), stdin);
file = fopen (savefile, "w");
printf ("%s" ,pass);
fprintf (file,"%s" ,pass);
fclose (file);
}
else
{
fgets (pass ,sizeof(pass) ,file);
fclose (file);
}
}

void main()
{
char monopass[256]="",filename[]="logpass.txt";
get_pass(filename,monopass);
}
459デフォルトの名無しさん:2006/06/24(土) 22:09:55
そりゃそうだろうよ。
460デフォルトの名無しさん:2006/06/24(土) 22:58:42
>>458
その場合、sizeof(pass)はsizeof(char*)と等価である。
461デフォルトの名無しさん:2006/06/25(日) 00:05:56
>>460
ありがとうございます。サイズも外部から渡すようにしたら上手くいきました。

パスのスペル間違っていた。恥ずかしいorz
462デフォルトの名無しさん:2006/06/25(日) 10:40:29
VC++.NETで開発している初心者です。
フォームを作成してForm1.hというファイルができあがり、そのファイル中にコードを記述しているのですが、
ネットや、この掲示板、参考書を見るかぎり、やってること(書いてる場所)が全く違う気がして疑問に思っているのですが、
VC++.NETで開発する際、実際にコードを打つファイルはForm1.hではなく、別の.cppファイルを作成して
それをForm1.h側から参照するようにするのが普通なのでしょうか?
463デフォルトの名無しさん:2006/06/25(日) 10:55:11
とりあえず本でも買って読め
464デフォルトの名無しさん:2006/06/25(日) 16:24:12
VC++ Express Editionで、本格的なWindowsプログラミングって
できるのでしょうか?
やはりダイアログやメニューの作成なんかでは、エディタがないと
厳しいですか?
465デフォルトの名無しさん:2006/06/25(日) 17:18:11
最初はやりたいことが出来なくて、もどかしいと思うけど
テンプレで紹介されてるサイトとか見た方が良いよ。
そのうち何の処理を書いてるのか分かってきて
自分でいろいろ弄ったりできるようになるから。
466デフォルトの名無しさん:2006/06/29(木) 00:44:18
リンカの設定が悪いのか、外部DLLを読み込むことができないのですが
VC++.netで設定を変更するにはどこをいじるのでしょうか
467デフォルトの名無しさん:2006/06/29(木) 19:02:05
Visual C++ 2005 Express Editionで
ASIOドライバ対応ソフトを作りたいです。
どうすればいいですか?
468デフォルトの名無しさん:2006/06/29(木) 19:03:46
作れば良い
469デフォルトの名無しさん:2006/06/29(木) 19:14:30
470デフォルトの名無しさん:2006/07/02(日) 01:08:19
http://www.interq.or.jp/black/minami-m/
ここのdirectXのサンプルプログラムをvisual c++ 2005でビルドしてみたのですがコンパイルまではできたのですが、リンクの段階で

dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoCreateInstance@20 が関数 "int __cdecl AdoInit(void)" (?AdoInit@@YAHXZ) で参照されました。
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoInitialize@4 が関数 "int __cdecl AdoInit(void)" (?AdoInit@@YAHXZ) で参照されました。
dx_audio.obj : error LNK2019: 未解決の外部シンボル __imp__CoUninitialize@0 が関数 "void __cdecl AdoRelease(void)" (?AdoRelease@@YAXXZ) で参照されました。
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__ShowCursor@4 が関数 _WinMain@16 で参照されました。
win_main.obj : error LNK2019: 未解決の外部シンボル __imp__FindWindowA@8 が関数 _WinMain@16 で参照されました。

というようなエラーが大量にでてきました。解決方法わかりますでしょうか。
スレ違いでしたらごめんなさい。
471デフォルトの名無しさん:2006/07/02(日) 03:44:51
OLE32.DLL でもリンクしてみるとか
472デフォルトの名無しさん:2006/07/02(日) 09:13:17
マルチんこ
473デフォルトの名無しさん:2006/07/03(月) 12:00:56
Microsoft Visual C++ 2005
SDKでMDIアプリケーションを作っているんですが、
ウィンドウサイズの変更時の画面のちらつきをなくすために
CS_VREDRAW | CSHREDRAWをけずってみたのですが、
ドキュメントウィンドウを最大化しているとちらついてしまいます。
解決策はありますでしょうか。
474デフォルトの名無しさん:2006/07/03(月) 12:13:26
Windowsの描画の仕組みを理解して、ちらつかないよう工夫する。
475473:2006/07/03(月) 12:55:23
ですよね
476デフォルトの名無しさん:2006/07/03(月) 23:18:00
{
   CDC myDC;
   CFont myFont, *oldFont;

   myFont.DeleteObject();   ・・・@
   myDC.DeleteDC();     ・・・A
}
の@、Aって必要なんですか?
CDCやCFontのデストラクタでDelete〜を内部で呼び出したりしてないんですかね・・・
物の本には、お約束の様に@Aが書かれていて、まあ、書いてるんですがね
myFont.DeleteObject();
myFont.CreateFont();
みたいな使い方したいときに、DeleteObjectとかあるのかな・・・と勝手に解釈してたんですが、
実際どうなんでしょう?
477デフォルトの名無しさん:2006/07/03(月) 23:24:47
今まで学校でVisual Studio6.0を使っていたのですが、6.0で作っていたプログラムを引き続き2005で使うことは出来るのでしょうか?
478デフォルトの名無しさん:2006/07/03(月) 23:29:45
>>477
マルチかよ
479デフォルトの名無しさん:2006/07/03(月) 23:42:28
>>476
ソース見ればいいじゃん
480デフォルトの名無しさん:2006/07/05(水) 18:49:12
VC+6で一定時間で指定動作を繰り返す常駐プログラムを作っています。
動作の種類が増えてもタイマーを増やしたくないので、何とか自分で
累積経過時間を監視して都度必要な動作を起動したいのですが、
システムフックを使っても自分に関係のあるメッセージが飛んでこないと
何も出来ないので困っています。
タイマーを使わずに実現する良い方法は無いでしょうか?
481デフォルトの名無しさん:2006/07/05(水) 19:33:15
>>480
仮に個別の動作は1秒単位で指定できればいいとする。
1秒のタイマーを設定し1秒に一回、個別の動作予定時刻かどうか
判定するようにすればタイマーは一個あれば充分と言うことになる。
頭は生きているうちに使おう。
482デフォルトの名無しさん:2006/07/05(水) 20:18:09
>>481
ありがとうございます。
実はそれも考えてはみました。
しかし当初は1秒単位〜100ミリ秒単位でいいのですが、
将来的には複数の動作を10ミリ秒単位で制御したいので
タイマー無しでOSのメインループから毎回呼び出して
貰うような方法がないかと探しております。
483デフォルトの名無しさん:2006/07/05(水) 20:27:39
予定時刻でソートして、最も近い時刻までSleepやWaitFor〜
処理が終わったら次の時刻まで〜。
ってやるとか。
484デフォルトの名無しさん:2006/07/05(水) 20:50:50
学校のが6.0で家にあるのが.net 2003なんですが、学校でやった続きを家でやることは出来ますか?
これから卒研ではじめる予定です。
485デフォルトの名無しさん:2006/07/05(水) 21:08:44
WaitableTimerをつくってWaitForするのはどうか
486デフォルトの名無しさん:2006/07/05(水) 21:36:10
>>484
指導教官に聞けよ。
487デフォルトの名無しさん:2006/07/05(水) 21:37:53
>>483
sleepだとCPU握ったままになるんじゃないかと心配なのですが
そのへんどうなのでしょうか?
MSDNでは「モニターの所有権を失いません」という表現になっていて
どうもよく判りません。

と思っていたら、>>485さんのWaitableTimerで検索してみたら精度が
100ns単位という情報がありました。これなら十分使えそうです。
という事は、普通にタイマー使ってもそれほど負担にはならないと
いう事でしょうか。
>>481さんの方法で問題ないのかも。
いろいろ試してみます。ありがとうございました。

488デフォルトの名無しさん:2006/07/05(水) 21:40:42
>>484
VC6のプロジェクトを.net2003にするのは多少違いはあるけど大体問題なく動きます。
(一部の標準コントロールでプロパティやメソッドが違ったりしますが)
逆は動かない場合もあります。(.Net Frameworkの機能を使ったりするとダメ)
試すだけなら簡単なので一度やってみると良いですよ。
(*.dswから起動すれば自動でソリューションにしてくれる)
489デフォルトの名無しさん:2006/07/05(水) 21:48:11
490Timerの質問:2006/07/06(木) 19:06:22
VS2005でVC++を使っています.

一定時間ごとに画面(グラフを書いています)を書き直すプログラムを
作成中です.

あるダイアログのOnCreateでTimerをセットしました. 
if( ( id = SetTimer(1, 100, NULL)) != 0 ) {
// timer起動できたとのコメント表示 -> 表示できることを確認済み
}

ところがOnTimer()が呼び出されません.
OnTimer()の冒頭に,
CString ss = "hoge";
this->SetWindowTextA(ss);
と書いても,なにも表示されませんので,呼ばれていないのは確かだと思います.

何が考えられるでしょうか?
Timerをセットした以降,do-loopなど,windowsからのメッセージを
読まないような処理は入れていません



491デフォルトの名無しさん:2006/07/06(木) 19:48:32
OnTimerイベントハンドラは、クラスビューから「Windowsメッセージハンドラの追加」で追加した?
それくらいしか思いつかないな。
492デフォルトの名無しさん:2006/07/06(木) 19:55:02
>>489
ありがとうございます。
(・・・実はWin98も視野に入れてました)
でも各スレッドに数10ms単位で実行権を渡してるということは
10ms単位での制御は無理なんですね。
やっぱりWindowsは制御には向いてないか。
493デフォルトの名無しさん:2006/07/07(金) 00:40:53
>>492
制御っていうか、リアルタイムOSじゃないんだから、そういうときは別のOSを使うべし。
PocketPCなんかは、実行権をがっちり握れるからリアルタイムOSに近いことが出来るはずだよ。
Windowsっていったって、ファミリーはピンキリなんだから、簡単に向いていないとか言うべからず。
494デフォルトの名無しさん:2006/07/07(金) 01:29:22
ノーマルのCをVisial C++でコンパイルしたいのですがやり方がわかりません。
コマンドプロンプトから起動する簡単な物でいいのですが
Visial C++のコンパイラはC++専用ですか?

なぜかヘルプがまともに起動しないのでググったのですが分かりません。
どこを参照すれば良いでしょうか?
495デフォルトの名無しさん:2006/07/07(金) 02:59:18
VC++.Net2003でMFCアプリを作っています。
vectorを使っているところでコンパイルエラーとなってしまいました。
問題を単純化するためにConsoleアプリで試したところ再現しましたので、皆様に問題の解決法を教授賜りたくお願いいたします。
●ソース
#include "stdafx.h"
#include <vector>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
  vector<char> i;   //OK
  vector<char> j(10); //OK

  return 0;
}

class hoge
{
private:
  vector<char> ii;   //OK
  vector<char> jj(10); //←この行がエラーとなります。
};

●表示されるエラーメッセージ
k:\... ...l\Console.cpp(20) : error C2059: 構文エラー : '定数'

何か根本的なところで間違っている予感もするのですが、お指摘お願いいたします。
496デフォルトの名無しさん:2006/07/07(金) 03:24:02
hoge():jj(10){}
497デフォルトの名無しさん:2006/07/07(金) 03:32:10
>>496 早速のレスありがとうございます。
hoge():jj(10){} とのアドバイスですが、このアドバイスは私にとってはレベルが高いようです。お時間を割いて頂いて大変申し訳ないのですが、もう少し分かりやすくご教授お願いいたします。
498≠496:2006/07/07(金) 04:35:05
>>495
class内の変数を初期化する構文はないので、問題の行は変数の宣言ではなく関数の宣言と見なすことになる。
そう解釈した場合、パラメータリストに定数は置けないのでエラーとなってしまう。
#従って、>496はjjをコンストラクタで初期化せよという指摘。
499490:2006/07/07(金) 07:15:55
>491 めっせーじハンドらの追加でやっています。
なんでなんだろう。。。
500デフォルトの名無しさん:2006/07/07(金) 07:47:26
そのウインドウをSpyしたら、WM_TIMER来てる?
501490:2006/07/07(金) 08:18:47
spyってなんだろう。。。 調べてやってみます
502490:2006/07/07(金) 12:13:30
付属ソフトのspy++で見てみましたが、メッセージは無いみたいでした。
よく分からないので、ゼロから作り直しました。関数や変数はVC++の
機能を使って改めて作り、関数の中身はもとのプログラムをそのままコピペ
しました。つまり、中身は同じはずですが、どういう訳か今度は思い通りに
動きました...結局どこが悪かったのが分からないままです...
503デフォルトの名無しさん:2006/07/07(金) 14:02:33
コードのDiff取ればわかる。
原因を放置すれば又、ハマる。
504デフォルトの名無しさん:2006/07/07(金) 23:00:57
>>496,498
おかげさまで直りました。スペシャルdクス
505デフォルトの名無しさん:2006/07/08(土) 23:16:00
ATL+WTLでプログラミングしてます。
HTTP通信まわりを処理するのって、
どのへんのクラスライブラリを使うのが一般的でしょうか?
506デフォルトの名無しさん:2006/07/09(日) 15:19:50
ダイアログに表示するアイコンをLoadIcon()→SetIcon()で自分で設定しました。
このときに、ダイアログの中のチェックボックスのチェックあり/なしで
アイコンに別のアイコンをオーバーレイしたいのですがうまくいきません。

オーバーレイ関係を調べるとCImageListがあるようなんですが、これでオーバーレイイメージに設定しても
オーバーレイではなくアイコンが完全に変わってしまいます。
さらに戻すことができません。

どうするのがよいのでしょうか。
507デフォルトの名無しさん:2006/07/10(月) 04:52:32
延長キタ━━━━━━(゚∀゚)━━━━━━!
508デフォルトの名無しさん:2006/07/10(月) 06:28:55
延長30分で10万円になります
509デフォルトの名無しさん:2006/07/10(月) 15:12:59
タケーよ
510デフォルトの名無しさん:2006/07/10(月) 22:19:18
typedef なんですけど、
typedef [既存型名][型の別名]
と調べたらありました。この場合、

typedef enum{
AAA,BBB
}CCC;

ってどういう意味なんでしょうか?enumは整数列挙型だから、
「整数列挙型をCCCと別名をつけて、さらにAAA、BBBというenum型の変数を
宣言する」ってことでしょうか?

ご教授お願いしますm(_ _)m
511デフォルトの名無しさん:2006/07/10(月) 22:46:37
enum CCC { AAA, BBB };
と同じ意味。
512デフォルトの名無しさん:2006/07/10(月) 22:47:10
>>510
enum {
  AAA, BBB
}
これで、1つの型が表されている。(無名の列挙型)
それをtypedefしてCCCと名付けている。
AAAとBBBは列挙定数。

言い換えればこういうこと。
enum xxx {
  AAA, BBB
};
typedef xxx CCC;
513デフォルトの名無しさん:2006/07/10(月) 23:09:48
511,512さん
即レスありがとうございます。
良く分かりました。
宣言ひとつでも、いろいろな書き方があって難しいですね。
分かりやすいレスで感謝です。
514デフォルトの名無しさん:2006/07/10(月) 23:18:44
いろいろ書けるのがCの強みだからな。

スタイル論争も烈しいが…
515デフォルトの名無しさん:2006/07/10(月) 23:20:59
VCに関係ない質問だと回答があるのは初心者が多いからか
516デフォルトの名無しさん:2006/07/10(月) 23:26:28
C初心者が教えるスレ
517デフォルトの名無しさん:2006/07/11(火) 10:09:16
waveformatについて説明しているサイト知りませんか?
518デフォルトの名無しさん:2006/07/11(火) 10:12:30
MSDN
519デフォルトの名無しさん:2006/07/12(水) 00:45:59
教えて下さい。

class AAA{
public:
void PPP();
}

class BBB : public AAA{

}

と定義したあとで、オブジェクトを作成。

class XXX = new BBB();

この時

XXX->PPP();

というような記述は可能なんでしょうか?可能だとしたら、
クラスBBBを宣言する際に、クラスAAAも取り込んでいるというような
感じなのでしょうか。
520デフォルトの名無しさん:2006/07/12(水) 00:50:25
すみません。
class XXX = new BBB();
ではなくて、
BBB* XXX = new BBB();
でした。

宜しくお願いします
521デフォルトの名無しさん:2006/07/12(水) 00:55:51
>>519-520
Visual C++の質問っぽくないけど
「取り込んでいる」だとオブジェクトコンポジションっぽいけど
これは「派生」ってやつなので、ちとちがう感じ。
もしかして、コンパイラがどう翻訳しているか聞いている?
522デフォルトの名無しさん:2006/07/12(水) 15:46:57
質問です。

ファイルからビットマップを表示させるプログラムを作っています。
LoadImage で HBITMAP を作ってAttachして表示、はできたのですが、
スクロールバーで詰まっています。

スクロールバーを表示/非表示をビットマップの大きさに合わせるにはどうすれば良いでしょうか。
お願いします。
523デフォルトの名無しさん:2006/07/12(水) 16:21:45
524デフォルトの名無しさん:2006/07/12(水) 17:03:28
表示/非表示ということは
必要ない時はスクロールバーを出さないようにしたいんだろうか?
スクロール自体はできているということだな
525デフォルトの名無しさん:2006/07/12(水) 17:05:29
ドトネトは対象外ですね?
526デフォルトの名無しさん:2006/07/12(水) 17:11:11
VC++でドトネトは初心者向きじゃない。
527デフォルトの名無しさん:2006/07/12(水) 18:26:08
VC++はポトペタできないの?
528デフォルトの名無しさん:2006/07/12(水) 18:45:28
馬鹿がVCやってもしょうがないと思うんだが
529デフォルトの名無しさん:2006/07/12(水) 20:49:15
じゃあお前もやるなよ
530デフォルトの名無しさん:2006/07/12(水) 22:22:05
環境:VC++.net
テンプレ:CLR - Windowsフォームアプリケーション


質問させてください。
CSVファイルから取り込んだデータを
CheckedListBoxの項目にしようと考えているのですが

string str = test;
checkedListBox->Items->Add( str, false );

error C2664: 1 番目の引数を 'std::string' から 'System::Object ^' に変換できません。

とエラーが出てしまいます。
String^ str = "test"; ならばエラーは出ませんが変数文字列を項目として設定できません。
String^ や Object^ の 「^」 の意味がわからず手詰まりとなってしまいました。
どうやったら変数文字列をCheckedListBoxに追加できるのでしょうか?
531デフォルトの名無しさん:2006/07/12(水) 23:03:03
>>530
^はマネージ型における*だと思えば(とりあえずはそれで)いい。

その場合は、std::stringをSystem::Stringに変換する必要がある。
と言っても単にcheckedListBox->Items->Add(gcnew System::String(str.c_str()), false);としたらどうか。
http://msdn2.microsoft.com/ja-JP/library/ms235631.aspx
532デフォルトの名無しさん:2006/07/12(水) 23:13:54
VC++でドトネトは初心者向きじゃない。
533530:2006/07/12(水) 23:45:14
>>531
なるほど。^に合わせるにはnew演算子系が必要だったんですね。
無事目的を達成できました。
ありがとうございました。
534デフォルトの名無しさん:2006/07/13(木) 14:03:36
新規作成でWin32dllで作ってしまったのですが、(そうせざるを得ないのですが)
その場合でもMFCライブラリって使えますか?

<afxwin.h>をincludeすると
「dllMainは既に定義されています」なんて出るし、
Officialにあった解決方法を参考にリンク順序を変えても
エラーは消えないですし。
dllでMFCを使うための手順があれば教えていただけないでしょうか。
環境はVC6エンタープライズです。
535デフォルトの名無しさん:2006/07/13(木) 15:20:04
MFC(dll)
536534:2006/07/13(木) 15:34:42
>>535
配布されているテンプレートがWin32dllなので
今から変えるわけにはいきません・・・。
MFC(dll)に変更するしか方法はないでしょうか?
537デフォルトの名無しさん:2006/07/13(木) 16:01:02
MFC(dll)で作ったやつを参考に変更する
538デフォルトの名無しさん:2006/07/13(木) 21:14:47
以下をビルドすると
「error LNK2019;未解決の外部シンボ"public;_thiscall CAAA::(void)"(??0CAAA@@QAE@XZ)が関数_WinMain@16で参照されました。」
と怒られてしまいます。
やりたいことは、AAAというクラスを作って、オブジェクトを作成して、オブジェクトのメソッド(メッセージボックス)を実行することです。

何が悪いかと、いろいろ調べて見たのですが分かりません。
アドバイスお願いします。


#include<windows.h>
#include <string>

class CAAA {
private:
public:
CAAA();
~CAAA();
void MsgBox();
};

void CAAA::MsgBox(){
MessageBox(NULL , TEXT("ここでテキストを表示") ,
TEXT("メッセージボックス") , MB_OK);
};

INT WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, INT){
CAAA* XXX=new CAAA();
XXX->MsgBox();
return 0;
};
539デフォルトの名無しさん:2006/07/13(木) 21:21:44
【IT】Microsoft、「Virtual PC 2004」の無償提供を開始
http://news19.2ch.net/test/read.cgi/newsplus/1152788480/
540デフォルトの名無しさん:2006/07/13(木) 21:24:04
>>538
コンストラクタ、デストラクタの定義がないよ。
541デフォルトの名無しさん:2006/07/13(木) 21:39:52
>540さん
即レスありがとうございます。
無事、ビルドが通りました。
542デフォルトの名無しさん:2006/07/13(木) 22:15:43
もう一度質問させて下さい。519です。
オブジェクトXXXはCBBBというクラスのオブジェクトですが、
CAAAの処理MsgBox()が使えます。

class CBBB : public CAAA {

みたいな書き方をすると、クラスAAAの機能を含んだ、
新たなクラス(ここではBBB)を定義することが出来る・・・
ってことで間違っていませんか?
そして、このことが、521さんが言ってる「派生」ってことでしょうか?

クラスAAAのオブジェクトを作らずに、クラスAAAの機能を使えるって
言うのは、なんか不思議な感じがしますね^^>
543デフォルトの名無しさん:2006/07/13(木) 22:16:49
ちょっと失礼します・・

当方VC++2005のプログラマ見習い(の見習い)です。
WM_ACTIVATEを使ってウィンドウのアクティブ/非アクティブを判断させようと思ったんですが、
WM_ACTIVATEの中にウィンドウがアクティブかどうかのフラグ処理を書くとWM_PAINTを読み取ってくれません。
どなたかいい方法を教えていただけないでしょうか・・
544デフォルトの名無しさん:2006/07/13(木) 22:18:23
以下、ソースです。
#include<windows.h>
#include <string>
class CAAA {
private:
public:
CAAA();
~CAAA();
void MsgBox();
};
class CBBB : public CAAA {
private:
public:
CBBB();
~CBBB();
};
CAAA::CAAA() {};
CAAA::~CAAA() {};
CBBB::CBBB() {};
CBBB::~CBBB() {};
void CAAA::MsgBox(){
MessageBox(NULL , TEXT("ここでテキストを表示") ,
TEXT("メッセージボックス") , MB_OK);
};
INT WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, INT){
CBBB* XXX=new CBBB();
XXX->MsgBox();
return 0;
};
545デフォルトの名無しさん:2006/07/13(木) 22:18:40
>>542
悪いこといわないから、オブジェクト指向の入門書読め。
『憂鬱なプログラマのためのオブジェクト指向開発講座』とか。
546デフォルトの名無しさん:2006/07/14(金) 03:01:31
>>543
自分のコードが間違ってるはず。
というわけで問題点を見つけ出して修正するべし。

ブレークポイントや、OutputDebugString など使うと便利かも。
547デフォルトの名無しさん:2006/07/14(金) 11:41:06
SDKでAfx.hをincludeしたところ
WINDOWS.H already includeと警告が出ます。
自分で作ったプログラム中ではWINDOWS.Hはincludeしてないし、
Afx.hも1度しかincludeしていません。
試しにMFC\include配下でwindows.hをincludeしていたところも
全てコメントアウトしましたがエラーは消えません。
windows.hをincludeしてるのはどこなのでしょうか?
548デフォルトの名無しさん:2006/07/14(金) 12:07:14
あてずっぽうでコメントアウトしまくったんだ。
すごいね
549デフォルトの名無しさん:2006/07/14(金) 18:51:48
Visual C++ 2005 MFCダイアログベースを使っています。
CEditのエディットボックスから入力された文字列String型を読み取り、
int型へ変換するのに

CString moji;
int suuzi;
edit.GetWindowTextW(moji);
swscanf(moji,_T("%d"),&suuzi);

と打ったのですが、
warning C4996: 'swscanf' が古い形式として宣言されました。
'swscanf' の宣言を確認してください。
と警告が出ました。
修正点のご指摘お願いします。
550デフォルトの名無しさん:2006/07/14(金) 18:56:15
CString使うなら普通CStringのメンバ関数使う
551550:2006/07/14(金) 18:59:53
フォーマットと勘違いした
552デフォルトの名無しさん:2006/07/14(金) 19:11:10
コンパイラに言われた通りパラメータ確認すりゃいいだろう
553デフォルトの名無しさん:2006/07/14(金) 19:31:48
CString moji;
int a = atoi(moji);
double b = atof(moji);
554デフォルトの名無しさん:2006/07/14(金) 20:49:04
int suuzi = boost::lexical_cast<int>(moji);
555デフォルトの名無しさん:2006/07/14(金) 23:54:35
swscanf_s
556デフォルトの名無しさん:2006/07/15(土) 12:55:28
printf(""neko"");
のようにprintfで「"」や「%s」等を表示したい場合は
どうすればいいか教えていただけないでしょうか?
557デフォルトの名無しさん:2006/07/15(土) 13:01:33
\" %%
558デフォルトの名無しさん:2006/07/15(土) 13:02:40
スレ違い
559556:2006/07/15(土) 13:04:41
>>557
ありがとうごぜいます
560デフォルトの名無しさん:2006/07/15(土) 13:05:19
printfについてVCスレで質問する馬鹿、答える馬鹿
561556:2006/07/15(土) 13:18:04
>>557
答えていただいたのに不快な思いをさせて申し訳ないです。
ごめんなさい。

スレ住民のみなさんすいませんでした。
562デフォルトの名無しさん:2006/07/15(土) 13:33:37
VC6のメニュー→ビルドにある項目の意味を教えてください

[ビルド]はプロジェクト中のソースファイル、ヘッダファイルを
コンパイルすることですよね?

[リビルド]は変更のあったものだけを再コンパイルするんですよね?

じゃあ[コンパイル]はなんでしょうか?
現在アクティブなソースファイルのみをコンパイルする?
563デフォルトの名無しさん:2006/07/15(土) 13:40:00
コンパイルだけじゃ実行ファイルは作成できない。
564デフォルトの名無しさん:2006/07/15(土) 14:08:46
[ビルド]×
[リビルド]×
0点
565562:2006/07/15(土) 14:34:06
[コンパイル]は合ってるの?

訂正です

[ビルド]プロジェクト中の.cpp、.hファイルをコンパイルして
リンクする

[リビルド]変更のあったファイルだけをコンパイルしてリンクする

566デフォルトの名無しさん:2006/07/15(土) 14:36:38
.hは単体でコンパイルされないよ。
567デフォルトの名無しさん:2006/07/15(土) 14:38:04
>>565
またしてもビルドとリビルド間違い。
568565:2006/07/15(土) 14:54:10
え〜〜

わかんないよ

[ビルド].cppファイルをコンパイルする。
そのあと、.hによって依存関係を解決してリンクする

[リビルド]変更のあった.cppファイルをコンパイルして
リンクする
.hはコンパイルされない
569デフォルトの名無しさん:2006/07/15(土) 14:56:30
>>568
またしてもビルドとリビルド間違い。
570デフォルトの名無しさん:2006/07/15(土) 15:06:03
無能な解答してんじゃねーよ。黙っとけ。

>>565
およそこんなかんじ。

[ビルド] 変更のあったファイルに関連するものをコンパイルしリンクする。
foo.cppがfoo.hをインクルードしているときにfoo.hを変更すると、foo.cppも
コンパイルされる。

[リビルド] 変更のあるなしにかかわらず、全てを一からコンパイルしリンクする。
571565:2006/07/15(土) 15:13:02
くっそー

[ビルド]プロジェクト中の.hファイルを参照して.cppファイルをコンパイルする
コンパイルしてできた.objファイルをリンクして.exeファイルを生成する

[リビルド]通常ビルドは変更のあった.cppファイルのみを、依存する.hファイルを
参照してコンパイルし直して.objファイルを作り、再度リンクして.exeファイルを
生成するが、リビルドは.cppファイルの変更に関係なく、全てを再ビルドする
572565:2006/07/15(土) 15:14:27
>>570
ありがとうございます
ようやっと理解できました
573デフォルトの名無しさん:2006/07/15(土) 15:19:50
>>570
残念。リビルドは「クリーン時に削除する拡張子」にしたがって
中間ディレクトリからファイルを削除し、ビルドを開始すること。
574デフォルトの名無しさん:2006/07/15(土) 15:23:49
>>573
お前という人間が残念だよ
575デフォルトの名無しさん:2006/07/15(土) 18:21:55
確かに573は小便くさいw
576デフォルトの名無しさん:2006/07/16(日) 15:57:14
質問させていただきます。

ネットゲームでのツール(オートログイン、経験値時給表示、キャラ自動操作等)
を作成してみたいと考え、C/C++の開発を行おうとおもっています。

そこで、c/c++の統合開発環境として
Visual C++ Express Edition を勧めていただき、これから構築しようと
思っているのですが、「ゲーム作成ができない」という表現が、
VCEEについてありました。ゲーム作成とネットゲームのツール作成は
確かに異なりますが、私のやりたいことはVCEEにて可能なのでしょうか。
577デフォルトの名無しさん:2006/07/16(日) 16:28:54
「ゲーム作成ができない」です
578デフォルトの名無しさん:2006/07/16(日) 16:35:23
不可能
579デフォルトの名無しさん:2006/07/16(日) 16:43:51
できないです
580デフォルトの名無しさん:2006/07/16(日) 17:03:42
>>576
「ゲーム作成ができない」とは一体どこの誰の発言だ?
少なくともMicrosoftは、VCEEでどんなアプリケーションを作るかなどといったことについて、
法的にも技術的にも制限を設けていない。
581デフォルトの名無しさん:2006/07/16(日) 17:29:56
スルーでお願いします
582デフォルトの名無しさん:2006/07/17(月) 07:49:58
> オートログイン、経験値時給表示、キャラ自動操作等
やりたいことが糞杉だからな
583デフォルトの名無しさん:2006/07/17(月) 10:09:46
win2000,VC6でコンソールで制御コードを使いたいのですが
以下のようにやってもうまくいきません

#include <cstdio>

int main(void)
{
putchar(0x1b);
printf("[7;31m");
printf("あああ");
}

あああが赤色で反転表示されるのを期待したのですが
Enterキーの下部分に印字されている左矢印のような
文字が表示されて、そのあとに「[7;31mあああ]と表示されます

どこがまずいでしょうか?
584デフォルトの名無しさん:2006/07/17(月) 10:15:41
>>583
NT系のWindowsでは、DOSプログラムしかエスケープシーケンスを使えない。
だから、DOS用のコンパイラを使うか、Windows APIでどうにかするかのどちらかを選べ。
585デフォルトの名無しさん:2006/07/17(月) 10:17:00
VC6でコンパイラオプションを設定するには
どこをいじればよいでしょうか?
586デフォルトの名無しさん:2006/07/17(月) 10:59:27
そんなに見つけにくいかな?
探さずに聞いてないか?
587585:2006/07/17(月) 13:31:03
>>586
プロジェクトオプションという項目がそうですか?
588デフォルトの名無しさん:2006/07/17(月) 14:20:16
つーかヘルプ読めよ
589585:2006/07/17(月) 14:24:48
めんどくせーだろ
590585:2006/07/17(月) 14:27:19
氏ねクズ共。
591585:2006/07/17(月) 14:28:46
>>589>>590は自分ではありません。
ほんとーに困っているんです。教えてください。
592デフォルトの名無しさん:2006/07/17(月) 14:31:12
ヘルプ読めよ
593585:2006/07/17(月) 14:41:46
ヘルプって、MSDNとか言う奴ですか?よんだけど判りません。
594デフォルトの名無しさん:2006/07/17(月) 14:50:26
あれ読んでもわからない奴に、教える自信は俺には無い。
595デフォルトの名無しさん:2006/07/17(月) 16:28:57
本当に困ってるなら
コンソールからオプション指定してコンパイル、
makeファイル書く、
プロジェクトファイルをいじる
とかいくらでも方法あるだろ
それすらできないやつがコンパイルオプションいじってもしょうがない。
596585:2006/07/17(月) 17:27:25
(◕∀◕)
597デフォルトの名無しさん:2006/07/18(火) 18:53:32
パソコンの電源を切るにはどのライブラリ使えばいいですか?
教えてください。
598デフォルトの名無しさん:2006/07/18(火) 18:54:14
>>597
Windows API
599デフォルトの名無しさん:2006/07/18(火) 18:56:41
>598
もう少し詳しくお願いします。
まだVisual C++を買っていないので・・・
今使っている言語からは切れなさそうなので、
そこからプログラムをコールしようかと思うんですが・・・
ライブラリ名とメソッド名または関数名か何か教えていただければ。
600デフォルトの名無しさん:2006/07/18(火) 19:01:27
>>599
ExitWindowsEx
あとはMSDN見ろ。
601デフォルトの名無しさん:2006/07/18(火) 19:04:41
>598
>600
すません。ありがとうございました。
なかなか引っかからなかったので申し訳ないです。
これで何とかできそうです。
602デフォルトの名無しさん:2006/07/18(火) 19:07:12
>>601
電源切るだけなら自分でプログラムを作るまでもないな、そういうツールを作っている香具師が必ずいるはずだ。
#作るにしても、VCである必要は全くないし。
603デフォルトの名無しさん:2006/07/18(火) 19:18:28
>602
dクス。電源切るプログラムは一応見つけてはいたんですが・・・
商用利用できるかどうか微妙だったのでとりあえず自分で書きます。
604デフォルトの名無しさん:2006/07/18(火) 19:30:16
うはぁ、商用利用なのか。ある意味剛毅だな。
605デフォルトの名無しさん:2006/07/18(火) 22:18:22
電源切るアプリを売るつもりかね
606デフォルトの名無しさん:2006/07/18(火) 22:21:57
何かの処理が終わったら電源をオフするようなオプションを
付けたいんだろ。何か不思議なことでもあるんかいな。
607デフォルトの名無しさん:2006/07/18(火) 22:22:57
>まだVisual C++を買っていないので・・・
608デフォルトの名無しさん:2006/07/19(水) 00:19:05
>急にボールが来たので…
609デフォルトの名無しさん:2006/07/20(木) 13:17:13
Visual Studio 2003.netの時は普通にコンパイルできたプログラムが、
Visual C++ 2005 Express Edition にしたらコンパイル時に
windows.hが見つからないといったコンパイルエラーが出るのですが、
EEではwindows.hをサポートしていないのですか?
それと、この問題をEEで解決するにはどうしたらいいですか?教えてください
610デフォルトの名無しさん:2006/07/20(木) 13:30:43
>>609
書き飽きたが、Platform SDKを入れろ
611デフォルトの名無しさん:2006/07/20(木) 15:21:19
>>610
ご助言ありがとうございました
612デフォルトの名無しさん:2006/07/21(金) 08:45:05
>>553-555
それぞれのメリット・デメリットを教えてくださいっ
613デフォルトの名無しさん:2006/07/21(金) 09:05:45
MFCだったらDDX
614デフォルトの名無しさん:2006/07/21(金) 09:47:21
>>612
それぞれの仕様調べて自分なりの見解示してみろ。
人に聞いてるだけじゃ進歩ねーぞ。
615デフォルトの名無しさん:2006/07/21(金) 10:35:33
そのへんの基礎的なことが全然できなくてMFC使ってることに驚き
616デフォルトの名無しさん:2006/07/21(金) 11:05:18
MFCは初心者にも優しくウィンドウブのプログラミングができるってママが言ってた
617デフォルトの名無しさん:2006/07/22(土) 01:01:12
MFCのバージョンリソースのバージョン情報は4桁もあるけど普通みんなどこ変えるの?
1.01にしたときは1.0.1.1にしてる?最後の4桁目いらなくない?
618デフォルトの名無しさん:2006/07/22(土) 03:06:49
major minor build revision
619デフォルトの名無しさん:2006/07/22(土) 11:22:08
あまり基本的なことで恐縮ですが、教えて下さいm(_ _)m
main.cpp main.h sub.cpp sub.h の4つのファイルがあったとして、
main.cppはmain.hを、sub.cppはsub.hをそれぞれインクルードしてます。
この状態で、
main.cppでsub.hをインクルードします。
この時、
sub.cppで記述した関数等(ヘッダーで定義した関数の実部?)が使えるんですが、どうもシックリきません。
main.cppから見ると、sub.cppはインクルードしている訳ではないのに、
sub.cppの内容が見えているってことなのでしょうか?

初心者考えでは、
main.cppでsub.cppをインクルードする。すると、
そのsub.cppは、sub.hをインクルードしているので、main.cppからsub.hは
見えている。
と言う風に考えてしまうのですが・・・

どういう理屈なのかご教授お願いしますm(_ _)m
620デフォルトの名無しさん:2006/07/22(土) 11:25:57
>>619
郵便局の中身を知らなくても、ポストがあれば手紙を届けることができる。相手からも手紙が返って来る。
関数の実態をしらなくとも、ヘッダにあるプロトタイプ宣言があれば、関数を呼び出すことが出来る。戻り値を受け取ることもできる。
621デフォルトの名無しさん:2006/07/22(土) 11:29:14
すみません。
書いた傍から、思ったんですが、
main.cpp に[include main.h]と書くことは、

main.cppにmain.hを含める・・・ではなくて
main.hにmain.cppを含める

という理屈なのでしょうか?
これですと、理解できるのですが・・・

622デフォルトの名無しさん:2006/07/22(土) 11:34:20
includeはその場所に、ファイルの中身が展開されるだけ。
623デフォルトの名無しさん:2006/07/22(土) 12:20:16
コンパイラは関数の型が分かれば呼び出しコードを生成できる。
別モジュールにある関数を繋げるのがリンカの仕事。
624デフォルトの名無しさん:2006/07/22(土) 16:08:10
PeekMessageを使うとCPU使用率が常に100%になるんですが、
これをどうにかする方法ってないんでしょうか?
Sleep(10)やGetMessageに変える以外の方法が検索しても出てこないので、
もしわかる方がいらっしゃればよろしくお願いします.
625デフォルトの名無しさん:2006/07/22(土) 18:22:39
なんで、Sleep(10)やGetMessageじゃだめなのか?
626デフォルトの名無しさん:2006/07/22(土) 19:35:17
64bit版のtime_t型変数同士で減算した結果が負かどうか調べたいのですが、
普通に0と比較すると必ず負であるという判定になってしまいます。
0をtime_tでキャストしてもダメで、(long)でキャストしたlong型の
変数に代入すれば正常に負の判定が出来ます。
減算前の変数同士でいちいち大小比較するという方法以外で、
キャストもせずに正攻法で判定する方法はないでしょうか?
627デフォルトの名無しさん:2006/07/22(土) 19:58:33
>>626
つ[difftime()]
628デフォルトの名無しさん:2006/07/22(土) 20:24:14
>>627
ありがとうございます。
しかし減算結果を保持する変数の型もtime_tで、なるべく修正個所を
少なくしたいと考えております。
64bitの開発環境はまだ整備されてないのでしょうか・・・
629デフォルトの名無しさん:2006/07/23(日) 00:02:37
time_t同志の差の型は、time_tじゃないと思うぞ。
630デフォルトの名無しさん:2006/07/23(日) 09:16:47
time_t ってただの秒数だと思ったけど
数値の演算や比較ができないってどんな間抜け?
631デフォルトの名無しさん:2006/07/23(日) 10:11:11
>>630
それが32ビットか64ビットかって話だろ。
632デフォルトの名無しさん:2006/07/23(日) 10:22:54
>>626
どんなコードを書いたらそうなるんだ?
633デフォルトの名無しさん:2006/07/23(日) 11:22:22
time_t a,b,c;
a=b-c;
if(a<0) {
 //負の処理
} else {
 //正の処理
}
詳細省くと上のような処理ではaの符号に関わらず必ず負の処理が
走ってしまいます。
long型のワーク変数にキャストして、そちらで判定するように
誤魔化してしまいましたがそれじゃ64ビットの意味が無いような気も。
634デフォルトの名無しさん:2006/07/23(日) 11:39:19
>>633
>629
635デフォルトの名無しさん:2006/07/23(日) 11:40:17
例えば1970年から32ビットで表せなくなった未来に於いて、
明日引く今日は高々86400秒でしかないと思うのだが。
636デフォルトの名無しさん:2006/07/23(日) 11:44:42
>>635
頭悪い人は黙っててください
637デフォルトの名無しさん:2006/07/23(日) 12:08:17
>>634
昨日から調べているのですが、何も見つけることが出来ませんでした。
もし良ければもう少し詳しくお教えください。

>>635
まだ暫くは問題ないけど、この先の移行の事とか考えると
なるべく手間を減らせるのが良いかなと・・・
今まで普通に動いていたソースが64bit版のコンパイラで動かなく
なったので、まだ下調べしてるだけの段階なんですけどね。
638デフォルトの名無しさん:2006/07/23(日) 12:50:12
time_t同士をそのまま比較すればよさそうに思うけど
きっと何か深い理由があるんだろうね。
639デフォルトの名無しさん:2006/07/23(日) 13:58:37
>>633
このコードだけのテストプログラムでもそうなの?
640デフォルトの名無しさん:2006/07/23(日) 14:31:12
>>639
time_tがunsignedなら警告が出てもいいと思うんだけどね。
しかも、unsignedなら常に正になりそうな気がするし。
641デフォルトの名無しさん:2006/07/23(日) 14:54:49
>>633
なんでif (b < c)ではだめなの?
642デフォルトの名無しさん:2006/07/23(日) 15:09:55
大小比較するのにいちいち引き算してるから相当頭悪そう。
643デフォルトの名無しさん:2006/07/23(日) 15:15:24
比較後に差をつかうんじゃね?
644デフォルトの名無しさん:2006/07/23(日) 15:15:43
デバッガ使って調べれば1発でわかりそうなもんだが
645デフォルトの名無しさん:2006/07/23(日) 15:26:28
デバッガってなんですか?
646ぼるじょあ ◆yBEncckFOU :2006/07/23(日) 15:37:26
(・3・)最下級人種、不可触賤民のことだNE!
647デフォルトの名無しさん:2006/07/23(日) 16:29:16
> 64bitの開発環境はまだ整備されてないのでしょうか・・・

デバッガ使えないくせにずいぶん偉そうなこと言ってるな
648デフォルトの名無しさん:2006/07/24(月) 14:57:50
そもそも aを time_tと宣言しておきながら int型の定数と比較してる
時点で問題ありそうだが・・・

32bit環境ではtime_tは long int だろけど64bit環境では違うだろうし
649デフォルトの名無しさん:2006/07/24(月) 15:05:08
>>648
VC++ 2005から、Win32でもtime_tは64bitが標準。
650デフォルトの名無しさん:2006/07/24(月) 23:44:09
一度使い終わったコードをメモリ上から破棄して、メモリの節約をしたいのですが
そういう方法ってありますでしょうか?
651デフォルトの名無しさん:2006/07/25(火) 00:00:15
>>650
捨てたい部分をDLL化して明示的リンク(LoadLibrary/FreeLibary)すれば同じようなことができると思う。
もっとも、それでどれだけメモリを節約できるかは疑問。ほかにやることはないのか?
652デフォルトの名無しさん:2006/07/25(火) 01:13:50
>>651
ありがとう、そうしてみます。
他にやる事は沢山あるんですが
一度しか呼び出さないコードがすごく気になっちゃって・・・
653デフォルトの名無しさん:2006/07/25(火) 10:30:08
>>650
こういうのがいいという話ではないが、似たような御仁がおられると思って。
昔メモリの少ない時代には、subroutine のオーバレイという手法があった。
Macintosh には、リソース(Windows のと似てはいるが)に proc という
種別があってこれに処理させる方法があった。
自分の最初の Windows マシンは 64MB で、今でも application file サ
イズは 1MB を超えると抵抗感がある。
で、651 の方法を考えて始めたのだが、dll を別ファイルというのも面倒で
なんとか application file に同梱できないかと考えて、今やっている方法
は、dll を lzh 圧縮してリソースに入れて、使うときは解凍して呼ぶ。
終わると dll file を破棄。このため lzh 解凍ルーチンを抱えることに
なって、コードをけずってけずってlzh 解凍に 3KB。
んで、jpeg, gif, png, tiff などの解凍? dll もリソースに抱えている
のだが、application file サイズは肥大化して、なんのことか分からなく
なっている。いいことは違うマシンにこの appli を写すときは .exe 一本で
済むこと。因みに、エラーメッセイジ(150KB超)も lzh 圧縮してリソースで
持つようにしたので、.exe をバイナリで見ても見えない。
後、UNICODE 化ではすごい難儀。まだ終わっていない。
654デフォルトの名無しさん:2006/07/25(火) 14:03:20
Windowsだって馬鹿じゃないから、
スワップアウトが必要になればEXEファイルの部分のメモリだって捨てるよ。
そうなったらその部分は必要になるまでメモリには帰ってこない。

そういう問題じゃないって?すまん。
655デフォルトの名無しさん:2006/07/25(火) 15:20:35
DOS時代にだってあっただろ。
656デフォルトの名無しさん:2006/07/25(火) 15:32:42
>>654
アドレス空間の節約をしたいのかもしれない。
657デフォルトの名無しさん:2006/07/25(火) 16:42:31
オーバーレイなつかすぃな。
Windowsなら>>651の言うようにdll化して、
いらなくなったアンロードだろうね。
658デフォルトの名無しさん:2006/07/25(火) 19:37:30
>>653
リソースにあらかじめ格納しておく方法もあるのか・・・
>>654-657
気分的にexeファイルのメモリ使用量を抑えたかっただけだったりして
659デフォルトの名無しさん:2006/07/25(火) 19:43:58
(#^ω^)ビキビキ
660デフォルトの名無しさん:2006/07/25(火) 20:24:34
ttp://www.athomejp.com/goldfish/api/sharedmemory.asp
とかでLPSTRの変数を共有メモリにするのは分かったのですが、

CStringArrayの変数を共有メモリにすることはできますか?


環境は
VC++6.0
WinXP Home
です。
661デフォルトの名無しさん:2006/07/25(火) 20:32:22
>>660
無理にやればCStringArray自体は出来るかもしれないが
CStringArrayの要素は別に確保されるので共有できないがそれでもいいのか?
662デフォルトの名無しさん:2006/07/25(火) 20:37:46
>>661
ええと、「CStringArray自体は出来る」というのは共有出来るということなのでしょうか?

やりたいことは
EXE1で作ったCStringArray変数を、
EXE2で参照出来るようにしたいわけですけど。
663デフォルトの名無しさん:2006/07/25(火) 20:49:13
言い方が悪かったかもしれん。
CStringArrayのインスタンスは配置newで共有メモリ上に構築できるかもしれないが
CStringArray内で確保されるメモリは共有メモリではないし
複数のプロセスから操作すればおかしなことになるし

ようするに無理。
664デフォルトの名無しさん:2006/07/25(火) 20:52:04
>>663
なるほど、無理なのですね。
ありがとうございました。
665デフォルトの名無しさん:2006/07/25(火) 23:59:00
VC6.0 で作った HOGE.DLL を VB6.0 で作ったアプリから呼んでいます。
administrators 権限では問題なく動くのに、
power users 権限では、
'HOGE.DLL'の読込に失敗しましたみたいなメッセージをアプリが吐いて
終了します。

HOGE.DLL の DllEntry にブレークポイントを仕掛けても、DllEntry がコールされる
前にエラーが発生することから、 HOGE.DLL が依存している DLL のいづれかが
power users では動かないんだと思います。

こういう状況で、どの dll がエラーの原因となっているのか特定する方法はありますでしょうか?
666デフォルトの名無しさん:2006/07/26(水) 01:00:01
そもそもHOGE.DLL自体のアクセス制御は問題ないか?
667665:2006/07/26(水) 15:12:57
レスありがとうございます。
HOGE.DLL も、HOGE.DLL があるフォルダも、
Power Users で、読み書き実行できるようにしてあります。
668デフォルトの名無しさん:2006/07/27(木) 00:48:54
VS2005でAfxBeginThread()を使って開始したユーザー インターフェイス
スレッドを作ったのですが、正常終了できません。
どなたか、正常に終了する方法を教えてください。

ExitThread(0)とPostQuitMessage(0)では、スレッド生成画面ごと終了
してしまい、AfxEndThread(0)ではASSERT(pThread != AfxGetApp())
でエラーが発生しています。
AfxGetApp()はウォッチでは文字化けして見れないのですが、immedで
見ると確かにpThreadと同じアドレス値になってます。
スレッドを生成した画面からPostThreadMessage()で WM_QUITを送っても
エラーにはならないのですがスレッドは終了してくれません。

今のところTerminateThread()でしか停止できないのですが、
それではメモリリークが発生するためなんとか普通に停止させる
方法が知りたいと思っています。
何か使用法が根本的に間違っているのでしょうか?
669デフォルトの名無しさん:2006/07/27(木) 01:31:47
スレッド生成画面って何よ?
670デフォルトの名無しさん:2006/07/27(木) 01:45:27
>>669
ダイアログ画面のボタンを押すとAfxBeginThread()で複数のスレッドを
生成する処理をしています。
しかしスレッドは動き出すのですが、正常に終了してくれません。

スレッド内からExitThread(0)を呼び出すと最初のスレッドでダイアログ
が閉じて無限ループになり、PostQuitMessage(0)を呼び出すと全ての
スレッドが終了した後でダイアログ画面も終了してしまいます。
671デフォルトの名無しさん:2006/07/27(木) 07:55:08
>>670
なんでASSERT(pThread != AfxGetApp())でピンと来ないかな。
どう見たってアプリケーションクラスからExitThread呼んでるでしょ。
ExitThreadを呼ぶのは作成したスレッドからだよ?
672デフォルトの名無しさん:2006/07/27(木) 13:33:37
C++だとワーカスレッド内で定義したオブジェクトのデストラクタが
呼ばれなくなってもいけないからExitThread()は使わない方が委員で内科医?
ワーカスレッドからreturnするだけで充分じゃないかと。
#メインスレッドからExitThread()を呼ぶ間違いも起こり得ないし。
673デフォルトの名無しさん:2006/07/27(木) 14:20:14
とてつもない馬鹿登場
674デフォルトの名無しさん:2006/07/27(木) 14:35:23
>>671-672
いえ、それがアプリケーションクラスではなくCWinThreadを継承した
スレッド内で呼んでます。だから困っているんです。
(PostThreadMessage()だけはダイアログから呼んでます)
それから、ワーカスレッドではなくユーザー インターフェイス
スレッドを作っています。
ワーカスレッドでは中断して待たせたりはできないんですよね?
675デフォルトの名無しさん:2006/07/27(木) 14:44:08
TerminateThread()もダイアログから呼んでました。
これだとスレッドは終了してくれますが、強制中断してスレッドの
後始末をしないらしく、メモリリークが発生します。
SuspendThread()やResumeThread()はまったく問題なく動作するんですが・・・
(こちらももちろんダイアログ側から呼んでます)
676デフォルトの名無しさん:2006/07/27(木) 14:49:28
>TerminateThread()もダイアログから呼んでました。
            ~~
??
677デフォルトの名無しさん:2006/07/27(木) 14:59:50
ヒント:PostThreadMessage()
678デフォルトの名無しさん:2006/07/27(木) 15:51:45
夏休みの成果、モンモウガ多いなwww
679デフォルトの名無しさん:2006/07/27(木) 16:17:53
>>673
?
680デフォルトの名無しさん:2006/07/27(木) 18:22:12
ウィンドウをクラス化しようと頑張っています。
ttp://techtips.belution.com/ja/vc/0009/
のwndbase.cpp と〜.h を使用して、ビルドした際に、ウィンドウが
表示されるのを目標にしています。以下、ソースです。

[m(_ _)m]の手前までで、オブジェクトwindow を作りましたが、
この後、何を書いて行けばよいのでしょうか?
windowcreate を記述するのは分かるのですが、どこに記述したらいいのか分からず、
皆さんのお力を貸して頂けないでしょうか?
ビルド後にウィンドウが出るよう、アドバイスを宜しくお願いします。

#include <windows.h>
#include "wndbase.h"

INT WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szStr,INT iCmdShow)
{
// ウィンドウハンドル
HWND HWnd;

CWndBase* window=new CWndBase();
//m(_ _)m
//window->WndProc;
//delete window;
return 0;
}
681デフォルトの名無しさん:2006/07/27(木) 18:46:18
>>680
そこの掲示板で作ったやつに聞け
馬鹿
682デフォルトの名無しさん:2006/07/27(木) 19:04:17
すみません(T_T)
2chの皆さんの方が教えてくれるような気がして。
ウィンドウをクラス化したいと考えてる人はたくさん
いると思いますので、ここに今まで作った方がいて、
何か良いアドバイスを頂けるかと思った次第です。

このサイトの方のソースを必ず使いたいわけではなく、
このソースを使ったほうが早いかなって思いました。

何か良いサイトでもよろしいので、引き続きアドバイス
宜しくお願いします。
683デフォルトの名無しさん:2006/07/27(木) 19:07:07
作った本人にすごく失礼だと思わないか?
684デフォルトの名無しさん:2006/07/27(木) 19:22:22
VC++.NET2003です。
MFCのGUIコントロールから派生クラスを作り、
スタティックライブラリにしようと思っています。
描画はGDI+でやろうとしているのですが、
何故かGDI+の方で大量のエラーが出てしまいます。
GDI+を利用するクラスはスタティックライブラリにできないのでしょうか?
685デフォルトの名無しさん:2006/07/27(木) 19:26:56
686デフォルトの名無しさん:2006/07/27(木) 20:50:26
>>680
そもそも、C++を使わないでウィンドウを作ることはできるんだよな?
C++のクラスにするということは、そのときのプログラムの動きをクラスの枠組みに乗っけてやるということ。
個々の細かな流れは大して変わらない。
687668:2006/07/27(木) 21:31:15
出来る限り単純な構成にして、PostThreadMessage()でスレッドの終了が
出来るようになりました。どうもスレッド内で書いていた終了時の処理が
悪かったみたいです。

少しずつ処理を追加して調べてみると、thrdcore.cppの_AfxThreadEntry()を
AfxEndThread()で抜ける際にvectorの例外(out_of_range)が発生していました。
自分の処理でvectorは使っていますが、その行ではエラーが起きてないので無関係
だと思ってたのですが、これが原因でしょうか?
それとも、AfxBeginThread()の戻り値を使用してスレッドのメンバに直接アクセス
してはいけないという決まり事か何かがあるのでしょうか?
688デフォルトの名無しさん:2006/07/27(木) 21:52:20
>>687
いけなくはないが、複数のスレッドがアクセスする場合
同期してやらないと問題が起きる場合がある。
689デフォルトの名無しさん:2006/07/27(木) 22:14:21
680です。
ウィンドウズをクラス化することが出来ました。
ありがとうございます。

感謝の気持ちとして、ソースを公開したほうが宜しいでしょうか?
(大した内容ではないですが><)
また、分からないことあったら来ます。
690668:2006/07/27(木) 22:23:17
>>688
ありがとうございます。
個々のスレッドがアクセスするメンバは別々の実体でそれぞれのExitInstance()内で
deleteしてたのですが、念のためにPreTranslateMessage()でユーザメッセージを
受け取ってから処理するようにしてみます。
(ネットで調べた他の人のソースではメッセージマップ使ってCWinThread::OnQuit()で
処理してるみたいなんですけど、VS2005ではメッセージマップが選択できないんですよね・・・)
691デフォルトの名無しさん:2006/07/28(金) 01:05:35
すみません、Visual Basic6のプログラムをVisual C 2005に移植しなくてはいけません。
どのように書き換えればいいのか、教えてください。ActiveXコントロールモジュールを読み込んで、その中の関数を使ったものです。
サブルーチンの一例は、


Public Function SetSerialNum(ByVal lSerialNum As Long) As Long
MG17Motor1.HWSerialNum = lSerialNum
MG17Motor1.StartCtrl
End Function

Private Sub Command1_Click()
SetSerialNum (30808366)
fPosition = 0
MG17Motor1.SetAbsMovePos CHAN1_ID, Text1
MG17Motor1.MoveAbsolute CHAN1_ID, False
End Sub
692デフォルトの名無しさん:2006/07/28(金) 01:19:12
ヘッダが

public:
long SetSerialNum(long& lSerialNum);
private:
afx_msg void OnBnClickedCommand1(void);

で、cppが

long クラス名::SetSerialNum(long& lSerialNum) {
MG17Motor1.HWSerialNum = lSerialNum;
MG17Motor1.StartCtrl();
}
void クラス名::OnBnClickedCommand1() {
SetSerialNum(30808366);
fPosition = 0;
MG17Motor1.SetAbsMovePos(CHAN1_ID, Text1);
MG17Motor1.MoveAbsolute(CHAN1_ID, False);
}

みたいな感じになると思う。
AcrtiveXコントロールの使い方も変わるだろうが
それ以上にVBのフォームとVCのCWnd派生クラスじゃ使い勝手が
まったく違うからそっちから調べたほうがいい。
693デフォルトの名無しさん:2006/07/28(金) 01:22:04
ん?
Public Function SetSerialNum(ByVal lSerialNum As Long) As Long
で値返して無いじゃん。まあいいけどwww
694691:2006/07/28(金) 01:38:55
>>692

とりあえず、コピーして貼り付けてビルドすると、MG17Motor1が定義されていない、というエラーが出てきます。
VisualCは全くの初心者なのですが、何かで勉強し直した方がいいですね。
695デフォルトの名無しさん:2006/07/28(金) 05:49:46
エクスプローラ上の右クリック拡張について教えてください!><
696デフォルトの名無しさん:2006/07/28(金) 06:16:07
レジストリに追加するだけ
697デフォルトの名無しさん:2006/07/28(金) 08:48:34
>691
まずはソースを公開してくれよ
部分的にあーだこーだ言われても分からん
698デフォルトの名無しさん:2006/07/28(金) 15:08:39
リストコントロール(じゃなくてもいいかもしれないけど)のカスタムドロー作る時に
NM_CUSTOMDRAWのハンドラ使いますよね。
VC++.NET2003だとリソースエディタからハンドラ作成できるけれど
どうしてLPNMCUSTOMDRAWに勝手にキャストされるの?
↓こんな感じに。

void CHoge::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR); ←これ
// TODO : ここにコントロール通知ハンドラ コードを追加します。
*pResult = 0;
}

LPNMCUSTOMDRAW じゃなくて更に次の
LPNMLVCUSTOMDRAW使いたいのにっ!なんで最初からLPNMLVCUSTOMDRAWにキャストしといてくれないの??
699デフォルトの名無しさん:2006/07/28(金) 15:18:44
ウィザード作った奴に聞けよ。
700デフォルトの名無しさん:2006/07/28(金) 15:22:35
>>698
別にリストビュー専用じゃないからでしょ。
701デフォルトの名無しさん:2006/07/28(金) 15:33:02
>>699-700
リストビューから作ったハンドラなのにっ
702デフォルトの名無しさん:2006/07/28(金) 16:52:45
それくらい自分で直せよ。スケルトン作ってくれるだけでもありがたいと思え。
俺が若い頃は(ry…


じいちゃんばあちゃんの気持ちがわかった希ガス。
703691:2006/07/28(金) 17:32:42
>>692,697

目的は単純に、装置制御するプログラムです。
MG17Motor.ocxというActiveXコントローラーが付属されていて、Visual Basic6のサンプルプログラムが付いていただけです。
Visual Baicでは、MG17Motor.ocxをコンポーネンツとして追加して、メインルーチンに

Private Sub Command1_Click()
   SetSerialNum (30808366)
   fPosition = 0
   MG17Motor1.SetAbsMovePos CHAN1_ID, Text1   //Text1 は変数で、この値で装置の状態を変えられます。
   MG17Motor1.MoveAbsolute CHAN1_ID, False
End Sub

と書き込み、実行し、フレームに現れるボタンを実行すると問題なく動きます。
僕の用途では、ボタンなど必要なく、コンパイル後、実行するとすぐに命令が執行されるプログラムの方が好ましいのです。
MG17Motor.ocxをどこに読み込むのか?さえ分かりません。
よろしくお願いします。
704デフォルトの名無しさん:2006/07/28(金) 17:37:33
>>703
VBのままでいいなら、Form_Load()で実行すればいいよ。
VC++に移植したいのなら、OCXのままだと先ず無理だと思った方がいい。
705691:2006/07/28(金) 17:58:58
>>703
有り難うございます。移植は無理だということですね。それでも構いません。
VB6でForm_Load()の中にコマンドを書き込んで実行するとすぐに動きました。
実はこのプログラムのexeファイルを作り、他のプログラムで動かしたいのです。
試してみたところ、ちゃんと動きますが、exeファイルを実行するたびにFormが出てきてしまいます。
このFormを出さない方法、あるいは、実行後Formを消す方法とかないでしょうか?
よろしくお願いします。
706デフォルトの名無しさん:2006/07/28(金) 18:00:20
Sub Main()
707デフォルトの名無しさん:2006/07/28(金) 18:00:39
>>705
VBでOCXを取り込んだOCXなりDLLを作ってそれをVCに組み込めばいいと思う.
708704:2006/07/28(金) 18:12:41
>>705
なんだ、Formも要らないなら先に書けよ。
それだったら>706のようにMain()に書いちゃえばOK。
つーか、それくらい調べろよって気もするが。
709668:2006/07/28(金) 22:37:44
>>688
おかげさまで解決しました、ありがとうございました。

各スレッドにユーザメッセージを送信して、スレッドのPreTranslateMessage()で
終了時のメモリ解放処理とPostQuitMessage(0)をするように変更すると、全ての
スレッドが綺麗に終了するようになりました。
メモリ解放処理をスレッドのメソッドにしてダイアログ側から直接呼び出していた
のが悪かったようです。(予想外に大量のメッセージが溜まっていました)

ただ、他の人のソースに良くあるようなPostThreadMessage()でユーザメッセージを
送信した後にSleep(1000)などとタイミング調整のスリープを入れると、その直後の
WaitForSingleObject((*it)->m_hThread,INFINITE)がロックしてしまいます。
単にタイミング調整してるだけだから無くても正常に動くならいいか、と思ってますが
原因が突き止められないのでちょっと不安・・・
710デフォルトの名無しさん:2006/07/28(金) 22:44:32
itのcontainerとかitとか*itとか、(*it)->m_hThreadを他スレッドで操作してるとか
711デフォルトの名無しさん:2006/07/28(金) 23:03:32
itのコンテナはスレッドのアドレスを格納してるんですが、コンテナ自体は
各スレッドを呼び出すダイアログ側がprivateで管理しているので同時に複数の
操作は入らないはずなんです。
(*it)が指しているスレッドは、WaitForSingleObject(INFINITE)の後で
deleteするまで生きてるので参照にも問題は無いようなんです。
普通は処理の終了待ちで入れているはずのSleep(1000)を入れるとロックして
入れないとWaitForSingleObject(INFINITE)はすぐに帰ってくるので、
何か変(想像と逆)ですよね?
712デフォルトの名無しさん:2006/08/01(火) 21:16:47
ハンドルされていない例外が発生・・・というエラーが出て困っています。
あるクラスを作って、その中にさらにクラスを入れ子にした場合、
この、「ハンドルされていない例外」というのが出てるような気がします。

なぜ、この様なエラーが出るのか?回避の方法は如何様かを
ご教授お願いします。
以下、ソースです。
よろしくお願いしますm(_ _)m
713デフォルトの名無しさん:2006/08/01(火) 21:17:29
main.h________________________________________
#include "sub.h"
main.cpp______________________________________
#include <windows.h>
#include "main.h"
INT WINAPI WinMain( HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR szStr,INT iCmdShow)
{
CSUB* SUBOBJ=new CSUB();
SUBOBJ->RUN();
delete SUBOBJ;
return 0;
}
sub.h_________________________________________
#include "sub2.h"
class CSUB {
protected: CSUB2* SUB2OBJ;
public:
CSUB();
~CSUB();
void RUN();
};
sub.cpp_______________________________________
#include "sub.h"
#include <windows.h>
CSUB::CSUB(){ }
CSUB::~CSUB(){ }
void CSUB::RUN(){
MessageBox(NULL, "check01", NULL, MB_OK);
SUB2OBJ->XXX(SUB2OBJ->YYY());
MessageBox(NULL, "check03", NULL, MB_OK);
714デフォルトの名無しさん:2006/08/01(火) 21:18:11
sub2.h________________________________________
class CSUB2 {
protected: bool ZZZ;
public:
CSUB2();
~CSUB2();
void XXX(bool zzz);
bool YYY() { return ZZZ; }
};
sub.cpp_______________________________________
#include "sub2.h"
#include <windows.h>
CSUB2::CSUB2(): ZZZ(false) { }
CSUB2::~CSUB2() { }
void CSUB2::XXX(bool zzz) { MessageBox(NULL, "check02", NULL, MB_OK); }
715デフォルトの名無しさん:2006/08/01(火) 21:32:05
そりゃ確保されてないSUB2OBJに対してメンバ関数を呼び出して、
しかもそこでメンバ変数に触ってるんだから落ちるだろ。
716デフォルトの名無しさん:2006/08/01(火) 22:18:22
sub.cpp の最後に }; が抜けてました。すみません。

>715さん
レスありがとうございます。
レスを元に、今、「メモリ 動的確保」 でぐぐって調べています。

この例での、SUBOBJ を作った段階では、
まだSUB2OBJ が作られていなくて、更にそこにアクセスしようと
したからエラーが発生した・・・ということでしょうか?

ご面倒とは思いますが、何卒ご教授お願いします。
717デフォルトの名無しさん:2006/08/01(火) 22:47:38
はい、それはトムです。
718デフォルトの名無しさん:2006/08/01(火) 22:50:24
SUBOBJはnewしてdeleteしているだろ。
SUB2OBJだってどこか(と言ってもまず間違いなくコンストラクタとデストラクタ)で
newとdeleteをしなければならない。

ところで、全部大文字のクラス名・変数名きもい。
あと、main.hの存在意義が無いだろ、それ。
さらに、そもそも動的に確保する必要はあるのか疑問。
719デフォルトの名無しさん:2006/08/01(火) 23:00:21
複数階層のディレクトリを一発で作れるSHCreateDirectory
相対パス指定するとエラー
どうすればいいの?
720デフォルトの名無しさん:2006/08/01(火) 23:24:30
エラー値を確認。
MSDNで仕様を確認。
721デフォルトの名無しさん:2006/08/01(火) 23:30:02
>>719
GetFullPathNameはどう?
722デフォルトの名無しさん:2006/08/01(火) 23:37:41
>718さん
レスありがとうございます。
sub.cppを書き直してみました。(下記参照下さい)

コンストラクタとデストラクタ(つまり@とA)でnewとdeleteを
してみたのですがビルドエラーが出てしまいます。
BCだと無事通ることができました。
何故か分かりませんが、少し自分で調べてみます。
レスをして頂いた方々。ありがとうございます。m(_ _)m

#include "sub.h"
#include <windows.h>

CSUB::CSUB(){
//@CSUB2* SUB2OBJ=new CSUB2();
}
CSUB::~CSUB(){
//Adelete SUB2OBJ;
}
void CSUB::RUN(){
//BCSUB2* SUB2OBJ=new CSUB2();
MessageBox(NULL, "check01", NULL, MB_OK);
SUB2OBJ->XXX(SUB2OBJ->YYY());
MessageBox(NULL, "check03", NULL, MB_OK);
//Cdelete SUB2OBJ;
}
723デフォルトの名無しさん:2006/08/02(水) 00:27:05
C++を一からやり直せ。
724719:2006/08/02(水) 00:59:42
>>721
サンクス。それでうまくいきました。
725デフォルトの名無しさん:2006/08/02(水) 01:31:04
>>722

クラス定義みてないけどこれはまずいだろ。

@はコンストラクタのローカル変数で、CSUBのメンバ変数のSUB2OBJじゃないからこのnewはメモリリークしてる
AはCSUBのメンバ変数だけど@のSUB2OBJとは別物で初期状態のままの不定値が入ってるから落ちる
BはCSUB::RUN()関数のローカル変数でCSUBのメンバ変数のSUB2OBJじゃない
CはCSUBのメンバ変数だけどBとは別物だから結果はAと同じ

ってか、上なおしてもこの設計だとCSUB::RUN()をよびだしたらアウト。
726デフォルトの名無しさん:2006/08/02(水) 03:00:11
なんで全部大文字なんだよ定数かよっ
727デフォルトの名無しさん:2006/08/02(水) 07:27:57
コボラー?
728デフォルトの名無しさん:2006/08/02(水) 20:23:21
>725さん
詳しい解説ありがとうございます。
理解できました。愚かな質問で申し訳ございません。
また、教えてくれた方々にも感謝しています。
ありがとうございましたm(_ _)m
729デフォルトの名無しさん:2006/08/02(水) 21:29:54
>>728
次からは、エラーが出たならエラーメッセージくらい書いてね
730デフォルトの名無しさん:2006/08/03(木) 14:41:39
>>115
と同じcmd.exeに関するエラーに悩まされてます。

ツール>オプション>実行可能ファイルの設定を見直すといいと分かりましたが
できればエラーの出ない(みなさんの)環境での設定項目を
羅列してもらえないでしょうか?
731nmn:2006/08/03(木) 22:44:43
今年入社した新人です。
質問なんですが、VC++6.0を安く買える方法ないですか?

気合いれて、1万もするVC++6.0の本を買ったんで、
折角だから、家でも勉強したいなと…。
732デフォルトの名無しさん:2006/08/03(木) 22:45:28
いまさらVC6なんぞ買うな。VC2005EE落として来い。
733nmn:2006/08/03(木) 23:01:18
折角、
商品名 :プログラミングMicrosoft Visual C++6.0
販売価格:9,975円

買ったのに…。
仕事場の開発環境がVC6.0ってだけで即決してしまいました↓↓

やっぱりVC2005ですかね?
734デフォルトの名無しさん:2006/08/03(木) 23:43:05
その本だとVC6でMFCなんだろうね
735nmn:2006/08/04(金) 00:06:43
今まではUNIXでC++の開発だったんですけど、
プロジェクトが変わり、VC++を使うことになりました。

ttp://www.amazon.co.jp/gp/product/4891000503/503-0614484-7271114?v=glance&n=465392&s=gateway

VC2005でもこの本使えますかね…。
736デフォルトの名無しさん:2006/08/04(金) 00:11:19
>>735
使えません。
さらに言うなら、VC2003などの書籍もさけた方が良いです。混乱の元。
737nmn:2006/08/04(金) 00:21:44
あ゛う…。
やっぱりダメですか…。
どうしたもんだか…。

まずはVC++6.0を勉強しようかな…。
きっと役に立つ…立ちますよね?
何かいいアドバイスいただけたら幸いです。
738デフォルトの名無しさん:2006/08/04(金) 00:33:36
>>737
ん?業務で使うのはどっち?
業務で使うほうの勉強をしたほうがいいよ。

ざっくり言うと、VC6の知識はVC2005では通用しないものがほとんどだし、逆もまた真だから。
739デフォルトの名無しさん:2006/08/04(金) 00:35:52
あーごめん、スレ読んでなかった。

業務でVC6使うなら、VC6の本でいいね。
基本部分以外はVC2005じゃ使えないから、なんとかしてVC6を手に入れることだね。

MSDNには入ってるんだっけ?
740nmn:2006/08/04(金) 00:38:29
なるほど…。アドバイス有難うございます。

今の業務で使っているのはVC6の方です。
VC6の方で勉強していきます!!

あとはソフトか…。

あ、ちなみに一概には言えないのは承知の上で、
現状でVC6での業務って多いんですかね?
最近はVC2005なんですか?
741デフォルトの名無しさん:2006/08/04(金) 00:39:35
つーか、VC6ってライセンスは特定個人に与えられるもので、コピー自由だから、
会社に断って家のPCにインストールさせてもらいなよ。
742nmn:2006/08/04(金) 00:42:56
定かではありませんが、たぶんMSDNには入ってないと思われます。

今のプロジェクトの場合、
ライブラリは自分で作ってるとか言っておりました。
743nmn:2006/08/04(金) 00:44:20
コピー自由なんですか?
なるほど!有難うございます。
明日会社で聞いてみます。
744デフォルトの名無しさん:2006/08/04(金) 00:46:41
>>743
会社の人は知らない可能性があるから、もしそうなら、コピーが自由だってことは
EULA.txtに書かれてるって教えてやれ。
745デフォルトの名無しさん:2006/08/04(金) 00:49:54
会社にひとつのパッケージしかなかったりして・・・
746nmn:2006/08/04(金) 00:56:22
おぉ!知りませんでした!
ここで質問してみてよかった!

ありがとうございます!!
747デフォルトの名無しさん:2006/08/04(金) 01:03:21
明日上司に言って規約違反だったことが判明して>>746の首が飛ぶに1.dll
748デフォルトの名無しさん:2006/08/04(金) 01:41:44
VC6の案件は急速に減ってきていますが、公的機関向け制御系を中心に根強い人気を保っています。
749デフォルトの名無しさん:2006/08/04(金) 07:05:59
>>747
んな適当なこと言ってないで、早く就職したらどうだ?
750デフォルトの名無しさん:2006/08/04(金) 07:59:40
>>747
なんか問題あんの?
751デフォルトの名無しさん:2006/08/04(金) 18:03:01
Visual Studio Professinal Editionです。
VC++を学ぼうと思い、猫でもわかるプログラミングからやろう考え一番最初のをコピペしたところ
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm ←このコードです。

hWnd = CreateWindow(szClassNme,
"猫でもわかるプログラミング",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);

この部分の一番したのNULLにエラーがでます。
error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [25]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

どうすればいいでしょうか?.NET2003ではこんなエラーでなかったので困ってます・・・お願いしますm(_ _)m
752デフォルトの名無しさん:2006/08/04(金) 18:04:16
>>751
すいません、事故解決しました。
UNICODEからSJISをデフォルトにすればいいんですね、なんか2005色々めんどくさくなってますね・・・
753デフォルトの名無しさん:2006/08/04(金) 18:25:52
_T("猫でもわかるプログラミング")
754デフォルトの名無しさん:2006/08/04(金) 20:30:05
_T()入れずに使いたいんだけどどうすればいいの?
なんかマクロ定義しればいい?
755デフォルトの名無しさん:2006/08/04(金) 20:35:04
だって、そのマクロが_T()じゃないか
756デフォルトの名無しさん:2006/08/04(金) 20:45:19
>>754
一切UNICODEでコンパイルすることが無ければ付けなければ良いだけの話し
757756:2006/08/04(金) 20:47:16
ってUNICODEでやりたいときの話かな?ごめん知らない。
758デフォルトの名無しさん:2006/08/04(金) 21:11:34
いや、UNICODEなんか使いたくないんだけどchar*渡すと怒られるから何だかなーと
LPCSTRが、みんなLPCTSTRになっちゃってるんだよね
使いにくいったらありゃしない
759デフォルトの名無しさん:2006/08/04(金) 21:18:38
>>758
それならUNICODEでコンパイルしなければいいだけ。それなら>>752が正解
760デフォルトの名無しさん:2006/08/04(金) 21:40:38
BCC DeveloperとVC2005ExpressじゃVCの方がいいのかな?
761デフォルトの名無しさん:2006/08/04(金) 22:03:28
>>760
VCスレでそれを聞くのはいかがかとw
762デフォルトの名無しさん:2006/08/05(土) 02:28:38
Microsoft Visual C++ 2005 Express Edition 使ってます。

fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory
と出てしまいます。
Microsoft Platform SDKも入っていてその中にwindows.hも入っています。

Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
このサイトの通りにやってもだめでした。

どなたか分かる人いたらお願いします。
763デフォルトの名無しさん:2006/08/05(土) 02:38:35
stdio.hがsdtio.hになってたとかいうオチ?
764762:2006/08/05(土) 03:03:45
>>763
#include <stdio.h>
#include <windows.h>

main(){
}

これでコンパイルかけてもダメです。
765デフォルトの名無しさん:2006/08/05(土) 03:05:10
亀田の八百長の件を初めて知った人に改めて教授(色んなところにコピペしてね)

<亀田のカラクリ>

1戦目 デンナロン・シスソバ(タイ) 戦績 0勝2敗         ○ 1回44秒KO
2戦目 プラカルン・ツインズジム(タイ) 戦績 0勝3敗       ○ 1回1分12秒KO
 ※日本ボクシングコミッション2005年度招聘禁止選手(八百長疑惑)

3戦目 サミン・ツインズジム(タイ)  戦績 0勝4敗         ○ 1回1分48秒KO
4戦目 ダオチャイ・KTジム(タイ) 戦績 0勝5敗          ○ 10回判定
 ※日本ボクシングコミッション2006年度招聘禁止選手(八百長疑惑)

5戦目 ノパデッチレック・チュワタナ(タイ) 戦績 0勝0敗     ○ 2回59秒KO
6戦目 ヨードゲン・シンワンチャー(タイ)  戦績 0勝4敗      ○ 1回2分10秒KO
7戦目 サマン・ソー・チャトロン(タイ) 戦績 46勝7敗1分     ○ 1回2分59秒KO
 ※チャトロンは35歳、3年前に1度引退。復帰後3連敗

8戦目 ワンミーチョック・シンワンチャー(タイ) 戦績 12勝2敗  ○ 3回50秒TKO
 ※亀田は防衛戦を一度もせずに王座返上。一部のライターや元プロからワンミーチョックの手数が明らかに少なかったと指摘される。

9戦目 ノエル・アランブラッド(ベネズエラ)戦績 21勝4敗1分1無効試合 ○ 7回TKO
 ※アランブラッドは元WBAミニマム級チャンピオンで亀田(フライ級)とは2階級差

10戦目 カルロス・ボウチャン(メキシコ)戦績 16勝12KO5敗 ○ 6回2分20秒KO
 ※ローブロー疑惑。試合終了後亀田親父がとんでもない剣幕で相手陣営に怒鳴り込む(ブック破りで切れた?)

11戦目 カルロス・ファハルド(ニカラグア)戦績 15勝10KO6敗1引 ○2回1分28秒TKO
 ※ファハルドの最終戦は2005年6月17日(1年近くのブランク有り)で、もともとミニマム〜Lフライ級の選手

昨日亀田が1階級下げて(ライトフライ)タイトルマッチを争ったランダエダは元々最軽量のミニマムの選手で
亀田とは実質2階級差。本来は去年の12月で引退予定だった選手。
766デフォルトの名無しさん:2006/08/05(土) 03:15:40
>>765
こんなところで妄想八百長おつかれさま。
767デフォルトの名無しさん:2006/08/05(土) 03:27:44
>>764
http://freepg.fc2web.com/cpp/topic_vce_001.html
このページの通り試してみる
768764:2006/08/05(土) 04:05:45
>>767
できました!ありがとうございます。

corewin_express.vspropsファイルの修正のところでミスしてました。
どうもありがとうございmasita。
769デフォルトの名無しさん:2006/08/05(土) 06:19:44
>>759
返事遅くなったけどアリガトン!
昨日は久々に早く寝ちゃって今起きた。
770デフォルトの名無しさん:2006/08/05(土) 22:08:23
質問させてください。
VC++に興味を持ち、VCEEをインストールしました。
そんで、いざやるぞ!って思ったんですが、インターネット上で
VCEEに関する勉強HPが見当たりません。
VC6.0に関するHPはいくつも見つけたのですが、
これは流用ってできませんよね?(ポインタの表記の仕方とかが違うみたいです)

どこか、よいHPはありませんでしょうか。
771デフォルトの名無しさん:2006/08/05(土) 22:14:14
>>770
ただのC/C++コンパイラとして使うのであれば(C++/CLIを使うつもりで無ければ)、
普通のCやC++の入門のWebサイトは使えるぞ。
772770:2006/08/05(土) 22:40:42
// RO.cpp : メイン プロジェクト ファイルです。

#include "stdafx.h"
#include "Form1.h"

using namespace RO;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
// コントロールが作成される前に、Windows XP ビジュアル効果を有効にします
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);

// メイン ウィンドウを作成して、実行します
Application::Run(gcnew Form1());
return 0;
}
773770:2006/08/05(土) 22:44:44
申し訳ありません、途中送信してしまいました。
今、猫さんのHPをみながら、

*****
#include <stdio.h>

int main(void)
{
printf("私の名は粂井です\n");
return 0;
}
****

というコードを記述してみようと思いました。
ところが、VCEEにて新規プロジェクトを作成し、いざやってみようと
思ったら、メインソースファイルが>>772のような形になっており、
はてさて、int main{なんたら}のなんたら部分を消してしまってもよいものか
困っています。このような理由で、先ほどのような質問をさせていただいた次第です。
774デフォルトの名無しさん:2006/08/05(土) 22:46:56
>>772
それはC++/CLIのプログラム。はっきり言うとC++/CLIには
まだ入門向けのWebサイトも本もないし、当分できないであろう。
だって素のC++の上に、更にC++/CLIと.NET Frameworkの知識を積み重ねで要求されるから。

普通のC/C++使ったプログラムを作る気なら、
Win32 コンソールアプリケーション・Win32 アプリケーションでプロジェクト作れよ。
775770:2006/08/05(土) 23:14:38
私が作ろうとしていたコードがまさにC++/CLIだったわけですね_/ ̄|○
ご指摘ありがとうございました。
ここはひとつ、おっしゃるようにWin32 コンソールアプリケーション・Win32 アプリケーションで
プロジェクトをつくり、C/C++に慣れてみようと思います。

ちなみに、Win32 コンソールアプリケーション・Win32 アプリケーションで作成した
プロジェクトは、操作はやっぱりコマンドプロンプトのみで、
フォームを作成したりとかはできないですよね?
776デフォルトの名無しさん:2006/08/05(土) 23:22:06
>>775
C言語編を中盤までマスターし、Platform SDKを使えるようにした上で、
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
Windows SDK編へ突入しろ。
777770:2006/08/05(土) 23:30:09
了解です、大佐
778770:2006/08/05(土) 23:31:24
また、途中送信してしまいました。

いろいろありがとうございました。
猫さんのHPを見て頑張ってみます。
779デフォルトの名無しさん:2006/08/06(日) 20:36:09
マルチメディアキー付きキーボードのMultimedia Keyの発するWM_ってなんですか?
780デフォルトの名無しさん:2006/08/06(日) 21:53:36
Spy++で調べてみれば?
781sage:2006/08/07(月) 07:31:40
Visual C++.NET の CFormViewで画面とクラスを複数用意し、
画面上にある複数のボタンを押すことにより画面とクラスを切り替え、それぞれ違う処理をしようと思っていますが、
CFormViewのクラスの追加はできましたが、画面とクラスの切り替えがうまくできません。
最初の画面の、ボタンを押されたときの処理にいろいろ打ち込んでいるのですが‥
どなたか参考になるご意見をお願いいたします
782デフォルトの名無しさん:2006/08/07(月) 14:41:02
追加したクラスの実体をどこか(最初の画面とか)で作ってやって
そいつの表示用メソッドを呼んでやればいいよ。
たとえばこんな感じ。

CMyFormView* pMyFormView;

pMyFormView = new CMyFormView(this);
pMyFormView->ShowWindow(SW_SHOW);

クラスを追加するというのは雛型を作っただけ見たいな状態なので、
実際にはどっかのクラスのメンバ変数として用意してやるとか、
ポインタ変数をメンバに定義してnewしてやるとかして実体を作って
やんないと何も処理が出来ない。
783デフォルトの名無しさん:2006/08/07(月) 18:23:56
テキストファイルから内容を読み込み、それを配列に格納する関数を作ろうと思っているのですが、どうも上手くいきません。
#include <iostream.h>
#include <fstream.h>
#include <conio.h>

void FileRead(char *FileName,char *File)
{
char c;
char *file_name = *FileName;
int i=0;
ifstream MyFile(file_name);
while(MyFile.get(c))
{
i++;
cout << c;
*(File+i) = c;
}
}
int main(void)
{
char File[255];
char *FileName = "test.txt";
FileRead(*FileName,*File);
cout << File[0] << endl;
getch();
return 0;
}

どうすればよろしいのでしょうか。ご提示お願いいたします。
784デフォルトの名無しさん:2006/08/07(月) 18:28:22
>>783
素直に入門書辺りを読み直した方がいいと思うよ。
突っ込みどころだらけで説明する気にもなれないよ。
785デフォルトの名無しさん:2006/08/07(月) 18:28:52
>>783
C++使えるようになりたいんなら
C言語のポインタの勉強を基本からやりなおせ・・・
786デフォルトの名無しさん:2006/08/07(月) 18:50:53
C++スレ行った方がいいだろ
787デフォルトの名無しさん:2006/08/07(月) 20:47:46
>>784-785
わかりました。もっと勉強してきます。
>>786
またどうしてもわからなくなったらC++スレで訊いてこようと思います。
788781:2006/08/07(月) 21:37:32
>>782さま
ありがとうございます

名前をsageにしている‥僕何やっているんだろ
789デフォルトの名無しさん:2006/08/09(水) 00:53:26
visual studio 2005で、CとWIN32APIで書いてます。
タイトルバー無しのダイアログを表示させたいのですが、背景が灰色ではなく、透明になってしまいます。
ダイアログにあるボタン、テキスト、エディットボックス部分は、背景は透明ではなく、ちゃんと灰色に表示されます。
以下が、ソースコードの一部です。何がおかしいのでしょうか?
リソーススクリプト
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
IDD_HISCORE DIALOGEX 0, 25, 119, 86
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "OK",IDOK,37,69,42,15
CTEXT "あいうえお",IDC_STATIC,24,3,70,8
CTEXT "かきくけこ。",IDC_STATIC,24,12,72,8
EDITTEXT IDC_EDIT1,14,40,91,12
END
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

ダイアログの表示する関数
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
DialogBox(
(HINSTANCE)GetWindowLong(hWnd , GWL_HINSTANCE) ,
MAKEINTRESOURCE(IDD_HISCORE),
hWnd , DialogProcHiscore
);
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
790デフォルトの名無しさん:2006/08/09(水) 01:42:05
質問
float a = 1.0f;
float b = 0.1f;
while(1){
a = a / b;
}
とループさせながらウォッチでaの値を見ていると
1.000e-038#DENとでてくるのですが
#DENの意味は何ののですか?
791デフォルトの名無しさん:2006/08/09(水) 01:53:52
deny
792デフォルトの名無しさん:2006/08/09(水) 09:14:18
DENMARK
793デフォルトの名無しさん:2006/08/09(水) 10:07:41
DENDENMUSI
794デフォルトの名無しさん:2006/08/09(水) 11:21:19
>>790
aの値は増えていくんじゃないのか?
んで、1e308を越えて演算オーバーフローが起きたんじゃないか?
795デフォルトの名無しさん:2006/08/09(水) 12:40:33
Visual Studio 2005 Express Edition は、
Windows Me で動くのでしょうか。
796デフォルトの名無しさん:2006/08/09(水) 12:40:58
>>795
動かない。2000/XP以上が必要。
797795:2006/08/09(水) 12:47:47
>>796

そうですか。
ありがとうございます。
798790:2006/08/11(金) 00:48:10
>>794
a = a / b; じゃなくて
a = a * b; でした

floatの範囲を越えてたみたいですね
と思ったら、ループを続けたら以下の数値が
出てきたのですが

1e-038#DEN
1e-039#DEN
1.00001e-040#DEN
9.99967e-042#DEN
1.00053e-042#DEN
9.94922e-044#DEN
9.80909e-045#DEN
1.4013e-045#DEN
0

floatの範囲外は>>791でのDENYで
正しくないということなのかな
799デフォルトの名無しさん:2006/08/11(金) 12:15:52
denormalized numberやろ。
値が小さすぎて正規化数では表せませんってこと。
800790:2006/08/13(日) 17:26:58
>>799
denormalized numberでググッたらわかりました
ありがと
801デフォルトの名無しさん:2006/08/16(水) 14:26:30
ttp://www31.ocn.ne.jp/~yoshio2/vcmemo17-1.html
ここのタスクトレイ常駐アプリサンプルをコンパイルしてみたのですが、
「初回の例外が発生しました : 0xC0000005: 場所 0xffffffff を読み込み中にアクセス違反が発生しました。」
というメッセージが終了後に出ます。

けれども出力欄には上記メッセージが出るのですが、
中止とか継続とかの例のダイアログは出ません。
Releaseで実行すると何事も無く終了します。

このアクセス違反メッセージは無視していいのでしょうか?
ちなみに

((CMainWnd*)m_pMainWnd)->Create();

の行をコメントアウトすると消えます。

何かヒントをいただければと思います。よろしくお願いいたします。

Athlon64の自作機
WindowsXP Professional SP2
Visual Studio .NET 2003 Professional
802デフォルトの名無しさん:2006/08/16(水) 14:44:50
>>801
m_pMainWndがNULLかどうか、デバッグで確認してみようか。
803デフォルトの名無しさん:2006/08/16(水) 14:58:44
>>802
レスありがとうございます

とりあえず、リークがあったのでCMainWnd::PostNcDestroy()の最後でdelete thisしています。

m_pMainWndがNULLかについては、CTrayIconApp::ExitInstance()を追加して
そこでブレークした限りではNULLでしたが…もっと前でしょうか?
804デフォルトの名無しさん:2006/08/16(水) 15:16:53
crt0dat.cのvoid __cdecl __crtExitProcess ()の最後の行、ExitProcess(status)の中で発生しているようです…
805デフォルトの名無しさん:2006/08/16(水) 15:17:01
>>803
>((CMainWnd*)m_pMainWnd)->Create();
の段階でNULLなら、そりゃぁアクセス違反も起きるわなぁ。
まさか、解放した後のポインタを見てないだろうね。
806801:2006/08/16(水) 15:47:29
>>805
ぃぁそこでNULLだったら盛大にダイアログが出ますから…
それにそこは一つ上でnewしてる直後ですし

終了の最後の段階でアクセス違反が、デバッグ版では出ているのに、
そういうメッセージが出力欄に出るだけで素通りされ、何をどうやっても
止まってくれないんです
一応はアセンブラのウィンドウも覗きましたが、さすがに理解不能で

デバッガが止めてくれない例外というのは何者なのだろうか、と
807デフォルトの名無しさん:2006/08/16(水) 16:12:15
ぬるぽならともかく、0xffffffffてのがよく解らないな。
ちなみに、WinXPProSP2/VS2005Proだと、例外は発生しなかった。
デバッガが止めないという事は、内部でハンドリングされている訳だし、
気にするな、てことでいいんじゃね?
808801(やおい?):2006/08/16(水) 16:17:43
>>807
なんですとー!?

まあ….NET2003はちょっと怪しいところがありますしねえ
だからって初代はもっと怪しいですが

とりあえずデバッガ公認ということでとりあえず気にしないことにします。
ありがとうございました
809デフォルトの名無しさん:2006/08/17(木) 01:27:36
VS2005です。
メニューからファイル→開く でファイルを参照させて画像ファイルを開いてそれをPictureboxに表示させたいんですが
どう書けばいいでしょう・・・メニュー自体は作れたのですが、それを押した時のイベントが初心者なので全然わかりません(TT)
参考になるHPとかでもいいんで教えてくださいー
810809:2006/08/17(木) 01:28:29
ちなみにMFCのダイアログベースで作っております。
811デフォルトの名無しさん:2006/08/17(木) 02:31:35
やなこった
812デフォルトの名無しさん:2006/08/17(木) 13:26:40
パンナコッタは旨い
813デフォルトの名無しさん:2006/08/18(金) 18:41:43
デバッガの表示がおかしくなった。
int*がNULLのはずがfalseってなるし、
ポインタがNULLなのに、<未定義の値>ってなる。
前は、未定義の値なら、そのおかしな数値がそのまま表示されたのに。
やってられん(;´Д`)
814813:2006/08/18(金) 19:13:36
自己解決しました。VCめ。
815デフォルトの名無しさん:2006/08/18(金) 20:50:17
代入演算子を下記のようにオーバーロードし、
自己代入を行うと、
オブジェクトは一つなのに
文字列を格納するための動的なメモリ領域が二つ分割り当てられると本にあるのですが、
sDatを一度deleteしてからnewしてるので、そんなことはないと思ってしまうのですが。
どう解釈したらよいのでしょうか……。
よろしくお願いします。

// MyStringクラスの定義
class MyString {
char *sDat;// メンバ変数
public:
MyString();// コンストラクタ
~MyString();// デストラクタ
void operator=(const MyString &mstr);// 代入演算子のオーバーロード
};

// 代入演算子のオーバーロード
void MyString::operator=(const MyString &mstr)
{
// 古い文字列を削除。(ここでsDatは消える?)
delete [] sDat;

// 新しい文字列を格納。
sDat = new char[lstrlen(mstr.sDat) + 1];
lstrcpy(sDat, mstr.sDat);
816デフォルトの名無しさん:2006/08/18(金) 20:51:15
}


int APIENTRY _tWinMain(HINSTANCE hInstance,
           HINSTANCE hPrevInstance,
           LPTSTR  lpCmdLine,
           int    nCmdShow)
{
 // オブジェクトを宣言
 MyString ms1;

 // 文字列を代入
 ms1 = "Hello";

 // 自己代入(これで文字列が二つに?)
 mc1 = mc1;
...
}
817デフォルトの名無しさん:2006/08/18(金) 21:49:57
領域が二つ分割り当てられるようには見えないが
deleteされた領域にアクセスすることになるな
818デフォルトの名無しさん:2006/08/18(金) 22:54:29
819デフォルトの名無しさん:2006/08/18(金) 23:00:56
>>818
GJ
820デフォルトの名無しさん:2006/08/19(土) 09:21:39
>>818
ちょ、なにサラっとGJしてんの?
ありがとう
821デフォルトの名無しさん:2006/08/19(土) 21:28:30
突然ですまない
時間が無いんだ

Visual C++ 2005 Express Edition
ってFramework不要のアプリって作れるのか?
作るときには何か別途でダウンロードとかあるのか?
822デフォルトの名無しさん:2006/08/19(土) 21:42:43
>>821
Visual Studio 2005 Express Editions: Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
823デフォルトの名無しさん:2006/08/19(土) 21:50:51
>>822
ありがとう!!
今インストールしてる
824デフォルトの名無しさん:2006/08/19(土) 22:48:46
奇遇なのか俺はきのう同じようなことをしてた。
このサイトを見ながら
tp://www7a.biglobe.ne.jp/~lshen/EternalWindows/else/VC%202005.html
825デフォルトの名無しさん:2006/08/19(土) 22:55:52
そんなどこの誰が書いたのかも分からんページを参考にしないで、
素直にMSDN見ろよ。
826デフォルトの名無しさん:2006/08/19(土) 23:05:48
MSDNめんどくさい
827デフォルトの名無しさん:2006/08/19(土) 23:08:15
>>817
ありがとうございました。
828デフォルトの名無しさん:2006/08/19(土) 23:08:29
site:microsoft.com付けてググればいいだけのこと。
829デフォルトの名無しさん:2006/08/21(月) 01:39:55
すいません。過去に同じような質問があったのですが、
プログラムが上手く実行できなかったので質問します。

Win32アプリケーションを作ろうとして、
新規プロジェクトからWin32アプリケーション(コンソールではない。)を設定
test.cpp(Hello,Worldなど超簡単プログラム)を作って
コンパイル→実行→思惑通り起動!

とここまでは良かったのですが、Visual C++ 6.0を終了させて、
再起動の後、先ほどのtest.cppを開いて実行すると、以下のようなエラーで実行できません

LIBCD.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
Debug/test.exe : fatal error LNK1120: 外部参照 1 が未解決です。

ちなみにコンパイルではエラーなしです。
初めにプロジェクトを作るときはどのプログラムでも実行できたのですが、
一度VisualC++を終了させてから再起動してプログラムを起動すると
二度と実行できなくなります。

どうすれば再起動後もプログラムを走らせることができますか?
830デフォルトの名無しさん:2006/08/21(月) 01:41:18
>>829
ソリューションファイルを開くんだ
831デフォルトの名無しさん:2006/08/21(月) 02:10:19
main と WinMain について調べてみよう。
832デフォルトの名無しさん:2006/08/21(月) 03:18:16
>>830
Visual Studio.Netではなく、Visual C++なので
ソリューションファイル(.sln)が作成されないのですが・・・

>>831
mainはC言語、WinmainはWindowsアプリケーションのエントリーポイントという
ことはわかったのですが、ウェブ上で発見したどのようなWinアプリも
>>829の症状がでて実行できなかったです。ちゃんとWinmain関数を使ってるのですが・・・

Visual Studio.Netを使わないとWinアプリは作れないということなのでしょうか・・・?
833デフォルトの名無しさん:2006/08/21(月) 03:21:35
(プロジェクト名).vcproj
というファイルは無いのか?
それを開けばよし
834デフォルトの名無しさん:2006/08/21(月) 06:38:35
>>832
VC++6.0までなら、dswかdspを開けばいい。
VC.NETからはdsw->sln、dsp->vcproj等になっている、はず。

ソースだけ渡されたので、とりあえずコンソールアプリとしてビルドされた、
でもmain見つからない、って所か?
835デフォルトの名無しさん:2006/08/21(月) 16:29:38
Microsoft Visual C++ 6.0 を使っているのですが、
エディットボックスをある条件下で「編集不可」にしたいのですが、どうすればできますか?
836デフォルトの名無しさん:2006/08/21(月) 16:37:03
>>835
EM_SETREADONLY
837デフォルトの名無しさん:2006/08/21(月) 16:38:29
SetReadOnly
838デフォルトの名無しさん:2006/08/21(月) 16:39:19
>>836さん
その定数を使う関数も教えて頂けますか?
839デフォルトの名無しさん:2006/08/21(月) 16:42:52
>>838
MSDNで調べろ
840デフォルトの名無しさん:2006/08/21(月) 23:28:10
>>838
"EM_SETREADONLY"でぐぐれば、使用例がある。ちょっとしたことはホント便利になった。
841デフォルトの名無しさん:2006/08/22(火) 00:18:33
visual studio 6.0 Enterprise Editionをインストールしています。
Disc2,Disc3って何に使うかご存知な方おりましたら、
ご教授願います。
842デフォルトの名無しさん:2006/08/22(火) 00:23:04
>>841
中身見てみれば?
843デフォルトの名無しさん:2006/08/22(火) 00:32:18
なんかファイルがいろいろ入ってるってことはわかるんですが・・・。
セットアップファイルのEXEも起動しないですし・・・。
844デフォルトの名無しさん:2006/08/22(火) 00:44:20
MSに訊け
845デフォルトの名無しさん:2006/08/23(水) 01:12:02
GDI+使うとき、リソースに入れたbitmapを読み込むのどうすればいいですか?

CPaintDC dc;
Graphics graphics(dc.m_hDC);
Bitmap* bmp = new Bitmap(IDB_BITMAP1); ←これどうにかしたい
graphics.DrawImage( bmp, 0, 0 );
846デフォルトの名無しさん:2006/08/23(水) 01:14:42
VC++.net2003を使用し、Windowsアプリケーションを作成しています。
OSは、WindowsXPです
ログインユーザーの違いによりエラーが出てこまっています。

1、管理者権限でログインした場合
・EXE実行(Releseで作成したもの)すると、正常に動作します。

・ソース実行(DEBUG)しても正常に動作します。

2、一般ユーザー(制限ユーザー)の場合、
・EXE(Releseで作成したもの)をクリックしたとたんに
"初期化に失敗しました。アプリケーションエラー (0xc0000022)"の
Windowsエラーが発生し、起動さえできません。

・ソース実行でも(DEBUG)、初期化に失敗しましたと出て、
落ちている個所さえ特定出来ません。そもそも、ソースが実行できていない感じです。

DLLの読み込み等で失敗しているのでしょうか?
ちなみにWindows2000でも同じ現象が発生しました。

普段開発は、管理者権限で行っていますが、
実際動作させるのは制限ユーザーです。
何が影響しているのか、わかりません。

管理者権限でうまく動作しているのでソース自体には問題がないと思われるのですが。。。
アクセス権限等関係あるのでしょうか?

どなたかご存知の方、解決方法を教えてください。
847デフォルトの名無しさん:2006/08/23(水) 02:04:17
>>845
インスタンスハンドルとリソース名(or ID)を指定するコンストラクタがある。
http://windowssdk.msdn.microsoft.com/en-us/library/ms536317.aspx

ところでBitmapをnewで動的に作る必要ある?
848デフォルトの名無しさん:2006/08/23(水) 02:48:10
>>847

実際のプログラムだとRenshuGDIPlusってクラスに

Bitmap* m_resourceBitmap;

ってメンバ用意してます。
コンストラクタでリソースからBitmapクラス作ろうとしてるので
さっきの例ではnewしてたのです。

実際RenshuGDIPlusコンストラクタで

HINSTANCE hInst = GetWindowLong( this->m_hWnd, GWL_HINSTANCE );
m_resourceBitmap = new Bitmap( hInst, IDB_BITMAP1 );

ってやったらコンパイラからお母さん許しませんって出ました。orz
849デフォルトの名無しさん:2006/08/23(水) 05:52:01
>>847
ありがとう、解決しました。

@
 m_resourceBitmap = new Bitmap( hInst, (WCHAR*)MAKEINTRESOURCE(IDB_BITMAP1) );
@'
 m_resourceBitmap = new Bitmap( hInst, (WCHAR*)IDB_BITMAP1 );

@と@'のどちらでもできました。
850デフォルトの名無しさん:2006/08/23(水) 08:24:51
>>848
どうせデストラクタでdeleteするのだろう。ならやはりポインタにする必要ない。
普通にコンストラクタの初期化リストで初期化すればいいだけではないか。

>>849
MAKEINTRESOURCEW使えばキャスト不要。
851デフォルトの名無しさん:2006/08/23(水) 09:24:16
はじめまして
学校でVCを使用する事になったのですが、
852デフォルトの名無しさん:2006/08/23(水) 09:42:41
>>851
そうですか。
それで何か質問でもおありで?
853デフォルトの名無しさん:2006/08/23(水) 22:35:12
*(アスタリスク)っていうのはポインタを表す時に使われるみたいですが、
変数に対して左に書くような、本にありました。
例えば、変数aに対して、ポインタは*a。(aの左に書いてる)

勉強していて、この*が変数の右に来ることがあるみたいですが、
どういう意味なのかわかりません。

void RenderObject(void *p_void)
{
  struct Object *p=(struct Object *)p_void;

などと本にあって、         ↑この*の
使い方ってどういう意味なのでしょうか?

質の低い質問で申し訳ないですが、よろしくお願いします。
854デフォルトの名無しさん:2006/08/23(水) 22:55:34
855デフォルトの名無しさん:2006/08/23(水) 23:12:54
>>853
キャスト
856デフォルトの名無しさん:2006/08/24(木) 00:02:33
855さん、即レスありがとうございます。
ぐぐって調べます。m(_ _)m
857デフォルトの名無しさん:2006/08/24(木) 00:56:27
どう見ても"変数"の右には来ていない。
858855:2006/08/24(木) 01:03:21
見直したらレスの内容がずれてたかも

int *p;
とした時、pの型は int * で
この*は型がポインタであることを表している

んで
(struct Object *)p_void
はp_voidの型をObjectのポインタにキャスト(型変換)してる
859デフォルトの名無しさん:2006/08/24(木) 01:06:10
vcと関係ないw
860デフォルトの名無しさん:2006/08/24(木) 06:38:14
俺の人生もキャストしたいんですが何か?
861デフォルトの名無しさん:2006/08/24(木) 07:13:17
別に、何も
862デフォルトの名無しさん:2006/08/24(木) 08:14:44
>>860
アクセス違反
863デフォルトの名無しさん:2006/08/24(木) 10:15:25
>>860
static_castしようとしたら面接で落とされ
dynamic_castしたら警察に通報され
やけくそになってreinterpret_castしたら殺された

そんな人生。
864デフォルトの名無しさん:2006/08/26(土) 03:06:12
SDIのCMainFrameにOnCreateClientをオーバーライドして、
スプリッタウインドウ作り左右にFormViewを配置しました。
左のViewにはボタンコントロールが2つ。

 ───────────────────────────
│                          ×│
 ───────────────────────────
│       │                   │
│       │                   │
│ ボタン1  │                   │
│       │                   │
│ ボタン2  │                   │
│       │                   │
│       |                   │
│       |                   │
│       |                   │
│       |                   │
 ───────────────────────────

ボタンコントロールで右のViewを切り替えたい場合は
どうやればいいのでしょうか?
スプリッタ使う場合の右のViewを複数作る時点から壁にぶつかってしまいました。
865864:2006/08/26(土) 03:07:10
AAは次からやめとこう・・・
866デフォルトの名無しさん:2006/08/29(火) 09:10:42
VC++なら、練習の叩き台がありそうだ。

http://www.bosuke.mine.nu/blog/archives/2005/07/post_214.php
外道ソフト 「アマゾン殺し」
(VC++によるソースもあるようで。自己責任にてドーゾ)
867デフォルトの名無しさん:2006/08/29(火) 11:57:43
質問です。
今日インターンシップの事前研修にいったら「開発はVisualC++を使ってる(結構うろ覚え)」といわれました。
だけどボクのパソコンはmac…本格的なインターンシップは来週からなんですが独学でVisualC++を勉強したいんです。
macでのVisualC++を勉強する環境は無いでしょうか?
868デフォルトの名無しさん:2006/08/29(火) 12:03:33
macで仮にVC++が動いたとしても
exeを実行できないから意味が無い。
869デフォルトの名無しさん:2006/08/29(火) 12:05:14
VCじゃないと駄目なら何らかの方法でWindowsを動かすしかないわな。
870デフォルトの名無しさん:2006/08/29(火) 12:08:55
今更始めても遅い、とか酷いことを言ってみる。
macで何かしらプログラム組んでたなら、大丈夫じゃね?
871デフォルトの名無しさん:2006/08/29(火) 12:10:49
MacならEclipseでjavaとかやっとけば良いような
872デフォルトの名無しさん:2006/08/29(火) 12:27:22
Winマシンなんて3万もあれば中古でそれなりのがあるじゃん
873デフォルトの名無しさん:2006/08/29(火) 13:04:17
我が社では一万円以下の中古NotePCを取り扱っております。
874デフォルトの名無しさん:2006/08/29(火) 14:17:22
マジか!動作確認の為に3万でWin2000マシンかったのにx
875873:2006/08/29(火) 14:38:27
正直、素人にはお勧めできない。
#知っている人は知っている、車の名前みたいな店名だw
876デフォルトの名無しさん:2006/08/29(火) 19:19:26
メニューバーを作ろうとすると、リソースヘッダの部分で、
\resource.h() : fatal error RC1004: unexpected end of file found
というエラーが出るんですがどうしてでしょうか・・・。
877デフォルトの名無しさん:2006/08/29(火) 20:36:30
>>876
RC1004 でググろうとか思わないのかい?
878デフォルトの名無しさん:2006/08/29(火) 21:24:21
プログラムでマウスの座標を変化させるにはどうすればよろしいでしょうか。
879デフォルトの名無しさん:2006/08/29(火) 21:45:09
SetCursorPos
880デフォルトの名無しさん:2006/08/29(火) 23:29:20
SDKは少し分かるのですが、MFCは全くの初心者です。
試しにボタンを押すとメッセージボックスが出るようにしようと
思ってMessageBox()を使ってみたら、エラーが出てコンパイル
出来ません。

少し分かる人に聞いたところ、CWnd::MessageBox が呼び出されている
ためとのことですが、SDKの(?)のMessageBox() を呼び出すには
どの様に記述すれば良いのでしょうか?
881デフォルトの名無しさん:2006/08/29(火) 23:33:18
::MessageBox()
882デフォルトの名無しさん:2006/08/29(火) 23:35:05
>>881
それでいけるんですか。
ありがとうございます。

afxMessageBox()は知っていたのですが、引数が違うし
しっくりこないなと思っていたんです。
883デフォルトの名無しさん:2006/08/29(火) 23:38:48
MFCやる前にC++勉強した方がいいよ
884デフォルトの名無しさん:2006/08/29(火) 23:56:00
んーまあMFCやりながらC;;勉強してもいいし
885デフォルトの名無しさん:2006/08/30(水) 01:13:27
void Draw(void)
{
//フレームレートを60にする
static DWORD NowTime,PrevTime;
NowTime = timeGetTime();
if( (NowTime - PrevTime)<1000/60 )return;
PrevTime = NowTime;

//以下いろんな処理
}

int WINAPI WinMain()
{
//いろんな処理
while(1){
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
if(!GetMessage(&msg,NULL,0,0))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}else{
Draw();
}
}

//いろんな処理

}
886デフォルトの名無しさん:2006/08/30(水) 01:14:16
885の続き

と、ある書籍にサンプルコードがあったんですが、
PrevTime という変数は初期化もされずに使われています。
また、PrevTime = NowTime としてるんですが、
PrevTime も NowTime もDrawのローカル変数なので、
ループでDrawを呼び出す毎に変数PrevTimeとNowTimeは破棄されるから、
なんの意味もないような感じに見えるのですが・・・

この書き方じゃ、秒間60フレームにするって動作は満たせませんよね?
グローバルで宣言しないと期待の動作はしませんよね?  
887デフォルトの名無しさん:2006/08/30(水) 01:24:37
staticについて勉強してくるのがよろしいかと。
888デフォルトの名無しさん:2006/08/30(水) 01:25:24
static
889デフォルトの名無しさん:2006/08/30(水) 21:20:42
>887 888
的確なご回答ありがとうございました。
890デフォルトの名無しさん:2006/08/30(水) 21:57:02
C++/CLI入門
具具ってもなさそう
891デフォルトの名無しさん:2006/08/30(水) 22:25:27
MFCのリストビューを使っています。
リストビューのアイテムをクリックして編集しようとしています。
CListCtrl::EditLabel で編集出来るのは分かっているのですが、
一列目しか編集出来ません。

二列目以降を編集したい場合、エディットボックスを手動で
貼り付けるしかないのでしょうか?
その場合、エディットボックスに与えるべきサイズと位置は
どのようにして取得すればよいのでしょうか?
892デフォルトの名無しさん:2006/08/31(木) 00:01:10
>>891
そういうことをやった例がCodeGuruにいくつかある。
但し、高機能すぎて何をやっているのかよく判らない例と低機能で見栄えが悪い例に大別される。
まぁ、丹念に探せばそれなりのが見つかると思う。
893デフォルトの名無しさん:2006/09/02(土) 09:41:22
VC++で、ATMの画面見たくタッチパネル方式で、全画面表示&画面遷移する
アプリケーションを作りたいのですが簡単な方法はないでしょうか?
894デフォルトの名無しさん:2006/09/02(土) 09:45:13
>>893
高速道のSAや駅などにある情報端末の多くが極普通にVC++で作られている。
#只のCGIなのも多いけど。
それらは大抵、マウスの代わりにタッチスクリーンを使っているだけだ。

結論:
作るだけなら普通のアプリを作るのと変わらない。
895デフォルトの名無しさん:2006/09/02(土) 09:51:55
>>894
ありがとうございます。
タッチパネル方式というのは比喩でして、要は画面遷移をさせたいのです。
今までダイアログベースのアプリケーションしか作ったことなくて
この辺の知見がないのです。イメージとしてはSDIのクライアント領域に
コントロールが並んでいて「進む」ボタンを押すごとに画面がどんどん
切り替わっていくみたいなイメージです。。。
896デフォルトの名無しさん:2006/09/02(土) 09:54:15
>>895
つ[flash]
つ[dhtml]
897デフォルトの名無しさん:2006/09/02(土) 10:29:12
プロパティシートでウィザードにする
MFCならCPropertySheet
898デフォルトの名無しさん:2006/09/02(土) 11:07:16
同じソースから静的ライブラリ (libxxx-static.lib)と
DLL(libxxx.dll とそのインポートライブラリ libxxx.lib)
を生成するとき、それぞれのプロジェクトに同じように
ソースファイルを追加しますよね?

あるオープンソースのライブラリのソースツリーを
眺めていたら、*.cpp と *.h は静的ライブラリの方にだけ
加えれていて、動的ライブラリは依存関係で静的ライブラリ
に依存するように設定してあとはモジュール定義ファイル
libxxx.def が一つだけ追加されていたのですが、
このような方法で DLL を生成することができるのでしょうか?
899デフォルトの名無しさん:2006/09/02(土) 11:08:45
>>896
>>897
ありがとうございます。
勉強してみます。
900デフォルトの名無しさん:2006/09/02(土) 12:47:56
>>898
できる。所詮静的ライブラリはオブジェクトファイルを固めただけのようなもの。
OBJが全く無く、LIBだけでもEXE/DLLは作れる。
901デフォルトの名無しさん:2006/09/02(土) 14:08:09
>>900 マジスカ。
つーことは特に最適化とかを変えるわけじゃなければ、
まず静的なライブラリを作って、それを DLL に
変換できるってことっすか??

マジカヨとおもって >>898 で言及したライブラリを
ビルドしてみたら、DLL 用のプロジェクト
(これ自体にはモジュール定義ファイル libxxx.def
しか含まれてないけど、静的なライブラリのプロジェクト
に依存してる)からはなんにも生成されませんでした orz
902デフォルトの名無しさん:2006/09/02(土) 14:28:54
>>895
ShowWindow(SW_HIDE);
ShowWindow(SW_SHOW);
903デフォルトの名無しさん:2006/09/02(土) 18:18:27
.NET2003と2005で、一体ナニが変わったんですか?
904デフォルトの名無しさん:2006/09/02(土) 18:23:43
もっさり
905デフォルトの名無しさん:2006/09/02(土) 19:54:40
>>904 同じソースを同じ最適化オプションでコンパイルしても
できたアプリを実行すると 2005 の方が遅くなってるのは、
やっぱりマルチスレッド用のランタイムしか提供されて
いないからですか?
906デフォルトの名無しさん:2006/09/02(土) 19:58:07
以前のでシングルスレッド、マルチスレッド用のランタイム使って調べろ!
907デフォルトの名無しさん:2006/09/02(土) 20:00:49
>>905
一番モッサリしたのはIDEだがな。
908デフォルトの名無しさん:2006/09/02(土) 22:35:00
C:\Documents and Settings\Administrator\デスクトップ\test.txt

C:\\Documents and Settings\\Administrator\\デスクトップ\\test.txt
のように変換するAPIみたいなのってありますか?

GetSaveFileName関数などで取得したファイルパス名で
fopenしたいのですが
909デフォルトの名無しさん:2006/09/02(土) 22:37:18
>>908
君は何か勘違いしてる
910デフォルトの名無しさん:2006/09/02(土) 22:39:19
ソースに記述するときは、\は\で表せないから\\と記述するだけだから、
配列に入ってるものを変換してやる必要はない。
911デフォルトの名無しさん:2006/09/02(土) 22:42:53
>>908
つ エスケープシーケンス
912911:2006/09/02(土) 22:44:18
勢いで書いた、今はヌコと遊んでいる
913908:2006/09/02(土) 23:07:49
ああ、俺の勘違いでしたorz
ということは、GetSaveFileNameで取得したファイル名で
fopenが失敗するのは、別の原因があるってことでしょうか・・
俺の脳みそでは他に原因が思いつかないorz
914デフォルトの名無しさん:2006/09/02(土) 23:14:11
ソース
915デフォルトの名無しさん:2006/09/02(土) 23:17:31
fopenじゃなくてapi使えば無問題
916908:2006/09/02(土) 23:19:43
ソースの一部です
OPENFILENAME ofn;
HANDLE hFile;
DWORD dwAccBytes;
char buf[MAX_BUF_SIZE];
char szFileName[255]="kakikomi.txt";
char szFile[255]="test";
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hWnd;
ofn.lpstrFilter = "text(*.txt)\0*.txt\0All files(*.*)\0*.*\0\0";
ofn.lpstrFile = szFileName;
ofn.lpstrFileTitle = szFile;
ofn.nFilterIndex = 1;
ofn.nMaxFile = sizeof(szFileName);
ofn.nMaxFileTitle = sizeof(szFile);
ofn.Flags = OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
ofn.lpstrDefExt = "txt";
ofn.lpstrTitle = "名前を付けて保存";

if(GetSaveFileName(&ofn) == 0)
return -1;
hFile = CreateFile(szFileName, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
strcpy(buf,szFileName);
FILE *fp;
fp=fopen(buf,"wb");
if(fp==NULL){
MessageBox(NULL,"ファイル作成失敗",buf,MB_OK);
return -1;
}
917908:2006/09/02(土) 23:24:13
>>915
apiというと、WriteFileとかでしょうか
シリアライズで保存したかったのですが
fwriteを利用する方法しか知らないもので・・
918デフォルトの名無しさん:2006/09/02(土) 23:32:24
なんでCreateFileしてからfopenしてるわけ?
先にCreateFileすると、CloseHandleするまでは、そのファイルを
ロックするわけで、後からきたfopenで開けないのは当然の話。
919908:2006/09/02(土) 23:35:20
>>918
それには気づきませんでした
早速CreateFileをコメントアウトしたら動きました
ありがとうございました!
920デフォルトの名無しさん:2006/09/02(土) 23:36:09
ネット上のRSSのXMLってInternetReadFileで普通に読めますか?
921デフォルトの名無しさん:2006/09/02(土) 23:36:50
関係ないけどstrcpyも無駄で気持ち悪い
922908:2006/09/02(土) 23:43:35
>>921
どうもっす、削除しました
923デフォルトの名無しさん:2006/09/03(日) 04:17:38
日付の差を求めるような関数を書こうと思っているんですが
そういった機能が実装されているクラスとかって標準でありますか?

無ければSYSTEMTIME構造体のメンバを比べて
作ろうと思ってます
924923:2006/09/03(日) 06:33:00
http://hp.vector.co.jp/authors/VA016117/date.html
このページを参考に自作して解決しました


925デフォルトの名無しさん:2006/09/03(日) 10:39:05
>>923
CTimeは?
926デフォルトの名無しさん:2006/09/03(日) 11:22:34
CDiffTimeだかCTimeDiffだか、CTimeの差分用のクラスもあった希ガス。
927デフォルトの名無しさん:2006/09/03(日) 11:32:15
CTimeSpan
928デフォルトの名無しさん:2006/09/03(日) 20:01:11
    _, ,_  スパーン
  ( ‘д‘)
   ⊂彡☆ CTime ===========================)) Span
929デフォルトの名無しさん:2006/09/04(月) 14:20:07
boost って書くと
boost 厨っていわれるからやめとくよ
930926:2006/09/04(月) 14:39:08
>>928
秀逸な駄洒落THX。
これでもう、忘れないよ。
931デフォルトの名無しさん:2006/09/04(月) 23:51:22
上級者の皆さん
MFCの最小プログラムを書いて見たんですがもっと小さく出来るでしょうか?

#include <afxwin.h>
#define p public
class M:p CFrameWnd{p:M(){Create(0,"");}DECLARE_MESSAGE_MAP()};class A:p CWinApp{p:BOOL InitInstance(){M*w=new M;w->ShowWindow(m_nCmdShow);m_pMainWnd=w;return 1;}};BEGIN_MESSAGE_MAP(M,CFrameWnd)END_MESSAGE_MAP();A a;
932デフォルトの名無しさん:2006/09/05(火) 00:22:14
BOOLをintにすれば1文字減る。
933デフォルトの名無しさん:2006/09/05(火) 00:27:19
>>932
素晴らしい
それは盲点でした
934デフォルトの名無しさん:2006/09/05(火) 00:40:04
afxwin.hをa.hにリネームする又はコピーする。
935デフォルトの名無しさん:2006/09/05(火) 00:41:12
aだけでも良かったか。
936デフォルトの名無しさん:2006/09/05(火) 00:42:29
InitInstanceの中身はこういう風にできると思う。
(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);
937デフォルトの名無しさん:2006/09/05(火) 00:44:35
classをstructにすればpublicはいらなくなるね。
938デフォルトの名無しさん:2006/09/05(火) 00:50:32
>>934
リネームですか〜ちょっと反則ぎみな気もしますが一応適応
>>936
それはいけてますね

今のところ241バイト
改行コードを0dのみにするのもアリかもしれませんね

#include <a>
#define p public
class M:p CFrameWnd{p:M(){Create(0,"");}DECLARE_MESSAGE_MAP()};class A:p CWinApp{p:int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};BEGIN_MESSAGE_MAP(M,CFrameWnd)END_MESSAGE_MAP();A a;
939デフォルトの名無しさん:2006/09/05(火) 00:53:48
>>937
!!!素晴らしい 217バイト

#include <a>
struct M:CFrameWnd{M(){Create(0,"");}DECLARE_MESSAGE_MAP()};struct A:CWinApp{int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};BEGIN_MESSAGE_MAP(M,CFrameWnd)END_MESSAGE_MAP();A a;
940デフォルトの名無しさん:2006/09/05(火) 00:56:02
個人的にはCR ('\x0d', '\r')よりはLFの方がいいな。

ところでこういうことはできるか?
#define m(p) p##_MESSAGE_MAP
struct M:CFrameWnd{M(){Create(0,"");}m(DECLARE)};struct A:CWinApp{int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};s(BEGIN)(M,CFrameWnd)s(END)();A a;
941デフォルトの名無しさん:2006/09/05(火) 01:01:54
CFrameWndから派生させる必要はあるのかな?
CFrameWndを直接newするのは?
942デフォルトの名無しさん:2006/09/05(火) 01:06:14
>940
発想は素晴らしいし、コンパイルも通りますが残念ながらサイズは増えてしまいました 222バイト
#include <a.h>
#define d(x) x##_MESSAGE_MAP
struct M:CFrameWnd{M(){Create(0,"");}d(DECLARE)()};struct A:CWinApp{int InitInstance(){(m_pMainWnd=new M)->ShowWindow(m_nCmdShow);return 1;}};d(BEGIN)(M,CFrameWnd)d(END)();A a;
943デフォルトの名無しさん:2006/09/05(火) 01:25:49
派生をやめてメッセージマップを削除しました158バイト

#include <a.h>
struct A:CWinApp{int InitInstance(){((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,"");m_pMainWnd->ShowWindow(m_nCmdShow);return 1;}};A a;
944デフォルトの名無しさん:2006/09/05(火) 01:29:52
警告レベルの設定でC++でも暗黙のintを使えるようにするコンパイラオプションがあった気がする。
945デフォルトの名無しさん:2006/09/05(火) 01:36:29
>>944
頂きました /W4に変更することで154バイト

#include <a.h>
struct A:CWinApp{InitInstance(){((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,"");m_pMainWnd->ShowWindow(m_nCmdShow);return 1;}};A a;
946デフォルトの名無しさん:2006/09/05(火) 01:39:01
ちょっと修正 153バイト

#include <a.h>
struct A:CWinApp{InitInstance(){((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,0);m_pMainWnd->ShowWindow(m_nCmdShow);return 1;}};A a;

すいません、そろそろ仕事に戻ります
スレ汚しスイマセンデシタ
947デフォルトの名無しさん:2006/09/05(火) 01:39:51
CFrameWnd*へのキャストは消せないのか?
948デフォルトの名無しさん:2006/09/05(火) 01:43:25
>>947
CWndのCreateに、引数2個が無いため無理です

ああ、明日締め切りなのに遊んでしまったww
949デフォルトの名無しさん:2006/09/05(火) 01:56:01
{((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,0);return!m_pMainWnd->ShowWindow(m_nCmdShow);}

あとはm_nCmdShowを諦めて、直接5 (SW_SHOW)か何かを指定するくらいしか思いつかない。
950デフォルトの名無しさん:2006/09/05(火) 02:02:31
これを思いついたが、できるかどうかはわからない。
{return((CFrameWnd*)(m_pMainWnd=new CFrameWnd))->Create(0,0,0x10CF0000);}
0x10CF0000はWS_OVERLAPPEDWINDOW | WS_VISIBLE。
951デフォルトの名無しさん:2006/09/05(火) 02:06:23
struct A:CWinApp{InitInstance(){return((CFrameWnd*)(m_pMainWnd=new CFrameWnd))

->Create(0,0,0x10CF0000);}}a;
aの部分、エラーはおろか/W4でも警告にならなかった。
952デフォルトの名無しさん:2006/09/05(火) 02:29:22
>>951
まだやってましたか!大分小さくなりましたね
struct {} a;はC言語の基礎中の基礎ですね
WindowStyleにWS_OVERLAPPEDWINDOW|WS_VISIZBLEもSDKだと基本ですね
showwindowに戻り値があることもすっかり忘れてました
いい勉強になりました
953デフォルトの名無しさん:2006/09/05(火) 16:41:04
それがC++では、型の宣言と同時に変数や関数の宣言ができなくなっていたような気がしたんだ。
954デフォルトの名無しさん:2006/09/05(火) 20:02:46
Visual Studio C++ 2005 Express EditionでC/C++の勉強をするとしたら、
お勧めの書籍はありますか?Visual Studioを使うのはこれが初めてです。
955デフォルトの名無しさん:2006/09/05(火) 20:15:13
本当にC/C++の勉強?
MFCとかDirectXとか.NETとかのC++以外の部分じゃなくて?
本当にC++なら「プログラミング言語C++ 第三版」で鉄板。
956デフォルトの名無しさん:2006/09/05(火) 20:25:52
>>955
レスありがとうございます。
C++の言語部分はおっしゃる書籍を使おうと思っているのですが、
Visual Studio自体の使い方(デバッカなど)で分かりやすい
お勧めがあればなぁ、と。
957デフォルトの名無しさん:2006/09/05(火) 21:47:57
そこまで初心者なら本じゃなくて学習ソフトでも使ったら?
958デフォルトの名無しさん:2006/09/05(火) 22:17:18
なるほど学習ソフトですか。調べてみます。Thx。
959デフォルトの名無しさん:2006/09/06(水) 14:31:45
for の初期化部分で二つ以上の変数を宣言 & 初期化したいのですが。
for 中でしか必要のない変数を for 文のスコープ外で見せたくないので。
for 文の外で宣言してさらにそれをブロックで囲めとかですか?普通。
960デフォルトの名無しさん:2006/09/06(水) 14:50:13
カンマ
961デフォルトの名無しさん:2006/09/06(水) 14:53:47
>>960 二つ以上の変数の型が違うのです。
for の中で unsigned 一つと char 一つ使いたいので。
962デフォルトの名無しさん:2006/09/06(水) 15:23:39
教えてやるんじゃなかった
Cスレで聞け
963デフォルトの名無しさん:2006/09/06(水) 15:26:13
> 普通
適切な変数名をつければ(そしてコードが長ければ適切に関数に分けていけば)
for の外で宣言しても混乱なくコードが書けると思いますぜ。
== 外で宣言しても気にしない。

まぁ 「普通」 なんて人によって違ってくるから1つの意見として。
964デフォルトの名無しさん:2006/09/06(水) 22:15:34
ブロック作ればいいじゃん
965デフォルトの名無しさん:2006/09/07(木) 01:15:16
GDI+ と、libpngで、PNGファイルを作成しましたが、
圧縮後のファイルサイズを比較したところ、
libpngの方がかなり小さくなります。

libpng は、圧縮レベルを設定できるのですが、
GDI+では、該当するパラメータを見つけられません。

本当は、GDI+で楽をしたいので、
GDI+での圧縮レベルの設定法を教えてください。

ちなみに、テストに使用しているのは、デスクトップを
キャプチャした画像です。
966デフォルトの名無しさん:2006/09/07(木) 05:25:57
>>965
pngの圧縮レベルはサイズに余り影響しないと思うのだけどね。
もしや、GDI+は32ビットカラー、libpngは8ビットカラーなんてことはない?
967デフォルトの名無しさん:2006/09/07(木) 06:25:59
メタデータが含まれてたりとかな
968965:2006/09/07(木) 07:45:04
>>966
出来上がったファイルを右クリックしてプロパティで
確認した限りでは、両方とも8ビットカラーと表示されてます。

圧縮後のサイズは1割程度の差がつくようです。
GDI+使用時 45k
libpng使用時 39k

>>967
メタデータは意識していませんでした。
確認してみます。
969デフォルトの名無しさん:2006/09/07(木) 17:23:56
ダイアログベースのソフトを作っています.
ボタンやコンボ,picture boxを配置しています.

いま,矢印キーを押すと,pictureに表示している内容を変えたいと思っています.
OnKeyDown(nChar ,...)で
if(nChar == 0x025) hogehoge();
としていますが,これではhogehogeが呼び出されません.
ボタンへのフォーカスが動くだけです.
どうしたら,hogehogeを呼び出すことができるのでしょうか?
970デフォルトの名無しさん:2006/09/07(木) 18:15:35
>>969
PreTranslateMessage()で拾ってみたら?
971969:2006/09/07(木) 18:41:23
できました! ありがとうございました
972デフォルトの名無しさん:2006/09/08(金) 18:39:58
質問させてください
Escapeキー→プログラムを終了
Tabキー→ボタンのフォーカス移動
の両立がしたいのですが、うまくいきません

現在、ウィンドウクラスをwc.cbWndExtra = DLGWINDOWEXTRAにして
CreateWindowで作ったトップウィンドウにボタンを2個配置しています

メッセージループで
while (GetMessage(&msg, NULL, 0, 0)) {
 if(!IsDialogMessage(hWnd,&msg)){
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
}
このように記述するとフォーカス移動はできますがESCAPEはうまく動かず
逆にisDialogMessageの記述をなくすとESCAPEはOKですが
フォーカス移動がダメという状態です

メッセージループの書き方が悪いような気がするのですが
そもそも作り方自体が変なのでしょうか
973デフォルトの名無しさん:2006/09/08(金) 18:53:52
猫にでも行ってメッセージループについてが上のほうに書いてあるよ
974デフォルトの名無しさん:2006/09/08(金) 18:59:16
自分でmsgの中味みりゃいい
975972:2006/09/08(金) 19:38:26
>>973,974
回答ありがとうございます
一応、各関数については調べました

msgの中身の見方というのは良くわからないのですが
while (GetMessage(&msg, NULL, 0, 0)) {
if(msg.message==WM_KEYDOWN){
if(msg.wParam==VK_ESCAPE)
MessageBox(NULL,"vkescape","",MB_OK);
}
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

こういったプログラムを実行してみたところ
VK_ESCAPEの入力自体はあるようです

ちょっと、質問の仕方が下手だったので整理して
もう一度質問質問させてもらいます
976972:2006/09/08(金) 19:52:58
972のプログラムのhWndは、
猫でもわかるプログラミングののSDK編のイントロダクションのサンプルで
wc.cbWndExtraの値を0からDLGWINDOWEXTRAにだけ変更して作成したウィンドウの
ウィンドウハンドルです
そして
CreateWindow(
TEXT("BUTTON") , TEXT("ボタン1") ,
WS_CHILD | WS_VISIBLE | WS_BORDER| WS_TABSTOP|BS_PUSHBUTTON ,
0 , 0 , 0 , 0 ,hWnd , (HMENU)100 , hInstance , NULL);
こういう感じでボタンを2つ配置しているのですが

メインのhWndをダイアログかつ、通常のウィンドウとして
扱うのは変だろうかというのが疑問点です

つまり、プログラムとしては
リソーススクリプトを作ってそこにボタンを配置して
CreateDialogでhWndを親とするダイアログをつくり

while (GetMessage(&msg, NULL, 0, 0)) {
 if(!IsDialogMessage(hWndDialog,&msg)) //←hWndからhWndDialogに
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
}
こういうループにしたほうが良いでしょうか
977972:2006/09/08(金) 20:19:44
すみません、解決しました^^;
メッセージ処理はメッセージループの中でしなければだめと
思い込んでいました

while (GetMessage(&msg, NULL, 0, 0)) {
 if(msg.message==WM_KEYDOWN){
  if(msg.wParam==VK_ESCAPE){
   PostQuitMessage(0);
  }
 }
 if(!IsDialogMessage(hWnd,&msg)){
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
}
978デフォルトの名無しさん:2006/09/08(金) 23:50:51
MFCで同じようなダイアログを複数作ろうと思っています。
共通の処理は一つにまとめたいので、CDialogを継承した
自前のクラスを作り(CMyDialogとします)、このCMyDialogを
継承してそれぞれのダイアログに対応したクラスを作りたいと
考えています。

しかし、クラスウィザードでダイアログに対応したクラスを作ろうと
すると、”MFCクラス”しか選べず、自前のクラスは選べません。

この様にCDialogをそのまま使わずに継承してから使いたい
場合はどうすればいいのでしょうか?
979デフォルトの名無しさん:2006/09/09(土) 00:20:10
どうでもいいけどそのメッセージループやめれ。推奨されてない。
980デフォルトの名無しさん:2006/09/09(土) 00:38:11
>>978
クラスウィザードで作った後、自前で変えることは可能だが。
981デフォルトの名無しさん:2006/09/09(土) 00:56:47
>>980
そうなんですか?
クラスウィザードでとりあえずCDialogベースに作っておいて、その後に
手動編集で自前のクラスを継承させてもそのまま使えるのでしょうか?

その場合、編集するのは
Class MyClass : public CDialog

のCDialogを書き換えるだけで良いのでしょうか?
また、その後にクラスウィザードでメッセージ対応させた関数を作っても
そのまま使えるのでしょうか?
982972:2006/09/09(土) 02:30:55
>>979
どの部分が推奨されてないのでしょうか
GetMessageの直後?
後はフックでもできそうだということはわかったんですが
フックは一歩間違うと致命的らしいので怖いです

ttp://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200303/03030095.txt
ダイアログを表示するDLLでキー入力
983デフォルトの名無しさん:2006/09/09(土) 09:25:17
>>981
他にもいくつか書き換える場所あるよ。メッセージマップとか。
984デフォルトの名無しさん:2006/09/09(土) 11:48:01
>>981
>while (GetMessage(&msg, NULL, 0, 0)) {
ここじゃね?
エラー発生時に-1を返すとかだっけ?
GetMessageをMSDNで調べてみな。
985972:2006/09/09(土) 15:46:28
>>984
多分私へのレスですよね?
MSDNにはGetMessageはWM_QUITのときのみ0
エラーが出たときは-1を返すと書いてありました
WEBにあるメッセージループはほとんどwhile(GetMessage)の形式なので
全く気づきませんでした!とても参考になりました

こんな感じに書き直してみました

int getmessage_return_value;
while(TRUE){
Getmessage_return_value=GetMessage(&msg,NULL,0,0);
if(getmessage_return_value!=0 && getmessage_return_value!=-1){
if(msg.message==WM_KEYDOWN&&msg.wParam==VK_ESCAPE)
PostQuitMessage(0);
if(!IsDialogMessage(hWnd,&msg)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
else{
break;
}
}
986デフォルトの名無しさん:2006/09/09(土) 23:30:34
プログラムって英語とか数学とか分かってないときついですか?
誰か教えてください
987デフォルトの名無しさん:2006/09/09(土) 23:38:13
英語
マニュアルを読む際に日本語のものが無いまたは役に立たない場合など
英語のソースにあたることが多いので英語力は無いよりはあった方が有利

数学
基本的には論理的思考が出来れば良い
開発にかかわるプログラムの内容によっては数学の知識や物理の知識が必要
988デフォルトの名無しさん:2006/09/09(土) 23:38:56
>>986
数学は分野によるのでは?
英語は分かるにこした事はないけど、普通に書く分には簡単な単語が分かれば十分でしょ。
あとプログラム書いてて思ったのは、文章の構成能力というか、
文章を纏めるのが上手い人が書いたプログラムってのは凄く読みやすいと思ったよ。
989デフォルトの名無しさん:2006/09/09(土) 23:54:58
ネタ抜きで俺九九とか割り算までしか出来ないんですけど
プログラム組めますか?
990デフォルトの名無しさん:2006/09/10(日) 00:02:52
計算はCPUがやってくれるから
991デフォルトの名無しさん:2006/09/10(日) 00:04:58
>>989 == >>986 かな?
英語や数学うんぬん言う前に
ひとの意見に耳を傾ける能力も必要だよ
992デフォルトの名無しさん:2006/09/10(日) 00:05:56
>>989
マジレスすると、計算が苦手でも式さえ考える力があれば
計算系のプログラムもある程度は書けると思うよ。
計算するのはコンピュータだからね。
まぁ要は君の頑張り次第じゃないのかな?
まだ若いのなら今から色々本見るなり、ネットで調べるなりして頑張って勉強するといいよ。
993デフォルトの名無しさん:2006/09/10(日) 00:06:44
次スレいらないよね?
994デフォルトの名無しさん:2006/09/10(日) 00:12:57
というより、「プログラミングがやりたい!」って思って
本当に好きなら、誰がなんと言おうが頭が悪かろうがその気持ちを抑えられないでしょ、普通。
おれなんかは、決して頭も良くないし、プログラムもあまり上手くないと思うけど
凄く好きだから今だにやってるし、初めてコンソールで「Hello World!」って出した時なんか
言葉では言い表せない様な衝撃が身体に走ったけどな。好きならそんなもんでしょ?
995デフォルトの名無しさん:2006/09/10(日) 00:26:18
>>988

そうですかー学校でCの学習がはじまるんで
どうなんだろうと思いました。ありがとうございます。
とりあえず、英語は単語程度ならある程度分かるので頑張ってみます

>>991
自分>>986です。>>989は別の方ですね
996デフォルトの名無しさん:2006/09/10(日) 00:26:54
ここでいう若いんだったらって何歳くらいのことなの?20歳くらい?
997デフォルトの名無しさん:2006/09/10(日) 00:28:51
>>994
釣りにマジレス
998デフォルトの名無しさん:2006/09/10(日) 00:31:17
始めるのに年齢は関係ないよ
やる気の問題
ただ年取ってくると日常の雑務に煩わされて
だんだん遊んでる時間なくなってくるけどね
999デフォルトの名無しさん:2006/09/10(日) 00:33:27
プログラムが書けるというのは「○○語がしゃべれるようになる」
「○○語が書けるようになる」「筆が使えるようになる」
というのと同じようなもので、何を書くか、ということとは別問題。
1000デフォルトの名無しさん:2006/09/10(日) 00:36:47
1000ならチンコ切断
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。