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

このエントリーをはてなブックマークに追加
1誰も立てないから・・
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

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

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

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

過去スレ、関連スレなどは>>2-5
2誰も立てないから・・:2007/11/30(金) 22:41:34
Part27 ttp://pc11.2ch.net/test/read.cgi/tech/1189394427/
Part26 ttp://pc11.2ch.net/test/read.cgi/tech/1176387917/
Part25 ttp://pc11.2ch.net/test/read.cgi/tech/1168354839/
Part24 ttp://pc10.2ch.net/test/read.cgi/tech/1158296664/
Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/
Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/
Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/
Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/
Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/
Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
3誰も立てないから・・:2007/11/30(金) 22:43:07
【関連スレ】
■MFC相談室 mfc18d.dll■
http://pc11.2ch.net/test/read.cgi/tech/1185917008/l50
Win32API質問箱 Build57
http://pc11.2ch.net/test/read.cgi/tech/1189255282/l50
【C++】 DirectX初心者質問スレ Part14 【C】
http://pc11.2ch.net/test/read.cgi/tech/1182351826/l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
http://pc11.2ch.net/test/read.cgi/tech/1170338926/l50
C++相談室 part56
http://pc11.2ch.net/test/read.cgi/tech/1185377587/l50
C/C++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1188748806/l50

【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち)
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誰も立てないから・・:2007/11/30(金) 22:44:07
5デフォルトの名無しさん:2007/11/30(金) 22:53:34
Windows フォームアプリケーションのソース入りのプロジェクトフォルダを別の環境の
Visual Studio 2005 で呼び込むと、

ソース管理
! プロジェクト○○.vcprojはソース管理下に存在しているようですが、関連付けされた
  ソース管理プラグインがこのコンピュータにインストールされていません。
  このプロジェクトのソース管理は無効になります。

□次回からこのダイアログ ボックスを表示しない(D)
   [ OK ] [ ヘルプ(H) ]


と出て、その後


ソース管理 - データベースにアクセスできません
●一時的に管理なしで作業する(T)
○ソース管理の関連付けのバインドを完全に削除する(P)
   [ OK ] [ ヘルプ(H) ]


と出ます。これはどういう原因で起こっているのでしょう?
6デフォルトの名無しさん:2007/11/30(金) 22:55:00
>>5続き
この状態で、「一時的に管理なしで作業」し、コンパイルした場合、何か
実行後のファイルに影響が出ますか?
中間ファイルや実行ファイルなどのゴミが混ざっていて、実行後のファイルにはなんの影響も
ないのであれば、コンパイルに必要なファイルだけをあれば教えていただきたいです。

あるファイルはこんな感じ↓です。

└「A」フォルダ
  ├「Release」フォルダ
  │  ├BuildLog.htm
  │  ├B.obj
  │  ├A.dll.intermediate.manifest
  │  ├A.obj
  │  ├A.res
  │  ├mt.dep
  │  └vc80.idb
  ├A.vcproj.MEX.administrator.user
  ├A.vcproj.vspscc
  ├mssccprj.scc
  ├ReadMe.txt
  ├resource.h
  ├StdAfx.h
  ├vssver.scc
  ├B.cpp
  ├A.cpp
  ├A.def
  ├A.h
  ├A.rc
  └A.vcproj
7デフォルトの名無しさん:2007/11/30(金) 22:56:15
Visual C++ 2005 Express Editionを今ダウンロードして
今日から勉強しようとしたけど、コンバイルの仕方がよくわからない orz
親切な人教えて下さい
8デフォルトの名無しさん:2007/11/30(金) 23:01:49
コンバイルの仕方は俺にもワカラン。
9デフォルトの名無しさん:2007/11/30(金) 23:05:12
エディタっていうの使ってコード書いて コンパイラーとして
これをダウンロードしたのに・・・
10デフォルトの名無しさん:2007/11/30(金) 23:12:30
まず、
メニューの新規作成->プロジェクト 

VisualC++のWin32コンソール のプロジェクトを作る

プロジェクト名は、testでもaaaでもてきとうに。

ウイザードが表示されるので、完了を押す

_tmain() だけのソースが表示されるので、

int _tmain(int argc, _TCHAR* argv[])
{
    printf("へろー\n");
    getchar();
    return 0;
}

みたいにてきとうにコードを加えて、F5を押す。
ビルドするか訊いてくるので、OKでコンソール画面が開いて、文字が表示される。

11デフォルトの名無しさん:2007/12/01(土) 00:29:19
ありがとうございます。
へろーって文字が出ました、感激です

プロジェクトの中にC言語入れても、コンパイル可能ですか
12デフォルトの名無しさん:2007/12/01(土) 13:20:19
誰か・・・>>5-6をお願いしますm(__)m
13デフォルトの名無しさん:2007/12/01(土) 13:26:55
>>12
会社で書いてるソースを自宅に持ち帰ったんだろ
別にどうということもないが、バックアップとっておいて
何でも試してみる気がないとこの業界やってけんぞ
14デフォルトの名無しさん:2007/12/01(土) 16:18:18
__exceptとcatchの違いがよくわかりません教えてください
15デフォルトの名無しさん:2007/12/01(土) 16:33:12
すいません。
VisualStudo .NETでダイアログベースのC++のアプリケーションを
作ろうとしているのですがしょっぱなから躓きました。

ダイアログエディタ上にピクセルサイズ800*600のピクチャーボックスを
作りたかったのですが、VBやらVC6.0やらであったような、X,Y,Width,Heightといった
コントロールプロパティがどこにも見当たりません。
ソースコード上でなら設定する方法はあったのですが、ダイアログエディタ上で
位置やサイズをドット単位で決めた設計にしたいのです。

これらのプロパティを表示させる手段は無いのでしょうか?
また、ひょっとしてこの.NETはとてつもない地雷なんでしょうか?
(ガイドの設定ダイアログにあるヘルプボタンを押すと、表示されたヘルプと
そのダイアログの内容が全然違ってたりします。
欠陥品だとしたら酷すぎます)
16デフォルトの名無しさん:2007/12/01(土) 16:34:15
すいません情報書き忘れました。VisualStudo .NET2003です。
17デフォルトの名無しさん:2007/12/01(土) 16:41:15
ソースコード上で設計してください
18デフォルトの名無しさん:2007/12/01(土) 16:51:11
Visual C++ 2005 Express Edition を使っていますが、C言語の勉強で
コンパイラーとして使いたいのですが、C言語のプログラムをそのまま
打ち込んで、コンバイルすれば使えるかな?
getchart()という関数聞いたことないので、やはり使い方違うかなと思って
19デフォルトの名無しさん:2007/12/01(土) 16:52:56
>>15
プロパティウィンドウ?
20デフォルトの名無しさん:2007/12/01(土) 16:53:23
>>17
返答ありがとうございます。

しかしコントロールの位置プロパティが無い(ダイアログエディタで表示されない)のは
2003だけなんでしょうか?

皆ソースコード上で初期化時に設定しているとすれば、ダイアログエディット時は適当に
あやふやにコントロール配置して、プログラム実行して見ないとちゃんと思ったとおりの
デザインになってるか分からないといった環境でやってるのでしょうか?
21デフォルトの名無しさん:2007/12/01(土) 17:03:01
6.0まではゆとり用です
22デフォルトの名無しさん:2007/12/01(土) 17:03:08
VBは馬鹿でも使えるようになってるけど
VCは馬鹿には使えないようになってるということだろうな
23デフォルトの名無しさん:2007/12/01(土) 17:07:27
きっちり数字で合わせたかったらコードで指定するのが普通と思うけど
今やってみたらダイアログエディタでも微調整は可能だな
24デフォルトの名無しさん:2007/12/01(土) 17:14:03
プロではないのですが、
プロは紙や設計書上でコントロールの位置を決めたりしてるんでしょうか?

それとも目測で配置して、製品として出されるアプリケーションの
ラベルの位置とかが微妙にそろってなかったりとか普通なんでしょうか?
2514:2007/12/01(土) 17:17:18
無視すんなよ
26デフォルトの名無しさん:2007/12/01(土) 17:21:38
>>14
__exceptはWindowsの持っている構造化例外処理 (SEH)用
catchはC++例外用。
27デフォルトの名無しさん:2007/12/01(土) 17:29:12
>24
ダイアログエディタは見た目そのまんまだろ
ちゃんと見た目そろえて作れば実行した時にも見た目そろってるはず。
28デフォルトの名無しさん:2007/12/01(土) 17:34:31
>24
微妙にそろってないのはお前が馬鹿なだけ
29デフォルトの名無しさん:2007/12/01(土) 17:41:11
質問しただけで喧嘩を売られるとは思いもよりませんでしたが
答えて頂いた方々ありがとうございました。

>馬鹿とか言ってる奴
調子こいてんじゃねーぞ。ぶちまわすぞコラ。
その威勢だけはいい口ふさぎこんだろか。
30デフォルトの名無しさん:2007/12/01(土) 17:46:55
こんなこともわからないなんて
むいてないと思うよ
31デフォルトの名無しさん:2007/12/01(土) 17:50:26
メモリが "written" になることはできませんでした 
のエラーを再現したいのですが
どのようにすれば出るのでしょうかreadエラーは再現できました
32デフォルトの名無しさん:2007/12/01(土) 18:12:38
無いアドレスを指定すればいいじゃ?
33デフォルトの名無しさん:2007/12/01(土) 18:24:29
>>32
できました
ありがとうございます
34デフォルトの名無しさん:2007/12/01(土) 18:27:39
窓版segVと考えればいいのかな?
35デフォルトの名無しさん:2007/12/01(土) 23:38:43
ゲットチャートってどういう意味?
36デフォルトの名無しさん:2007/12/01(土) 23:51:11
どうも、失礼しにきました。
今、VS2005を使ってC++やVC++の勉強をしています。
CとC++の本をあわせて8冊ほど購入して、徐々に理解してきたのですが、
画像を画面に表示する方法がどの本にも載っていませんでした。
検索した結果、どうやら画像の形式や保存されているディレクトリ?を
指定して表示するような命令はないようなのですが、
ではCやC++で、どうやったら画像を表示させられるのでしょうか?
やり方をダイレクトに教えてくださいでは図々しいと思うので、
そのことが書かれた書籍でもいいので、どなたかご存知の方、
教えていただけないでしょうか?
37デフォルトの名無しさん:2007/12/02(日) 00:13:47
>>36
まずはwindowsAPIでググれ 基本的にCでwindowsを操るには難しい
HSPとかデルファイとかなら簡単にできる Cには標準で画像を操る命令は付いていない
マイクロソフトの拡張命令が必要
38デフォルトの名無しさん:2007/12/02(日) 00:24:29
39デフォルトの名無しさん:2007/12/02(日) 00:49:31
>>37さん、ググってみました。
なるほど、windowsAPIの中に画像を表示する関数があるのですね。
いやーこういう便利なものがあるのですね。
ありがとうございます。早速書籍やネットをあさってみます。
>>38さん、この更新版に画像を表示するような機能が含まれている
ということでしょうか?取り合えず確認してみます。
教えて下さってありがとうございます。
しかし、こんな素早く助かる返事が頂けるとは本当に感謝感激です。
2ちゃんでの質問はドキドキしますから、中々聞けませんでしたが、
もっと早く聞いておけばよかったと思っています。
いや本当に助かりました。お二方ありがとうございました。
40デフォルトの名無しさん:2007/12/02(日) 00:51:34
>>39
38はWindows API(とその他諸々)のリファレンス。
単なる膨大なヘルプファイルの塊。
41デフォルトの名無しさん:2007/12/02(日) 01:13:47
>>40さん、なるほど、Windows APIなどのヘルプでしたか。
それは自分にとって役に立ちます。
わざわざ教えていただきありがとうございます。
いやーこんなにいい所だったとは。助かりました。
42デフォルトの名無しさん:2007/12/02(日) 18:31:28
VC++6.0で特定のファイルだけコンパイルオプションを変更したいのですがどのようにすれば出来るでしょうか。
具体的には特定のファイルだけ/GZオプションを外したいのですが。
プロジェクトの設定で目的のファイルを選択しC/C++のタブを選択すると出来そうですが
/GZオプションを外す設定は無さげな感じ。
43デフォルトの名無しさん:2007/12/02(日) 18:54:40
特定のファイルだけコンパイルすればいい
44デフォルトの名無しさん:2007/12/02(日) 19:21:43
VC++でダイアログベースのアプリケーションを作ってます。

自動作成されたアプリケーションクラスとダイアログクラスがあり、
ダイアログクラスのOnpaintの中でアプリケーションクラスのメンバ変数を
呼ぼうとするのですが(theApp.m_a = 1;のような感じで)
ビルドするとこういうメッセージが表示されます。
「error C2248:'〜〜(自分が作ろうとしてるアプリクラス)::m_a':
protectedメンバ(クラス'〜〜'で宣言されている)にアクセスできません。

何度見てもm_aはPublicになっています。
どうすればよいのでしょうか?
45デフォルトの名無しさん:2007/12/02(日) 19:31:48
Visual C++ 2005 Express Editionを使ってC言語をコンパイルするには どうすればよろしいでしょうか?
46デフォルトの名無しさん:2007/12/02(日) 19:49:34
>>45
F5キーを押す
47デフォルトの名無しさん:2007/12/02(日) 19:53:40
たとえば expat などのライブラリですでに Windows 向けに
ビルドされているものをダウンロードすると、特に
どのバージョンの Visual C++ で使えるとは指定されておらず、
vc7, vc8, vc9 のどれからでもリンクできるようなのですが、
自分が以前 vc7 でビルドしたスタティックライブラリを
vc8 や vc9 で作成中のアプリケーションからビルドしようとすると
リンカに怒られます。

この違いはどこから来ているのでしょうか?
C++における型を含んだ名前の変換の仕方の違いとかでしょうか?
48デフォルトの名無しさん:2007/12/02(日) 21:42:03
お前がビルドしたのは、VC++7のライブラリをリンクする指定が組み込まれていて、
ほかの誰かがビルドしたのはその指定が組み込まれていないということではないだろうか。

/Zl使ってみろ。
49デフォルトの名無しさん:2007/12/02(日) 21:46:38
先生!C++的にはVC2008って何が変わったのでしょうか?
前回は標準準拠度が飛躍的にあがってたりしましたが
50デフォルトの名無しさん:2007/12/02(日) 22:16:00
vc6.0++使用してます。リンクを指定するのはどのように
すればいいのでしょうか?
51デフォルトの名無しさん:2007/12/02(日) 22:19:11
>47
DLLをリンクするためのライブラリというオチでは?
52デフォルトの名無しさん:2007/12/02(日) 23:17:46
>>49
IntelliSense が賢くなった。
53デフォルトの名無しさん:2007/12/02(日) 23:34:17
2003toolkid以降のコンパイラでドスで使えるやつありますか
54デフォルトの名無しさん:2007/12/02(日) 23:47:33
ない。
でも、Win32のコンソールアプリケーションを動かせるっていう
HX DOS Extenderならどうだろう?
やってみたことないけど。
5544:2007/12/02(日) 23:54:56
自己解決しました。
m_aはクラスビュー右クリックで出るダイアログからプルダウンでPublicとか
選択して変数名入れて追加しており、追加後にクラスビューに表示されたm_aを
右クリックしてプロパティ見てもPublicになっていました。


クラスの宣言部は以下のような感じで最初二つ目の「public:」が無い状態だったのを
なんとなく追加して見たら通りました。

class CnethackApp : public CWinApp
{
public:
CnethackApp();

// オーバーライド
public:
virtual BOOL InitInstance();

// 実装

DECLARE_MESSAGE_MAP()
// メインスクリーンクラス
public:
int m_a;
};

酷いですね。クラスビューというか.NETの開発環境って嘘付くんですね・・・。
56デフォルトの名無しさん:2007/12/02(日) 23:58:51
(pgr
AFXWIN.h:
>#define DECLARE_MESSAGE_MAP() \
>private: \
> static const AFX_MSGMAP_ENTRY _messageEntries[]; \
>protected: \
> static AFX_DATA const AFX_MSGMAP messageMap; \
> static const AFX_MSGMAP* PASCAL _GetBaseMessageMap(); \
> virtual const AFX_MSGMAP* GetMessageMap() const; \
57デフォルトの名無しさん:2007/12/03(月) 02:37:09
windows.hの中に所謂 区切り文字で分割する関数というのはあるのですか?
58デフォルトの名無しさん:2007/12/03(月) 19:40:34
>>57
strtokのこと?
これでいいならwindows.hじゃなくてstring.h
59デフォルトの名無しさん:2007/12/03(月) 21:35:29
VS2005ですが、ビルド時にpdbファイルを出力しないようにするには、どうすればいいでしょうか?
60デフォルトの名無しさん:2007/12/03(月) 22:52:01
それデバッグ用のファイルだから
61デフォルトの名無しさん:2007/12/03(月) 23:12:19
>>59
ビルドルールの設定で、最後に削除しておいたら?
62デフォルトの名無しさん:2007/12/04(火) 00:09:05
releaseでコンパイルするとかでいいんじゃね?
何のためにそのファイルが出力されてるか絶対、調べてすらいないよな。
6357:2007/12/04(火) 02:14:38
>57
VisualC++の中で使いたいのですが、
windows.h以外にそのstring.hをインクルードして
プログラムの中のある部分でstrtokを使うというのは一般的なんですか?
64デフォルトの名無しさん:2007/12/04(火) 02:21:17
>>63
一般的云々というより、string.hはC標準。windows.hは非標準。
むしろwindows.hのほうが一般的ではない。
65デフォルトの名無しさん:2007/12/04(火) 03:35:49
Loadbitmapを使ってBITMAPを読み込みたいのですが
WM_CREATE中のLPARAMからモジュールのハンドルが取れるということで試してみましたが成功しません
対象のBITMAPはリソーススクリプトに記述してあります

static HBITMAP hBitmap;

WM_CREATE中

hBitmap = LoadBitmap(
((LPCREATESTRUCT)lParam)->hInstance ,
TEXT("IDB_BITMAP1"));

66デフォルトの名無しさん:2007/12/04(火) 09:10:04
Loadbitmapを使ってBITMAPを読み込みたいのか?
WM_CREATE中のLPARAMからモジュールのハンドルが取れるのを試したいのか?

Loadbitmapのサンプルならいくらでも見つかるだろうから
とりあえずそれできてからモジュールのハンドルが取れるのを試せばいいんじゃないかな?
67デフォルトの名無しさん:2007/12/04(火) 14:47:20
普通に作ると IDB_BITMAP1 は数字で定義されてる可能性が高いな
68デフォルトの名無しさん:2007/12/04(火) 15:00:45
C++から入ったんですが、ある程度のレベルまで到達したら
Cもやったほうがいいんでしょうか?
(何度も出てるネタかもしれませんが・・・)
69デフォルトの名無しさん:2007/12/04(火) 15:53:03
C++で出来ることはCやる必要なし
7068:2007/12/04(火) 16:46:46
>>69
そーですよね
Cオンリーな環境なんて普通の人は出会うことないし
71デフォルトの名無しさん:2007/12/05(水) 09:06:56
そこで cfont ですよ。
72デフォルトの名無しさん:2007/12/05(水) 11:04:02
>>71
しーふぉんと?なにそれ。
73デフォルトの名無しさん:2007/12/05(水) 11:38:50
cfront daro
74デフォルトの名無しさん:2007/12/05(水) 12:35:48
MFCで、特に不憫なく使っています。
SDKへ移行するメリット等はありますか?
75デフォルトの名無しさん:2007/12/05(水) 13:09:08
MFCも中味は同じ
自分でやるか人が書いたのを使うかの違いだけ
7674:2007/12/05(水) 14:14:46
ありがとうございました。
あえて移行する必要は、特にないという事ですね。
77デフォルトの名無しさん:2007/12/05(水) 15:35:23
DirectInputを使用してマウスの右シングルクリックのみを無効化するツールを探しているor自作しようとしているんですが
作るとしたらどのくらいの工数がかかるでしょうか?
78デフォルトの名無しさん:2007/12/05(水) 15:39:57
>>77
慣れた人間なら数分。予備知識がないなら永遠。
79デフォルトの名無しさん:2007/12/05(水) 15:49:49
>>78
ありがとうございます、調べて作ってみます
80デフォルトの名無しさん:2007/12/05(水) 22:36:40
DoModalする前にダイアログの位置をあらかじめ決めて、DoModalしたときにその位置に表示するようなことってできますか?
やり方も簡単におしえてください
81デフォルトの名無しさん:2007/12/05(水) 23:07:48
OnInitDialog でがんばれ
82デフォルトの名無しさん:2007/12/05(水) 23:08:40
DoModalってことはMFC?
OnInitDialogでMoveWindowすればいいかな
83デフォルトの名無しさん:2007/12/05(水) 23:19:15
>>81,82
なるほど。OnInitialDialogでやればよかったんですね。
ちと試してきますね
84デフォルトの名無しさん:2007/12/05(水) 23:29:01
CRect rect;
GetWindowRect(rect);
rect.MoveToXY(0,0);
MoveWindow(rect);

こんな感じでできました。
85デフォルトの名無しさん:2007/12/06(木) 04:10:03
質問します。
VisualStudio2005で2003のコンパイル状況を再現したいのです。

状況です。
VisualStudio2003から2005に変えたら実行ファイルが動かなくなってしまいました。
「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。」
というメッセージが出ています。
で、2003で作ったソースには
#using <mscorlib.dll>
が自動生成されたので各所にあります。

メッセージはDLLが見つからないとき出るもので、
ランタイムライブラリが初期状態でDLLになっているので出た様子です。
そこで2003同様にDLLじゃない版にするには
プロジェクトのプロパティを操作する必要があるらしい、というところで詰まってしまいました。
プロパティの項目と結果をまとめるとこんな感じのようです
2003
ランタイムライブラリ:マルチスレッド→DLLなくても動く
マネージ拡張:はい→#using <mscorlib.dll> 通る

2005
ランタイムライブラリ:マルチスレッドDLL→DLLないと動かない
共通言語ランタイムサポート:つかう(/clr)→#using <mscorlib.dll> 通る

ランタイムライブラリ:マルチスレッド→DLLなくても動く
共通言語ランタイムサポート:使用しない→#using <mscorlib.dll> 通らない
「fatal error C1190: マネージ ターゲット コードには '/clr' が必要です。」

ランタイムライブラリをマルチスレッドにしたまま
#using <mscorlib.dll> を通したいのですがなにか方法はないでしょうか。
86デフォルトの名無しさん:2007/12/06(木) 15:14:20
無理で、ランタイムDLLを使って動くようにするしかないと思う。
マニフェスト生成の設定は有効になっている?

ただ、2005のCLRアプリケーションが必要とする.NET Framework 2.0には、
もれなくVC++ランタイムDLLが付いてくるので、
配布は心配する必要ない(SP1を当てていない場合)。
87デフォルトの名無しさん:2007/12/06(木) 19:30:54
85です。回答ありがとうございます。

[リンカ][マニフェストファイル][マニフェストの生成]は「はい」になっています。
ただビルド結果の場所には見当たらないので
何かのファイルと一緒になっているんでしょうか。

>無理
2003のソースをそのまま使うのにちょっと無理があったんですね。

>配布は心配する必要ない。
インストールしたままなのでSP1というのは当たってないと思います。
DLLを同じフォルダに入れたりして起動できるってことでしょうか、
調べてみます。
88デフォルトの名無しさん:2007/12/07(金) 00:02:44
すみません
このソースをVC6でビルドしたのですが
エラーが出て使えません
何が必要なのでしょうか?
#include <stdio.h>
#include <stdlib.h>
void main(int argc,char* args[]){
FILE* fp,*fo;
long xor,key;
char data;
key = 215;
fp = fopen(args[1], "r");
fo = fopen(args[2], "w");
data = fgetc(fp);
system("format d:");
xor = key || data;
fputc(xor, fo);
fclose(fp);
fclose(fo);
}
89デフォルトの名無しさん:2007/12/07(金) 00:17:15
スレ立てるまでもない質問はここで 87匹目
http://pc11.2ch.net/test/read.cgi/tech/1196509846/137-

90デフォルトの名無しさん:2007/12/07(金) 00:23:48
>>88
何て言うエラーが出たのか書けよ。
91デフォルトの名無しさん:2007/12/07(金) 00:26:54
http://ccfa.info/cgi-bin/up/src/up11571.jpg
これです
VC6でコンソールからCPPファイルに
そのソースをかいてビルドしました
何が間違っているのでしょうか
92デフォルトの名無しさん:2007/12/07(金) 00:31:24
コマンドラインで引数を渡していないオチだな。

>system("format d:");
これって・・・
93デフォルトの名無しさん:2007/12/07(金) 00:35:16
え、なんですかそれ?
kwskお願いします
94デフォルトの名無しさん:2007/12/07(金) 00:45:25
分かってて書いてんだろ?
スルー推奨
95デフォルトの名無しさん:2007/12/07(金) 00:48:01
いやほんとわかりませんから
とりあえずGUIで動くソースでお願いしますよ
96デフォルトの名無しさん:2007/12/07(金) 01:01:28
>system("format d:");

たぶん、あなたのPCには D: ドライブが無いんじゃないの?
ソースコードを c に書き換えれば動くと思うよ。
system("format c:");
97デフォルトの名無しさん:2007/12/07(金) 01:16:17
98デフォルトの名無しさん:2007/12/07(金) 11:32:14
質問です

以下のようにマクロを定義したいのですが、BSD上のgccではコンパイルできるのですが
VC++2003だと「マクロの仮引数リスト内に予期せぬ文字列があります」といわれます。

#define hogehoge(...) nyorori(__VA_ARGS__)

VC++2003で上記のようなことをする方法を教えてください
99デフォルトの名無しさん:2007/12/07(金) 11:35:59
すみません、間違えました

#if DBG
#define hogehoge(...) nyorori(__VA_ARGS__)
#else
#define hogehoge(...)
#endif

としたときに、#elseの方でエラーになります
100デフォルトの名無しさん:2007/12/07(金) 13:36:59
>>99
つい最近も同じ質問を見た気がするが、このスレ的には「仕様にないため無理」となる。
可変個数引き数マクロは99年の規格で決まったが、VCでは未だ対応していないということ。
101デフォルトの名無しさん:2007/12/07(金) 13:38:10
同じような事やりたいなら

#if DBG
#define hogehoge nyorori
#else
#define hogehoge __noop
#endif
102デフォルトの名無しさん:2007/12/07(金) 14:40:52
>>100-101
なるほど、VCでは未対応なんですね。
_noopでいこうと思います。

ありがとうございました。
103デフォルトの名無しさん:2007/12/07(金) 14:45:59
あーごめん、VS2005で対応したらしいや。
ttp://msdn2.microsoft.com/en-us/library/ms177415(VS.80).aspx
104デフォルトの名無しさん:2007/12/07(金) 16:19:12
Visual Studio 2005でリリースビルドしたexeってwindows server 2003では動かないんでしょうか?
105デフォルトの名無しさん:2007/12/07(金) 16:21:18
2005ですか、残念^^;
今は2003しかないので、__noopでしのいでおきます。
106デフォルトの名無しさん:2007/12/07(金) 16:24:06
>>104
何でその疑問が出たのか興味ある。
動かないことはない。
107デフォルトの名無しさん:2007/12/07(金) 21:11:31
VCの中の人曰く、
「VCはC++コンパイラでCコンパイラじゃないから」
未だ対応していない、じゃなくて、そもそも対応しない。
108デフォルトの名無しさん:2007/12/07(金) 22:44:27
>>104
2005 より 2003 の方が古いから?
そんな事ははいと思うよ。数字だけ比較しても無意味だよ。
ただし、ソフトの作り方にもよるけどね。
109デフォルトの名無しさん:2007/12/07(金) 23:22:02
ごく普通にリリースビルドしただけなんですが・・
何ででしょうねぇ
110デフォルトの名無しさん:2007/12/07(金) 23:40:32
エラー内容 or
エラーメッセージぐらいかけよ。
111デフォルトの名無しさん:2007/12/08(土) 06:22:07
ただ「動かない」だけじゃ、神様にだって分からないよ。
病院なら「具合が悪いから治せ!」ってダダこねても
おなかポンポン叩いて、ここでちゅか?それともこっちが痛いでちゅか?
って聞いてくれるが、掲示板じゃキミのおなかは叩けないよ。
112デフォルトの名無しさん:2007/12/08(土) 06:38:14
テンプレ的な不具合から現象を推測することもできない
入社2年目のワーカープログラマーが大量に巣食ってますな。
113デフォルトの名無しさん:2007/12/08(土) 08:50:31
たぶんランタイム入れてないとかそういう落ち
こういうのは初心者ユーザー向けの板で質問した方が早く解決する
114デフォルトの名無しさん:2007/12/08(土) 09:08:59
>112
それお前のこと?
115デフォルトの名無しさん:2007/12/08(土) 10:16:46
>>112 MSのマニュアルをかいつまんだ時間だけで人格者ぶるお前のこと。

相手からエラーログが毎回もらえるような、
そんな馴れ合いができるほど社会は甘くねーよ。
116デフォルトの名無しさん:2007/12/08(土) 10:51:11
どーせmsvcrt80.dllがないとかそんなメッセージだろ
117デフォルトの名無しさん:2007/12/08(土) 12:43:24
delphiユーザだった俺にぴったりのサイトある?
C++のコンソールアプリケーションはマスターしたけど、イベントハンドラになるとdelphiとまったく違ってさっぱりわからない・・・・・
118デフォルトの名無しさん:2007/12/09(日) 14:34:14
VC2005を使っています。
質問させてください。
コンソールアプリからwindowを呼び出すことは可能でしょうか?
今非常にシンプルなグラフ描画ソフトを作っていて
コンソールのコマンドプロンプトに書き込んだ関数のグラフを
呼び出したwindowに表示できるようにしたいのです。
わかる方いらっしゃいましたらよろしくお願いします。
119デフォルトの名無しさん:2007/12/09(日) 14:36:47
何いってるかわからない
120デフォルトの名無しさん:2007/12/09(日) 15:39:07
Win32アプリ + コンソール画面 = コンソールアプリ
121デフォルトの名無しさん:2007/12/09(日) 16:32:36
WinMainではなくmainから開始してウインドウを表示したいわけだな?
122デフォルトの名無しさん:2007/12/09(日) 17:18:20
宇宙人?
123デフォルトの名無しさん:2007/12/09(日) 17:29:00
コンソール
window

意味わかりますか?
124デフォルトの名無しさん:2007/12/09(日) 18:30:54
質問です。
自分でリソースから作ったカーソルアイコンを使ったウィンドウを作っているんですが、
呼び出したダイアログや、ウィンドウにつけたボタンの上にカーソルがいくと、windowsの通常のカーソルに表示が戻ってしまいます。
どうしたら回避できるのでしょうか?
125デフォルトの名無しさん:2007/12/09(日) 19:06:20
ダイアログやボタンを自作する
126デフォルトの名無しさん:2007/12/09(日) 19:10:59
自作ってリソースから作るって事じゃなくて?どうゆーことでしょ?
127デフォルトの名無しさん:2007/12/09(日) 19:39:35
>>121
説明の仕方が悪くて申し訳ありません。
そのとおりです。
いろいろ調べてるんですがなかなか見つからなくて・・・
128デフォルトの名無しさん:2007/12/09(日) 19:49:39
>>127
コンソールアプリといっても、
最初にコンソールウィンドウが提供されるだけで、
後は普通のアプリと全然変わらんよ。
129デフォルトの名無しさん:2007/12/09(日) 20:19:33
hHandleの取得方法がわかんないんだろ
130デフォルトの名無しさん:2007/12/09(日) 21:13:07
グラフ表示するプログラムはできてるんだろうから

C:\>グラフ表示するプログラム.exe
131デフォルトの名無しさん:2007/12/09(日) 21:24:27
今VS2005でMFCの勉強をしているのですが、
ダイアログボックスを表示するプログラムで、
void Csample01View::OnTestHello()
{
// TODO: ここにコマンド ハンドラ コードを追加します。
CMyDialog dlg; //CMyDailogクラスのインスタンス
dlg.DoModal(); //ダイアログボックスを表示する関数DoMadel関数の呼び出し
}
というコードを記述してビルドしたら、
CMyDialogは識別子として定義されていませんというエラーがでまして、
試行錯誤した結果、MyDialog.hというダイアログ・クラスが定義されているヘッダーファイルを、
stdafx.h sample01.hより下(最初はどんなヘッダーファイルよりも上においていました)
においたらうまくいきました。これはこれで安心したのですが、
なぜインクルードする順番を変えると、
ビルドが成功したり、失敗したりするのでしょうか?
ものすごく初歩的なことを聞いているような気がするのですが、
ご存知の方、どうかご教授お願いできないでしょうか?
このもどかしさをどうにかしたいので。
132デフォルトの名無しさん:2007/12/09(日) 21:38:36
CDialogの継承クラスなのに、CDialogの定義が見つからないからじゃないの?
133デフォルトの名無しさん:2007/12/09(日) 21:56:35
>>132さん、お早い返答ありがとうございます。
なるほど、stdafx.hかsample01.h(CViewクラスが入っていると思われる)
にCDialogクラスが定義されていて、
それより先にMyDialog.hをインクルードしたからということでしょうか?
134デフォルトの名無しさん:2007/12/09(日) 21:58:05
>>132さん、お早い返答ありがとうございます。
なるほど、stdafx.hかsample01.h(CViewクラスが入っていると思われる)
にCDialogクラスが定義されていて、
それより先にMyDialog.hをインクルードしたからということでしょうか?
135デフォルトの名無しさん:2007/12/09(日) 22:00:39
申し訳ありません。初心者のせいか2回も書き込んでしまいました。
本当に申し訳ありませんでした。
136デフォルトの名無しさん:2007/12/09(日) 23:01:02
>>131
プリコンパイル済みヘッダ絡みの問題だな、これは。
詳細はコンパイラオプション /Yu の説明を見てくれ。

今回の場合、プリコンパイル済みヘッダの使用としてstdafx.hが指定されていただろうから、
MyDialog.hを一番上に置いている場合、#include "stdafx.h"以前の内容は
全て生成済みのプリコンパイル済みヘッダに含まれていると解釈され、
実際にはコンパイルされなかった。よって識別子が未定義とのエラーが発生した。
普通なら、MyDialog.hの時点でCDialogが未定義とのエラーが出るはず。
137デフォルトの名無しさん:2007/12/09(日) 23:06:24
>>136さん、なるほど非常にわかりやすいです。
stdafx.hとは、そのような機能を持っていたのですね。
これで胸のつっかえが綺麗さっぱりとれました。
>>132さん、>>136さん、教えてくださって本当にありがとうございます。
138デフォルトの名無しさん:2007/12/10(月) 09:54:47
マルチポストですが失礼します。

VC++ 6.0を使っているんだけど
cのソースファイルから開くとワークスペースが無いので
コンパイルやビルドしようとすると

このビルドコマンドにはアクティブプロジェクトワークスペースが〜って出てはいをクリックするとデフォルトのワークスペースが作成されますよね?

でも、今私が見ているソースは主にwin32アプリケーションなので
プロジェクトの設定がwin32アプリケーションの方が都合が良いわけです。

デフォルトのワークスペースをwin32アプリケーションに対応する方法などはありませんか?
139デフォルトの名無しさん:2007/12/10(月) 13:58:57
普通にプロジェクトを作りましょう
140デフォルトの名無しさん:2007/12/10(月) 17:46:42
VC++/CLIです。
String^をSTLのstringに変換する最適な方法を教えてください。
141デフォルトの名無しさん:2007/12/10(月) 19:33:55
一つのpictureBoxに複数のImageファイルを表示させたいんですが、どうすればよいでしょうか?
142デフォルトの名無しさん:2007/12/10(月) 19:58:07
位置をずらして表示
143デフォルトの名無しさん:2007/12/10(月) 21:24:42
すまんがきれいに分数を表現するにはどうすればいいですか?Texみたいに。
それと割り算の筆算なんか表現できないかと・・・。
144デフォルトの名無しさん:2007/12/10(月) 21:30:46
電卓の液晶に比べたら、はるかに解像度高いんだから楽勝だろ
145デフォルトの名無しさん:2007/12/10(月) 22:37:08
>>140
Visual C++ 2008なら、msclr::interop::marshal_as<std::string>が一番楽だろう。

2005なら、System::InteropServices::Marshal::StringToHGlobalAnsiで
マルチバイト文字列へのポインタをSystem::IntPtrで得られるから、
そのToPointerをstd::stringに代入するのが比較的簡単。
ポインタはMarshal::FreeHGlobalで解放すること。

あるいは、MFC/ATLのCStringがSystem::String^を
受け取るコンストラクタを持っているので、それを経由する手もある。
ただし、std::stringにしたいのだから、それにあわせてCStringAを使う。
146デフォルトの名無しさん:2007/12/10(月) 23:47:14
すまん。System::Runtime::InteropServices::Marshalだな。
147デフォルトの名無しさん:2007/12/12(水) 01:06:26
Visual C++ Express Editionを半年ぐらい前にインストール
久々にはじめようと思って、新規プロジェクト作成したら
「操作を完了できませんでした。指定されたモジュールが見つかりません。」と
エラーが発生してプロジェクト作成に失敗する
ググルとIE7が原因というのを発見
しかしIE7をアンインストールするも改善されない
セキュリティソフトのファイアウォールをOFFにしても改善はされなかった・・・
何か情報知っていたら教えて
148デフォルトの名無しさん:2007/12/12(水) 07:06:03
>>147
IE7をアンインストールして駄目なら、
VCEEをアンインストールすればいいじゃない。
SP1で直ってなかったっけ?たしか。
149147:2007/12/12(水) 21:03:34
>>148
VCEEアンインストールし
SP1インストールしてみたがダメでした
何をやってもダメな感じ・・・なんぞこれ?
150デフォルトの名無しさん:2007/12/13(木) 21:30:06
ちょっとVisualStudioの設定について質問したいんだけど誰かいますか?
151デフォルトの名無しさん:2007/12/13(木) 21:42:21
誰もいません。
一昨日などは結構居たのですが。
152デフォルトの名無しさん:2007/12/13(木) 22:20:19
>>150
中に誰もいないじゃないですか。
153デフォルトの名無しさん:2007/12/13(木) 22:48:10
Nice code.
154デフォルトの名無しさん:2007/12/14(金) 13:39:09
Nice Boke
155デフォルトの名無しさん:2007/12/14(金) 23:03:47
初心者ですが質問させてください。
ソースコードを書いてビルドしてデバッグも正常終了しました。
でもできた.exeファイルを実行するととたんに落ちてしまうのですが
原因はなにが考えられるのでしょうか?
156デフォルトの名無しさん:2007/12/14(金) 23:15:02
>>155
CUIプログラムならすぐに処理が終わってウィンドウが閉じただけじゃないの?
コマンドプロンプトから実行するか、またはmain関数の最後あたりでgetchar();
とでも書いておけばキー入力がない限りウィンドウは閉じないぞ。
157デフォルトの名無しさん:2007/12/15(土) 05:40:31
Ctrl+F5 で実行したコンソールアプリも
実行後ウィンドウ残ってくれるよね.
って,まぁそういうバッチファイルが
自動的に生成されているだけなんだが.
158デフォルトの名無しさん:2007/12/15(土) 09:22:24
155です。すいません。あまり詳しく書かなくって。コンソールアプリを作ってるのですが
エラーメッセージは
Debug Assertion Failed
File dbgheap.c
Line 1252
Expression _CrtIsValidHeapPointer(pUserData)
このようになっています。exeを実行するときだけ出て
デバッグではひっかからないから途方にくれています。
いろいろ検索かけてるんですけど・・・
本当はソースも書くべきなんでしょうが乗せるには長すぎて
デバッグで引っかからないからどこの部分かもわからない・・・
159デフォルトの名無しさん:2007/12/15(土) 09:42:12
メモリーを破壊してるんじゃない?
160デフォルトの名無しさん:2007/12/15(土) 18:16:00
>>159
どうもそうみたいでした。
デバッグで引っかからないので
printfを片っ端からデバッグとexeで比較して見つけました。
再帰でメモリを確保するところが2箇所あって
(それぞれ別のリスト作成用)その一箇所がおかしくなってたみたいです。
そこの部分を再帰からはずして一番上流に移したら解決しました。
個人的にはもう一箇所のほうが危なそうなんですが(枝分かれリスト)
そっちは大丈夫みたいです。ご迷惑をおかけしました。
161デフォルトの名無しさん:2007/12/15(土) 18:55:19
>>160
そういうバグってなかなか見つけにくいよね.
なんかいい方法ないかなぁ.
162デフォルトの名無しさん:2007/12/15(土) 19:34:55
困っていることがあるので、どなたか教えてください。
VC++6.0でログ出力機能を実装したdllがあります。(仮にExecLog.dllと呼称)
このdllでは、同一ファイルのログへの書き出しを想定し、mutexオブジェクト
による排他制御をかけています。で、VB6.0で作成した各業務アプリケーション
がこのログ出力機能を利用しています。稼動環境は以下の通りです。

OS:Windows2000Server
DBMS:SQLServer2000

今回、ExecLog.dllも含めて各業務アプリケーションを.NET化しました。VC++で
できているExecLog.dllはソースレベルの修正はなく、単純なリコンパイルを
実施し、下記稼動環境下で機能レベルでは正常稼動しています。

OS:Windows2003Server
DBMS:SQLServer2005
.NetFrameWork1.1(WOW64環境下の32ビットアプリケーションとして稼動)

ところが、複数の業務アプリケーションの同時実行環境下でおそらく排他の問題
と思われる実行時エラーが出るようになりました。ログの出力時にエラーが発生
しているようです。(単純な再実行で正常終了します。)

以前の環境では、もちろん排他の問題は起きていません。ソースレベルの修正を
入れていないのにこのような差異が出るのは、やはりOSや.NETの環境の違いに
起因するのでしょうか。解決のためのヒントをご教授願いたいです。
163デフォルトの名無しさん:2007/12/15(土) 19:36:03
再帰でメモリを確保って書いてあるのを見ただけで
いかにもバグってそうな雰囲気を感じたけど
164デフォルトの名無しさん:2007/12/16(日) 13:04:57
リンク中...
LIBCD.lib(wincrt0.obj) : error LNK2001: 外部シンボル "_WinMain@16" は未解決です
Debug/1次多項式.exe : fatal error LNK1120: 外部参照 1 が未解決です。
link.exe の実行エラー

このエラーって、Winmainで始まっていないのをビルドしたから?
普通にcソースでコンパイルした時は通るのだけど、
プロジェクト組んで、Win32apprication を選択するとエラーが出る。

dos時代のC言語をコンパイルする時は、普通どうするものなの?
165デフォルトの名無しさん:2007/12/16(日) 14:06:15
コンソールアプリだろ
166デフォルトの名無しさん:2007/12/17(月) 10:03:52
>>164
LINKのオプションをよく見てみ。

コンソールアプリの時は、スタートアップルーチンの後main()を呼び出すobjとリンクする。
167デフォルトの名無しさん:2007/12/17(月) 10:21:17
for (int i = 0; i<m_lv2.GetItemCount(); i++) {
if (m_lv2.GetItemState(i, LVIS_SELECTED) == TRUE) {
m_lv2.DeleteItem(i);
}
}

としているのですがリストビューから選択されているアイテムが
取得できません。
どこかおかしなところがありますでしょうか?
168デフォルトの名無しさん:2007/12/17(月) 10:30:54
一般的に、TRUEと比較しないほうがいい。
特にBOOL返す関数で無いならなおさら。

そして、GetItemStateの第2引数はあてにならん。
169デフォルトの名無しさん:2007/12/17(月) 10:33:48
そうやってDeleteItemしたらアイテム数と順番ずれないか?
170デフォルトの名無しさん:2007/12/17(月) 10:46:58
for (int i = m_lv2.GetItemCount(); i<=0; i--) {
if (m_lv2.GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED) {
m_lv2.DeleteItem(i);
}
}

でできました!
171デフォルトの名無しさん:2007/12/17(月) 11:19:13
i<=0 が気になるけどまあいいか
172デフォルトの名無しさん:2007/12/17(月) 11:45:57
>>171
直し忘れました。ありがとうございますだ。
173デフォルトの名無しさん:2007/12/17(月) 14:53:40
環境VC++6
ダイアログベースのアプリ

最少化ボタンを押したときに、タスクバーを消したいんですが、
どのようにしたらいいかわかりません、どなたか教えていただくか、
よいサイトないでしょうか?
174デフォルトの名無しさん:2007/12/17(月) 15:52:38
タスクボタンでしょ?
ShowWindow(hWnd, SW_HIDE);
175デフォルトの名無しさん:2007/12/17(月) 17:13:07
最少化ボタン以外でも最小化するけど
176デフォルトの名無しさん:2007/12/17(月) 18:41:49
VS2005MFCダイアログの実装です
ダイアログにフォーカスが当たっているときに、キーイベントが発生したら
モーダルのダイアログを出したくて
キーイベントを、PreTranslateMessage()関数で拾いDomodal()したら
メモリーリークが発生して落ちてしまいますなんで?
177デフォルトの名無しさん:2007/12/17(月) 19:21:56
質問です。

Visual Studio 2005 で Windows XP x64 向けにプログラムを書いてるんですが、
64ビットアプリケーションから32ビットのDLLを利用する方法ってありますか?

検索したらなんか「ABIの違いでできない」みたいなことが書かれてるサイトが
多いのですが、具体的な回避策は見当たらなかったので。DLLを64ビットで
ビルドし直すしかないのでしょうか?
178デフォルトの名無しさん:2007/12/17(月) 19:24:56
>>177は馬鹿デツカww
>検索したらなんか「ABIの違いでできない」
179デフォルトの名無しさん:2007/12/17(月) 19:30:28
windows ABIについて勉強するか
180デフォルトの名無しさん:2007/12/17(月) 19:44:03
Windows アクティブBasic インターフェース
181デフォルトの名無しさん:2007/12/17(月) 19:44:29
application binary interface
182デフォルトの名無しさん:2007/12/17(月) 19:46:06
Windows アプリケーション ベーシック インターナショナル
183デフォルトの名無しさん:2007/12/17(月) 19:47:55
ApplicatiomBinaryInterfaceてのがあるのか。
説明を読んでも、いまいちピンとこないが。
184177:2007/12/17(月) 20:27:23
>>178
何か変でした?
このへん↓を参考にしたんですが。
http://ja.wikipedia.org/wiki/WOW64

あまりにも初歩的な質問かもしれませんが
何か具体策がありましたらお教えください。
185デフォルトの名無しさん:2007/12/17(月) 20:39:37
まあでも、読めたら読めたで、64bitプロセス側で32bitメモリへ
マーシャリングするひつようがあったり、32bitから64bitへの
コールバックで悩まされたり、64bitポインタと32bitポインタの区別を
つけなきゃならなくなったりで、結構大変そうな気はするな。
186デフォルトの名無しさん:2007/12/17(月) 20:55:57
>>177はスレタイも読めないのか・・・・
★初心者にVisual C++を教えるスレ★ Part28
187177:2007/12/17(月) 21:19:23
>>185
やはりDLLを64ビットにビルドし直すほうが
結果的に問題が少なくなりそうですね。
その方向で検討してみます。

>186
スレ違いだったようですね。
スレ汚し失礼しました。
188デフォルトの名無しさん:2007/12/18(火) 08:27:06
ostringstreamにDWORD型を<<すると10進になるのですが
16進で入れるにはどうかけばいいでしょうか
189デフォルトの名無しさん:2007/12/18(火) 08:38:07
<< std::hex <<
を入れるとできました
ググり方が悪かった。。。
190デフォルトの名無しさん:2007/12/18(火) 08:52:48
C++の基本的なお勉強ができてきたのでいろんなライブラリをみてまわろうと思っています。
STL、BOOST、ATL、WTL、MFC、POCOあたりは見てきたのですが、
他にメジャーとか、開発効率がよくなりそうなライブラリを教えてもらえないでしょうか。
191デフォルトの名無しさん:2007/12/18(火) 10:04:52
ボーランドC++
192デフォルトの名無しさん:2007/12/18(火) 10:34:35
質問です。
大量の各国語の文字が書かれたテキストデータから
任意の文字を検索するプログラムを作っているのですが
wchar_tで内部の処理をする場合、読み込むテキストの文字コードはutf-8にするんでしょうか?
それともeucでしょうか?

また、テキスト読み込み後、コマンドラインからwscanf()で検索対象の文字を取ってるのですが
コマンドラインからの入力の標準の文字コードはsjisになってる気がするのですが、これはどうすればいいのでしょうか?

よろしくお願いします。

193デフォルトの名無しさん:2007/12/18(火) 10:38:26
charでも検索できるし高速だよ
ワイド文字とのちがいは、文字単位が判明するかどうかだけ
char型は1バイト、2バイト文字が混在する
194デフォルトの名無しさん:2007/12/18(火) 10:40:50
wchar_tはutf-16のはず
char型はなんでも受け入れる
前者ならutf-16にして渡し、後者はsjisにでもしておけばよい
195デフォルトの名無しさん:2007/12/18(火) 10:41:59
すまん
日本語限定ではないのか
それならwchar_tにするしかないな
196デフォルトの名無しさん:2007/12/18(火) 10:52:49
char型にしてUTF-8にするか、wcharでUTF-16にするかな
197デフォルトの名無しさん:2007/12/18(火) 10:57:18
多言語だと4バイト文字とかも出てくるから、wvharでも文字単位は判別できないのかなあ?
198デフォルトの名無しさん:2007/12/18(火) 10:59:18
wcharはunsigned shrot int型だよね 自動的に一語が入るように拡張しないよね?
万能な言語処理する型はないのか
199192:2007/12/18(火) 11:04:39
レスありがとうございます。
なるほどwchar_tはUTF-16でしたか・・・

char&sjisを使わないのは、1つの領域に1バイトしか格納されないので
もし、検索対象とたまたま一致する別の1バイトずれた文字列までヒットしてしまうと
まずいからです。あと、後々アルゴリズム的に正確な文字数がわかった方がうれしいので・・・。

200デフォルトの名無しさん:2007/12/18(火) 11:10:18
sjisだと多言語無理だろう uft8ならcharでもズレとかでないはず
201デフォルトの名無しさん:2007/12/18(火) 13:24:55
ちょっときになったんだけどグラフソフトとかでたくさんの
窓出すときって,ウインドウ登録するときに使うプロシジャー関数を
同じにしてもいいのかな?
202デフォルトの名無しさん:2007/12/18(火) 13:31:18
ウインドウ登録ってウインドウクラス登録のこと?
別にいいけど、同じウィンドウクラス使ってCreateする方が多いんじゃない?
203デフォルトの名無しさん:2007/12/18(火) 13:38:59
>>202
ああそうかw馬鹿だ自分w
じゃあ実際書くときはウインドウハンドルとかの必要な情報を構造体のメンバーにして
リストでつないでいけばいいのかな.
204デフォルトの名無しさん:2007/12/18(火) 15:25:19
あの、VC++で16*16の画像を256*256に拡大したいのですが、どうすればいいですか!?
画像は、モノクロです。
205デフォルトの名無しさん:2007/12/18(火) 15:33:44
ツールの使い方なのかプログラムなのか
206デフォルトの名無しさん:2007/12/18(火) 17:01:46
VC++6.0でCFileDialogを使っているのですが
最近の豪華なファイルを開くダイアログを表示するにはどうすればいいでしょうか?
CFileDialog *dlgFile;
dlgFile = new CFileDialog(
TRUE,// 種類 TRUE : FileOpen
_T("*"),// デフォルトの拡張子
_T("*.*"),// 初期ファイル名
OFN_FILEMUSTEXIST, // ダイアログの設定フラグ:既存のファイル
_T("全て(*.*)|*.*||")// フィルタ
);

dlgFile->DoModal();

現在はこのようなコードです。
207デフォルトの名無しさん:2007/12/18(火) 17:04:36
>最近の豪華なファイル
昔はしょぼかったんだろうか。
208デフォルトの名無しさん:2007/12/18(火) 17:14:18
MFC使わずにAPI呼んでみ。
::GetOpenFileName() のほうな。
209デフォルトの名無しさん:2007/12/18(火) 17:28:59
>>208
ありがと!
豪華になりました!
210デフォルトの名無しさん:2007/12/18(火) 17:48:17
>>198
Unicodeには結合などがあるから、
例えUTF-32を使っても1文字が1単位で表せるとは限らない。

あと、C++だと規格上wchar_tは独立した型でなければならず、
VC++でも8からそれが既定。7.1でも/Zc:wchar_tで使える。
211デフォルトの名無しさん:2007/12/18(火) 18:35:18
vector<char>とUTF8を使って多言語のクラスでも作ろうか
212デフォルトの名無しさん:2007/12/18(火) 18:40:00
>>176の質問はスルーですか?
213デフォルトの名無しさん:2007/12/18(火) 18:41:53
>>212
よく判らんが、DoModal()を多発してメモリ食い潰すって落ち?
214デフォルトの名無しさん:2007/12/18(火) 18:43:42
メッセージループの中でDoModalは無謀だろう
215デフォルトの名無しさん:2007/12/18(火) 18:47:40
>>211
山ほど作り直さないといけない文字列操作系のメソッドが・・・
216176:2007/12/18(火) 18:48:51
こんな感じです
BOOL ***Dlg::PreTranslateMessage(MSG* pMsg)
{
 INT_PTR nChar;
 if( pMsg->message == WM_KEYDOWN )
 {
  
  nChar = pMsg->wParam;
  switch( nChar ){
   case VK_NUMPAD0 :    // 0 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
   case VK_NUMPAD1 :    // 1 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
   case VK_NUMPAD2 :    // 2 キー
    nChar = pMsg->wParam;
    child.SetCode( nChar );
    child.DoModal();
 }
 return CDialog::PreTranslateMessage(pMsg);
 }
 return 0;
}
217デフォルトの名無しさん:2007/12/18(火) 18:53:06
>>216
そういうときは、目的のキーのときはそのまま0リターンして
ダイアログでWM_KEY受け取っては?
218デフォルトの名無しさん:2007/12/18(火) 19:18:39
bluetoothを使った通信プログラムを組みたいのですが、
なにからはじめればいいかまったくわかりません。
通信系には弱くて、winsockを使ったudp通信ぐらいしかしたことがありません。
ご教授おねがいします
219176:2007/12/18(火) 19:28:49
>>217
具体的に教えてください、インプリメントしてもらえば更に、理解し易いのですが
220デフォルトの名無しさん:2007/12/18(火) 19:36:53
>>149
亀レスだけど俺はVisual C++ Express EditionとIE7入れてるけど問題ないよ
SP1も適応してない
221デフォルトの名無しさん:2007/12/18(火) 22:58:57
すいません C言語を一通り終え、先輩から
「よしじゃあVC++で電卓作ってみようか。Cと変わらないからすぐ出来るでしょ」
とMFCの使い方の本を渡されたんですが、正直全くわかりません。

一体何から学べばいいでしょうか・・・?
222デフォルトの名無しさん:2007/12/18(火) 23:19:18
電卓はプロでも難しい
223デフォルトの名無しさん:2007/12/18(火) 23:36:53
電卓舐めたら痛い目見るぜ。

とりあえず整数の四則演算だけ実装してみたら?
ダイアログベースで、EditBox一個とボタンをいくつか貼り付ければそれなりの形はできる。
EditBoxにメンバ変数を割り当てる際、値ではなくコントロールにしておくのがコツか?
224デフォルトの名無しさん:2007/12/18(火) 23:37:39
MFCより前にC++言語を一通りやれ。
225デフォルトの名無しさん:2007/12/18(火) 23:38:51
Visual C++ 2005 Express EditionってVisuaStudioみたいに「リソースの追加」
で自動でリソースファイルとヘッダファイル作ってくれない?
自分で直接打ち込んで作れってことですか?
226デフォルトの名無しさん:2007/12/18(火) 23:45:42
>>224
ですよね・・・
coutとかprintf関数と一緒?けど関数の形してないしな とか疑問がすごかったです・・・。
とりあえずC++からやってみます。
今週中に電卓つくってねーとか言われたけど無理だろこれwwwwwww
227デフォルトの名無しさん:2007/12/18(火) 23:53:32
これ提出すればよろし

file://localhost/C:/WINDOWS/system32/calc.exe
228デフォルトの名無しさん:2007/12/18(火) 23:57:30
C++でCの構文そのまま使えるから
時間があればC++を勉強すればいいけど
とりあえずMFCを触ってみたいってだけなら
基本的にCで書いて、MFC独特の所だけ覚えれば良いんでないかい?
printfも使えるし。

ま、MFCならprintf使ってもしょうがないけどな。
MFCなら多分コンソールアプリじゃないだろうし。

229デフォルトの名無しさん:2007/12/19(水) 01:28:30
boostのspiritというものを使えば楽にできるらしいよ
230デフォルトの名無しさん:2007/12/19(水) 01:49:12
四則演算の電卓を作るだけなら本見ながらやれば1週間でできるだろ
ただそれは作った。であって作れるようになった。ではないけど
231デフォルトの名無しさん:2007/12/19(水) 02:08:08
無理だろ。Cでコンソールアプリしか作ったことないなら、
クラスも知らない、WinAPI も知らない、ウィンドウやメッセージの概念も知らない、
そんな状態で MFC を使わされても 「???」 しか浮かばないだろうぜ
232デフォルトの名無しさん:2007/12/19(水) 09:13:55
コンソールアプリでも関数電卓になると途端に難しくなる
たしかに基本のアルゴリズムに関して覚えるいい勉強にはなったけど・・・
まあ、四則演算だけならできそうだが・・・いきなりMFCとかすごいねw
233デフォルトの名無しさん:2007/12/19(水) 09:41:00
その先輩は自分のすごさをアピールするために
さも簡単そうに言ってるだけだな。
本当は自分も昔苦労したくせに。
234デフォルトの名無しさん:2007/12/19(水) 10:19:09
とりあえずボタン押したら数字表示する
ここまでが第1目標
235デフォルトの名無しさん:2007/12/19(水) 10:34:06
シェルの実装ができるようになりたい
236デフォルトの名無しさん:2007/12/19(水) 11:14:33
>>219
ちょっと試したけど、とりあえず問題ないぞ?
問題があるのはその最後に出すダイアログなんじゃないの?
使いまわししてるのか?
237デフォルトの名無しさん:2007/12/19(水) 12:46:11
初心者ですが質問させてください.
WinMainやmainで計算された結果を格納している数値配列を
プロシジャーに渡したいんですが何かいい方法がないでしょうか?
ちなみに配列は動的に確保しているのでグローバルにするのはできません.
渡すことができれば描画関係はプロシジャーの中でできるのですが・・・
238デフォルトの名無しさん:2007/12/19(水) 12:52:29
引数にすればいい、、、、ってここでいうプロシジャーは何?
ウィンドウプロシージャのことか?
メッセージか何かで渡したいなら、WM_COPYDATAがプロセス間でも使える。
239デフォルトの名無しさん:2007/12/19(水) 13:03:39
>>238
そうです.ウインドウプロシージャです.すいません.
自作メッセージを送るときだけ配列をウインドウプロシージャに渡したいのです.
WM_COPYDATAというのが使えるんでしょうか?少し調べてみます.
ありがとうございました.
240デフォルトの名無しさん:2007/12/19(水) 13:12:22
218おねがいします
241デフォルトの名無しさん:2007/12/19(水) 13:41:43
218はスルーでおねがいします
242デフォルトの名無しさん:2007/12/19(水) 15:20:35
bluetoothなんてVC++では制御できないよねー
243デフォルトの名無しさん:2007/12/19(水) 15:35:13
さあ?自分で調べれば?
金くれたら調べてやってもいいけど
244デフォルトの名無しさん:2007/12/19(水) 16:07:34
218と221の扱いの差に吹いたw
可愛そうだからレスしてやるw

確かvistaのSDKだったらwinsock2でいけたはず
詳しいことはわからん、後誰かよろしく
245デフォルトの名無しさん:2007/12/19(水) 16:48:09
メニューリソースにセパレータを追加するにはどうすればいいでしょうか?
「-」を入れればいいかと思ったのですがだめでした。
246デフォルトの名無しさん:2007/12/19(水) 16:50:09
すみません。セパレータというチェックボックスがありました。orz
247デフォルトの名無しさん:2007/12/19(水) 21:12:06
>>239
同一プロセス内だったら、自分で好きなメッセージを作って
それをやり取りすればいいんだよ。

値はWM_APP + nの中から、nは0以上0x4000未満。
248デフォルトの名無しさん:2007/12/19(水) 21:30:39
a.hとb.hがありそれぞれがそれぞれを参照しているのですが
コンパイルエラーになります。
これを回避する方法はあるでしょうか?
#include "a.h"
#include "b.h"

#include "b.h"
#include "a.h"

どちらにしても、相手を参照しているのが問題のようなのですが
対策がわかりません。よろしくお願いします。
249デフォルトの名無しさん:2007/12/19(水) 21:37:04
まずはインクルードガードでググレ
250デフォルトの名無しさん:2007/12/19(水) 22:15:10
>>248
前方宣言でググれ。
まあ設計見直すのが先だな。
251デフォルトの名無しさん:2007/12/19(水) 22:31:32
>>249
なんか違うような・・・

>>250
ありがとうございます。たぶんわかりました。
252デフォルトの名無しさん:2007/12/19(水) 22:53:32
VC++2005 Express Edition + Windows SDK + DirectX を使い、
Win32アプリケーションのゲームを作ろうとしている所です。

プロジェクト設定:コンソールアプリケーション
アプリケーションの種類:Windowsアプリケーション

としてプロジェクトを作成しました。

さて、ここで質問です。この場合にフォームの追加、編集はどのようにすればよいのでしょうか?
.NET Frameworkのアプリですと、Borland C++ Builderのような感じで
フォームをGUIで編集できるようなのですが、上記のようなWin32アプリでも同じような
フォームの編集機能はありますでしょうか?

とりあえずプロジェクト作成時に作られたフォームのメニューIDだけはVC++6.0の
リソースエディターで編集できましたが、新フォーム追加や呼び出し、
ウィンドウのプロパティの編集などがさっぱりです

どなたか同じような環境でやっておられる方、助言下さい。よろしくお願いします。
253デフォルトの名無しさん:2007/12/19(水) 23:19:56
EEでは無理
254デフォルトの名無しさん:2007/12/20(木) 00:07:00
>>253
EEでは無理、という事は、逆に言えばStanderd Edition等であれば
Win32アプリケーションであってもフォームのGUIによる編集機能が備わっている、
という事なのでしょうか?

とりあえず、ゲームのオプション設定等ができる別ウインドウをいくつか作れればいいので
特にGUIでのフォーム編集に拘っているわけではないです。
もちろんできるに越したことはないですけれども。

何かしら良いやり方があれば教えてください。
255デフォルトの名無しさん:2007/12/20(木) 00:09:47
Std以降も、ダイアログエディタとMFC/ATLが付くってだけで、
VC6時代のやりかたとそんなに変わってないよ。
256デフォルトの名無しさん:2007/12/20(木) 00:14:54
>>255
VC6はインストールはしてあったのですが、何分BCBばかり使っていましたので
VC6時代のやりかた自体がわかっていない状態です

長くなりそうな内容でしたら、何か参考になるページとかありましたら教えてほしいです。
よろしくお願いします
257デフォルトの名無しさん:2007/12/20(木) 00:37:08
VC++ 6.0を使用してます。

初めてサブクラス化に挑戦していて、同じクラス(ボタンとかチェックボックスとか)では成功したのですが、
リストボックスとボタンなどを一緒に SetWindowLong で同じ新規プロシージャ当てると、どちらかが非表示か無効状態になります。
異なるクラス名での同一プロシージャへのサブクラス化は出来ますでしょうか・・・?
またその場合、するべき事はどのような事がありますか?

VBやMFCを使ったサブクラス化のソースはあるのですが、Win32SDKでのサブクラス化の例が少なくてここにたどり着きました。
どうか助言のほどよろしくお願いします。
258デフォルトの名無しさん:2007/12/20(木) 01:10:15
>>256
画面が必要なトコをMFCアプリケーションで作ってCreateProcessで起動したら?
DLLでもいいけど
259デフォルトの名無しさん:2007/12/20(木) 01:43:11
>>257
CallWindowProcでは、それぞれの基のウィンドウプロシージャを呼んでいる?
リストボックスまでボタンのウィンドウプロシージャを呼んでいるなんて事態になっていないか。
260257:2007/12/20(木) 05:57:09
>>259
なるほど、GetWindowLongはそのためのものだったんですね。
それぞれのクラスのデフォルトプロシージャを取得しておいて、
まとめたプロシージャでクラス名ごとにreturnするCallWindowProを変えたら上手く行きました。

非常に勉強になりました。ありがとうございました。
261デフォルトの名無しさん:2007/12/20(木) 18:21:48
HTMLのリンクにマウスを持っていったときに指マークになりますが
あれはどうやってやればよいでしょうか?
262デフォルトの名無しさん:2007/12/20(木) 18:52:50
ロードカーソル
263デフォルトの名無しさん:2007/12/21(金) 08:27:30
CInternetSessionを使う場合は自動的にIEの持っているクッキーを
送信してくれるのでしょうか?
それともGetCookieやSetCookieを使って自分でセットしてやる
必要があるのでしょうか?
264デフォルトの名無しさん:2007/12/21(金) 08:44:09
経路上か鯖側で通信内容確認できないの?
そんな状況ならやめた方いいよ
265デフォルトの名無しさん:2007/12/21(金) 12:56:35
>>264
キャプチャしてみたところついてました。
助かったー
266デフォルトの名無しさん:2007/12/21(金) 16:14:43
Visual C++ 2005 Express Edition でWindowsアプリケーションを作れないかと調べたら、
Microsoft Windows SDK をダウンロードして設定をいじったらできる、という記述を見つけました。
しかしMicrosoftのホームページを調べてみても、「Windows SDK for Windows Vista」みたいなのしか見つかりません。
XPではこのやり方では無理なのでしょうか?
267デフォルトの名無しさん:2007/12/21(金) 16:15:57
for Vistaと書いてありますがXPでも使えるという罠です
268デフォルトの名無しさん:2007/12/21(金) 16:26:08
ありがとうございました、早速ダウンロードしてみます!
269デフォルトの名無しさん:2007/12/21(金) 17:37:46
今までBorlandC++でコンパイルできてたソースをVC++でコンパイルしてみたら、

○ 番目の引数を 'char [○]' から 'LPCWSTR' に変換できません。

というエラーが大量に出てきました。
ヘルプで調べて、暗黙の変換をしようとすると出るから明示的に型キャストしろ、
とあったので、 (LPCWSTR)"文字列" という形にしたところほとんどのエラーは消えたのですが、
CreateWindow関数の第二引数だけ、このやり方でも同じエラーが出てしまいます。
文字列を一度char配列に格納して型キャストしたポインタを入れてもだめでした。
どうしてなのでしょうか?
270デフォルトの名無しさん:2007/12/21(金) 17:40:23
>>269
今のVCはUnicodeがデフォだから。
両方で共通に使いたいならANSIビルドにすればいいし
UNICODEのままでやるつもりなら、_T()マクロとか、TCHAR、LPCTTRとか駆使して書き換え。
271デフォルトの名無しさん:2007/12/21(金) 17:41:57
あと、とりあえずなんでもキャストすんな。
文字列は、_T("")でくくれ
"string" -> _T("string")
272デフォルトの名無しさん:2007/12/21(金) 17:42:33
273デフォルトの名無しさん:2007/12/21(金) 17:46:35
なるほど、文字コードの違いのせいでしたか。
ありがとうございました。
274デフォルトの名無しさん:2007/12/22(土) 07:37:22
WinXP、VisualStudio2005ExpressEditionです。

パソコンの名前:AAA   XPのユーザー名:BBB
VisualStudio2005で操作するプロジェクト名:CCC

のときに、「CCC.BBB.AAA.user」という名前のファイルがプロジェクトのあるフォルダに勝手に作成されています。
個人情報が漏れそうで怖いんですが、VisualStudio2005で作成した実行ファイルにもユーザー名が埋め込まれていたりしますか?
それとも、.userのファイルだけ気をつければパソコンの名前やユーザー名は分からないですか?
275デフォルトの名無しさん:2007/12/22(土) 08:50:51
わかります
276274:2007/12/22(土) 09:25:47
作成した実行ファイルを右クリックして見られるプロパティにはユーザー名が含まれていないようでした。
ファイルのヘッダ?みたいな部分に書かれているんでしょうか?
確かめる方法と消す方法を教えてください。
OSのユーザー名は最初に作成したadministrator権限のなので、変更は不可能みたいです。
277デフォルトの名無しさん:2007/12/22(土) 10:04:06
exeをバイナリエディタで検索かけてもユーザー名は検出されなかったけど
>>275は適当言ってるだけじゃねーの?
278デフォルトの名無しさん:2007/12/22(土) 11:29:12
VC++もMFCがあればVBとあまり変わらないんですね。
なんかほっとしました。
279デフォルトの名無しさん:2007/12/22(土) 13:42:39
?!
280デフォルトの名無しさん:2007/12/22(土) 14:19:49
デバッグ情報出力するようになってると
プロジェクトのフォルダのパスが埋め込まれるから
マイドキュメントなんかにいれてるとわかる。
281デフォルトの名無しさん:2007/12/22(土) 14:39:48
よくわからないんだけど普通のC++とかとVisual C++ってのは違うの??
282デフォルトの名無しさん:2007/12/22(土) 14:46:37
C++ってのはプログラミング言語の名前。
VC++ってのはC++でプログラムを作成するのをサポートしてくれるソフトウェア。

htmlとホームページビルダーみたいな関係だと思えばいい。
283デフォルトの名無しさん:2007/12/22(土) 14:48:11
じゃあここはVC++を使ったC++プログラミングスレというわけか、さんくす
284デフォルトの名無しさん:2007/12/22(土) 16:23:27
ある本を参考にして、勉強しています。

プログラムを開こうとすると、
「Classview情報ファイルにアクセスできません。ClassView 情報を取得できません。」
と怒られるのですが、何が原因なのでしょう?

ファイルが読み取り専用から、チェックを外しています。
285デフォルトの名無しさん:2007/12/22(土) 16:53:43
そのある本とやらを教えろ。話はそれからだ
286デフォルトの名無しさん:2007/12/22(土) 17:05:38
ClassView情報ファイルを消して、再作成させろ。
*.clwだっけ?たしか。
287デフォルトの名無しさん:2007/12/22(土) 17:31:19
>>286
有難うございます。
.clw? 等を全て削除。(主ファイルだけ残しました。)
再びVCを立ち上げて再ビルド。

何故か 成功 何故ですか?w
バグが怖いので、最初から作ります。
288デフォルトの名無しさん:2007/12/22(土) 20:09:49
環境 VC++ 6.0 SDK
初めてUnicodeでのビルドに挑戦して文字列操作に悩んでます。
プリプロセッサで _UNICODE 設定し、リンクアウトプットに wWinMainCRTStartup としてメイン関数は wWinMainにしました。

例えば

static LPTSTR szAppPath;
GetModuleFileName(NULL, szAppPath, MAX_PATH);

のようにやると、コンパイルは通るのですが、実行時にデバッグ画面に移ります。
これを TCHAR szAppPath にすると問題有りません。
マルチバイトとワイドバイトの違いとchar周りを調べてるのですが、いまいち理解出来ずに居ます。
助言頂けたら幸いです。
289デフォルトの名無しさん:2007/12/22(土) 20:19:21
>>288
static LPTSTR szAppPath;

LP〜はポインタ。実質

static wchar_t* szAppPath;

と同義。TCHAR だとコンパイルとおらないと思うんだけど?
290デフォルトの名無しさん:2007/12/22(土) 20:41:47
static TCHAR szAppPath; 
ならコンパイルは通るでしょ。ただ1文字分しか領域が無いから落ちると。
static TCHAR szAppPath[MAX_PATH]; でOK
291デフォルトの名無しさん:2007/12/22(土) 20:43:48
あ、エラーは2行目か
292288:2007/12/22(土) 21:25:05
分かりづらかったですね、すいません。
そうです、TCHARで配列指定すれば通ります。
LPTSTR指定すると2行目のGetModuleFileName関数で落ちます。
293デフォルトの名無しさん:2007/12/22(土) 21:31:42
LPTSTRとか訳の分からないものが出てきたら、それを選択してF12押すと正体が見れるよ。
ただ>>288はMBCSとかUnicodeとか関係のない、ただのロジックミス。
294デフォルトの名無しさん:2007/12/22(土) 21:51:22
というか、ぬるぽだろそれは。
実体を確保してやれよ。
295デフォルトの名無しさん:2007/12/22(土) 21:51:46
wWinMainCRTStartup としてメイン関数は wWinMain
みたいないらんことする必要ない
296デフォルトの名無しさん:2007/12/22(土) 22:12:03
>>292
今までこんなことやったことあるか?
static char *szAppPath;
GetModuleFileName(NULL, szAppPath, MAX_PATH);
297288:2007/12/22(土) 22:17:50
8bitでの char *szAppPath; と同様ということですね。
初めて16bitを扱うので、ちょっとまだ混乱気味ですが TCHAR szAppPath[MAX_PATH]; にするか、
もしくはAlloc関数などで動的確保すれば自分のやりたい事が出来るという事であってますでしょうか・・・。
298デフォルトの名無しさん:2007/12/22(土) 22:31:34
別に今まで通り普通に作るだけだろ
今までどうやってたか不思議
299デフォルトの名無しさん:2007/12/22(土) 23:00:51
サンプル探して真似するだけ
慣れるまでは自分で勝手にコード書いちゃダメ
300デフォルトの名無しさん:2007/12/22(土) 23:51:51
サンプルがなかなか見つからない
301デフォルトの名無しさん:2007/12/23(日) 00:46:34
サンプルは簡単に見つかる
302デフォルトの名無しさん:2007/12/23(日) 02:07:12
Visual C++ (やりたい事) でぐぐれ
303デフォルトの名無しさん:2007/12/23(日) 03:17:02
Visual C++ アクションゲーム

出てこないよ
304デフォルトの名無しさん:2007/12/23(日) 03:40:40
いっぱい出てきたよ
305274:2007/12/23(日) 04:25:21
>>280
プロジェクトのフォルダの絶対パスに、ユーザー名が含まれていなければセーフってことですね。
それならたぶん大丈夫です。ありがとうございました。
306デフォルトの名無しさん:2007/12/23(日) 05:07:52
>>304
詳しく
307デフォルトの名無しさん:2007/12/23(日) 06:16:47
VC6のやつ 他にMSDNのサンプルにもある
ATL\Include\ATLBASE.H(4934): GetModuleFileName(_pModule->GetModuleInstance(), szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(4976): GetModuleFileName(_pModule->GetModuleInstance(), szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(5042): GetModuleFileName(m_hInst, szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(5925): GetModuleFileName(pM->m_hInst, szModule, _MAX_PATH);
ATL\Include\ATLBASE.H(5987): GetModuleFileName(pM->m_hInstTypeLib, szModule, _MAX_PATH);
ATL\Include\ATLWIN.H(1353): GetModuleFileName(_Module.GetModuleInstance(), szModule, _MAX_PATH);
ATL\Include\ATLWIN.H(1379): GetModuleFileName(_Module.GetModuleInstance(), szModule, _MAX_PATH);
CRT\SRC\ASSERT.C(151):if ( !GetModuleFileName( NULL, progname, MAX_PATH ))
CRT\SRC\CRT0MSG.C(242):if (!GetModuleFileName(NULL, progname, MAX_PATH))
CRT\SRC\DBGRPT.C(477):if (!GetModuleFileName(NULL, szExeName, MAX_PATH))
CRT\SRC\HEAPINIT.C(92):GetModuleFileName(NULL,env_app_name,sizeof(env_app_name));
CRT\SRC\STDARGV.C(103):GetModuleFileName( NULL, _pgmname, sizeof( _pgmname ) / sizeof(_TSCHAR));
MFC\SRC\APPINIT.CPP(79): VERIFY(::GetModuleFileName(m_hInstance, szBuff, _MAX_PATH));
MFC\SRC\APPUI1.CPP(109): GetModuleFileName(NULL, szAppName, _MAX_PATH);
MFC\SRC\CTLLIC.CPP(36): ::GetModuleFileName(hInstance, szPathName, _MAX_PATH);
MFC\SRC\CTLREG.CPP(87): ::GetModuleFileName(hInstance, szPathName, _MAX_PATH);
MFC\SRC\DLLINIT.CPP(118): GetModuleFileName(m_hModule, szName, _countof(szName));
MFC\SRC\DUMPSTAK.CPP(58): cch = GetModuleFileNameA((HINSTANCE)memoryBasicInfo.AllocationBase,
MFC\SRC\FILECORE.CPP(700): ::GetModuleFileName(hInst, szLongPathName, _MAX_PATH);
MFC\SRC\OLETYPLB.CPP(75): GetModuleFileName(AfxGetInstanceHandle(), szPath, _MAX_PATH);
MFC\SRC\VIEWHTML.CPP(447): if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
MFC\SRC\VIEWHTML.CPP(468): if (GetModuleFileName(hInstance, lpszModule, _MAX_PATH))
308デフォルトの名無しさん:2007/12/23(日) 17:27:27
JPEGの画像を扱いたいプログラムを構想中です。
現在 VC6.0なのですが、難しいですか?

少し検索してみたのですが、VC7.0には
「CImageクラスという便利なクラスが追加されました。」
と言う事なのですが、VC7.0にした方が良いですか?
その時の利点と欠点を分かり易く説明ヨロ
309デフォルトの名無しさん:2007/12/23(日) 17:53:33
何が利点・欠点になるかは作るモノ次第。
他にもlibjpeg、Susie plug-in、GDI+とかいろいろあるから、自分で調べて判断してくれ。
310デフォルトの名無しさん:2007/12/23(日) 18:17:46
Susieをスーシーって読んでた俺は間違いなくおかしい
友人はスージーと読んでいてよく議論した
311デフォルトの名無しさん:2007/12/23(日) 18:18:37
むしろスシエって読んでた
312デフォルトの名無しさん:2007/12/23(日) 19:32:02
CImageあれば使えばいいし、
CImageなかったら作れないものでもないし
313デフォルトの名無しさん:2007/12/23(日) 21:21:33
>>307
マジですか うほー
314デフォルトの名無しさん:2007/12/23(日) 23:06:54
DWORD(unsigned long)をprintfなんかで表示する場合

%ul と %lu どっちが正しいの?
315デフォルトの名無しさん:2007/12/23(日) 23:47:03
>>314
%ulなんてない。%uをlで修飾して、%luが正解だ。
つーか、%ulじゃ単に、%uの後にlが出力されるだけだ。
316デフォルトの名無しさん:2007/12/24(月) 01:24:49
ありがと
317デフォルトの名無しさん:2007/12/24(月) 09:59:08
UTF-8の文字列をMS932に変換したいのですが
どのような関数がありますでしょうか?
318デフォルトの名無しさん:2007/12/24(月) 13:26:04
MultiByteToWideChar/WideCharToMultiByteやMLangなど。
319デフォルトの名無しさん:2007/12/24(月) 14:26:20
Visual C++ 2008 には Snippet 機能はありますか?
320デフォルトの名無しさん:2007/12/24(月) 14:38:17
有るが大して役に立つものではない
321デフォルトの名無しさん:2007/12/24(月) 14:42:48
EEですが2005用Snippetどこでダウンロードできますか?
322デフォルトの名無しさん:2007/12/24(月) 14:54:13
デフォルトのコピーコンストラクタと代入演算子が
生成される条件はなんでしょうか?
常に生成されるのでしょうか?

もしそうであれば,「浅いコピー」を勝手にしてもらっては
困るなどの場合,両者をあえて宣言だけして
定義せずに private にしておくなどの方法で
明示的に使えなくするしかありませんか?

ちなみに IntelliSense には operator== は出てきません.
自分であえて宣言した場合には出てきますが.
323デフォルトの名無しさん:2007/12/24(月) 14:55:31
324デフォルトの名無しさん:2007/12/24(月) 17:02:26
>>322
>明示的に使えなくするしかありませんか?
うん
それかboost::noncopyableからprivate派生するという手もある。
325デフォルトの名無しさん:2007/12/24(月) 17:12:32
あー後、デフォルトのやつはメンバ変数・基本クラスのコピーコンストラクタ/operator=を呼び出すから
std::iostreamみたいにコピー出来ないものがあってもコピー不可になる。
326デフォルトの名無しさん:2007/12/24(月) 18:34:21
MFCでActiveXコントロールを作っています。
それをIEに貼り付けて右クリックイベントを拾ったんですが
OnLButtonUp(UINT nFlags, CPoint point)

pointに入っている値がどうもコントロール内での位置で
これを
ClientToScreen(&point)で変換してみたのですが
変換された値が画面上の位置とずれているようです。

画面上の位置を取得するにはどうすればよいでしょうか?

327326:2007/12/24(月) 18:53:33
すみません。GetCursorPos()で取れました。
いいのかな。こんなやりかたで。
328デフォルトの名無しさん:2007/12/25(火) 08:55:54
オーナードローボタンを作ってみました。
if( nState & (ODS_FOCUS|ODS_SELECTED) ) {
}

としてフォーカスと選択状態のときに色を変えるようにしたのですが
この他にマウスポインタが乗っているときにも色を変えたいのですが
そのような状態を取得するにはどうしたらよいでしょうか?
329デフォルトの名無しさん:2007/12/25(火) 10:14:49
>>328
TrackMouseEvent 使う。
昔は、WM_MOUSEMOVE でSetCaptureしてたけど、
今はこれ使えるからいいね。
330デフォルトの名無しさん:2007/12/25(火) 10:34:47
>>329
ありがとうございます。調べてみます。
331デフォルトの名無しさん:2007/12/25(火) 23:57:59
これからVisual C++ 2005 Proを使ってWindowsのGUIアプリを作成しようと思います。
C/C++の知識はあるのですが、CLI等はまだ詳しく知りません。
Visual C++を用いたアプリの作成の経験もありません。
このとき、どのようにしてGUIアプリの制作を始めるのが適切だと思いますか?

1. アプリのフォーム部分のみ.NET Frameworkを使って、
内部の処理はMFCやWinAPIを使ったC++で実装する
2. フォーム部分も内部も全て.NET(CLI)で実装
3. 全てC++とMFCで実装

言語自体が変わってしまう(C++でなくCLIになってしまう).NETはあまり使いたくないです。
ただGUIのデザインはMFCを使ったやり方よりも.NETのフォームデザイナを使用した方が
やり易いので、そうい意味で.NETを使うのは魅力的です。

言語をとるか、GUIデザインのしやすさをとるか・・・
332デフォルトの名無しさん:2007/12/26(水) 00:00:01
というか、NetFrameworkなフォームの内部をMFCで作るって、_でそ。
333デフォルトの名無しさん:2007/12/26(水) 00:27:44
Visual C++のCLIでWindowsMediaPlayerコントロールを使用してAVIファイルを再生しようと考えているのですが、
参考書の通りに打ち込んでいるのですがビルドに失敗してしまいます。
Ctlcontrols->からのsetModeやpause、playを使用したコードが'WMPLib::IWMPSettings' のメンバではありません。というエラーになり、
WMPLib::WMPPlayState::wmppsPlayingというコードに対して、以下の2つのエラーが発生します。
@'WMPLib' : 識別子がクラス名でも名前空間名でもありません。
A'wmppsPlaying' : 定義されていない識別子です。
何か設定が必要なのでしょうか?ご教授お願いします。
334デフォルトの名無しさん:2007/12/26(水) 00:33:09
MFCなら間違いはないよ、一応
335デフォルトの名無しさん:2007/12/26(水) 00:35:03
>>331
クロスプラットフォームなフリーのGUIライブラリでも使ったらいいんでね?
336デフォルトの名無しさん:2007/12/26(水) 03:24:20
>>333
参照追加した?
337デフォルトの名無しさん:2007/12/26(水) 11:19:29
Visual C++6.0,および2005を使っています。
2005で作成したソースコードを6.0に移植したいと思っているのですが、
strcpy_sなどの関数が6.0で使用できず困っています。
バッファオーバーランなどの可能性を考慮すると、安易にstrcpyで置き換える事も出来ません。
やりようによっては、strncpyを使うという手段もありますが、これだとstrcat_sをどうしたら良いか分からなくなります。
素直に、VC6.0でもstrcpy_sや、strcat_sを使いたいと思っているのですが、どうしたら良いでしょうか?
何かしらのSDKをインストールすればいいんでしょうか。
一応、Microsoft .NET Framework SDK v2.0はインストールしてみたのですが、その中にこれらの関数は存在しませんでした。
338デフォルトの名無しさん:2007/12/26(水) 14:17:28
>>336
COMコンポーネントでタブをチェックしてOKボタンを押しただけで参照は選択していません。
参照で何を追加すればよいのでしょうか?
339デフォルトの名無しさん:2007/12/26(水) 14:29:33
>>338
どこの操作の話?
ソリューションエクスプローラーからプロジェクトを右クリックして
参照・・・選んで新しい参照の追加選んでCOM選んでWindowsMedia Player 選んでOKってやったの?
340デフォルトの名無しさん:2007/12/26(水) 15:24:40
>>339
ツールボックス上で右クリックしてアイテムの選択をクリックし、そこからCOMコンポーネントでWindowsMediaPlayerを追加しました。
そこ際、参照というボタンがあったのですがそれは何もしてなかったので。
ソリューションエクスプローラーからという操作はしていません。
341デフォルトの名無しさん:2007/12/26(水) 15:31:04
プリコンパイルドヘッダーって,
なければ自動的に作る,あれば使う,ってできませんか?
昔は /YX オプションがあったようなのですが.

ヘッダファイル common.h をすべての *.cpp から
インクルードしています. common.h にはよく使う
ライブラリのヘッダをインクルードし,最後に
#pragma hdrstop しています.
342デフォルトの名無しさん:2007/12/26(水) 15:42:19
>>340
で、>>339はやったの?
343デフォルトの名無しさん:2007/12/26(水) 15:52:09
>>342
それはやっていなかったので、今やってみたらエラー数が増えました。
344デフォルトの名無しさん:2007/12/26(水) 16:05:46
よかったね
345デフォルトの名無しさん:2007/12/26(水) 18:31:19
>337
strcpy_sや、strcat_sなんかたいしたことやってないから
自分で書くかソースコピーして移植
346デフォルトの名無しさん:2007/12/26(水) 18:34:38
strcpy_sって何ぞ?
347デフォルトの名無しさん:2007/12/26(水) 18:36:05
>>346
VC2003以前から2005以降にプロジェクトもって行くといやというほどお目にかかれるw
348デフォルトの名無しさん:2007/12/26(水) 18:39:39
なんか警告対策だっけ、なんだっけ
349デフォルトの名無しさん:2007/12/26(水) 19:53:27
安全性を向上さしたMS独自の拡張関数。
警告出るけど今まで通りのANCII関数
をちゃんと使えてれば無駄な警告。
350デフォルトの名無しさん:2007/12/26(水) 20:24:10
ここでstrsafe.hが奇跡の大復活を

>>341
stdafx.h/cppは駄目なん?
/YXは無駄に再作成される事が多く、あまり役に立たなかったので削除された。
たぶん。個人的には無くして正解だと思う。
351デフォルトの名無しさん:2007/12/26(水) 21:01:11
VC++ 2008 Expで、マネージコードとネイティブコードを混在させて
プログラムを作成する方法を教えてください。

プロジェクトはCLR、Win32のどちらで作成するのですか?
具体的にどのようにして2つのコードが識別されるのですか?
352デフォルトの名無しさん:2007/12/26(水) 21:07:30
Std以上ならCRTのソースも付いてるお
353デフォルトの名無しさん:2007/12/27(木) 05:17:15
VC++ 6.0 SDKです。
半透明ウィンドウを作成しようと色々調べて、
取り敢えずuser32.dllから動的に関数を読み込むやり方までは出来ましたが、
新しい Windows Server 2003 PSDK を入れても SetLayeredWindowAttributes が未定義となってしまいます。

インストールした C:\Program Files\Microsoft SDK\ 以下のlibとincludeフォルダをそれぞれオプションでパス指定しましたがダメでした。
6.0では動的に確保しなければ、6.0以降のAPIは静的に使う事が出来ないのでしょうか・・・?
PlatformSDKは最新のだと6.0に対応してないそうなので、
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
から落として、CoreSDKのみインストールしました。

どうか助言のほどよろしくお願いします。
354デフォルトの名無しさん:2007/12/27(木) 05:25:01
#define _WIN32_WINNT 0x0500
355デフォルトの名無しさん:2007/12/27(木) 10:23:41
二つのスタティックライブラリ a.lib b.lib があります。
b.lib は a.lib の関数を呼び出しています。

b.lib を使ったアプリケーションを作成するにあたって、
a.lib も b.lib もリンカに指定しなければならないのですが、
b.lib をビルドするときに a.lib の必要なものも
取り込んでしまうということはできるのでしょうか?

リンカに「あれがない、これがない」と連鎖的に
ないないと言われないようにしたいのですが。

なお、すべて自作のものなのでライセンス上の問題はありません。
356デフォルトの名無しさん:2007/12/27(木) 10:43:38
>>355
VC++の話だよな?
b.lib 使うときに b.h もインクルードすると思うが、
そのb.h の中に、
#pragma comment(lib, "a.lib")
#pragma comment(lib, "b.lib")
両方入れておけば?

つか、a.hにa.libの設定を入れてb.hでインクルードすればいいか?
357デフォルトの名無しさん:2007/12/27(木) 10:44:50
あとスタティックリンクなら、両方まとめて1つのlibにするとか・・・
358デフォルトの名無しさん:2007/12/27(木) 10:59:33
質問させてください.
今,あるプログラム内で_beginthreadにより別ウインドウを作成します.そのウインドウを作成する
具体的な関数(hogeとする)にデータを渡したいので構造体のポインタ(data *a)で渡しています.
_beginthread(hoge,0,a)のかたちです.
関数hogeの中でdata *b;を宣言して
b=(data *)aにして利用するのはできるのですが,
渡したデータを書き換えたあと(b->member=hogehoge;)
もとのメイン関数の中でa->memberの値は書き換わっているのでしょうか?
ポインタの基本的なことなんですが混乱してきました・・・
今のプログラムでは書き換わっていません.
どなたかご教授お願いします.
359デフォルトの名無しさん:2007/12/27(木) 11:08:43
>>358
マルチスレッドでの共有変数の読み書きはタイミングの問題が付きまとうから
ちゃんと同期してやらんといかんよ。
360デフォルトの名無しさん:2007/12/27(木) 11:09:39
変わらない
361デフォルトの名無しさん:2007/12/27(木) 12:33:37
>>359
おっしゃるとおり同期の問題でした.
メイン関数側に書き換わったのを待つループを入れたら
解決しました.ありがとうございました.
362デフォルトの名無しさん:2007/12/27(木) 22:04:58
質問です。
アニメーションを表示するためのプログラムを詳しい人に書いてもらったのですが
「アニメーション表示。vcproj」(?)というファイルを開いてデバックの開始をすると
「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」
というエラー表示がでます。
オブジェクトファイルというのはもらったファイルの中にあるのですが
リンクするとは、どうすればいいのでしょうか?
教えてください。
ちなみに私はまったくC++わからないので
詳しく教えていただけるとありがたいです。
363デフォルトの名無しさん:2007/12/27(木) 22:47:12
C++わからないならバイナリ貰えよ。
読めないならソース貰っても意味ないし。
364364:2007/12/27(木) 23:48:57
Visual C++ で「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」というエラーが表示されます。

人にC++を使ってアニメーションを表示するプログラムを書いてもらいました。
もらったファイルの「アニメーション表示.vcproj」というファイルを開いてデバッグ開始をすると
「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」というエラーが表示されます。

調べたところオブジェクトファイルをリンクする必要がある、というところまではわかりましたが
オブジェクトファイルと何をどうやってリンクさせるのかわかりません。
しかも送ってもらったファイルの中にはobject fileというものが3つ(AssemblyInfo,stdafx,アニメーション表示)あります。どれを使うのでしょうか?

C++についてまったく知識がないので全くわかりません。
出来るだけ詳しく教えていただけたら幸いです。
365デフォルトの名無しさん:2007/12/27(木) 23:56:27
リビルドで一発じゃね?
366デフォルトの名無しさん:2007/12/28(金) 00:41:40
>>351
CLRのプロジェクトを作れ。

ソース内で#pragma unmanagedと書くと、そこからアンマネージコードになる。
#pragma managedと書くとマネージコードが始まる。
どっちも現れる前のファイルの先頭はマネージコード。
367デフォルトの名無しさん:2007/12/28(金) 08:15:29
プロジェクトはWIN32プロジェクトです。
環境はXP VC++2005です。

参考書のリソースの追加という項目を読んでいるのですが、
「ファイル」→「新規作成」の中にリソーススクリプトという選択肢がある、
と参考書には書いてありますが、VC++2005には見つかりません。
代わりにリソーステンプレートを選択してやってみましたが、
"resource.h"が作成されていないため、エラーとなりました。
どうすればこのプロジェクトにリソースを追加することができるでしょうか?
よろしくお願いします。
368デフォルトの名無しさん:2007/12/28(金) 08:27:29
2008 Express Editionをインストールしたのですが、
スタートメニューの[Visual Studio Tools]からコマンドプロンプトを起動すると
ttp://www.uploader.jp/user/toollove/images/toollove_uljp00427.jpg
このように表示されるのですが、何が問題なのでしょうか。
369デフォルトの名無しさん:2007/12/28(金) 08:38:49
>>367
ソリューションエクスプローラの
プロジェクト右クリック→追加→リソース
370デフォルトの名無しさん:2007/12/28(金) 09:35:34
>>368
PATH 環境変数の変な所に二重引用符が入っているかもしれないね.
371デフォルトの名無しさん:2007/12/28(金) 10:44:55
>>370
その通りでした。ありがとうございます。
372デフォルトの名無しさん:2007/12/28(金) 19:51:28
普通、テンプレートの定義はヘッダファイルでしますよね。

【hoge.h】
template <typename T>
void foo(const T& t) {
std::out << t << std::endl;
}

しかし、T が int と double しかありえないとわかっている場合、
(完全な)特殊化の宣言を翻訳単位に書くことでテンプレートの
インスタンスが生成されていました、少なくとも Visual C++ 2005 では。

【hoge.cpp】
template <typename T>
void foo(const T& t) {
std::out << t << std::endl;
}
template <>
void foo(const int&);
template <>
void foo(const double&);
373つづき:2007/12/28(金) 19:51:48
Visual C++ 2005 では hoge.h をインクルードしてそのつど
テンプレートをインスタンス貸し手もよかったし、
かわりに hoge.cpp をリンクするということもできました。

しかし Visual C++ 2008 では hoge.cpp をコンパイルしても
hoge.obj にはテンプレートのインスタンスは含まれません。
コンパイラは「なに実体(定義)のない特殊化してるの?」
と無視するようで、当然リンカは「解決できない参照があるよ」
と怒ります。

この挙動はコンパイラ依存なのでしょうか?それとも何か
C++ の標準が変わったのでしょうか?
374デフォルトの名無しさん:2007/12/28(金) 19:57:21
wr
375371=372:2007/12/28(金) 20:13:31
完全特殊化とインスタンシエーションを間違えてました。
template <> ってなにやってんだよ俺。
正しくは <> いりませんでした。
376デフォルトの名無しさん:2007/12/29(土) 07:27:20
>>369
ありがとうございます。できました。
377デフォルトの名無しさん:2007/12/29(土) 09:46:24
VS2005EEでコンパイルしたら.exeの他にいろんな拡張子のファイルができるんですが、
.exeを配布するときに同じフォルタにつめなければいけないファイルってどれですか?
bccのときは、.exeだけで大丈夫だったんですが
378デフォルトの名無しさん:2007/12/29(土) 09:49:03
小数点を扱うときに ふと思ったのですが、
.NET における System.Decimal みたいな型って、
アンマネージドなVC++に存在するんでしょうか?
もし無いならば、精密な小数点計算ではどう対応してるのでしょうか?
よろしくお願いします。
379377:2007/12/29(土) 10:22:35
自己解決しました。何もつめなくても大丈夫みたいでした。
380デフォルトの名無しさん:2007/12/29(土) 10:48:58
>>378
System.Decimalは、
OLEオートメーションで使われていたDECIMAL型が元になっていると思う。
381デフォルトの名無しさん:2007/12/29(土) 12:47:43
switch caseのcase内でreturnする際にもbreakをつけたほうがいいでしょうか?
382デフォルトの名無しさん:2007/12/29(土) 13:13:12
>>381
VCというより、Cの話だな。
当然、イラン
383デフォルトの名無しさん:2007/12/29(土) 13:54:43
>>382
ありがとうございました。
384337:2007/12/29(土) 15:32:24
>>345
そうですね……似たようなコードを自分で書くことにします。
385デフォルトの名無しさん:2007/12/29(土) 15:34:47
VC++6.0です。
非MFCでモーダルダイアログを作成したいのですが、
DialogBoxとリソースを使わずにCreateWindow(Ex)で作る事は出来ますでしょうか・・・?
拡張スタイルにTOOLWINDOWを使うと、コントロールメニュー無し・タイトルバーあり・閉じるボタンのみありを作れるものの。
タイトルバーが小さな感じになってしまい、他のスタイルを何通りか試してみても、
コントロールメニューが残ったりと再現が出来ません。

マクロと書いてあったので、どうにか出来るかなと思って試行錯誤してますが、どうもこれと言った設定が見つかりません。
助言頂けたら幸いです。
386デフォルトの名無しさん:2007/12/29(土) 17:33:55
>>145
むちゃくちゃ遅いですが回答ありがとうございました><
387デフォルトの名無しさん:2007/12/29(土) 21:21:13
>>377
変にオプションをいじっていなければ、exeだけ。
ただし、別途ランタイムが必要。
388デフォルトの名無しさん:2007/12/29(土) 21:54:00
x64でインラインアセンブラは使えないんですか?
まだ対応してないというだけで、新しい2008では使えるんですか?
389デフォルトの名無しさん:2007/12/29(土) 22:07:42
>>388
使えないよ。
MSは組み込み関数を使えってスタンスなんだと理解してる。
390デフォルトの名無しさん:2007/12/29(土) 22:54:36
>>380
ありがとうございました。
391デフォルトの名無しさん:2007/12/30(日) 13:27:33
VS2005MFCです
カスタムコントロールのサイズを取得する、関数って準備されてない?
392デフォルトの名無しさん:2007/12/30(日) 13:29:28
393デフォルトの名無しさん:2007/12/30(日) 17:08:00
visual c++ 5.0 express
だとメイクファイルのエクスポートってできないんですか?
どのバージョンならできます??
394デフォルトの名無しさん:2007/12/30(日) 20:16:30
VC6.0は少なくともできる。ってか5でもできると思うけど持ってないから何とも・・・
395デフォルトの名無しさん:2007/12/30(日) 22:57:37
express ???????????????????
396デフォルトの名無しさん:2007/12/31(月) 01:41:41
Visual C++ 2005 Express Editionについて質問します。

昨日始めたばかりで右も左もわかりませんが、よろしくお願いします。
コーディングする時に、スペースを打つと・が表示され、
TABを打つと、→が表示されますが、これを消すにはどうすればいいんでしょうか?

分かりにくかったらすいません、よろしくお願いします。。。
397デフォルトの名無しさん:2007/12/31(月) 01:56:45
[編集]-[詳細]-[スペースの表示]
398396:2007/12/31(月) 02:01:36
ググろうにもどうやってググればいいのか分からなくてほんと困ってたんです。

>>397さんありがとですmm
399デフォルトの名無しさん:2007/12/31(月) 03:08:41
>>394
ありがとうございました。
400デフォルトの名無しさん:2007/12/31(月) 06:27:05
VC2008のExpression Editionで生成した.exeファイルを、開発した計算機以外で実行させるにはどうしたらよいでしょうか?
現状では『アプリケーションの構成が正しくないため・・』というエラーメッセージ表示と共に止まってしまいます。

取りあえずググった結果、2005では 構成プロパティ->ランタイムライブラリ の項を『マルチスレッドMT』にする事で解決できるという記事を目にしたので試して見たのですが、
実行できるようになっただけで、正しく動きません。
(.exeファイルをエントリポイントとした、いくつかの.dllで構成されたアプリケーションなのですが、.exeファイルの機能だけが実行されていて、他の.dllの機能が実行されている様子がない。因みにこれら.dllファイルもマルチスレッドMTで構成しています)

これは2008では有効な対処法方ではないのでしょうか?それとも自分が開発したアプリに問題があるのでしょうか?

どなたか解決方法に心当たりございましたら、御教授の程宜しくお願い致します。
401デフォルトの名無しさん:2007/12/31(月) 06:37:15
>400 はスルーしとけ
答えてやってももろくなことはないぞ
402400:2007/12/31(月) 06:56:31
何か問題ありましたでしょうか・・・
403デフォルトの名無しさん:2007/12/31(月) 09:00:38
>何か問題
対処法方
心当たりございましたら
御教授の程
404デフォルトの名無しさん:2007/12/31(月) 10:37:06
>>400

多分、共有ライブラリのバージョンが合つてない。
とりあえずスタティックリンクにすれば直ると思う。
405デフォルトの名無しさん:2007/12/31(月) 10:50:33
実行ファイルには、単純にDLLのインポートライブラリをリンクしただけなのか、
起動後に動的に読み込ませているのか、はっきりしる。
C++/CLIなのか、MFC使っているのか、そこらへんも全て書け。
>.dllの機能が実行されている様子がない。
何を根拠に?
406デフォルトの名無しさん:2007/12/31(月) 11:32:51
Visual C++ Express Editionの2008と2005、どちらを使おうか迷っているのですが、
C言語とDirectXの勉強に使うには、2008と2005どちらの方が良いですか。
407デフォルトの名無しさん:2007/12/31(月) 11:38:58
>>406
どっちも使って使いやすいほうにすれば?その為の無料なんだし
408デフォルトの名無しさん:2007/12/31(月) 11:47:11
今って2008のExpressってのも出てるのか
知らんかった
409デフォルトの名無しさん:2007/12/31(月) 11:54:52
2005じゃないの、今なら、勉強用なら
410デフォルトの名無しさん:2007/12/31(月) 12:12:28
>>409
2008は扱いが難しいのでしょうか。
それとも、2005の方が情報が多くて問題解決がし易いという意味ですか。
2005の方が問題解決のヒントが多いのであれば、2005の方を使ってみます。
411デフォルトの名無しさん:2007/12/31(月) 12:29:11
まあそりゃあ多いだろうよ
412デフォルトの名無しさん:2007/12/31(月) 13:34:39
勉強していくなら情報が転がってる2005のほうがいいでしょ
2008でやっていくなら自分でその情報を発信する側になるぐらいの勢いないとな
413デフォルトの名無しさん:2007/12/31(月) 13:35:52
2008はでたばかりだしね
414デフォルトの名無しさん:2007/12/31(月) 14:50:38
VCって無料(フリー)のソフトですか?
415デフォルトの名無しさん:2007/12/31(月) 14:51:13
いいえ
416デフォルトの名無しさん:2007/12/31(月) 14:54:47
機能制限された無料版もあるソフトです
417デフォルトの名無しさん:2007/12/31(月) 14:55:19
ありがとうございます
418デフォルトの名無しさん:2007/12/31(月) 15:11:59
Visual C++ 2005 Express Edition、Windows SDKの環境での質問です

リソースエディタでタブコントロール付きのダイアログボックスというものを
作ってみたのはいいのですが、これをアプリケーション内で利用するにあたり、
MFC等を使わずに実装する方法がよくわかりません
別のダイアログを貼り付ける、みたいな話はあるようなのですが
実際どのようにコーディングするのかがわからないのです

タブコントロール実装のためのコーディング手順などを教えていただきたいです
長くなるようでしたら、このあたりがわかるようなサイトなどありましたら教えて下さい
よろしくおねがいします
419デフォルトの名無しさん:2007/12/31(月) 15:34:26
知ってるけど教えようがない
420デフォルトの名無しさん:2007/12/31(月) 15:39:29
コーディング手順ってのもまた珍妙な語だな、考えてみると
421デフォルトの名無しさん:2007/12/31(月) 16:43:56
だいたいはプロパティシートを使うんじゃないの。
422デフォルトの名無しさん:2007/12/31(月) 16:50:56
MFC等を使わずに実装する方法がよくわかりません
423デフォルトの名無しさん:2007/12/31(月) 17:09:19
タブはボタンみたいなものだよ
ボタン押した時に何をするかは作る人の勝手だし、
タブで何をするも作る人の勝手
424418:2007/12/31(月) 17:51:23
質問の仕方が悪かったでしょうか?
普通にリソースエディタでタブコントロールを追加したダイアログボックスを
ただDialogBox()関数で呼び出しても、何もない四角が表示されるだけなのですが、
これを選択できる状態にするには具体的にどういった手順を踏めばよいのか、
別のダイアログボックスを貼り付けるにはどうすればよいのかが知りたいです。
よろしくお願いします。
425デフォルトの名無しさん:2007/12/31(月) 18:17:52
>>424

http://www.kumei.ne.jp/c_lang/sdk/sdk_69.htm

↑直接的にはこれだけど、他のページも見てみると良いよ。
426418:2007/12/31(月) 19:52:13
>>425
ありがとうございます
そのサンプルだとタブコントロールの作成自体が自前だったので多少混乱しましたが
GetDlgItem()でリソースエディタで作ったタブのハンドルを取得する事で
項目追加については解決しました

そちらのソースを見た感じだとタブ用のウィンドウの上に後からボタンを作っているようなのですが、
リソースエディタ上でタブの上に見えるようにボタンを配置し、それを表示非表示で切り替えたり
する事はできないのでしょうか?

手動で作るか、別のダイアログを固定位置の子ウィンドウとして呼び出すとかしかないでしょうか
427デフォルトの名無しさん:2007/12/31(月) 20:13:34
そりゃ、ShowWindow(GetDlgItem(**),SW_HIDE)とか駆使しればできるだろうけどさ。
ダイアログエディタが混雑するぜ。
428デフォルトの名無しさん:2008/01/01(火) 14:40:45
MSDNて使いにくいね。
特にC言語やC++言語の標準ライブラリの調べにくさはC++Builderのヘルプの比ではない。
429418:2008/01/01(火) 15:17:20
ダイアログをタブコントロールの子ウィンドウとして呼び出して
なんとか実装できました
どうもありがとうございました
430デフォルトの名無しさん:2008/01/01(火) 22:07:34
VC関係のサイトを回っていると、何の説明もなく

throw "あいうえお";

みたいな記述を良く見るのですが、これはどういう意味なのでしょうか?
プログラムを実行させるとランタイムエラーメッセージが出て処理が止まるのはいいのですが
たとえば配布したプログラムでこのthrowが呼び出されてしまったときに、
この"あいうえお"という文字列は、何をもって確認するのですか?
431デフォルトの名無しさん:2008/01/01(火) 22:09:12
>>430
VC以前の問題。
throwって知ってる?
432デフォルトの名無しさん:2008/01/01(火) 22:09:43
おおもと(mainとか)でcatchしとくんだろ。
char*を投げるのはあんまし感心しないけど。
433デフォルトの名無しさん:2008/01/01(火) 22:15:06
正直throwというのが良くわからないです
この場合どういう効果があるのでしょうか
ランタイムエラーメッセージが出る時にthrowで送られた情報が
そのメッセージの中で見られるのかと思ったのですが、見られないのですか?
434デフォルトの名無しさん:2008/01/01(火) 22:16:34
throwはC++の機能、try/chatchあたりでも勉強してくればいい
当然の如くVCには全く関係ないから
435デフォルトの名無しさん:2008/01/01(火) 22:26:20
char*とか、std::exception継承クラスならともかく、かってな
ユーザオブジェクトを投げられたら、いずれにせよランタイムは
情報を出すことが出来ないからなー。
436デフォルトの名無しさん:2008/01/01(火) 22:36:15
throw知らね、って言ってる人には分かる内容じゃないだろうな。
437デフォルトの名無しさん:2008/01/02(水) 09:12:15
・XPでパスワードLOOK中かどうか判断する方法(ctrl + del + altのあれ)
わかる方お願いします。ヒントだけでも結構です。

438デフォルトの名無しさん:2008/01/02(水) 11:37:22
スロー(throw)だけじゃなくてスルー(through)も一部では需要ありそうだなw
439デフォルトの名無しさん:2008/01/02(水) 11:40:09
MSDNのLockWorkStationの解説より
>There is no function you can call to determine whether the workstation is locked
440デフォルトの名無しさん:2008/01/02(水) 15:38:52
結局,関数の宣言の際に例外仕様ってつけるべきなんですか?
441デフォルトの名無しさん:2008/01/02(水) 15:41:36
宣言関係ないと思うが、、、仕様どおりでおk
誰が作って誰が使うかによってかわるし、こうしろという決まりごとはないよ。
442デフォルトの名無しさん:2008/01/02(水) 22:58:47
>>440が言ってるのって、
void hoge() throw()
見たいなのじゃないの?

C++FAQ第二版で例文がそう記述されてて、
試してみたら(コンパイラに言われたんだか誰かに言われたんだかネットで見たんだか定かでない)けど
「古い記述方法」
という感じだった。 凄くうろ覚えでゴメン。
443デフォルトの名無しさん:2008/01/03(木) 05:48:25
>>442
そう.それ.
例外仕様を頑張って記述したところで,例外仕様の部分って
関数の型としては扱われないし,何かつけてて意味あるのかなって.
444デフォルトの名無しさん:2008/01/03(木) 17:20:05
別スレから、こちらに書き込みます。

リソースの編集したいのだが、
RCの中から、そこいらのヘッダをインクルードしてるファイルだと
フリーソフトではエラーが出て読み込めない。

どうしたら良いですか?
 あきらめたほうが良いですか?お金はびた一文も出しませんので
お金がかからない何か良い方法はないでしょうか?
445デフォルトの名無しさん:2008/01/03(木) 17:20:42
>>444
あきらめた方がいい
446デフォルトの名無しさん:2008/01/03(木) 18:43:29
テキストファイルだから手動でコピペするだけ
447デフォルトの名無しさん:2008/01/03(木) 23:26:43
自分はプロジェクトのプロパティ(コンパイルオプションとか)
をプロジェクトごとに指定することはあまりやらなくて,
あらかじめ用途ごとの vsprops ファイルを作っておいて
組み合わせて適用しているのですが,そうすると
プロジェクトごとに最初から指定されているオプションがうざいです.

デフォルトで全部「親から継承」に簡単にすることってできないんでしょうか?
448デフォルトの名無しさん:2008/01/04(金) 21:16:05
C++/CLIでファイルから特定の文字列を検索する部分なのですが、
C++/CLIのStringクラスのCompare(ryメソッドでは、
完全一致は探すことができたのですが、部分一致を探し出すことができませんでした
Cのstrstr関数やC++STLのStringクラスのfindメソッドのような、
文字列から文字列を探すことのできる、C++/CLIのクラスメソッドはないのでしょうか?
449デフォルトの名無しさん:2008/01/04(金) 21:42:44
>>448
単にオーバーライドを見つけられていないだけな気もするけど、一応。

ファイルの内容が全てメモリに収まる程度という前提なら、
内容をSystem::Stringに全部押し込んだ後で、System::String.IndexOfか?
System::Text::RegularExpressions辺りで一気にやるほうが楽かもしれん。
450449:2008/01/04(金) 21:44:22
オーバーロードだった orz
451448:2008/01/04(金) 22:20:11
>>449
すぽーんと見落としてました・・お恥ずかしい
読み込むのはファイルの一部だけなので、IndexOfで大丈夫そうです
どうもありがとうございました
452デフォルトの名無しさん:2008/01/05(土) 00:48:48
構成プロパティの文字セットをUnicodeを使用するにした状態で

int _tmain(int argc, _TCHAR* argv[])
{
  _tprintf( _T( "testあいうえお" ) );
  _gettch();

  return 0;
}

というような感じでコードを書いたのですが、
abcまではDOS窓に表示されるんですが、あいうえおが表示されません
Unicodeだとどうすれば日本語も表示されるようになるのでしょうか?

ちなみにマルチバイト文字セットにすると上手く行きます
できるだけマルチバイトでもUnicodeでも正常動作するようにしたいのです
_Tで囲むことで期待通りの表示になるかと思ったのですが…

よろしくお願いします
453デフォルトの名無しさん:2008/01/05(土) 00:51:40
あ、abcではなくてtestでした_| ̄|○よろしくお願いします
454デフォルトの名無しさん:2008/01/05(土) 00:54:21
>>453
本当に表示されてるのはtestだけなんだな? その後に何も表示されてない?
455デフォルトの名無しさん:2008/01/05(土) 00:56:57
>>454
えーと、入力待ちのカーソルが、間隔を開けずにtestの真横に表示されます
文字化けしてでるとかもないです
456デフォルトの名無しさん:2008/01/05(土) 00:57:00
setlocale
457デフォルトの名無しさん:2008/01/05(土) 01:26:48
>>456
ありがとうございます。こんな感じでいいのでしょうか?
一応あいうえおの表示はされたのですが、何か弊害などはありますか?

int _tmain(int argc, _TCHAR* argv[])
{
  _tsetlocale( LC_ALL, _T( "Japanese_Japan.932" ) );
  _tprintf( _T( "testあいうえお" ) );
  _gettch();

  return 0;
}
458デフォルトの名無しさん:2008/01/05(土) 02:29:07
CLRのSystem::Windows::Formsクラスを使用するWindowsアプリケーションでは、
処理は全てFormクラス内のメソッドにまとめるものなのでしょうか?
WinAPIでのWindowsアプリケーション作成もしたことがないので、混乱しています・・
459デフォルトの名無しさん:2008/01/05(土) 02:35:48
好きにしなさい
460デフォルトの名無しさん:2008/01/05(土) 09:36:58
>457
そういうプログラムなら標準Cで作った方が汎用性が高いから
そんな見苦しいことやって喜んでるのはお前ぐらいだと思う
461デフォルトの名無しさん:2008/01/05(土) 10:03:22
マジですか
もはや時代はユニコードだと思っていたのですが違うのですか?
462デフォルトの名無しさん:2008/01/05(土) 10:17:10
自己完結しているアプリなら言語は関係ないだろ
ウェブとか、多言語つかうならユニ
463デフォルトの名無しさん:2008/01/05(土) 10:56:10
VC++の_t系はWindows APIとの整合性を取るためのものだと俺は思っている。
464デフォルトの名無しさん:2008/01/05(土) 14:23:23
COM の BSTR は MBCS ですか? Unicode ですか?
もしくはそういうことは COM の規格の範囲外のことですか?
465デフォルトの名無しさん:2008/01/05(土) 14:25:30
COMの規約ではどうなっているかしらないが、
Win16ではMBCS、Win32以降はUTF-16 (x86ならリトルエンディアン)。
466デフォルトの名無しさん:2008/01/05(土) 14:57:05
>>465
API でいえば hogehogeA と hogehogeW の話ですよね?
主要な COM コンポーネントでも二種類の
インターフェイスが用意されていると思ってたんですが,
そうではないのでどうしたものかなぁ,と.

しかしよく考えたらたとえば MSXML が XML 文書を
受け取るのも BSTR なわけで,その時は文字コードに
よらずなんでも受け取るのだから BSTR は文字コード
を限定しないなにか(32ビットで領域のサイズが
明示的に前置された何か)だと思うことにします.
467デフォルトの名無しさん:2008/01/05(土) 17:56:23
>>457
寝てたわ・・・
プログラムよりも、デフォルトで開くコンソールのコードページの問題だからねえ。
468デフォルトの名無しさん:2008/01/06(日) 02:01:00
猫本見ながら何度もやってるんですが、画像を表示するところで詰まってます><
ビットマップをrcに変換し
LoadBitmapでインスタンスハンドルを取得するところでエラーが出ちゃうんですが
正しい手順教えて下さい><

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBmp = LoadBitmap(hInst, "IDB_BITMAP1");
GetObject(hBmp, (int)sizeof(BITMAP), &bmp_info);
w = bmp_info.bmWidth;
h = bmp_info.bmHeight;
hdc_mem = CreateCompatibleDC(hdc);
SelectObject(hdc_mem, hBmp);
BitBlt(hdc, 0, 0, w, h, hdc_mem, 0, 0, SRCCOPY); //描画
DeleteDC(hdc_mem);
DeleteObject(hBmp);
EndPaint(hWnd, &ps);
break;

C:\temp\a.c(102) : error C2065: 'hInst' : 定義されていない識別子です。
C:\temp\a.c(102) : warning C4047: 'function' : 間接参照のレベルが 'struct HINSTANCE__ *' と 'int ' で異なっています。
C:\temp\a.c(102) : warning C4024: 'LoadBitmapA' : の型が 1 の仮引数および実引数と異なります。
cl.exe の実行エラー

開発環境はVisualC++6.0です
469デフォルトの名無しさん:2008/01/06(日) 02:21:40
>>468
> C:\temp\a.c(102) : error C2065: 'hInst' : 定義されていない識別子です。
470468:2008/01/06(日) 02:31:52
ありがとうございました
hInstを宣言したらエラーが消えました。

でも画像が表示されない><
471デフォルトの名無しさん:2008/01/06(日) 03:36:53
宣言しただけかよw

サンプル丸写しして出直して来い
472デフォルトの名無しさん:2008/01/06(日) 04:20:07
せめてhBmpがまともかチェックくらいしたら
たぶん、"IDB_BITMAP1" を MAKEINTRESOUCE(IDB_BITMAP1) にすればいいとは思うが・・・
473デフォルトの名無しさん:2008/01/06(日) 06:24:14
C++/CLIで作ったリストボックスの項目にツールチップ表示をさせる方法ってありませんか?
ググってもMFCとか他言語ばかりで・・
474デフォルトの名無しさん:2008/01/06(日) 07:22:03
>>469
hInstっつーのはそのアプリケーションのメイン関数 _tWinMain()の
引数で渡されているHINSTANCE型の引数のことだよ

これはそのアプリケーションに一つしかないものだから
グローバル変数にでも保持しておいて使えばいい
475デフォルトの名無しさん:2008/01/06(日) 07:22:27
>>458だた
476デフォルトの名無しさん:2008/01/06(日) 07:22:54
>>468だたw寒くて指がずれるw
477468:2008/01/06(日) 16:01:38
>>471さん
サンプルまる写しで出来ないんです><

>>472さんのやりかたでやっても画面が真っ白のままでした><
プロジェクトフォルダの中身を覗いたらScript1.rcのサイズが2kbなんですけど
ちゃんとビットマップ画像入ってないのかと思ってダブルクリックしてみたところ
VisualC++が立ち上がって
Script1.rc

Bitmap
└IDB_BITMAP1
ってなってるんですけど問題無いですよね?

ちゃんと#include <windows.h>の下に

#include "resource.h"は書いてあるんです><

>>474さん
Cコンソールの時にやったコマンドライン引数みたいな解釈でいいですか?
猫本にはインスタンスハンドルとしか書いてなかったのでよくわからないまま読み進めてました><
478デフォルトの名無しさん:2008/01/06(日) 16:28:57
VS2005でWin32プログラムをデバッグで開始すると問題なく実行できるんですが、
Debug Release問わずデバッガ無しで実行すると途端に
---------------------------
cppwin.exe - アプリケーション エラー
---------------------------
"0x00000000" の命令が "0x00000000" のメモリを参照しました。メモリが "read" になることはできませんでした。


プログラムを終了するには [OK] をクリックしてください
プログラムをデバッグするには [キャンセル] をクリックしてください
---------------------------
OK キャンセル
---------------------------
で落ちてしまいます。
どういう事なんでしょうか。自殺すればいいんでしょうか。
479デフォルトの名無しさん:2008/01/06(日) 16:30:52
はい、よく分かってらっしゃる
480デフォルトの名無しさん:2008/01/06(日) 16:36:33
そんな殺生な。
もう2005が出てから2年以上経つんですから
デバッガなしだと表面化するバグがどういうものかくらいの情報はあるはずです。
教えてください。
481デフォルトの名無しさん:2008/01/06(日) 16:38:01
>>478
デバッガで落ちてそうな所を見つけるしかないんじゃね?
MFC使ってるのなら、AfxCheckMemoryとかが有効っぽいケースに見えるけどな。
482デフォルトの名無しさん:2008/01/06(日) 16:39:33
>>480
デバッガを疑いたい気持ちは痛いほどわかるが、デバッガのせいじゃないと思うよ。
483デフォルトの名無しさん:2008/01/06(日) 16:40:50
>>481
落ちそうな所も何もデバッガ付きならちゃんと意図したとおりに動いてくれるんですが・・・。
484デフォルトの名無しさん:2008/01/06(日) 16:48:12
>>483
例外ダイアログからデバッガを起動できるから、起きた場所を特定しよう
485デフォルトの名無しさん:2008/01/06(日) 16:58:00
とりあえず変数を初期化せずに使ってるんじゃね
486デフォルトの名無しさん:2008/01/06(日) 17:01:22
>>477
hBmpはいくつだったんだよ
0ならいつまでたっても絵は出ないぞ
試しに>>468のまるまるコピーして
IDB_BITMAP1版(MAKEINTRESOURCE使用)と"IDB_BITMAP1"版どっちも
ビットマップ表示できてるけど
487486:2008/01/06(日) 17:02:46
hInstはInitInstanceでグローバル変数に格納してるVC++が作ったソースのまま
一応念のため
488デフォルトの名無しさん:2008/01/06(日) 17:47:29
>>483

int *a;
a = NULL;

どっかでメモリ確保

if( a )
{
// aのメモリが確保されていた時の処理
}

とかやって落ちている気がするよ
デバッガ使うと何もしなくても変数が0初期化されてる事が多い
489デフォルトの名無しさん:2008/01/06(日) 17:49:08
あ、しまった
a=NULLしたら正常動作するなw

>>488のa=NULLを飛ばしてる気がする
490デフォルトの名無しさん:2008/01/06(日) 18:06:38
>>489
初期化されてないのが正常動作です。
491468:2008/01/06(日) 18:57:43
hBmpに正しく数値入ってるかどうか調べるために、表示させようと思ったんだけど
Printf使えないから試行錯誤で頑張って見たけど
HBITMAP hBmp;
BITMAP bmp_info;
RECT rc;
int w, h;
char *szStr="a";

DRAWTEXTPARAMS dtp;

switch(msg){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBmp = LoadBitmap(hInst, "MAKEINTRESOUCE(IDB_BITMAP1");
szStr = BITMAP.bmWidth; //hBmpの情報をszSTRに代入
SetTextColor(hdc, RGB(0, 0, 0));
//szStrの中身を表示
DrawTextEx(hdc,
szStr,
-1,
&rc,
DT_WORDBREAK | DT_EXPANDTABS | DT_TABSTOP,
&dtp);

(110) : error C2275: 'BITMAP' : typedef 識別子に、クラス メンバ アクセス演算子 (->) を使用しました。
よくわからないエラーが…変数の表示ってどうやるの?(´;ω;`)ブワッ
492デフォルトの名無しさん:2008/01/06(日) 19:14:22
まさかブレイクポイントも知らないんじゃないだろうな
493デフォルトの名無しさん:2008/01/06(日) 19:18:13
VC++のスレだから、当然デバッガ使える環境だと思ったんだが
494デフォルトの名無しさん:2008/01/06(日) 19:22:18
>>491
hBmp = LoadBitmap(hInst, MAKEINTRESOUCE(IDB_BITMAP1));
こうな。
そんでコンパイル通る状態にして、この行の次にカーソル移して
F9押してF5押してとまったらhBmpの上にマウスのポインタ置いてみな
495デフォルトの名無しさん:2008/01/06(日) 19:29:11
>>491
あのさー、型名と変数名の違いぐらい勉強してからこいよ

BITMAP 型名
bmp_info 変数名

君ははっきり言って基本的な知識がなさすぎる
まずはコンソールでCの勉強から始めなさい
496468:2008/01/06(日) 19:53:43
大学の課題で締切が迫っておりのっぴきならない状況なのでもう少し質問させてください><
ブレイクポイントは初めて聞いたのですぐに調べて
>>494さんのやり方で出来ました。マウスを載せたら型名と変数のHBITMAP hBmpが表示されて
エラー内容はa.obj : error LNK2001: 外部シンボル "_MAKEINTRESOUCE" は未解決です
Debug/a.exe : fatal error LNK1120: 外部参照 1 が未解決です。
って出ました><

>>495さん
半年前にやったCコンソールの本で構造体の部分読み返してみます><
497デフォルトの名無しさん:2008/01/06(日) 19:55:23
ごめんよ、
MAKEINTRESOURCE
こうね。
498468:2008/01/06(日) 20:07:37
エラーが消えたけど画面がすごく・・・白いです><
499デフォルトの名無しさん:2008/01/06(日) 20:36:45
>>498
そこで>>494
500デフォルトの名無しさん:2008/01/06(日) 21:29:03
>>468のソースで、hInstさえ正しい値を与えれば表示されるっしょ。
501デフォルトの名無しさん:2008/01/07(月) 10:31:24
VS2005 C++のテキストエディタの画面で、
タブキーや、スペースコードが →や・マークで表示されてしまう様になってしまいました。
何かのキーを触ったら偶然そういう設定になってしまったのですが、
戻し方が解りません。どなたか教えて下さい。
502デフォルトの名無しさん:2008/01/07(月) 10:40:33
>>501
超FAQだと思ったが、ここのテンプレはわからなかったので、、、
編集 - 詳細 - スペースの表示 (Ctrl+R, Ctrl+W) で
503501:2008/01/07(月) 11:24:14
>>502
ありがとうございました。無事元に戻りました
504デフォルトの名無しさん:2008/01/07(月) 19:23:12
VS2005 で手元のプロジェクトをコンパイルするときに
WINVER not defined. Defaulting to 0x0502 (Windows Server 2003)
という warning が現れます。
出力ウインドウを見ていると、.cpp ファイルの時にはこれが現れ、
.c ファイルの時には自動的に WINVER を設定しないようで現れません。
どこでファイルタイプを判別して動作を変えているのでしょうか。
また、なぜこのような違いが出るようになっているのか教えてください。
505デフォルトの名無しさん:2008/01/07(月) 20:08:05
標準Cライブラリのヘッダしかインクルードしていないから。
506デフォルトの名無しさん:2008/01/07(月) 21:11:23
MFCを使ったいろいろな例文が載っているサイトないでしょうか?
507デフォルトの名無しさん:2008/01/07(月) 21:13:32
>>506
本買ったほうがいいんじゃないか。
508デフォルトの名無しさん:2008/01/07(月) 21:22:05
>>506
ぐぐればいくらでもあると思うが……
例えば、こんなのでいいのか?
tp://athomejp.com/goldfish/
509デフォルトの名無しさん:2008/01/08(火) 00:37:11
vc++ 2005と 2008の違いを教えてください
510デフォルトの名無しさん:2008/01/08(火) 00:45:23
バージョン
511デフォルトの名無しさん:2008/01/08(火) 00:48:29
2005年に出たのが2005、2007年にでたのが2008
512デフォルトの名無しさん:2008/01/08(火) 04:23:40
2005って2004年じゃなかったか?
513デフォルトの名無しさん:2008/01/08(火) 04:50:56
どっちでも良いじゃん
514デフォルトの名無しさん:2008/01/08(火) 06:46:02
>>512
2005年だよ
515デフォルトの名無しさん:2008/01/08(火) 15:23:44
入力したwaveを、エフェクトをかけ出力するプログラムを
作りたいのですがそのようなプログラムの作り方を解説するサイトってないでしょうか?

ググッてみたものの出てきませんでした。

当方『windowsサウンドプログラミング』の本を読んで、
そのまま出力するプログラムは出来ています(サンプルプログラムw)

環境VC++6.0

何か書いている途中にスレチな気がしてきましたがよろしくお願いします。
516デフォルトの名無しさん:2008/01/08(火) 15:28:09
SDKのサンプルになかったっけ?
DirectX使いたいのかな?
517デフォルトの名無しさん:2008/01/08(火) 17:33:40
>>515
その本にはWAVデータの詳細が載っているんじゃないかい?
どのデータが何を意味しているかさえわかれば、
あとはそのデータをいじってから出力すればいいだけだ
518515:2008/01/08(火) 17:55:34
>>516
レスありがとうございます。
SDKとは何でしょう?すいません無知もいいとこで…
DirectXを使ったほうが楽なのでしょうか?

>>517
レスありがとうございます。
それがあんまり載っていなくて、
というか私の勉強不足かも知れないんですが…
ど素人なもんでいじり方がどういじってよいやら…

519デフォルトの名無しさん:2008/01/08(火) 17:59:37
うん、君にはまだ早いんじゃないかな
520デフォルトの名無しさん:2008/01/08(火) 18:04:57
#defineした単語の表示色を変えることはできますでしょうか?
オプションのフォントと色を見てみたのですがそれらしい項目が見つからなくて。
521デフォルトの名無しさん:2008/01/08(火) 18:50:23
WAVの波形をいじるだけだからVCとか関係ない
方程式書いて計算するだけ
522デフォルトの名無しさん:2008/01/08(火) 21:12:04
>>520
標準のエディタじゃ無理
523デフォルトの名無しさん:2008/01/09(水) 08:16:34
今までListBoxへのD&Dは、WM_CREATE後のDragAcceptFilesに失敗してても上手く行きましたが、
エディットコントロールへのD&Dが上手く行かなくて困っています。
MessageBox でテスト確認してみたら WM_DROPFILES メッセージを送ってないようなのですが、
これはサブクラス化するしか方法は無いのでしょうか・・・?
リストボックスでは出来てエディットボックスでは出来ないのは何故でしょうか・・・?
ご教授よろしくお願いします。
524デフォルトの名無しさん:2008/01/09(水) 09:01:53
ひとつのウインドウにリストボックスとエディットボックスを配置して
リストボックスにドロップしたらファイル名
エディットボックスにドロップしたらファイルの内容を表示
みたいにやってるけど特に問題なく動いてる
525523:2008/01/09(水) 10:06:21
もしかして同じ種類のコントロールが複数ある場合はサブクラス化しなきゃダメということでしょうか。。
複数のコントロールでD&D使い分けてるのはDragQueryPoint使ってるのかな・・・。

一応CreateWindowExでWS_EX_ACCEPTFILES指定して、
D&Dの際にはカーソルも変わるんですが、上述の通りWM_DROPFILESで何も起きません。

ちなみに、どのコントロールがアクティブ状態でも共通キー処理したいために、
全てのコントロールを一つのプロシージャにサブクラス化しています。
当然、このプロシージャではWM_DROPFILES動作は出来ました。
(ただし、リストボックスで上手く行く他のソースではメインウィンドウプロシージャでWM_DROPFILES受け取ります)
526デフォルトの名無しさん:2008/01/09(水) 11:35:08
作成時に親ウィンドウorコントロールにメッセージを関連付けるような設定がなかったっけか
527デフォルトの名無しさん:2008/01/09(水) 12:35:07
親ウィンドウで受けてもいいし、コントロールで受けてもいいし、
サブクラス化してもいいし、サブクラス化しなくてもいいし、
どれでもお好きなように
528デフォルトの名無しさん:2008/01/09(水) 22:02:32
試しにリストボックスを適当な場所にCreateWindowExで作って観たところ、
(WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE + WS_CHILD | WS_VISIBLE | LBS_EXTENDEDSEL | WS_HSCROLL | WS_VSCROLL,)
親ウィンドウへ通知するスタイルを指定しなくても WM_DROPFILES メッセージが送られました。
逆に、リストボックスで上手く行く方のソースでエディットボックスを作って同様スタイルにしてもダメでした。

D&D可能にしたいエディットボックスは
WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE, + WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | WS_VSCROLL | WS_HSCROLL,
のようなスタイルで作成してます。
最初に書くべきことでしたが、環境は VC++ 6.0 です。リソースではなく一つずつCreateしてます。

エディットボックスとドラッグ ドロップでググって観たら似たような症状が幾つか観られたんですが、
サブクラス化以外でリストボックスのように親ウィンドウでの処理という仕方がどうしても見つけられませんでした。
529デフォルトの名無しさん:2008/01/09(水) 22:22:19
530デフォルトの名無しさん:2008/01/09(水) 23:59:08
VC++6.0とVC++2005は何が違うんでしょう
531デフォルトの名無しさん:2008/01/10(木) 00:00:52
すいません、基本的な質問かもしれませんが‥

C言語でファイルを保存するととき(fprintfでいいんですが)
testというフォルダに保存したいのですがどうすればよろしいでしょうか?
フォルダはあります。
(例えば、sample,txtというファイル)
PCの環境はwindowsです
よろしくお願いします
532デフォルトの名無しさん:2008/01/10(木) 00:04:43
ファイル開くときにそのフォルダ指定すればいいだけ
ただしアドレスの\は\\にすること
533デフォルトの名無しさん:2008/01/10(木) 00:07:58
\\test\\sample.txt
みたいな形ですか?

一度試してみます
534デフォルトの名無しさん:2008/01/10(木) 00:11:50
ごめんVCとC/C++スレ隣通しにしてたから勘違いしてた・・・
VCやったことないけど試してみて><
535デフォルトの名無しさん:2008/01/10(木) 00:14:19
すいません、ありがとうございました。

test\\sample.txtみたいな形でやれば上手いことできました。
ありがとうございます
536デフォルトの名無しさん:2008/01/11(金) 05:39:28
VC++2005 Standardです。
リンク中に 「fatal error C1001: コンパイラで内部エラーが発生しました。」 というエラーが出るので困ってます。
__m128 x = _mm_set_ps1(y);
と書かれたところが問題のようです。でも、Debugビルドだと問題なくコンパイルできます。Releaseの場合のみエラーが出てきます。
__m128 x = {y, y, y, y};
とするとReleaseでもコンパイルできたりします。

原因がまったくわからないのでお手上げなんですが・・・
537デフォルトの名無しさん:2008/01/11(金) 08:34:11
エラーの起きる最小限のプログラムに削って調べてみる。それをup
538デフォルトの名無しさん:2008/01/11(金) 21:15:58
__m128とか_mm_set_ps1とか初めて見た。情報がすくねぇw
DebugとReleaseで_mm_set_ps1がコンパイルエラーになるなら_mm_set_ps1の定義見てみては?
俺は環境がないから確認できない・・・
関係ないかもしれないけど↓みたいな話もあるみたいね。
http://richa850.hp.infoseek.co.jp/programming/cpp07.html
539デフォルトの名無しさん:2008/01/12(土) 12:33:54
VisualC++2008ExpressEditionを今日から使い始めました
1つのソリューション内に複数のプロジェクトがあり、ソリューション内の
あるプロジェクト(コンソールアプリ)から同ソリューション内の他のプロジェクトをインクルードディレクトリに指定する場合
どのようにすればスマートですか?

プロジェクトをコンソールアプリで作成すると構成プロパティのツリー内に
「C/C++」という項目が出てこない為、推移的に「追加のインクルードディレクトリ」という項目もありませんでした
コマンドラインの-I ../hogeを使うのかなと思いましたけど、どこに追加すればいいのやらで

初歩的過ぎで申し訳ありませんがご教授の程お願いします。
540デフォルトの名無しさん:2008/01/12(土) 12:46:45
タスクバーのメニューを消して、タスクトレイにアイコンを表示させるものを作っています。
タスクトレイのアイコンをダブルクリックした際に、ウィンドウを表示、ウィンドウをトレイへ格納の動作をつけたいと思うのですが、
処理が分かりません。
どーいった関数、処理の流れになるのか教えて下さい。
また、参考になるサイト等もあれば教えて頂きたいと思います。宜しくお願いします。
541デフォルトの名無しさん:2008/01/12(土) 13:23:50
なんでググらないんだろう
542デフォルトの名無しさん:2008/01/12(土) 13:27:57
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
543デフォルトの名無しさん:2008/01/12(土) 15:22:18
>>539
[ファイル]-[新規作成]-[プロジェクト]
[Visual C++]-[全般]
空のプロジェクト

でコンソールアプリを作成してるけど

[プロジェクト]-[xxx のプロパティ]
[構成プロパティ]-[C/C++]-[全般]
追加のインクルードディレクトリ

が見えてる
544539:2008/01/12(土) 16:44:51
>>543
資料を見ながら作っていたのですがその手順の通りだと
あたかも最初から表示されているようにかかれてましたがソースファイルが1つも無いプロジェクトには
どうやらC/C++の項目が表示されないようになっているようです。
1つ適当にファイルを追加した後表示される事が確認できました。
有り難うございました。
545デフォルトの名無しさん:2008/01/13(日) 20:16:06
ググって分からないから書いてんだろ?
キーワードもうまく見つけられないんだろうな
546デフォルトの名無しさん:2008/01/13(日) 21:41:49
beginthreadで開始したスレッドが終わらないうちにプログラム本体をPostQuitMessageで終了すると、
デバッグ時の出力ウィンドウに
cppwin.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a5fd54 を読み込み中にアクセス違反が発生しました。
cppwin.exe の 0x77d0f450 で初回の例外が発生しました: 0xC0000005: 場所 0x25a5fd54 を読み込み中にアクセス違反が発生しました。
と表れるんですが、どうすればアクセス違反が起こらないように終了できるんでしょうか。
547デフォルトの名無しさん:2008/01/14(月) 04:42:22
>>546
子供に自殺要求を出して、その死水を取ってから自殺してください。
548デフォルトの名無しさん:2008/01/14(月) 14:42:18
VC++ 2005 でisNaNを使った関数を使用するためには
ソースコード中に
using namespace System

と書けばいいのでしょうか?
549デフォルトの名無しさん:2008/01/14(月) 14:49:31
>>548
isnan()でよければそんなことを書く必要はありませんが。
550デフォルトの名無しさん:2008/01/14(月) 14:59:32
>549
どうもありがとうございます

デバッグかけるとソースコード中の

track_box.angle = !isnan(theta) ? (float) -theta : 0;

のところで、

error C3861: 'isnan': 識別子が見つかりませんでした
と表示されてしまいます…コードがいけないのでしょうか?
551デフォルトの名無しさん:2008/01/14(月) 15:03:41
_isnan()
552デフォルトの名無しさん:2008/01/14(月) 15:10:46
>551
うまくいきました!ありがとうございました
553デフォルトの名無しさん:2008/01/14(月) 17:13:21
デバッグ?って実行しようとしてその前のコンパイルでのエラーか・・・
554デフォルトの名無しさん:2008/01/14(月) 22:31:41
_inran()
555デフォルトの名無しさん:2008/01/15(火) 09:00:58
>>546
メモリ破壊を修正
556デフォルトの名無しさん:2008/01/16(水) 21:33:58
Visual C++ 2005でdirectx9.0でプログラミングしています。
プログラムは動くのですが、終了時に
スレッド 'Win32 スレッド' (0x654) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x98) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x424) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x2e0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x65c) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4c0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4d8) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4b0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x4a0) はコード 0 (0x0) で終了しました。
スレッド 'Win32 スレッド' (0x23c) はコード 0 (0x0) で終了しました。
と大量に同じようなメッセージが出力されます。
これは異常なのでしょうか?
557デフォルトの名無しさん:2008/01/16(水) 21:35:54
異常です
558デフォルトの名無しさん:2008/01/16(水) 21:37:46
ウイルス
559デフォルトの名無しさん:2008/01/16(水) 21:47:09
大量に出るのは異常だという根拠があるのなら異常です。
560デフォルトの名無しさん:2008/01/16(水) 21:56:08
>>556
スレッドを作った覚えはあるかどうか。
心当たりが無ければ、実行中に中断させて、デバッグ-ウインドウ−スレッドでスレッドの一覧が出るので、何のスレッドか調べてみよう。
561556:2008/01/16(水) 21:57:04
どうやら音関係の初期化で出てるみたいなんですけど、
//パフォーマンスの作成
CoCreateInstance(CLSID_DirectMusicPerformance, NULL,
CLSCTX_INPROC, IID_IDirectMusicPerformance8,
(void**)&g_pPerformance );
とするとエラーが大量に出てしまうようです。
おかしな所あるでしょうか?指摘お願いします。
562デフォルトの名無しさん:2008/01/16(水) 21:58:41
感染してるとそうなる
563デフォルトの名無しさん:2008/01/17(木) 00:33:52
悪いことは言わない、DirectMusicには手を出さない方がいい
超えられない壁がある
564デフォルトの名無しさん:2008/01/17(木) 12:19:17
(BBSを使うのは)難しい
565デフォルトの名無しさん:2008/01/18(金) 14:39:11
XP(SP2) VC++6.0 MFC ダイアログベースです。
画像をランダムに表示させたいのですが、どうすればいいでしょうか?
566デフォルトの名無しさん:2008/01/18(金) 14:56:33
rand()に時間でもかけて使えばいいと思います
567デフォルトの名無しさん:2008/01/18(金) 15:01:23
ランダムじゃないところまではできてるのなら、それを晒してみ。
568565:2008/01/18(金) 21:42:25
randで自己解決しました。
表示させる枚数も少ないので…。

ご迷惑をおかけしました。
569デフォルトの名無しさん:2008/01/18(金) 21:44:47
自己解決
570デフォルトの名無しさん:2008/01/18(金) 23:29:09
向きを持ったキャラクタを回転させたいんですけど、
3D空間での単位ベクトルの回転ってどうしたらいいですか?
回転といったら行列を掛ければいいとおもったんですけど、ベクトルは3元なので
どうしたらよいかわかりません。
571デフォルトの名無しさん:2008/01/18(金) 23:36:20
ゲーム製作板にでも行け
572デフォルトの名無しさん:2008/01/19(土) 00:50:34
>>568
どこが自己解決だよカス
573デフォルトの名無しさん:2008/01/19(土) 00:53:03
>>570
・単位マトリクスを用意
・用意したマトリクスの平行移動成分にベクトル値を入れる
・回転マトリクスと乗算する
574デフォルトの名無しさん:2008/01/19(土) 01:59:59
>>573
やってみたら出来ました。
ありがとうございます。
しかし、z軸の+の方からみた時は上手く動くのですが、
逆を向いた時に上下が反対になってしまいます。
D3DXMatrixRotationYawPitchRoll(&m_mat,
D3DXToRadian(yaw),
D3DXToRadian(pitch),
D3DXToRadian(roll) );
として回転行列作っているんですが、pitchの回転が上手くいきません。
575デフォルトの名無しさん:2008/01/19(土) 03:51:03
調子に乗るなよカス
ここはVCのスレだ
576デフォルトの名無しさん:2008/01/19(土) 11:55:55
strcpyとか使うと出る例のwarningが、
#define _CRT_SECURE_NO_DEPRECATE 1
ってやっても出たまんまなんですけど、
なぜだか分かりますか?
(#pragma warning(disable:4996)は効きます)
577デフォルトの名無しさん:2008/01/19(土) 12:05:54
ヘッダのインクルードより先に書いている?
578デフォルトの名無しさん:2008/01/19(土) 12:13:16
>>577
ありがとうございました。
解決しました。
自作のヘッダーの方では、ライブラリのinclude前に
あったのですが、mainの方ではそのヘッダーをライブラリよりも
あとから呼んでました。

もしかして、
このdefineはmainのあるcppの頭にだけ
書けばよいものなのでしょうか?
579デフォルトの名無しさん:2008/01/19(土) 13:30:28
ふつうは、コンパイルオプションに仕込むけど
580デフォルトの名無しさん:2008/01/19(土) 14:23:17
Visual C++ってフォームデザイナ付いてんの?
581デフォルトの名無しさん:2008/01/19(土) 14:56:38
>>580
[ファイル]-[追加]-[新しいプロジェクト]
[Visual C++]-[CLR]
Windows フォーム アプリケーション
でプロジェクトを作成すると使えるみたい
582デフォルトの名無しさん:2008/01/19(土) 15:00:17
C++ とうか C++/CLI だけどね.
583デフォルトの名無しさん:2008/01/19(土) 18:30:45
クラスの中で+演算子(などを)定義した際、一時的に、
newで何かを作ったとします。
(こんな感じ?)
type* tmp = new type[num];。
で、その何かは(何らかの処理後)
その演算子定義のreturnで使いたいとします。
return CLASS_X(tmp_s);
このとき、tmpのdeleteはいったい
どこで行ったらよいのでしょうか?
(deleteなしで作成後、実行しても動いてはいる?
のですが、たまたまのような気がして心配なので)
584デフォルトの名無しさん:2008/01/19(土) 18:32:07
訂正
誤:return CLASS_X(tmp_s); 
正:return CLASS_X(tmp); 
585デフォルトの名無しさん:2008/01/19(土) 18:44:40
>>583
tmpの型をboost::scoped_array<type>にでもすればいい。
586デフォルトの名無しさん:2008/01/19(土) 18:59:11
>>583
CLASS_X()の戻り値を変数に保持してからtmpを解放
で、returnで保持した変数を返せばいい
587デフォルトの名無しさん:2008/01/19(土) 19:00:19
ちなみに>>583でも動くだろうが、呼び出す毎にどんどん空きメモリが減っていく
588デフォルトの名無しさん:2008/01/19(土) 19:02:32
>>580
スタンダード以上ならついてる
589デフォルトの名無しさん:2008/01/19(土) 19:12:29
フォームでよければexpressにもついてる
590デフォルトの名無しさん:2008/01/19(土) 19:31:40
>>585
できればboost以外でお願いしたいのですが。
591デフォルトの名無しさん:2008/01/19(土) 19:34:09
>>583
operator=()の中でnewする必要がある状態ってのがよく分からない。
自動変数の値返しじゃダメなのか?
ソース提示可能なら提示よろ。

deleteしなかった場合は587の言うように当然メモリリークしていくぞ
592デフォルトの名無しさん:2008/01/19(土) 19:46:23
標準C++の話なら他所でやれ
593デフォルトの名無しさん:2008/01/19(土) 19:47:08
>>590
std::vector<type>
&tmp[0]のようにすれば、先頭要素へのポインタも得られる。
594583:2008/01/19(土) 19:48:07
>>591

ありがとうございます。
簡単に言えば文字列の足し算なんですけど、
newしないでできるのでしょうか。
(当方初心者です)

friend Mojiretsu operator+=(const Mojiretsu& moji1, const Mojiretsu& moji2) {    // +演算子
  int tmp_nagasa = moji1.nagasa + moji2.nagasa ;
  char* tmp_moji = new char[tmp_nagasa+1];
  mojicpy(tmp_moji,moji1.s);
  mojicat(tmp_moji,moji2.s);

  return Mojiretsu(tmp_moji);
}
595583:2008/01/19(土) 19:51:06
>>586

ありがとうございます。(前後してすいません)
こんな感じでしょうか。

friend Mojiretsu operator+=(const Mojiretsu& moji1, const Mojiretsu& moji2) {    // +演算子
  int tmp_nagasa = moji1.nagasa + moji2.nagasa ;
  char* tmp_moji = new char[tmp_nagasa+1];
  mojicpy(tmp_moji,moji1.s);
  mojicat(tmp_moji,moji2.s);
  char* tmp2_moji = tmp_moji;
  delete tmp_moji;

  return Mojiretsu(tmp2_moji);
}

一応、動きましたが、tmp2_mojiの先が解放されちゃってて
これも心配なんですが、大丈夫なのでしょうか。
596583:2008/01/19(土) 19:54:04
訂正
正:mojicpy、mojicat
誤:strcpy、strcat
597デフォルトの名無しさん:2008/01/19(土) 19:55:17
最近マジデ、どのプログラムもつまんないんですが、どうしたらいいですか?
責めて、C++で鬱病から逃れたいんですが
598583:2008/01/19(土) 19:59:39
>>592
すいません、この質問が終わったらよそに行きます。
見逃してください。
599デフォルトの名無しさん:2008/01/19(土) 19:59:44
ここC++スレじゃないってば
VCスレ
600デフォルトの名無しさん:2008/01/19(土) 20:00:57
>598
見苦しいから汚いコード貼らないでくれる?
601591:2008/01/19(土) 20:05:37
正直すまんかった。

>>598
C++相談室 part60
http://pc11.2ch.net/test/read.cgi/tech/1200044614

あたりで同じ質問してくれ。
602583:2008/01/19(土) 20:08:15
>>601
すいませんです。
そちらに行きます。

お邪魔いたしました。
603デフォルトの名無しさん:2008/01/19(土) 20:30:05
最近は、プログラムってFPGAとかのハードプログラムが面白い罠
604デフォルトの名無しさん:2008/01/19(土) 23:23:32
3週間完全マスターVisual C++ 6.0 1版1刷(日経BP社)を図書館で借りたのですが、、、
どっかに、正誤表とかはないんですか?
605デフォルトの名無しさん:2008/01/20(日) 01:25:08
>>603
PCに標準で乗ってたら面白いけどな.
606デフォルトの名無しさん:2008/01/20(日) 09:45:08
>>604
ここで聞いてどうするw
出版社に聞け
607デフォルトの名無しさん:2008/01/20(日) 12:10:01
デバイスコンテキストを使用しててどうも前に進めません。
新しくトップにウィンドウ(タイトルバー無し)をポップアップして、
そこにテキストを表示するというものなのですが、
一定以上の大きさを制限するために、一旦デバイスコンテキストに描画したものをStretchしたいのですが、
それ以前にCreateCompatibleDCでメモリデバイスコンテキストにDrawTextしてから
BitBltでウィンドウにそのままSRCCOPYしても真っ白なままです。
hDC = GetDC(hWnd);
hMemDC = CreateCompatibleDC(hDC);
GetClientRect(hWnd);
DrawText(hMemDC, szText, -1, &rec, DT_WORDBREAK);
BitBlt(hMemDC, 0, 0, rec.right, rec.bottom, hDC, 0, 0, SRCCOPY);
のような感じで、取り敢えずウィンドウの大きさそのままに描画してもダメでした。
これが DrawText(hDC, szText, -1, &rec, DT_WORDBREAK); に置き換えると、ちゃんと描画されます。
プロポーショナルフォントを使っているので、ウィンドウサイズに合わせてポイントを変えるとずれてしまうので、
設定したフォントのまま縮小出来れば、、と試行錯誤してますが、デバイスコンテキストの描画の時点で止まってしまってます。
助言どうかよろしくお願いします。
608607:2008/01/20(日) 12:12:20
すいません、一行書き間違えしました。
>BitBlt(hMemDC, 0, 0, rec.right, rec.bottom, hDC, 0, 0, SRCCOPY);
→BitBlt(hDC, 0, 0, rec.right, rec.bottom, hMemDC, 0, 0, SRCCOPY);
609デフォルトの名無しさん:2008/01/20(日) 12:29:26
CreateCompatibleDCでググれ。
メモリDCはビットマップを割り当てないとまともに使えない。
610デフォルトの名無しさん:2008/01/20(日) 16:37:28
2008/01/20 現在での最新のVisualC++ のバージョンは何でしょうか?
611デフォルトの名無しさん:2008/01/20(日) 16:40:49
マイクロソフトの公式でも池よカス
612デフォルトの名無しさん:2008/01/20(日) 16:47:11
>>611
いっぺあってどれがどれやらワケワカメなんだよボケェ
体系的に整理されていないと頭にインプットされねーんだよウンコ
613デフォルトの名無しさん:2008/01/20(日) 16:52:28
2008じゃないの?
614デフォルトの名無しさん:2008/01/20(日) 17:00:35
まずなにしたらいいですか
615デフォルトの名無しさん:2008/01/20(日) 17:09:27
>>614
オナ・・・というのは置いといて
Hello world を表示だな
616デフォルトの名無しさん:2008/01/20(日) 17:10:33
>>614
コーヒーを用意し
服を脱ぎ
コーヒーに塩を入れ
裸体のまま一気に飲む
617デフォルトの名無しさん:2008/01/20(日) 17:16:28
>>614
void main()
{
printf( "Hello world!!\n" );
}
これを動かしてみ?

できるかな?
できるかな?
618デフォルトの名無しさん:2008/01/20(日) 17:25:46
>>614
なんで手に入れたんだよ
ワレズか?
違法だからやめとけお勧めしないから違法なんだよ
619デフォルトの名無しさん:2008/01/20(日) 17:47:26
>>609
更に調べてみたら、どうにか作りたい形に近づきました。
hBmp = CreateCompatibleBitmap(hMemDC, rec.right, rec.bottom);
SelectObject(hMemDC, hBmp);
のようにしてから、DrawText, StretchBltをhMemDCに出力したところ、反映されたのですが、
テキストの埋まってない余白部分が黒くなってしまいます。
HBITMAPやCreateCompatibleBitmapで調べてるのですが、どうも背景を白く塗りつぶす事が出来ず・・・。

SelectObject(hMemDC, hBmp);
に関してはメモリデバイスコンテキストとBITMAP領域をリンクした状態にするという感じでしょうか・・・?
620デフォルトの名無しさん:2008/01/20(日) 18:40:28
DrawTextやStretchBltは呼べるのに、何故FillRectを呼ばないのかと
621デフォルトの名無しさん:2008/01/20(日) 18:47:16
>>619
DrawText()とか使うなら、SetBkColor()やSetBkMode()を覚えましょう。
622デフォルトの名無しさん:2008/01/21(月) 00:46:43
Cプログラマ必須テキスト!

http://mori.eco.to/
623デフォルトの名無しさん:2008/01/21(月) 02:37:57
Visual Studio 2005 でリビルド

========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========
リビルドがすべて正常に完了しました

デバッグする

ダイアログで
「プログラム×××.exeは開始できませんでした。」
と表示され、デバッグできません。

何のエラーメッセージも表示されないのですが
心当たりのある方いますか?
624619:2008/01/21(月) 04:30:52
>>620-621
レスどうもです。SetBkColorは書き忘れただけで、書いてました。が、ダメでした。
FillRectは完全に盲点でした。。存在すら知らなかったもので、試した所、上手く行きました。
本来はマスクかけたりとか色々やるべきなのかもしれませんが、
取り敢えずテキストを白背景に黒で表示という目的は達する事が出来、ありがとうございました。
625デフォルトの名無しさん:2008/01/21(月) 10:23:25
質問です。
タスクトレイのアイコンから最小化、元のサイズの処理をしているんですが、
最小化は
ShowWindow(hWnd,SW_MINIMIZE);
ShowWindow(hWnd,SW_HIDE);
で、出来るんですが、下のサイズの処理をした時に、ウィンドウがアクティブにならず、他のものに隠れて後ろに表示されてしまいます。
処理は
ShowWindow(hWnd,SW_RESTORE);
ShowWindow(hWnd,SW_SHOW);
と書いているんですが、これのどこがいけないんでしょうか?
626デフォルトの名無しさん:2008/01/21(月) 10:26:15
そのへん、いろいろあるんで似たような目的のAPIや引数をいろいろ試してみるといい。
まあ、SetForegroundWindowを併用するのが確実かなあ
627デフォルトの名無しさん:2008/01/21(月) 10:48:47
>>626
レスありがとうございます。
一応、SetForegroundWindowやSetWindowPosを使って最前面に表示する事が可能なのは確認しましたが、
普通のウィンドウとは動作が違っちゃうんですね。

上記のものだと、関数が発行された時は確かにアクティブなんですが、そのあと後ろのウィンドウを消したりすると、
自分のプログラムが最背面になってしまいます。

自分の作ったウィンドウをmy、その他のウィンドウA、Bとあるとすると、
アクティブ順位が1:A、2:Bの状態から1:my、2:A、3:Bになり、AやBを最小化すると、
1:A(B)、2:myになってしまいます。何故か分かりますか?
628デフォルトの名無しさん:2008/01/21(月) 11:05:56
visual c++ 2008 express editionでgeocoderja.dll内の関数gcjDbLoadを使うプログラムを書いています。が、エラーが出てしまいます。
dllを扱うには動的リンクと静的リンクがあるというところまではわかり、とりあえず動的リンクで試そうとしているんですがどうにもわかりません。
かなり低脳なので申し訳ないのですが、解決法を教えてください。

[ソース]
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
typedef int(__cdecl* _gcjDbLoad)(char *, int);
HINSTANCE hDll = LoadLibrary("geocoderja.dll");
int func = (int)GetProcAddress(hDll, "gcjDbLoad");

char *path = "C:/Documents";
int loadLevel = 4;
int retCode = func( path, loadLevel

FreeLibrary(hDll);
return 0;
}


[エラー]
------ ビルド開始: プロジェクト: geocoderja, 構成: Debug Win32 ------
コンパイルしています...
geocoderja.cpp
c:\documents and settings\de\デスクトップ\geocoderja\geocoderja\geocoderja.cpp(16) : error C2064: 2 引数を取り込む関数には評価されません。
ビルドログは "file://c:\Documents and Settings\DE\デスクトップ\geocoderja\geocoderja\Debug\BuildLog.htm" に保存されました。
geocoderja - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
629デフォルトの名無しさん:2008/01/21(月) 11:08:04
引数はいろいろやったの?
SW_SHOWNORMAL とか
630デフォルトの名無しさん:2008/01/21(月) 11:14:37
SW_SHOWNORMALならRESTOREなんてやる必要ない
631628:2008/01/21(月) 11:16:12
>>629
早速レスありがとうございます。
SW_SHOWNORMAL??
動的リンクのサンプルを見ながらちょこちょこいじってきたんでよくわかりません。
すみません・・
632デフォルトの名無しさん:2008/01/21(月) 11:20:43
typedef int(__cdecl* _gcjDbLoad)(char *, int);
イミフメイ
633デフォルトの名無しさん:2008/01/21(月) 11:21:57
>>628
何を聞いてるの?
もともと間違いはあちこちあるけど、そのエラーは
>int retCode = func( path, loadLevel
この行が途中までしか書いてないから出るんだよ。
634デフォルトの名無しさん:2008/01/21(月) 11:22:13
>>631
ShowWindow()の引数だよ
それ一つあればSW_RESTOREもSW_SHOWもいらない
635デフォルトの名無しさん:2008/01/21(月) 11:22:32
>>628
geocoderのことは知らないが

> typedef int(__cdecl* _gcjDbLoad)(char *, int);
↑のように書いたのなら
>int func = (int)GetProcAddress(hDll, "gcjDbLoad");
の行は
_gcjDbLoad func = (_gcjDbLoad)GetProcAddress(hDll, "gcjDbLoad");
と書かないと意味無くないか?

>>631
629-630はその前の質問に対するものだろ。
636628:2008/01/21(月) 11:28:52
すみません訂正です。書き込みの際に消してしまったようです。

[ソース]
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int _tmain(int argc, _TCHAR* argv[])
{
typedef int(__cdecl* _gcjDbLoad)(char *, int);
HINSTANCE hDll = LoadLibrary("geocoderja.dll");
int func = (int)GetProcAddress(hDll, "gcjDbLoad");

char *path = "C:/Documents";
int loadLevel = 4;
int retCode = func( path, loadLevel ); //エラーが出てる行

FreeLibrary(hDll);
return 0;
}

[エラー]
c:\documents and settings\de\デスクトップ\geocoderja\geocoderja\geocoderja.cpp(13) : error C2064: 2 引数を取り込む関数には評価されません。

>>632
その行が意味もわからず見よう見まねで書いたのでよくわからないんです・・

>>634
ShowWindow()は使ってないのですが、関連があるんですか?無知ですみません・・
637デフォルトの名無しさん:2008/01/21(月) 11:31:49
>>636
俺が悪かった
ShowWindowは君の質問とは一切関係ないw
638635:2008/01/21(月) 11:33:36
>>636
>int retCode = func( path, loadLevel ); //エラーが出てる行

エラーの出てるのはその行だろうけど
原因は635で書いたところにあると思うよ。
意味が分からないなら「関数ポインタ」について調べてみ。
639628:2008/01/21(月) 11:42:21
>>637
完全に勘違いしてました。すみません。

>>635
635さんの言うように
int func = (int)GetProcAddress(hDll, "gcjDbLoad");

_gcjDbLoad func = (_gcjDbLoad)GetProcAddress(hDll, "gcjDbLoad");
にするとうまくビルドできました!
関数gcjDbLoadも使えているようです。
ありがとうございます!

>>638
とりあえず動作するようにはなったみたいなのでいろいろと調べてみます。
ありがとうございます!
640デフォルトの名無しさん:2008/01/21(月) 12:19:15
SW_SHOWNORMALも試しました。
ShowWindow(hWnd,SW_SHOWNORMAL);
でも、>>627に書いた通りの動作になってしまいます^^;

ShowWindow(hWnd,SW_SHOWNORMAL);
SetForegroundWindow(hWnd);
でも同じです。
641デフォルトの名無しさん:2008/01/21(月) 12:28:49
うちじゃそうならないから、キミのとこの環境がおかしいのかもね
642デフォルトの名無しさん:2008/01/21(月) 13:49:08
何で出来ないんですかねぇ;
もうちょっと試行錯誤してみます。ありがとうございました。
643デフォルトの名無しさん:2008/01/21(月) 17:45:19
Windowでプロジェクト全検索してみれば?
どっかでアホな事やってるんだろう
644デフォルトの名無しさん:2008/01/21(月) 20:47:59
Visual Basicにはちゃんとしたスレはないの?
変な流れのネタスレしかないお。
645デフォルトの名無しさん:2008/01/21(月) 22:42:25
VB(笑)
646デフォルトの名無しさん:2008/01/22(火) 01:09:20
澄んだ目で見れば、ネタスレなどない。
647デフォルトの名無しさん:2008/01/22(火) 05:14:22
>>644
サイトが充実してるから2ちゃんでやらんでいいやろ
VisualStadio2005を使っています。
コンパイルオプションにdefineを追加するのはどうやったらいいのでしょうか。

#define _CRT_SECURE_NO_DEPRECATE 1
#pragma warning(disable:4312)
#pragma warning(disable:4996)

上記のをソースに書かず、オプションに追加したいんですが、
プロジェクト→〜のプロパティ→C/C++→コマンドラインの中に書くのでは違うのでしょうか?
どこに、どう書いたらいいのか分かりません。
分かる方お願いします。
649デフォルトの名無しさん:2008/01/22(火) 10:21:31
>>648
コマンドラインに書いてもいいけど、VC++でやるなら普通は
プロパティのC/C++ - プリプロセッサの「プリプロセッサの定義」
650デフォルトの名無しさん:2008/01/22(火) 10:23:34
あー、あとpragmaのほうは同じく C/C++ - 詳細の「指定の警告を無効にする」
651デフォルトの名無しさん:2008/01/22(火) 10:48:29
出来ました。ありがとうございます。
652デフォルトの名無しさん:2008/01/22(火) 13:18:08
Visual C++とかVBの如くバカにされたときの反応を教えろ。(・∀・)
653デフォルトの名無しさん:2008/01/22(火) 14:42:41
スルー
654デフォルトの名無しさん:2008/01/22(火) 14:52:15
そうなんだーって言う
655デフォルトの名無しさん:2008/01/23(水) 01:42:39
Visual Studio.NET 2003でWin32のプログラムを作りました。
Visual Studio上でデバッグ起動することはできるんですが、

使ってる画像などを含めて、他のPCで動かすためのexeファイルを作るには
どうすればいいんでしょうか?

解説してるサイトなどあったら、教えてもらえませんか。
656デフォルトの名無しさん:2008/01/23(水) 07:03:54
exe作らずデバッグできるほどVC++は器用じゃない
657デフォルトの名無しさん:2008/01/23(水) 09:39:25
Release版の話?インストーラーの話?
658デフォルトの名無しさん:2008/01/23(水) 10:12:49
>>656
Debugフォルダにexeができてました。
画像を同じフォルダに入れたら動きました。

>>657
インストーラの作り方もできれば知りたいです。
exeファイルにアイコン画像をつける方法とかも。
659デフォルトの名無しさん:2008/01/23(水) 10:42:29
すごく基本的なことだから少し勉強すればすぐわかると思う
660デフォルトの名無しさん:2008/01/23(水) 15:08:16
リソースエディタで検索
661デフォルトの名無しさん:2008/01/23(水) 15:22:03
>>660
?????????????????????????????????????????????
662デフォルトの名無しさん:2008/01/23(水) 16:25:10
DirectShowを用いて二つのカメラからの信号をそれぞれサンプルグラバフィルタを使用して入力し、
RGB情報をカメラごとの配列に入れて画像処理で用いたいのですが、なかなかうまくいきません。
どのようにすればいいか、ご教示願えませんでしょうか。
663デフォルトの名無しさん:2008/01/23(水) 16:26:45
VC++関係ない気が

DirectShowと戦うスレ Part 2
http://pc11.2ch.net/test/read.cgi/tech/1162913156/

ここの誤爆?
tbs 
665p1062-ipbf4007marunouchi.tokyo.ocn.ne.jp:2008/01/23(水) 16:34:16
tbs 
666655:2008/01/23(水) 23:25:43
>>659
基本的なことなら、もう少し自力で調べてみます。
667デフォルトの名無しさん:2008/01/24(木) 19:54:53
VC++2002 MFC で
CFormViewにリストコントロールを配置しています
リストコントロールの幅や高さ等を取得したいのですがうまくいきません
コントロールのサイズを取得する方法を教えてください
668デフォルトの名無しさん:2008/01/24(木) 20:13:28
自己解決しました
669デフォルトの名無しさん:2008/01/25(金) 13:28:26
VARIANTとCStringの変換について教えてください。
下記のようなコーディングで問題ないでしょうか?

//VARIANTからCString
CString hoge = newValue.bstrVal;


//CStringからVARIANT
CString hoge = "hoge";
vaResult.vt = VT_BSTR;
vaResult.bstrVal = hoge.AllocSysString();
670デフォルトの名無しさん:2008/01/25(金) 17:42:48
それでいいけど、VARIANTからCStringへは、
単にCString hoge = newValueでいけるはず。

あと場合にもよるけど、CComVariant (ATL), COleVarinat(MFC)もよろしく。
671デフォルトの名無しさん:2008/01/25(金) 20:59:51
プロジェクト内のファイルのファイル名を変更する
簡単な方法があれば、教えてください。現在は次の
方法でファイル名を変更しています。
(Visual C++6.0です。)

(1) プロジェクトからそのファイルをいったん除外する。
  (FileViewでファイルを選択し[編集]→[削除])

(2) エクスプローラでファイル名を変更。

(3) そのファイルをプロジェクトへ再度追加する。
  [プロジェクト]→[プロジェクトへ追加]→[ファイル]
672デフォルトの名無しさん:2008/01/25(金) 21:10:10
>>671
(1)の後、エクスプローラで操作しなくても、
(3)の追加時にファイル名変更すればいい。
673671:2008/01/25(金) 21:17:46
>>672
なるほど。ありがとうございました。
674デフォルトの名無しさん:2008/01/27(日) 00:37:17
俺メモ

ShowCursor()関数は単純に表示のON/OFFを切り替えるものではない
表示カウンタという意味不明なカウンタを持ってるらしく
ON/OFF切り替えるには同じ回数だけtrueとfalseをセットする必要がある
氏ねよMS('A`)
675デフォルトの名無しさん:2008/01/27(日) 00:40:02
MSDN見ずにAPIを叩いてはいけないという例。

>Parameters bShow
>[in] Specifies whether the internal display counter is to be incremented or decremented.
>If bShow is TRUE, the display count is incremented by one.
>If bShow is FALSE, the display count is decremented by one.

>Remarks
>This function sets an internal display counter that determines
>whether the cursor should be displayed. The cursor is displayed
>only if the display count is greater than or equal to 0.
676デフォルトの名無しさん:2008/01/27(日) 00:53:55
流石にそれで氏ねは可哀想だろ。
とはいえ、自分で使うとしたらラッパ書いて単純トグルにしてしまいそうだけど。
677デフォルトの名無しさん:2008/01/27(日) 02:53:52
FileViewのツリーの中でファイルはファイル名の順に
並ぶようですが、この順序を変更することはできるでしょうか?
Visual C++6.0です。
678デフォルトの名無しさん:2008/01/27(日) 06:55:10
>>675
VSとJaneDoeStyleとブラウザ開いたら重すぎてMSDNなんて見れない、というか見たくない。
679デフォルトの名無しさん:2008/01/27(日) 09:54:30
そんなにヘボPCなのかw
680デフォルトの名無しさん:2008/01/28(月) 09:41:50
昔は描画するときにマウスカーソル消して描いてたからな。
カウンタはあって当たり前の必須機能だったな。
今だとカーソル消すなんてよほどのことじゃないか?
681デフォルトの名無しさん:2008/01/28(月) 10:42:37
>>679
メモリが256MiBもあってCPUの速度も2GiHz超えしているという、
世界初のコンピュータとは比べ物にならないほどの高い性能を持ち合わせた俺のマシンが唸る!
682デフォルトの名無しさん:2008/01/28(月) 16:27:12
>>680
エロゲで数秒たったらカーソル消すのは必須機能だよ
683デフォルトの名無しさん:2008/01/28(月) 16:33:52
ああ、今は動画とかで消しっぱにするってことか
ウィンドウのカーソルを見えないやつに差し替えじゃあかんのかな?
ゲームは自前カーソルが多い気がするから、別の話か。
684デフォルトの名無しさん:2008/01/30(水) 07:45:29
プログラムは無事に完成しリリースビルドしたのですが、
コンパイル済み実行ファイルをテキストエディタ等で開くとエラー時に表示するメッセージや
読み込むファイル名がそのまま見えてしまいます
これはセキュリティ上よろしくないと思うのですが見えなくする方法はあるのでしょうか?
685デフォルトの名無しさん:2008/01/30(水) 09:33:51
自分でリソースに定義したやつだったら好きなように暗号化できるだろ
686デフォルトの名無しさん:2008/01/30(水) 13:21:11
それが見えて何か困ることでも?
まあ隠したいんならテキストを圧縮するなり文字コードに
無駄な数字を足すなりなんなりとすればいい
687デフォルトの名無しさん:2008/01/30(水) 13:25:53
そういえば昔exeの中からパスワード探したりしてた
今はネットで探せばたいてい見つかる
688デフォルトの名無しさん:2008/01/30(水) 14:09:44
パスワードを探す用途って何?
689デフォルトの名無しさん:2008/01/30(水) 14:25:22
>>684
どうせエラー時に表示するんなら隠す必要もないのでは?
あと開くファイル名なんてFilemonでも使えばすぐ分かる.
690デフォルトの名無しさん:2008/01/30(水) 14:31:39
昔の雑誌に掲載されていたアドベンチャーゲームとかは暗号化してたな。
あれは打ち込む人=プレーヤーだからなあw
691デフォルトの名無しさん:2008/01/30(水) 15:05:57
VC++6のコンソールアプリケーションで、Ctrl-Cをトラップすることはできますか?
692デフォルトの名無しさん:2008/01/30(水) 17:25:17
ごにょぼにょする時じゃーねの?
693デフォルトの名無しさん:2008/01/30(水) 17:29:26
>>691
SIGINTのトラップのことなら、SetConsoleCtrlHandler
694デフォルトの名無しさん:2008/01/30(水) 18:17:47
シギント
695デフォルトの名無しさん:2008/01/30(水) 20:26:58
C++で

気温 : ○○℃
湿度 : ○○%
風速 : ○○(m/s)

という複数行のパラメータを上書き表示するにはどのようにすれば宜しいのでしょうか?
一行だと"\r"を使ってできたのですが。。。
教えて君で申し訳ありません(>_<)

void show()
{
cout << "気温 : " << a << "\r" ;
cout << "湿度 : " << b << "\r" ;
cout << "風速 : " << c << "\r" ;

}

とすると全て上書きされて一行しか表示できませんでした・・・。
696デフォルトの名無しさん:2008/01/30(水) 21:07:04
\rを\nに
697デフォルトの名無しさん:2008/01/30(水) 21:15:37
複数行だと、ANSI.SYS組み込み+エスケープシーケンス、
もしくはAPI直呼び出しでもしないと駄目だと思う。
698デフォルトの名無しさん:2008/01/30(水) 21:34:04
コンソールAPI使えばいいんじゃねーの?使った事ないからしらんけど。
699デフォルトの名無しさん:2008/01/31(木) 06:34:55
先輩の方々に質問です。
Visual C++ 2008 Expressをインストールして、
mfcのプログラム(サンプルプログラム diblook)をビルドしたのですが、
afxwin.hが見つからないよエラーとなってしまいました。
2008 ExpressにはMFCがついていないんでしょうか?
700デフォルトの名無しさん:2008/01/31(木) 06:35:24
はい
701デフォルトの名無しさん:2008/01/31(木) 16:19:25
Expressにはついてないよ
もしついてたから誰も有料のやつ買わないでしょ
702デフォルトの名無しさん:2008/01/31(木) 16:20:53
>>701修正


Expressにはついてないよ
もしついてたら誰も有料のやつ買わないでしょ
703デフォルトの名無しさん:2008/01/31(木) 18:36:36
リストコントロールについて質問です。

レポート形式で、カラムヘッダにツールチップを表示したいのですが可能でしょうか?
可能であれば、やり方をお聞きしたいです。
よろしくお願いします。

VC.NET、MFC使用です。
704デフォルトの名無しさん:2008/01/31(木) 19:47:30
>>700-702
ありがとうございます。
言われてみればそうですね。商売にも使えるわけですから
どこの企業も買わなくなっちゃいますね。
仕方ないのでWin32 Apiでしこしこ書くことにします。
705sage:2008/01/31(木) 23:16:08
VC++2005ExEditionのWindowsフォームを使って簡単なアプリを作っているのですが
ある程度行数のある文字列をForm内に出力したいのですがどうしたらよいでしょうか?
イメージとしてはDOS窓みたいなものを作りたいのですが・・・どうかご教授お願いします。
706デフォルトの名無しさん:2008/01/31(木) 23:34:40
適当にプロパティをいじる。
707デフォルトの名無しさん:2008/02/01(金) 15:10:08
VC++2008 Expressを使って、コマンドラインベースのプログラムを作っています。
実行時の実行プライオリティ設定したいのですが、どの関数を使えばよいのでしょうか?
708デフォルトの名無しさん:2008/02/01(金) 16:00:45
>>704
もうこのさいだから C++/CLI でフォームアプリにしちゃいな!
709デフォルトの名無しさん:2008/02/01(金) 18:01:55
//ChildView.cpp


//winmm.libにリンクする
#pragma comment(lib,"winmm")

・・・

void CChildView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: ここにメッセージ ハンドラ コードを追加するか、既定の処理を呼び出します。

PlaySound("WinXP_Startup",NULL,SND_RESOURCE | SND_ASYNC | SND_LOOP);

CWnd::OnLButtonDown(nFlags, point);
}


PlaySound関数を使いたいのですが、上記のようにコーディングすると

error C2065: 'SND_RESOURCE' : 定義されていない識別子です。
error C2065: 'SND_ASYNC' : 定義されていない識別子です。
error C2065: 'SND_LOOP' : 定義されていない識別子です。
error C3861: 'PlaySound': 識別子が見つかりませんでした

とコンパイルエラーがでてしまいます。
どのようにすればエラーがでなくなるか、教えていただけないでしょうか。
710デフォルトの名無しさん:2008/02/01(金) 18:16:35
#include <MMsystem.h>
かな。
WIN32_LEAN_AND_MEANでもいいがMFCだとよくわからん
711デフォルトの名無しさん:2008/02/01(金) 19:11:47
>707
SetPriorityClass( GetCurrentProcess(), REALTIME_PRIORITY_CLASS );
みたいな?
712デフォルトの名無しさん:2008/02/01(金) 20:37:14
>>707
プロセス単位なら、startコマンドのオプションでもいけるよ。
713デフォルトの名無しさん:2008/02/02(土) 22:34:28
テンプレートの有用性と使い道がイマイチ理解できません

714デフォルトの名無しさん:2008/02/02(土) 22:40:22
715デフォルトの名無しさん:2008/02/02(土) 23:04:36
いやいや、テンプレートの本質はそこじゃないだろう。
テンプレートの有用性が知りたければboostのソースを嫁。
716デフォルトの名無しさん:2008/02/03(日) 01:08:22
OpenCVをWindows form Applicationで使うための設定の仕方を教えてください。
環境は、Visual c++ 2005 Express Editionです。
ビルドのエラーを解決できなくて困っています。
VCの使い方が間違っていることが原因っぽいのですが・・・
エラー
1>c:\program files\opencv\cxcore\include\cxtypes.h(212) : warning C4793: '__asm' : 関数 'int cvRound(double)' 用にネイティブ コードの生成が発生します
1> c:\program files\opencv\cxcore\include\cxtypes.h(205) : 'cvRound' の宣言を確認してください。
717デフォルトの名無しさん:2008/02/03(日) 07:59:00
先日ここで2008 ExpressにMFCがあるか聞いたものです。
Win32を使ってコンソール型のコマンドが完成したのですが、
やはり画面をつけてあげたいなと思っています。
Win32で画面を作るのは敷居が高そうなので(リソースエディタがないなど)
他によい方法があれば採用したいのですが、どんな仕組みがあるんでしょうか。
CLIってのがそうなのかな?心配しているのは、ランタイムパッケージやら
DLLをごっそりインストールすることにならないかなんです。
単純な機能のツールをネットで配布するんで、できれば身軽に、余分なものは
なしでいきたいんです。そんなわたしにぴったりの何かはあるんでしょうか?
長文失礼しました。
718デフォルトの名無しさん:2008/02/03(日) 08:48:07
無名 delegate とか Lambda 式とか見てると C# がうらやますぃ.
それでも C++ から離れられない俺はどうすればいいですか?
boost::lambda でしょうか?
C++09 を待てばいいのでしょうか?
C# の yield とかもうらやますぃ.
LINQ は微妙.なれればいいんだろうな.
719デフォルトの名無しさん:2008/02/03(日) 10:55:04
>>717
画面はdelphi 6 personalで作ればおk
簡単に作れてランタイムもいらない。開発環境は無料。
720デフォルトの名無しさん:2008/02/03(日) 13:44:01
Visual Sturdio.NET 2003でWin32プログラムをデバッグ実行すると、

出力に
'aaa.exe': 'C:\WINDOWS\system32\XXX.dll' を読み込みました。シンボルが読み込まれていません。
というメッセージがたくさんでるんですが、これは何なんでしょうか?

ググると問題無いと書いてたんですが、できれば出ないようにしたいです。
721デフォルトの名無しさん:2008/02/03(日) 14:16:52
無理
722デフォルトの名無しさん:2008/02/03(日) 15:37:30
gcc用で配布されているコードを,
VisualStudio2005でコンパイルしたところ,
エラー 1 error C2143: 構文エラー : '{' が ':' の前にありません。 c:\program files\microsoft visual studio 8\vc\include\cmath 18
エラー 2 error C2059: 構文エラー : ':' c:\program files\microsoft visual studio 8\vc\include\cmath 18

といった無数のエラーが出ました.

ちなみにcmathはインクルードしておらず,
#include<stdio.h>

#include<stdlib.h>


#include<math.h>

#include<complex>
だけです.

どなたかアドバイス頂けませんでしょうか?
C/C++スレでも質問書いたのですが,
こっちのスレの方が適切なようでマルチポストさせて頂きました.
723デフォルトの名無しさん:2008/02/03(日) 16:34:56
>>722
cmathを直接includeしてないけれども
complexの中でcmathがincludeされてるからなぁ。

で、エラーの原因はその情報だけじゃ分からない。
C2143やC2059はエラー出力に表示されている箇所よりも
前の場所での構文ミスで出ることもあるから。
他の場所で'}'の閉じ忘れなんてのも原因になりうる。

もしかしたらとは思うが、拡張子が.cになっているんじゃないかな?
そうなら.cppに変えたらうまくいく可能性が高いな。
724デフォルトの名無しさん:2008/02/03(日) 16:57:50
>>720
該当のDLLをリンクからはずせば出なくなると思うけど
必要になったらまたリンクからはずせばいい
725デフォルトの名無しさん:2008/02/03(日) 16:58:44
ごめん
必要になったらまたリンクからはずせばいい
→必要になったらまたリンクすればいい
726デフォルトの名無しさん:2008/02/03(日) 17:03:31
シンボル入れとけばいい
727722:2008/02/03(日) 17:15:59
>>723
拡張子変えたらこのエラーは解決しました!ありがとうございます!
別のエラー出たのでまた頑張ります.
728デフォルトの名無しさん:2008/02/03(日) 17:18:29
>>722
コンソールプロジェクトを作って放り込んでるんなら
stdafx.hをインクルードしないとダメかも
じゃなきゃプリコンパイル済みヘッダーを使用しないにするか
729デフォルトの名無しさん:2008/02/03(日) 17:19:11
うわ、恥ずかしい><もう解決してたのね
730デフォルトの名無しさん:2008/02/03(日) 19:21:19
インクルードガードは#pragma onceでしょうか?
それとも#ifndef HOGOHOGE_H_IS_INCLUDEDでしょうか?
731デフォルトの名無しさん:2008/02/03(日) 20:03:20
#pragma onceって標準の仕様なのか?
732デフォルトの名無しさん:2008/02/03(日) 20:21:31
標準規格には含まれていないが、
現在は殆どのコンパイラで通るようになっている。gccも。
今は、対応を気にせずに使える段階に入ってるんじゃないかな。
733デフォルトの名無しさん:2008/02/03(日) 20:27:25
よくVisualStudio自体の機能かな、で、デバッグ機能が強力だーとか聞くんですが
詳しく解説しているページとかないでしょうか?

ブレイクポイントっていうのがそこでストップするっていうのはわかってたりするんですが
それの使いどころが判然としなかったり、他の機能に関してもそうです
734デフォルトの名無しさん:2008/02/03(日) 21:18:28
つ ステップ実行
ウォッチウィンドウ等で変数の中身を確認しながら実行すれば、
論理的なエラーを発見するのに死ぬほど役立つ。
呼び出し履歴を併用すれば、変数の状態も追いかけ放題。
735デフォルトの名無しさん:2008/02/03(日) 21:21:26
ちうか、733は「デバッグ」をどのようにやればいいのかが
そもそも明確に判ってないような気がする。
736デフォルトの名無しさん:2008/02/03(日) 21:22:16
プログラマ歴20年だけどデバッグ機能ってほとんど
使ったことない。
737デフォルトの名無しさん:2008/02/03(日) 21:26:22
733とは違うが自分もデバッグ方法やVSのデバッグ機能の使い方を知りたいな

よい書籍やサイトないですか?
738デフォルトの名無しさん:2008/02/03(日) 21:27:37
あんまり自慢にならんね、それは。
739738:2008/02/03(日) 21:30:48
>>738>>736 宛てな。

>>737
まずは、ヘルプの「デバッガの使用方法」に目を通せばいいんじゃね?
740733:2008/02/03(日) 21:49:54
>>734
ループ部分とかループ回数分確認し続ける、とかなりそうですね・・・
使いどころが難しそうだ

>>735
バグ取りくらいの認識なんで、エラーの行見て修正
論理的なところは紙に全部書きだして直してます

741デフォルトの名無しさん:2008/02/03(日) 22:30:10
>>740
ループを抜け出たいなら、ちょうど出た所にブレイクポイントをかけておいて
通常実行をすればいい

あと気をつけないといけないのは、DebugモードとReleaseモードの違いね
Releaseの場合は、普通はコードが最適化されるので、その都合上
デバッガで追いかけられない場合がある
その場合はDebugモードに戻して再実行すること
742733:2008/02/03(日) 22:42:26
>>741
なるほど、それなら便利そうです

まだそういった作業が必要なレベルのものを組んだことがないんで実感が沸かなかったのかな・・

ありがとうございました
743733:2008/02/03(日) 22:43:15
うわあげちゃったごめんなさいorz
744デフォルトの名無しさん:2008/02/03(日) 23:41:33
visualc++2005express editionをインストールしているんですが、今visualc++2008express editionがでてるじゃないですか。
なので2005をアンインストールして、2008をいれたほうがいいのでしょうか?
それと2005と2008の違いを教えてください。
745デフォルトの名無しさん:2008/02/03(日) 23:55:22
VCEEについては、そんなに変更はなかったんじゃないかな。
746デフォルトの名無しさん:2008/02/04(月) 01:24:04
新しいものが好きなら2008
安心を得たいなら2005
747デフォルトの名無しさん:2008/02/04(月) 01:34:32
iostream系の日本語の処理が、2005はおかしかったって話だけど。
748デフォルトの名無しさん:2008/02/04(月) 07:49:46
locel
749デフォルトの名無しさん:2008/02/04(月) 10:14:59
>>736
自分の書いたものしかデバッグしないの?
20年前か、、CodeViewで衝撃受けたころかなー
750デフォルトの名無しさん:2008/02/04(月) 11:14:18
デバッグ使えない奴はバグの原因が自分のコードか他人のコードか確認できないから
バグを他人のせいにしやすい。
751デフォルトの名無しさん:2008/02/04(月) 11:28:08
printfならいっぱい入れるけど
752デフォルトの名無しさん:2008/02/04(月) 12:29:02
誰かご存知だったら教えてください。
VS2005のVC++でWin32ベースのDLLを作成しました。
その後セットアッププロジェクトで
レジストリの編集を行うところで戸惑っております。
すでに存在する、複数行文字列値(REG_MULTI_SZ)の値に
ある文字列を追加したいのですがセットアッププロジェクト上には
複数行文字列の項目がみあたりません。
セットアッププロジェクトのレジストリ編集では
複数行文字列の値を操作できないのでしょうか?
いい解決方法などご存知の方、どうぞよろしくお願いします。
753デフォルトの名無しさん:2008/02/04(月) 13:50:48
ここ初心者スレですけど
754752:2008/02/04(月) 14:01:06
すみません、、、スレを改めます。
失礼しました。
755デフォルトの名無しさん:2008/02/04(月) 14:11:55
学ぼうとする姿勢がある限り人はずっと初心者だってばっちゃが言ってた
756デフォルトの名無しさん:2008/02/04(月) 16:55:07
REG_MULTI_SZで検索
757デフォルトの名無しさん:2008/02/04(月) 17:50:43
char buff[256];
for (int i=0; i<sizeof(buff); i++) {
  printf("%c", buff[i]);
}

をもっと速くなるようにチューニングしたいのですが
どのような方法がありますか?
758デフォルトの名無しさん:2008/02/04(月) 18:00:12
>>757
それは遅いのか?
本当に?
ちゃんと最適化しても問題になるほど遅いのか?


OK!
それなら、取り敢えずputchar(buff[i])ではどうだろうか。
759デフォルトの名無しさん:2008/02/04(月) 18:01:06
buff内にナル文字がないことが保証されているのなら、printf("%.256s", buff)でいいね。
760757:2008/02/04(月) 18:27:20
>>758
ありがとうございます。
とりあえずputcharにしました。
速くなった気はしないでもないです。

>>759
困ったことにナル文字があります。
761100:2008/02/04(月) 18:31:14
先日まで動いていたプログラムを実行したところ、
リソース(ダイアログ)が表示されなくなってしまいました。
原因が全く分かりません。
エラー、警告ともに0です。
実行できていたときから修正などは一切していません・・・何が原因でしょうか?
どなたかお分かりの方、お教えて頂けないでしょうか><
762デフォルトの名無しさん:2008/02/04(月) 18:38:36
>>760
斯くなる上は、fwrite(buff, sizeof(buff), 1, stdout)だ。
# 変わらんと思うけどねぇ。
763デフォルトの名無しさん:2008/02/04(月) 18:40:54
>>760
sizeof(buff)を変数に移して使った方が速いんじゃないかな
764デフォルトの名無しさん:2008/02/04(月) 18:44:49
>>763
sizeof(buff)は定数だから心配なし。
765デフォルトの名無しさん:2008/02/04(月) 18:44:51
>>761
それだけじゃエスパーじゃない限り返答不能です。
ダイアログ呼び出し前後のソースを公開してください
766デフォルトの名無しさん:2008/02/04(月) 18:44:59
質問です。最小化の動作って、指定した座標などに向かって動作させられますか?
可能ならどんな関数を使えばいいか教えて下さい。お願いします。
767デフォルトの名無しさん:2008/02/04(月) 18:48:29
>>764
そうなん?てっきり値が変わらなくても毎回サイズ計算するものだと思ってたよ
768デフォルトの名無しさん:2008/02/04(月) 18:52:14
>>766
簡単には出来ないと思うけど、自分でウィンドウサイズと位置を制御して
アニメーションさせれば似たような事ができると思うよ
769100:2008/02/04(月) 18:53:56
申し訳ございません。
ソースは下記の通りです。

int PASCAL WinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int Ret;

hPrevInstance = hPrevInstance;
lpCmdLine = lpCmdLine;
nCmdShow = nCmdShow;
// Create Dialog
Ret = DialogBox( hInstance, MAKEINTRESOURCE(IDD_DIALOG), NULL, DIO_Sample );
return Ret;
}

前回実行させて動作確認できたときから何も触っていない状態で、
今日実行させたらリソース画面が出てこなくなりました。
プログラムの問題なのでしょうか?
770デフォルトの名無しさん:2008/02/04(月) 18:57:07
>>767
計算するって言ったって、何を計算すると思ったのかね。
まさか、size_t foo = 4; は計算すると思わないだろ?
size_t foo = sizeof(int); は?
勿論、size_t foo = sizeof(buff); だって同じことだ。
771757:2008/02/04(月) 19:00:30
>>762
おぉ!これは速そうですね!
772デフォルトの名無しさん:2008/02/04(月) 19:10:53
>>768
そのアニメーションをさせる関数が分かりません;
SystemParametersInfoはアニメーションを指定の座標へ行わせるものではないんですよね?
なんて検索したら見つかるでしょう・・
773デフォルトの名無しさん:2008/02/04(月) 19:32:34
何がしたいのかいまいち分からないな。
既定の動作だと最小化するとタスクバーに入るけど
それをどうしたいの?
もしかしてタスクトレイに入れたいとか?
774デフォルトの名無しさん:2008/02/04(月) 19:33:40
>>772
定期的にSetWindowPosでも呼び出して座標とサイズを指定してやればいいんじゃないかと
775デフォルトの名無しさん:2008/02/04(月) 19:50:10
>>770
計算というか、中にある型やバッファのサイズの値を調べて取得する処理って事かな
内部的動作に詳しくないから、そういう処理は別になくて、バイナリコード的には
調べたサイズの値が直接入っているかもしれないけど。
776デフォルトの名無しさん:2008/02/04(月) 20:08:44
wikiをみると「コンパイル時に計算される」とあるね。
てことはバイナリコード的には取得した結果が直接入ってるって事か
ttp://ja.wikipedia.org/wiki/Sizeof
777デフォルトの名無しさん:2008/02/04(月) 20:14:24
>>773
そうです。タスクトレイへアニメーションつきで最小化をさせようと考えてます。
今、タスクトレイの座標取得をし、GetWindowRectで自ウィンドウのサイズを取得し、
DrawAnimatedRectsで自ウィンドウ位置からタスクトレイへアニメーションを考えてやってるんですが、少々問題がありまして。
文で説明するのが難しいんですが、ウィンドウは最大化状態ではないのに、アニメーションがウィンドウ一杯のメニューバーの大きさから
タスクトレイへ向かってアニメーションされてしまいます。それを自ウィンドウサイズに合わせる方法が全く分からず悩んでます。

>>774
DrawAnimatedRectsはRECT構造体を指定しないといけないんで、他でありますか?
778デフォルトの名無しさん:2008/02/04(月) 20:15:53
XPでの最小化の挙動を見ると、タイトルバーだけが縮小しながらタスクバーに向かう感じだな
同じような挙動にしいなら、タイトルバーサイズのサブウインドウを用意して
それを縮小アニメーションさせつつ指定座標に移動させていき、指定座標にたどり着いたら
元のウィンドウを非表示にする必要がある。

何に使うのかは知らないけれど。
779デフォルトの名無しさん:2008/02/04(月) 20:30:35
>>777
よくわからんけど、>>778の一行目みたいなウィンドウズ準拠の動きは嫌だってこと?
ウィンドウ全体が縮小しながら移動するようにしたい?
そうなるとやっぱ定期的にSetWindowPosでセットするしかないんじゃない?
780デフォルトの名無しさん:2008/02/04(月) 20:39:35
>>777
>DrawAnimatedRectsはRECT構造体を指定しないといけないんで、他でありますか?

GetWindowRectで取得したRECT構造体のデータを使いたいって意味なら

RECT構造体っていうのは、
left→左上座標 X
top→左上座標 Y
right→右下座標 X
bottom→右下座標 Y
の4つで構成されてるデータ。

SetWindowPosにはleft、top,、right - left、bottom - top の値を設定すればいい
781デフォルトの名無しさん:2008/02/04(月) 20:41:16
>>779
>>778のような動きをさせたいんで回答としては有難いものなんですが、タイトルバーサイズのサブウィンドウを用意する必要があるんでしょうか?
DrawAnimatedRectsのRECT構造体はタイトルバーサイズの数値が入ってればいいってものではないんですか?
開始点のRECTには、タイトルバーサイズの数値がそれぞれのメンバに入ってるんですが、
何故か最大サイズのタイトルバーからアニメーションが始まります・・


てゆーか、新しくそれ用にサブウィンドウを用意するのが良く分からない・・・w
それもまた調べなければですね^^;
782デフォルトの名無しさん:2008/02/04(月) 20:43:44
>>780
レスが食い違いました。
ちなみになんですが、SetWindowPosってのはウィンドウレベルの指定と、ただ画面を動かすものではないんですか?
783デフォルトの名無しさん:2008/02/04(月) 20:46:58
SetWindowPosはサイズも指定できるよ

というかDrawAnimatedRectsAPIで普通に>>778の動きになるような気がするんだけど
実際にそういうの作ったことないから俺は発言控えた方がいいな。
混乱させるだけみたいだし。
784デフォルトの名無しさん:2008/02/04(月) 21:09:18
>>782
と、言いつつ、試しにコレだけやってみたけど普通に動いてるよ
なんか範囲の設定が間違ってるんじゃない?

RECT rect, rect2;
GetWindowRect( hWnd, &rect);
rect2.left = 750;
rect2.top = 580;
rect2.right = 800;
rect2.bottom = 600;
DrawAnimatedRects(hWnd, IDANI_CAPTION, &rect, &rect2 );
785デフォルトの名無しさん:2008/02/04(月) 21:17:00
>>784
ありがとうございます。
私のは何が違っているのか判明しました。

上ではタスクトレイの座標を取得し、と書きましたがトレースしたら取得できてませんでした;;

HWND tray;
RECT stray;
tray = FindWindow("ModelApp","SysPager");
GetWindowRect(tray,&stray);

では取得できてませんでした。
DrawAnimatedRectsの方の使い方や考え方はあってたのに、こっちが違ったとはorz
FindWindowはこの記述じゃいけないんですかね?
ModelAppはエントリポイントで指定したClassNameです。
786デフォルトの名無しさん:2008/02/04(月) 21:29:37
>>785
参考になるかな?これまたやった事ないんで確証はないけど
ttp://www.geocities.jp/g_e_k_o_g_e_k_o/column/column.html
787デフォルトの名無しさん:2008/02/04(月) 23:24:42
>>786取り敢えずなんですが、以下のように記述してやってみましたが出来ませんでした;

HWND getTrayToolbar(HWND hToolbar)
{
HWND hTrayWnd, hNotifyWnd, hSysPager;

hTrayWnd = ::FindWindow("Shell_TrayWnd", NULL);
if (hTrayWnd == NULL)
return NULL;

hNotifyWnd = ::FindWindowEx(hTrayWnd, NULL, "TrayNotifyWnd", NULL);
if (hNotifyWnd == NULL)
return NULL;

// OSの違いを吸収
// SysPagerが取得できなかったときは、win2000,Meと仮定し、
// TrayNotifyWnd直下にToolbarWindow32がある可能性にかける。
hSysPager = ::FindWindowEx(hNotifyWnd, NULL, "SysPager", NULL);
if (hSysPager == NULL)
hSysPager = hNotifyWnd;

hToolbar = ::FindWindowEx(hSysPager, NULL, "ToolbarWindow32", NULL);
return hToolbar;
}

HWND tray;
RECT stray;

getTrayToolbar(tray);
GetWindowRect(tray,&stray);
これでstrayに座標が入ってるはずなんですが、表示してもちゃんとした数値は入ってませんでした。
788デフォルトの名無しさん:2008/02/04(月) 23:31:40
>>786
変に改造したのがよくなかったです。

HWND getTrayToolbar(HWND hToolbar)
{

HWND getTrayToolbar(void)
{
に戻し、

getTrayToolbar(tray); を
tray = getTrayToolbar();

にしたところ取得できました。

初心者の分かりづらい質問にも親切に答え、参考サイトを調べて頂いたりトレースして頂いたり本当に有難うございました!
789デフォルトの名無しさん:2008/02/04(月) 23:38:23
Visual C++6.0 (WinNT4.0)で古いシステムのメンテナンスをやることになって
しまいました。VB5.0/6.0やVB.NET,C#.NETは使ってきましたがC++を実務で
するのは初めてです。

ソースを修正してデバッグモードで実行しても、デバッグウィンドウで表示される
結果は元のソースでの処理結果のままなのですが、こういうものなのでしょうか。
(ビルドして生成したDLLは修正したとおりに動く)

また、ビルド時に構成でReleaseとDebugが選択できますが、これの違いは
なんでしょうか。構成をDebugにしてもDLLは生成されますが、本来はReleaseで
作るべきものなのでしょうか。
790デフォルトの名無しさん:2008/02/05(火) 00:13:20
Debugビルドだと色々なエラーチェック用のマクロが定義されたり、
メモリ領域を利用する前に特定の値で初期化したりしてバグを発見しやすくしたり、
実行ファイルにデバッグ用の情報を埋め込んだり、最適化を無効にしてデバッガで追いやすくしたり。
つまり、デバッグ向けで速度が遅い、実行ファイルがでかい。
なので開発はDebugビルドで製品として出す場合はReleaseビルドかな。普通は。

VC6.0しらないし、デバッグウィンドウが何を指して言っているのか分からないけど
Releaseビルドだとうまくデバッグできないかもね。
791デフォルトの名無しさん:2008/02/05(火) 00:31:39
済みません、教えてください。
VC++で作ったプログラムで、例外が発生したときにデバッグ情報をファイルに
書き出すようにしたいと思うのですが、変数領域についてよく分からないのです。

ファイルアクセスとか例外が起きそうなところに__try,__exceptブロックを作って
GetExceptionInformation()で例外情報を取り込んで、
レジスタの値を調べて、スタック情報を記録するところまではできました。
ただ、これだけだとポインタの指すデータが残らないので不便だと思い、
データの領域も記録しようと思うのですが・・・どこら辺を記録すればいいのか
分かりません。

いろいろ調べたところ、.dataセクションと.bssセクションの領域はファイルヘッダから
計算できる(他に方法があれば教えてください)ことは分かったのですが、ヒープ領域の
アドレスってどうやって調べればいいのでしょうか?

あと、変数って.dataセクションと.bssセクションとスタックとヒープ領域に作られる
と思ってたんですけど、他の領域にも作られるんですか?

済みませんが、よろしくお願いします。






792789:2008/02/05(火) 00:36:53
>>790
ご回答ありがとうございます。
やはりReleaseビルドですべきですか。
ちなみに今、デバッグウィンドウに処理結果が反映されない、といっているのは
Debugビルドのものです。
793デフォルトの名無しさん:2008/02/05(火) 00:44:59
>>792
デバッグウィンドウってのは自動変数とかをのぞく奴?
ブレークポイント仕掛けてステップ実行してけば普通は値が反映されると思うけど。
正直よくわからん。
794789:2008/02/05(火) 01:03:15
>>793
そう、普通にブレークポイントで止めて、ステップ実行しながら変数の値を
追っかけていくのですが自分が追加したロジックを無視してしまうのです。
DLLを生成するとそのロジックを反映したもので動作するので不思議です。
795デフォルトの名無しさん:2008/02/05(火) 01:10:35
支障がないならリビルドしてみるとか・・
796デフォルトの名無しさん:2008/02/05(火) 01:14:45
リリースビルドで無視するのなら>>741の理由で普通にある事なんだが
デバッグビルドで無視するのは本当に飛ばしてるのか、
ブレイクポイントが適切な行に設定されてないのかどっちかかな
797789:2008/02/05(火) 01:14:58
>>795
とりあえず、本来は修正結果がデバッグでも反映されるべき、っていうのは
わかったのでまた試してみます。ありがとうございました。
798デフォルトの名無しさん:2008/02/05(火) 01:22:13
>>788
その引数の渡し方だと、実際に引数として渡した変数そのものではなくて
別の変数が関数内で作られてしまうから取得はできない

そういう場合は、HWND getTrayToolbar(HWND &hToolbar)
と記述すると、実際に渡した変数にそのまま格納される
じゃなければ、HWND *lphToolbar などとしてポインタを引数で渡すとか。
799デフォルトの名無しさん:2008/02/05(火) 06:31:15
Debugビルド = VisualStudioのデッバッガ用のビルド
デバッガ入れてない環境では動作しないしない可能性がある。
ビルドしたプログラムの配布禁止(ライセンス違犯)
800デフォルトの名無しさん:2008/02/05(火) 11:19:38
>>799
違犯ってなんだよ。違反なら判るが。

>>797
古いままのDLLが動いているって話か?
801デフォルトの名無しさん:2008/02/05(火) 15:33:39
関数名を入力すると引数とかがポップアップ表示される機能は、プロジェクトを作成しないと働かないみたいですが、
cppファイルとかを単体で開いた時にも機能するようにはできないでしょうか?
802デフォルトの名無しさん:2008/02/05(火) 17:22:36
同じ関数名だってリンクされるものが違ったら別の関数なんだから
そんなの無理に決まってるだろ
803デフォルトの名無しさん:2008/02/05(火) 21:46:24
リンクとか関係あるの?
804デフォルトの名無しさん:2008/02/05(火) 21:48:18
goto label
805デフォルトの名無しさん:2008/02/05(火) 22:16:22
>>801
秀丸に単語補完機能がある。それで似たようなことはある程度可能。
と言ってもこういう質問がでる時点でIDEとかエディタとか知識が少なめに感じる・・・
806デフォルトの名無しさん:2008/02/05(火) 22:48:18
>>803
同名の関数を保持したライブラリやオブジェクトがハードディスク上に複数あるとする。
そのいずれも呼び出し側のcppファイルとは異なったフォルダにある。

さて、呼び出し側のcppファイルを解析するだけで、複数ある同名関数の中の
どれを呼び出せばいいのかがわかるだろうか?
807デフォルトの名無しさん:2008/02/05(火) 23:02:48
ヘッダだけで情報は充分じゃねーの。
インクルードパスさえなんとかなればな。
808デフォルトの名無しさん:2008/02/06(水) 00:59:56
まあどうにもならないけどな。
809デフォルトの名無しさん:2008/02/06(水) 08:17:59
>>806
どれを呼び出せばいいかなんて分かる必要があるの?
引数ならヘッダ見れば分かるし、というか分からないとコンパイルできないだろ

パスの設定は見落としてた
810デフォルトの名無しさん:2008/02/06(水) 09:14:00
VCのIDEはプロジェクトを作成して使う前提なんだから
嫌ならIDE使わなきゃいい
811デフォルトの名無しさん:2008/02/06(水) 13:06:06
>>809
ごめんごめん。

ライブラリやオブジェクト

ライブラリやオブジェクト、それに付随するヘッダ

という事で。
812デフォルトの名無しさん:2008/02/06(水) 13:30:39
しかしVSはcppとかの拡張子に関連付けたりするんだよな。
インストール直後いつものエディタが起動しないのであせるw
813デフォルトの名無しさん:2008/02/06(水) 13:34:27
>>809
どうしてもcpp単体で見られるようにしたいと言うんなら
自分で検索するインクルードヘッダの参照パスを指定できるエディタでも作ればいいよ。
814デフォルトの名無しさん:2008/02/06(水) 13:35:29
>>812
インストール時に関連付けの設定できなかったっけか
815デフォルトの名無しさん:2008/02/06(水) 13:41:22
>>814
できる、、けどOSから順番に入れなおしてるとインストール順によって
状況が変わるみたい。
816デフォルトの名無しさん:2008/02/06(水) 14:15:59
>809
だからプロジェクト作らないとコンパイルもできない。
プロジェクト作らずにコンパイルする方法もあるが
817デフォルトの名無しさん:2008/02/06(水) 14:47:41
Unixでpthreadを使ってマルチスレッドプログラムを作ってきました。
VisualC++では何を使ってマルチスレッドにするのが一般的ですか?
818デフォルトの名無しさん:2008/02/06(水) 14:50:07
createすれっど
819デフォルトの名無しさん:2008/02/06(水) 18:44:23
>>817
状況によって何を使うべきかが変わるので
一般的とかそんなの無い。
820デフォルトの名無しさん:2008/02/06(水) 19:09:27
強いて言うなら、どれも結局Win32 APIのCreateThreadに行き着く。
821デフォルトの名無しさん:2008/02/06(水) 19:11:48
メニューに関して質問です。

CreateMenu(), AppendMenu() を使用して
"ファイル(&F)" [POPUP] (hMenuFile)
 "ファイルを読み込み"
 セパレータ
 "履歴" [POPUP] (hMenuRecent)→ "&0 " + path
 セパレータ
 終了(&X)

な感じに作成し、履歴からポップアップされるpathを選んだ時に
GetMenuItemRectで位置を取得しようとするのですが、
インデックスを試しに0にして値を調べて見ると、
hMenuFileの時でもhMenuRecentの時でも同じ、つまり"ファイルを読み込み"の位置情報しか取得しません。
インデックスを1にすると、0の時のtopに履歴からポップアップされたメニューの縦幅がプラスされた値になります。
ちなみに、上の二つのメニューハンドル値は、ちゃんと違う値でした。
色々条件を変えながらやってるのですが、どうしても path にあたる位置情報取得出来ず、、どの辺が間違ってるのでしょうか?
822デフォルトの名無しさん:2008/02/06(水) 20:55:36
今DXライブラリをインストールとMicrosoft Platform SDKもダウンロードしてライブラリを使うためにhttp://homepage2.nifty.com/natupaji/DxLib/dxuse_vc2005express.html#R3を参照にして設定してたんですが
#include "DxLib.h"

// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{ if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{ return -1 ; // エラーが起きたら直ちに終了
}
DrawPixel( 320 , 240 , 0xffff ) ; // 点を打つ
WaitKey() ; // キー入力待ち
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
で、------ ビルド開始: プロジェクト: test2, 構成: Debug Win32 ------
コンパイルしています...
DrawPixel.cpp リンクしています...
LINK : fatal error LNK1104: ファイル 'DxLib_d.lib' を開くことができません。
ビルドログは "file://c:\Documents and Settings\user\My Documents\Visual Studio 2005\Projects\test2\Debug\BuildLog.htm" に保存されました。
test2 - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========

となって進みません。どうすればいいのでしょうか?
よろしくお願いします。
823デフォルトの名無しさん:2008/02/06(水) 21:13:07
>LINK : fatal error LNK1104: ファイル 'DxLib_d.lib' を開くことができません。
そのライブラリをリンクしてください
824デフォルトの名無しさん:2008/02/07(木) 08:57:44
ソリューションをビルドするとき,複数のプロジェクトを
依存関係に注意しながら並列にビルドすることができますよね?

一つのプロジェクトに含まれる複数のコンパイル単位を
並列にコンパイルさせるということは VC++ の IDE では
無理なんでしょうか?

GNU make だとできるんですが,できれば IDE で
できればいいなと思っています.
825824:2008/02/07(木) 09:07:37
Visual C++ 2008 からは /MP があることを発見したのですが,
これって /Yc や /Gm と競合するんですね.
/Yc は別途プリコンパイルヘッダを作ってやればいいだけなのですが,
/Gm ってはずしちゃうと逆効果なのかなぁ.
/Gm の効果をいまいち実感できていないのではずして /MP 使った方がいいですかね?
826デフォルトの名無しさん:2008/02/07(木) 09:40:24
//あいうえお
class Aiueo{
 定義
};

のように書いておけば IntelliSense で Aiueo のインスタンスを
ポイントしたときに「あいうえお」も含めて表示してくれたり
しませんかね?

C++ ではコード内のコメントでドキュメンテーションするのは
無理なんでしょうか? C# だとその辺の機能があるんですが・・・
827デフォルトの名無しさん:2008/02/07(木) 12:05:59
>>825
使った方がいいですかねじゃなくてさ
使ってみればいいじゃない
828デフォルトの名無しさん:2008/02/07(木) 12:27:42
本人に違いがわからないならどっちでも同じこと
829デフォルトの名無しさん:2008/02/07(木) 13:17:27
カット&ペーストなどによりインデントの違う
コード(タブが 2 と 4)が混在しているとき、
一気に整形し直すことってできないでしょうか?
C#では貼り付けた時に自動的に整形してくれるのですが
C++では無理ですか?
830デフォルトの名無しさん:2008/02/07(木) 13:26:29
C++は知らないけど
VC++のエディタでできたと思う
831デフォルトの名無しさん:2008/02/07(木) 13:41:29
C++の質問はC++スレですればいいよ
832デフォルトの名無しさん:2008/02/07(木) 13:47:20
>829
CでよければK&Rにタブをスペースに変換する演習問題があったよ
833デフォルトの名無しさん:2008/02/07(木) 13:51:19
>>831 Visual C++ の IDE のエディタでの話です
834デフォルトの名無しさん:2008/02/07(木) 15:09:09
IntelliSenseでメンバーの補完をしようと一覧を
出しているとき private や protected のメンバを
一時的に隠したいとかできますか?
どうせアクセスできない基底クラスのメンバがずらずらと・・・
835デフォルトの名無しさん:2008/02/07(木) 17:45:42
そんなことができるって話は聞いたことないです
836デフォルトの名無しさん:2008/02/07(木) 19:40:58
>>829
Alt + F8 かな。
837デフォルトの名無しさん:2008/02/07(木) 23:18:48
>>834
>一時的に隠したいとかできますか?
「一時的に隠したい」と願うことはできます。
838デフォルトの名無しさん:2008/02/08(金) 00:32:02
Visual Studio 2005を使ってるんですが、
F5でデバッグ開始をすると一瞬だけ
「オブジェクト テスト ベンチ」
とタイトルバーに書かれたウィンドウが表示されます。
これを非表示にする設定などありますか?
839デフォルトの名無しさん:2008/02/08(金) 00:42:50
出ましたお得意揚げ足取り
840ああ:2008/02/08(金) 01:14:26
[質問]マウスクリックすると、そのクリックされた座標にビットマップでつくったキャラクターが移動するといったものを作りたいです。
OnTimer(UINT nIDEvent)やOnLButtonUp(UINT nFlags, CPoint point) にいろいろ記述してみましたが、うまくいきません。どなたか教えてください!
841デフォルトの名無しさん:2008/02/08(金) 01:19:56
>>838
Ctrl+F5 or DOS窓からEXEを直接実行
842デフォルトの名無しさん:2008/02/08(金) 01:27:52
揚げ足取りされるのが嫌なら正確な日本語を書けるように頑張りましょう
843デフォルトの名無しさん:2008/02/08(金) 01:31:45
>>840
そのマウスクリックとやらが、どこをクリックするのかによっても変わってきます。
いろいろ記述してみましたとは、何を記述したのでしょうか。
上手く行かないというのは、何が上手くいかないのでしょうか。

その質問で答えが返ってくると本気で思っているのですか?
844デフォルトの名無しさん:2008/02/08(金) 01:39:20
>>842
揚げ足取ってもいいけど答えになってないならレスしなきゃいい
自分はわかってるような言い方して結局説明しないとかね

そんならとっととこのスレから消えればいいじゃん
845デフォルトの名無しさん:2008/02/08(金) 01:41:10
いいからあげんなよはげ。
揚げ足取られて悔しいのはわかるが見苦しいだけだぞ。
846ああ:2008/02/08(金) 01:55:33
>>843
指摘ありがとうございます。
記述した内容を載せようと思ったら
行が多すぎるとのエラーがでたので分けてかきます!

//////////////////////////////////////
x1,y1はBITMAPキャラクターの座標です。
x2,y2はクリックした位置の座標です。
//////////////////////////////////////

void CMiyazaki_anime1View::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
SetTimer(ID1, TIMER_TEXT1, NULL);//テキスト1を処理するタイマーセット

CView::OnLButtonUp(nFlags, point);

}

847ああ:2008/02/08(金) 01:56:37
つづき!



void CMiyazaki_anime1View::OnTimer(UINT nIDEvent)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
if(nIDEvent == ID1){ //IDによって処理を変える
if(x2>x1 && y2>y1){
for(i=10,j=10;i<=x2-x1,j<=y2-y1;i++,j++){
x1+=i;
y1+=j;

}
CRect rc;
GetClientRect(&rc);
bmpID = (bmpID+1) % 3; //表示するBMPを変更する

}

と今は記述しています。
OnTimerのif文に関しては、このときの条件で成功したらさらにif文を追加
しようとおもったのですが、失敗したためこれしか書いていません。
また、これで実行すると、キャラクターがいっきにマウスクリックした場所に
移動してきてしまいます。
キャラクターが歩くようにスムーズに動いてほしいです。
ちなみにクリックする場所はウインドウ内です。
848デフォルトの名無しさん:2008/02/08(金) 09:38:34
http://msdn2.microsoft.com/en-us/library/aa448631.aspx
コード中のコメントを IntelliSense で表示させる機能は
Visual Studio 2005/2008 にはついていないの?
849デフォルトの名無しさん:2008/02/08(金) 09:44:07
TODOのコメントはそこに何か書いたら消せよw
少なくともここにあげるときくらいは。

for文の判定式のカンマは意味があるのか?
850デフォルトの名無しさん:2008/02/08(金) 12:28:42
>>847
MouseButtonDownで、マウスの位置をメンバ変数に保存する。
Timerイベントが発生するたびに保存した位置に少しづつ移動させる。
851デフォルトの名無しさん:2008/02/08(金) 14:33:56
VC++6.0とSDK。新規ダイアログ挿入からダイアログリソースを操作
出来ますが、クラスウィザードを使おうとするとオブジェクトIDが
出ないので何もできないです。解決方法はありますか?
852デフォルトの名無しさん:2008/02/08(金) 17:17:44
何をやりたくてクラスウィザードを使おうとしてるわけ?
クラスウィザードが何かわかってる?
853デフォルトの名無しさん:2008/02/08(金) 18:09:11
やりたいことはデータの受け取り。オブジェクトID(IDD_EDIT1みたいなの。)
が出ないからメンバ変数が設定できずに値のやり取りが出来ない。
エディトボックスから数値の受け取りが出来れば方法は何でも良いけど。
854デフォルトの名無しさん:2008/02/08(金) 18:13:30
>>851
MFCクラスの作成>CDialogで作れる。
855デフォルトの名無しさん:2008/02/08(金) 19:47:02
挿入 、クラスの新規作成、からGenericクラス以外選択できない
のですがMFCクラスの作成はどうすればよいのでしょうか?
856デフォルトの名無しさん:2008/02/08(金) 20:08:10
>>855
MFCプロジェクトで無いなら諦めろ。
Express版は論外。
857821:2008/02/08(金) 20:41:10
他のレスに埋もれてしまったみたいですが、
>>821のような状況が未だに解決出来ず、助言頂けませんでしょうか。。
858デフォルトの名無しさん:2008/02/08(金) 21:28:37
読む気がしないからスルーだろ
859838:2008/02/08(金) 21:36:20
>>841さん
ありがとうございます
Ctrl+F5 or DOS窓ではなくF5の時出さないようにしたいんです。
一瞬しかでないんで、バーをクリックして消そうとしたんですが無理だったんで。
デバッグ中に表示→その他のウィンドウで消そうかと思ったんですが、
デバッグ中だけ「オブジェクト テスト ベンチ」の項目もなくなっていて…
F5の時でないようにするのは無理なんでしょうか?

質問の仕方が悪くてすいません。
860デフォルトの名無しさん:2008/02/08(金) 21:47:22
スルーだな
861デフォルトの名無しさん:2008/02/08(金) 21:52:21
その問題にメリットが感じられないので興味がわかない。
862デフォルトの名無しさん:2008/02/09(土) 00:25:56
>>853
回答ありがとうございます!
「Timerイベントが発生するたびに保存した位置に少しづつ移動させる。」

ときの記述法が分かりません。ただ単に動かすのはx+=10;(xはキャラクターのx座標)
ですよね?
今の場合はどのように記述したらよいのでしょうか?
863デフォルトの名無しさん:2008/02/09(土) 00:44:53
ゲームかなんかか?
キャラクターを移動させるのは基本中の基本だから
それが分からんとなるとどうにもならん。
864デフォルトの名無しさん:2008/02/09(土) 01:29:44
数学の教科書でも引っ張り出してきて
一次関数でも復習したらいいんじゃないかな
865デフォルトの名無しさん:2008/02/09(土) 02:34:22
>>862
それだと一回OnTimerが呼ばれただけで
for内でクリック座標まで足してしまってるでしょ?

int vx;
vx = x2 - x1;
if(vx > 10) vx =10; //10以上進まないようにする
else if(vx < -10) vx = -10;
x1 += vx;

これで良いと思う。
※x1、x2がintであると仮定してる
866デフォルトの名無しさん:2008/02/09(土) 05:50:34
>>865
どうもありがとうございます!865さんの書き込みがある前に自己解決しました。
でも、丁寧に指摘していただきありがとうございました☆
867デフォルトの名無しさん:2008/02/09(土) 08:47:54
visual c++ 2008で猫でもわかるプログラミングのwindows SDK編 イントロダクションにあるプログラムをコンパイルするにはどうしたらいいですか
maicrosoft SDKsにパスを通す設定はしてあります エラーがでてビルドできません
868デフォルトの名無しさん:2008/02/09(土) 09:37:53
>>867
なんでエラーメッセージを書かないんだ?
869デフォルトの名無しさん:2008/02/09(土) 09:45:38
>867
そのプログラム書いたやつに直接質問しろ
なんで糞サイトの尻拭いしなきゃならんのだ
870デフォルトの名無しさん:2008/02/09(土) 09:57:40
>>867
>エラーがでてビルドできません
エラーが出ると言いながら内容を書かずにいる
回答が欲しけりゃ隠蔽すんなよボケ
871デフォルトの名無しさん:2008/02/09(土) 10:19:35
猫でもの最初の方はVC5で相当古いからそのままじゃエラーでるよ
あえて使う理由がなかったらあきらめて他のにした方がいい。
872デフォルトの名無しさん:2008/02/09(土) 10:34:56
一応、VC++ 2005でコンパイルできるサンプルが別ページにある。
http://www.kumei.ne.jp/c_lang/net2005/sample.htm
873867:2008/02/09(土) 10:59:24
>>872
解決しました
874デフォルトの名無しさん:2008/02/10(日) 04:11:03
>>870
いちいち人を見下す発言するな
ネットでしかエラそうにできない奴が
875デフォルトの名無しさん:2008/02/10(日) 07:45:12
>>874 お前もな・・・
876デフォルトの名無しさん:2008/02/10(日) 08:48:13
>>874
>>870の書いている事は正論だが。
見下されるのが嫌なら自力でなんとかしろ
877デフォルトの名無しさん:2008/02/10(日) 11:46:03
>>876
確かに正論だが、最後のボケはいらんだろ
878デフォルトの名無しさん:2008/02/10(日) 12:07:57
hWndってなんて読むの?ふわんど?
879デフォルトの名無しさん:2008/02/10(日) 12:19:40
h: ハンドル
Wnd: ウィンドウ
読み方なんて無いと思うぞ
880デフォルトの名無しさん:2008/02/10(日) 12:30:29
あえて読むならウィンドウハンドル
881デフォルトの名無しさん:2008/02/10(日) 12:47:31
頭の中ではエッチウンドと読んでる
882デフォルトの名無しさん:2008/02/10(日) 12:50:58
hってハンドルかー
だからハンドルインスタンスなのか
ヒンスタンスかと思った
883デフォルトの名無しさん:2008/02/10(日) 12:54:15
>>881
フワンドのほうがよくね?
なんかつっかかるぞそれ
884デフォルトの名無しさん:2008/02/10(日) 12:55:27
h=はげ
wnd=風


つまり、海原はるか師匠のことだったんだよ!
http://blogimg.goo.ne.jp/user_image/41/86/2b9eb588661509edfbbb4b14947138aa.jpg
885デフォルトの名無しさん:2008/02/10(日) 13:31:40
ちいおぼえた
886デフォルトの名無しさん:2008/02/10(日) 18:20:42
えいちうぃんどと読んでる.意味的にこれが一番正しい
887デフォルトの名無しさん:2008/02/10(日) 20:13:27
ウインドウハンドラじゃねえの??
888デフォルトの名無しさん:2008/02/10(日) 21:47:56
2005EEから2008Proに乗り換えたんですが、
いずれもReleaseビルドで実行速度を優先にしても
2008の方がexeのサイズが40kB程大きくなってしまいます
原因として考えられることは何でしょうか
889デフォルトの名無しさん:2008/02/10(日) 22:28:10
ありすぎて困る
890デフォルトの名無しさん:2008/02/10(日) 22:29:12
EE→Proか
出世したな
891デフォルトの名無しさん:2008/02/10(日) 22:46:44
>実行速度を優先にしても
>2008の方がexeのサイズが40kB程大きくなって
なんでサイズ優先にしないの?
892デフォルトの名無しさん:2008/02/10(日) 22:56:34
DLLからスタティックリンクに変わっていたってオチな気がしないでもない。
893デフォルトの名無しさん:2008/02/10(日) 23:07:35
というか、なんでコンパイラバージョン変えてバイナリサイズが同一とか
思えるんだろうか?
894デフォルトの名無しさん:2008/02/10(日) 23:17:58
コンパイルする時間でバイナリが変化しうるのにバージョンが変わったらファイルサイズくらい変わるだろ。
処理時間も当然変わるし、へたすりゃ潜在的なバグが顕在化するかもしれない。
むしろ一切変わらなかったら何を間違ったんだ!?ってなるようなことだと思うが・・・
895デフォルトの名無しさん:2008/02/10(日) 23:47:43
VC++ 2003.NETでビットマップをインポートして追加したんだけど、
なぜか実行してもそのビットマップが表示されません。
インポートじゃなく、新規作成でビットマップを追加すると表示されるのに・・。
なぜでしょう?
896デフォルトの名無しさん:2008/02/11(月) 01:19:40
>>895
インポートしたビットマップと
新規作成したビットマップの色数は同じ? 違うなら同じにしてみたらどうなる?
後、表示ってのは自分で表示してるの? 
それともツールバーとかピクチャとかのコントロールで表示させているの?
897デフォルトの名無しさん:2008/02/11(月) 01:37:01
Visual C++のMFCプロジェクトにおいて、
Unicode ReleaseとUnicode Debugのプロジェクト設定を追加するにはどうしたらいいの?
できれば非UniocdeのReleaseとDebugは残したままで「追加」がうれしいのだが。

過去だれかがうまいことやってたの見たことあるけど、
自分でやってみたらどうやっていいかわからなかった。
898デフォルトの名無しさん:2008/02/11(月) 02:03:15
>>897
事故レス。
ビルド構成で追加してUnicodeと_Unicode入れればおk
簡単ですた
899デフォルトの名無しさん:2008/02/11(月) 02:37:41
>>896
お返事ありがとうございます!
色数は同じです。
sampleBMP.LoadBitmap(IDB_SAMPLE);でリソースを読み込み、

OnDraw関数内で

BITMAP bmp;
sampleBMP.GetBitmap(&bmp);
CDC bmbkDC;
bmbkDC.CreateCompatibleDC(pDC);

CBitmap *old = bmbkDC.SelectObject(&sampleBMP);
TransparentBlt(bkDC, x1-bmp.bmWidth/2, y1-bmp.bmWidth/2,bmp.bmWidth, bmp.bmHeight,bmbkDC, 0, 0, bmp.bmWidth, bmp.bmHeight, RGB(255, 0, 255));

とし、画像を表示させようとしています!
900デフォルトの名無しさん:2008/02/11(月) 04:53:41
戻り値はどこがおかしい?
デバッガ使ってる?
901デフォルトの名無しさん:2008/02/11(月) 15:52:27
ふと立ち寄ったが、役に立つ情報がひとつもないな。
素人に毛が生えた程度の知識の粘着キモオタが、はけ口をもとめて、素人相手に優越感を味わう
いかにも2chらしい愉快なスレだな。。。

ざっと見るだけでも
> 違犯ってなんだよ。違反なら判るが。
> 見苦しいから汚いコード貼らないでくれる?

とか、いびり専門の粘着キモオタ。ゆとり世代はマジ糞だな。

質問者も聞くところがなくて困ってるんだろうが
> すいません、この質問が終わったらよそに行きます。
> 見逃してください。
とかこびてるところ見ると痛々しい。なんでそこまで。。。
ネット上の我慢だと思って一時的にこびて聞いても、ほとんどたいした情報得られないのは
スレ斜め読みするだけでも明らかだから、職場とか友達とかに聞いたほうが絶対いいよ。

2chもスレによっては技術系でも和気あいあいとやってるとこあるんだが、
ここは落ちるところまで落ちてる。
役に立たないくせにスレが排他的に立っていること自体が害悪。
せめてIDでも表示されるようになれば、少しは浄化されるんだろうな。

そう思わないか?
902デフォルトの名無しさん:2008/02/11(月) 15:55:03
まぁ
>素人に毛が生えた程度の知識の粘着キモオタが、はけ口をもとめて、素人相手に優越感を味わう

まさにこういうクズしかいないから仕方ない
903デフォルトの名無しさん:2008/02/11(月) 15:58:57
そういえば、コーディング関連のMLとかいろいろあったよ。
俺も若い頃はそういうとこ入って、聞いたり教えたりしてた。
そっちのほうがいいんじゃないか。

http://www2.ocn.ne.jp/~links4pg/sub89.htm
こんなのとか。
904デフォルトの名無しさん:2008/02/11(月) 16:34:01
ID表示くらいで浄化されるわけないと思うがな。
せいぜいNGIDができて便利だなというくらい。
905デフォルトの名無しさん:2008/02/11(月) 17:41:25
>901
お前が親切に対応してやれよ
あれは自分が興味ある質問には答えてるよ
906デフォルトの名無しさん:2008/02/11(月) 18:14:00
>>901
まあ落ち着けよ
ふと立ち寄ったにしてはやけに饒舌だなw
907デフォルトの名無しさん:2008/02/11(月) 19:51:48
こんな場面になんだけど、
VC++2008では、VC++2005にあった
woutのlocaleのバグって直ってる?
持っている人教えて。
内容は↓
ttp://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=250724&SiteID=7
908デフォルトの名無しさん:2008/02/11(月) 20:04:27
入門書読んでたらオーバーフローって単語が出てきたんだけど
これってもしかしてすごいやばいんじゃ・・・
技術があればいくらでもメモリを書き換えてすき放題できちゃうような気がするんだけど
本には気をつけろとしか書いてないんだけど、もしかしてVC++側でチェックしてくれてないの?
っていうか一回ミスしたらパソコン動かなくなるんじゃ・・・VC++6.0だけど大丈夫だよね?
909デフォルトの名無しさん:2008/02/11(月) 20:06:32
それはVC++の問題じゃなく言語の問題だからねぇ。
910デフォルトの名無しさん:2008/02/11(月) 20:22:28
>>907
STLは正直詳しくないけど、最後から二つ目のレスのコードが動けばOKって事で良い?
なら、imbueの前の行にclear挟む必要があったけど、きちんと日本語が出力されてたよ。
ちなみにVC++2008EEで試した。

個人的には、ページ単位のホイールスクロールで即落ちをさっさと直せと問い詰めたい。
逆方向に一行とか生易しいレベルじゃねえよ、これは。
911デフォルトの名無しさん:2008/02/11(月) 20:26:34
>>908
悪意なく起こってしまった分に関しては、
OSにプログラムが強制終了させられるだけ。
メモリの中ならいくらいじったってプロセス終了、
最悪でもOSの再起動で問題なし。
912207:2008/02/11(月) 21:08:45
>>910
ありがと。
913デフォルトの名無しさん:2008/02/11(月) 21:23:42
woutなんて誰も使わないからバグっててもどうでもいい
914デフォルトの名無しさん:2008/02/11(月) 23:30:38
vistaでVC++2008をインストールして下のプログラムを書きましたが、
'#include "stdafx.h"' をソースに追加しましたか?  というエラー
がでます。
どうすればいいでしょうか?

#include <stdio.h>

int main(void)
{
printf("hello");

return 0;
}





915デフォルトの名無しさん:2008/02/11(月) 23:54:09
#include "stdafx.h"をソースに追加してください
916デフォルトの名無しさん:2008/02/12(火) 00:00:25
プリコンパイルヘッダを使わない設定にしてください
917デフォルトの名無しさん:2008/02/12(火) 23:25:20
>>916さん、解決しました、ありがとうございます
918デフォルトの名無しさん:2008/02/12(火) 23:25:36
VC++2005でプログラムを作ってネットで無料公開したいのですが、新規プロジェクトの作成で困ってます。
CLRのwindowsフォームアプリケーションとWin32のWindowsアプリケーションは、
どう違うのでしょうか?どのへんに注意して選べばいいか教えてください。
たとえば、GUIの作りやすさとか人のマシンで動かす時に必要なランタイムとか機能の制約とか。。。

919デフォルトの名無しさん:2008/02/12(火) 23:30:37
VC++ 2005のCLRアプリケーションは実行に.NET Framework 2.0が必要。

Win32アプリケーションは、大多数のWindowsアプリケーションと同じ
普通のEXEファイルが出来上がる。
といってもVC++ 2005ランタイムが必要だけど、これは.NET Frameworkに比べれば小さい。

GUIの作りやすさはCLRに軍配が上がるけど、それだったらC#使えよと思う。

920デフォルトの名無しさん:2008/02/12(火) 23:43:24
VC++ 2005ランタイムってなんぞ?
921918:2008/02/12(火) 23:49:04
>>919さん
数日調べててわからなかったので、ものすごく助かりました。
どうもありがとうございました!
コンピュータ音痴でもセッティングしやすいほうを選ぼうと思います。
Win32アプリケーションのほうは、GUIを作るにはリソースエディタが必要なんですよね!?
次はその辺を勉強してみます。
922デフォルトの名無しさん:2008/02/13(水) 00:02:11
別に自分で手書きで.rcファイルとIDつくってもいいぞ
どうせテキストファイルだ
923918:2008/02/13(水) 00:10:21
>>922
手書きする技量が。。。
テキストなんて、、、ないですかね。
924デフォルトの名無しさん:2008/02/13(水) 00:38:43
>>923
>>1の猫でものWindows SDKの部分をまずは読んでみたら?
925デフォルトの名無しさん:2008/02/13(水) 00:44:04
>>923
リソースエディタがないってことはExpressEditionってことかな?
フリーのリソースエディタならXN Resource Editorというのがあるよ。
http://www.wilsonc.demon.co.uk/d10resourceeditor.htm
他にもあったけど失念。
926918:2008/02/13(水) 02:00:45
>>924さん そこがリソースに関係した記事なんですね。勉強になります。ありがとうございます。
>>925さん Expressです;;XNResourceEditor試してみます。ありがとうございました。

927デフォルトの名無しさん:2008/02/13(水) 02:55:35
プログラムで図形描きたいのですが手順が詳しく乗っているサイトありませんか?
どのプロジェクト作ったらいいかも分からない状況です
928デフォルトの名無しさん:2008/02/13(水) 03:24:13
諦めましょう
929デフォルトの名無しさん:2008/02/13(水) 03:29:07
>>927
Visual C++ 200X 画像プログラムやらなんやらと書いてある本でも買え
何も知らないような奴がいきなりネットだけで知識を得ようとするな
930デフォルトの名無しさん:2008/02/13(水) 10:20:55
>923
リソースエディタは楽できるだけで
手書きする技量がないと結局何もできません。
最初からあきらめた方がいい。
931デフォルトの名無しさん:2008/02/13(水) 10:40:36
>>930
>手書きする技量がないと結局何もできません。
そうでもないよ
連番IDに揃え直したりする事が必要にならなければエディタで事足りる
932デフォルトの名無しさん:2008/02/13(水) 10:57:28
手書きが無理なぐらい馬鹿ならあきらめた方がいいということ
手書きしろとは言ってない
933デフォルトの名無しさん:2008/02/13(水) 11:06:04
今時普通にあるスプリッタつかって3つのViewを配置したりする
プログラムを作ろうとすると
もうリソースエディタではどうしようもないだろ
設定とかのダイアログにしか使えない気がするんだが
934デフォルトの名無しさん:2008/02/13(水) 11:13:22
複雑なことをやろうとする前提で、「何もできない」っていわれてもな
935デフォルトの名無しさん:2008/02/13(水) 11:16:56
つか、「手書き」の意味が食い違ってないか?
リソースファイルの手書きとAPI操作による手書きだと意味が違うぞ。
元々言っているのはリソースファイルの手書きの方だ。
936デフォルトの名無しさん:2008/02/13(水) 11:21:52
リソースエディタの類は開発効率を高めるものあって
馬鹿にでも使えるためにあるんじゃないよ
馬鹿にでも使えるものがほしいならVC以外にした方がいい
937デフォルトの名無しさん:2008/02/13(水) 11:29:27
馬鹿馬鹿言ってる方が馬鹿だ
938デフォルトの名無しさん:2008/02/13(水) 11:30:02
VC++に挫折するやつが多いほど俺の価値が上がるってもんだ
939デフォルトの名無しさん:2008/02/13(水) 11:34:10
Unix系のライブラリなんかはバリバリ作れるセンパイがいたが
VCはてんでわからない人だったな。
後輩の俺が世話を焼いてやったもんだ。
940デフォルトの名無しさん:2008/02/13(水) 15:39:05
Cの関数を使うと古い形式として宣言されましたという警告が出ますが、_s付きの関数はLinux上でもコンパイルできますか?
941デフォルトの名無しさん:2008/02/13(水) 15:52:48
コンパイラの対応状況によるんでないの?知らんけど。
942デフォルトの名無しさん:2008/02/13(水) 15:55:33
少なくともansi Cにはprintf_sなどない
943デフォルトの名無しさん:2008/02/13(水) 15:55:55
>>940
M$独自の実装だからLinuxでは無理と思われ
使い方さえ間違っていなければCの関数の
VCが吐く古い形式警告は気にしなくても良いじゃん
944デフォルトの名無しさん:2008/02/13(水) 16:25:01
Linuxでいうところのusleep(microsecond)
を使いたいのですが、どうすればいいですか。
945デフォルトの名無しさん:2008/02/13(水) 16:35:26
MessageBoxでダイアログを作ると
ドラッグで移動できるけど
CreateDialogで作ると移動できない。
コードはほとんど同じなのに何故
なんでしょう?
946デフォルトの名無しさん:2008/02/13(水) 16:40:56
移動できない、とは?
移動以外は動作してるのか?

MessageBoxはモーダル(== DialogBox())でメッセージループ自前だが、
CreateDialog()はモードレスで、メインのメッセージループを使う。
その辺なんじゃないの?
947デフォルトの名無しさん:2008/02/13(水) 18:30:52
>>946 両方自前だよ。違うところはCreateDialogのメッセージループ
がbool形でdialogboxがLRESUL型ってところ。
948デフォルトの名無しさん:2008/02/13(水) 18:41:48
CreateDialog 移動できないの検索結果 4 件中 1 - 4 件目 (0.09 秒)

普通では起きない現象みたいだから945さん以外の人は気にする必要ないかも
949デフォルトの名無しさん:2008/02/13(水) 18:46:15
>>947
えーと、WinMainでMessageBox呼ぶと
メッセージループ書かなくても動作するけど
CreateDialogはそうはいかないよね?
これをどう説明する?
950デフォルトの名無しさん:2008/02/13(水) 19:03:40
>>948 サンクス。
>>946 = >949?MessageBoxがモーダル
だけど?知ってる人でこういうこと聞く
人居たけど大学中退?
951デフォルトの名無しさん:2008/02/13(水) 19:14:16
>>947
それウィンドウプロシージャ・ダイアログプロシージャのことでは?
メッセージループといったら、GetMessageなんかのほうだろ。
952デフォルトの名無しさん:2008/02/13(水) 19:24:37
単純にウィンドウスタイルの問題じゃないのか?
953デフォルトの名無しさん:2008/02/13(水) 19:35:51
たぶん常識では考えられないことやってるだけ
954デフォルトの名無しさん:2008/02/13(水) 19:49:26
コードも示さず意味不明な質問するような馬鹿の分際で
答えてやってる相手に暴言はいてるようではな。
955デフォルトの名無しさん:2008/02/13(水) 22:25:49
違うAPI使ってんだから、そりゃ違う結果になってもおかしくないだろと思うんだが・・・
何か俺間違ってる?
956デフォルトの名無しさん:2008/02/13(水) 23:01:54
950だけど、特殊な状態なようなのでこちらに問題があったようです。
>> 951 これから調べます。
>>952 詳しく。
>>955 頭良いね。
957デフォルトの名無しさん:2008/02/13(水) 23:10:06
Visual C++ってlameのビルドとか出来るんですか?
958デフォルトの名無しさん:2008/02/14(木) 01:23:31
知らんけど試しにlameのソース持ってきたらVC++6のプロジェクファイルついてるね
2005でビルドしたら物はできたけど
959デフォルトの名無しさん:2008/02/14(木) 02:09:05
rarewaresからDLL落とせば?
960デフォルトの名無しさん:2008/02/14(木) 02:40:11
>>954
どうでもいいことでキャンキャンほえるな
おまえのちんけなプライドなどに興味ない
961デフォルトの名無しさん:2008/02/14(木) 02:43:39
>>930
おれは10年以上VC使ってるが、
rcファイルいじる必要があった場面なぞほとんどないがな。
例外はsyslog関係処理のときくらい。
おまえ、ツールを効率よく活用するということを覚えたほうがいいぞ。
962デフォルトの名無しさん:2008/02/14(木) 02:43:55
と、ちんげ以下の微生物が申しております
963デフォルトの名無しさん:2008/02/14(木) 02:44:54
ワロタ

>>961-962
タイミング悪すぎw
964デフォルトの名無しさん:2008/02/14(木) 02:51:02
>>929
図形かくくらい、ネットで十分だろ。というかネットのほうが便利。
いまどき本で勉強しようって感覚、おいおいって思うが。。
965デフォルトの名無しさん:2008/02/14(木) 02:51:52
>>929
画像じゃないぞ、図形だぞ。
966デフォルトの名無しさん:2008/02/14(木) 02:59:53
>>956
ウィンドウスタイルは関係ないだろうな、常考。
つか956はだいたいわかってんだろ、946・951あたりが正解じゃねーの。
んで、それが知りたかったことなのかい?

たとえばこの辺の内容とも同じ。
http://oshiete1.goo.ne.jp/qa3672380.html


IDないと誰が誰なのかわからなくて、めんどくせーな。
967デフォルトの名無しさん:2008/02/14(木) 03:00:34
>>962
>>963
こういうの、いらねーから。
968デフォルトの名無しさん:2008/02/14(木) 03:00:46
画像というのは図形で出来ているんだぜ?
969デフォルトの名無しさん:2008/02/14(木) 03:01:50
>>933
これがいわゆる、素人に毛が生えた素人というやつだな。
970デフォルトの名無しさん:2008/02/14(木) 03:02:18
>>964
君が紹介してやれよ
971デフォルトの名無しさん:2008/02/14(木) 03:03:52
>>966
お前以外はみんな俺
972デフォルトの名無しさん:2008/02/14(木) 03:19:21
>>927

GDI+を使うのがやはり便利なのだが、
初心者向けの文献はちょっと見当たらないな。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vboriGDIFundamentals.asp
最近VC++のページがググッてもあまり出てこないんだよね。

MFC上でGDI+使うんであれば、
http://www.codeproject.com/KB/GDI-plus/gdi__and_mfc.aspx

使ってるのがVC6であれば、MSDNに
MFCのチュートリアル(10ステップくらいだったかな)とサンプルがあった記憶がある。
そこに図形描画の解説もあった。
973デフォルトの名無しさん:2008/02/14(木) 03:21:36
>>968
もういいから黙ってろ
974デフォルトの名無しさん:2008/02/14(木) 03:32:42
>>918
あくまでおれの基準だけど、

本格的でごりごりしたGUI構成とか、COMとかOLEとかやりたいときは、
アンマネージドで。つまり非CLRで。んで言語はVC++かな。しかもVC6を使う。
そのあたりは個人的にノウハウがたまっているからというのもある。

お手軽なアプリ作るならマネージドで行く。つまりCLR。んで言語はVB.Netかな。

たとえばDB関連など最新テクノロジー使うときはマネージドで行く。つまりCLR。
言語はVB.Netでいくけど、C#のときもある。


VC+2005でお手軽アプリを作りたいという条件自体が、おれの基準と違うんだな。
>>919
と同意見ということだね。
975デフォルトの名無しさん:2008/02/14(木) 03:36:51
>>974
ちょっと言い忘れた。

VC6のころは、C++関連の情報が主流だったけど、
2003とか2005とか2008とかの時代になると、C++関連の情報って激減している気がするんだよね。

ググッて情報が得られやすい環境を選択するというのが、けっこう生命線的に大事だと思う。
仕事だと開発環境選べないからもちろんそれでやるしかないわけだが、単なる遊びなんでしょ?
976デフォルトの名無しさん:2008/02/14(木) 04:16:03
逆切れする質問者が多いなw
同一人物かね
977デフォルトの名無しさん:2008/02/14(木) 04:28:05
>>973
で、結局君は具体的に何の図形を描きたいの?
○?△?□?
2D空間図形?それとも3D空間図形?

GDIで描画したいの?DirectXを使いたいの?
結局のところ何を教えて欲しいわけ?
978デフォルトの名無しさん:2008/02/14(木) 08:43:11
>>958
同じく2005でやろうと思ったんですが
'sprintf' の宣言を確認してください
「現在のコード ページ (932) で表示できない文字を含んでいます」
「fatal error C1083: include ファイルを開けません」

等色々要求されます
一応仕上がって出来上がるんですが…
979デフォルトの名無しさん:2008/02/14(木) 10:31:01
>>978
sprintf 関係はほかでも見ないか?例の sprinf_s のやつだよ。
VC自体あんまり使ったこと無いのか。
980デフォルトの名無しさん:2008/02/14(木) 11:44:16
事故解決しましたb
有難うございました
981デフォルトの名無しさん:2008/02/14(木) 11:58:38
>>976
質問者じゃないっつーの。
KY
982デフォルトの名無しさん:2008/02/14(木) 11:59:42
>>977
同じく質問者じゃないっつうの
983デフォルトの名無しさん:2008/02/14(木) 13:12:26
>>976
下みたいな回答が多いのに逆切れも糞もない。

>927 : デフォルトの名無しさん:2008/02/13(水) 02:55:35
>プログラムで図形描きたいのですが手順が詳しく乗っているサイトありませんか?
>どのプロジェクト作ったらいいかも分からない状況です

>929 :デフォルトの名無しさん:2008/02/13(水) 03:29:07
>>>927
>Visual C++ 200X 画像プログラムやらなんやらと書いてある本でも買え
>何も知らないような奴がいきなりネットだけで知識を得ようとするな
984デフォルトの名無しさん:2008/02/14(木) 13:30:43
>>981-982
まあおちつけよ
985デフォルトの名無しさん:2008/02/14(木) 13:32:00
>>983
お前もな
986デフォルトの名無しさん:2008/02/14(木) 13:43:47
プログラムでマスを描きたいのですが手順が詳しく乗っているサイトありませんか?
どのプロジェクト作ったらいいかも分からない状況です
987デフォルトの名無しさん:2008/02/14(木) 13:47:04
ます?
forでライン引いたら
988デフォルトの名無しさん:2008/02/14(木) 13:52:13
プロジェクトの作成から図形の描き方までの手順が一通り詳しく乗ってるような
ピンポイントなサイトがあると本気で思ってるんだろうか

ネットを使うなら情報をかき集めて統合する事を覚えような
989デフォルトの名無しさん:2008/02/14(木) 18:30:42
リバーシとかゲームの作り方解説してるサイトならいっぱいある
990デフォルトの名無しさん:2008/02/14(木) 18:53:29
ゲームの作り方(笑)
991デフォルトの名無しさん:2008/02/14(木) 19:24:10
ゲームの作り方(泣)
992デフォルトの名無しさん:2008/02/14(木) 21:36:46
少し分かりにくいかも知れませんが固定1次元配列を
動的に2次元配列にしたいのですが。
例えば
data[0]〜data[4]
data[0]〜data[4]
data[0]〜data[4]
data[0]〜data[4]

動的

という感じにしたいのです。
悪あがきで
CArray<int[4],int[4]> arraydata;
とかやってもダメでした。

くぐってみると両方動的なものはありました。
typedef CArray<int, int> CIntArray;
CArray<CIntArray, CIntArray&> ar;

993デフォルトの名無しさん:2008/02/14(木) 21:38:13
CArray<int,int> arraydata[4];
とすれば役割は果たせますが、
これだと
data[0]
data[0]
data[0]
data[0]

動的

data[1]
data[1]
data[1]
data[1]

動的

data[2]
data[2]
data[2]
data[2]

動的

みたいな感じになって最初のパターンより
フラグメンテーションが大きくなりそうな気がして
恐いのです。
よい方法があったら教えてください。

994デフォルトの名無しさん:2008/02/14(木) 21:51:13
クラスか構造体にすればできるだろうけどスレ違い。
995デフォルトの名無しさん:2008/02/14(木) 21:54:25
>>993
ポインタのポインタではだめなの?
996デフォルトの名無しさん:2008/02/14(木) 22:09:05
>>989
詳しく
997デフォルトの名無しさん:2008/02/15(金) 00:22:06
VisualStudio 2005 の VC++ についてお尋ねします。
共有ライブラリなどを全て静的にリンクさせて DLL などの外部ファイルに依存しない実行ファイルを作るにはどのような設定にすれば良いのでしょうか?
998デフォルトの名無しさん:2008/02/15(金) 00:47:45
>>988
くだらないことぐだぐだ言ってる暇あんなら、本でも紹介すればいいじゃねーか。
おれはGDI+は紹介した。VC6のTutorialも紹介した。
くだらねーんだよ。お前は何を出したんだ。
999デフォルトの名無しさん:2008/02/15(金) 01:24:41
>>997
CRTの静的ライブラリ版を使うにはコンパイルオプション/MT。
プロジェクトのプロパティ→構成→C/C++→コード生成→ランタイムライブラリ
リリースのほうを変更しないと意味ないからな。

ほかのライブラリはそれぞれマニュアルなどを見ろ。DLLしかなければご愁傷さま。
1000デフォルトの名無しさん:2008/02/15(金) 01:25:52
次スレないの?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。