07/11/30 22:40:42
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
URLリンク(www.hyuki.com)
URLリンク(myu.daa.jp)
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5。
2:誰も立てないから・・
07/11/30 22:41:34
Part27 スレリンク(tech板)
Part26 スレリンク(tech板)
Part25 スレリンク(tech板)
Part24 スレリンク(tech板)
Part23 スレリンク(tech板)
Part22 スレリンク(tech板)
Part21 スレリンク(tech板)
Part20 スレリンク(tech板)
Part19 スレリンク(tech板)
Part18 スレリンク(tech板)
Part17 スレリンク(tech板)
Part16 スレリンク(tech板)
Part15 スレリンク(tech板)
Part14 スレリンク(tech板)
Part13 スレリンク(tech板)
Part12 スレリンク(tech板)
Part11 スレリンク(tech板)
Part10 スレリンク(tech板) ※
Part09 スレリンク(tech板) ※
Part08 URLリンク(pc5.2ch.net)
Part07 URLリンク(pc5.2ch.net)
Part06 URLリンク(pc5.2ch.net)
Part05 URLリンク(pc5.2ch.net)
Part04 URLリンク(pc5.2ch.net)
Part03 URLリンク(pc5.2ch.net)
Part02 URLリンク(pc3.2ch.net)
Part01 URLリンク(pc3.2ch.net)
3:誰も立てないから・・
07/11/30 22:43:07
【関連スレ】
■MFC相談室 mfc18d.dll■
スレリンク(tech板)l50
Win32API質問箱 Build57
スレリンク(tech板)l50
【C++】 DirectX初心者質問スレ Part14 【C】
スレリンク(tech板)l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 131
スレリンク(tech板)l50
C++相談室 part56
スレリンク(tech板)l50
C/C++の宿題を片付けます 95代目
スレリンク(tech板)l50
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
スレリンク(tech板)l50
【関連サイト】
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
MSDN ライブラリ ※変更された
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com) (2005のことはこっち)
Platform SDK Update ※変更された
URLリンク(www.microsoft.com)
URLリンク(www.google.co.jp)
4:誰も立てないから・・
07/11/30 22:44:07
【このスレの前身 VisualC++相談室 過去スレ】
part 1 URLリンク(piza.2ch.net)
part 2 URLリンク(piza.2ch.net)
part 3 URLリンク(piza2.2ch.net)
part 4 URLリンク(pc.2ch.net)
part 5 URLリンク(pc.2ch.net)
part 6 URLリンク(pc.2ch.net)
part 7 URLリンク(pc.2ch.net)
part 8 URLリンク(pc.2ch.net)
part 9 URLリンク(pc5.2ch.net)
テンプレ終わり。
5:デフォルトの名無しさん
07/11/30 22:53:34
Windows フォームアプリケーションのソース入りのプロジェクトフォルダを別の環境の
Visual Studio 2005 で呼び込むと、
「
ソース管理
! プロジェクト○○.vcprojはソース管理下に存在しているようですが、関連付けされた
ソース管理プラグインがこのコンピュータにインストールされていません。
このプロジェクトのソース管理は無効になります。
□次回からこのダイアログ ボックスを表示しない(D)
[ OK ] [ ヘルプ(H) ]
」
と出て、その後
「
ソース管理 - データベースにアクセスできません
●一時的に管理なしで作業する(T)
○ソース管理の関連付けのバインドを完全に削除する(P)
[ OK ] [ ヘルプ(H) ]
」
と出ます。これはどういう原因で起こっているのでしょう?
6:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/30 22:56:15
Visual C++ 2005 Express Editionを今ダウンロードして
今日から勉強しようとしたけど、コンバイルの仕方がよくわからない orz
親切な人教えて下さい
8:デフォルトの名無しさん
07/11/30 23:01:49
コンバイルの仕方は俺にもワカラン。
9:デフォルトの名無しさん
07/11/30 23:05:12
エディタっていうの使ってコード書いて コンパイラーとして
これをダウンロードしたのに・・・
10:デフォルトの名無しさん
07/11/30 23:12:30
まず、
メニューの新規作成->プロジェクト
VisualC++のWin32コンソール のプロジェクトを作る
プロジェクト名は、testでもaaaでもてきとうに。
ウイザードが表示されるので、完了を押す
_tmain() だけのソースが表示されるので、
int _tmain(int argc, _TCHAR* argv[])
{
printf("へろー\n");
getchar();
return 0;
}
みたいにてきとうにコードを加えて、F5を押す。
ビルドするか訊いてくるので、OKでコンソール画面が開いて、文字が表示される。
11:デフォルトの名無しさん
07/12/01 00:29:19
ありがとうございます。
へろーって文字が出ました、感激です
プロジェクトの中にC言語入れても、コンパイル可能ですか
12:デフォルトの名無しさん
07/12/01 13:20:19
誰か・・・>>5-6をお願いしますm(__)m
13:デフォルトの名無しさん
07/12/01 13:26:55
>>12
会社で書いてるソースを自宅に持ち帰ったんだろ
別にどうということもないが、バックアップとっておいて
何でも試してみる気がないとこの業界やってけんぞ
14:デフォルトの名無しさん
07/12/01 16:18:18
__exceptとcatchの違いがよくわかりません教えてください
15:デフォルトの名無しさん
07/12/01 16:33:12
すいません。
VisualStudo .NETでダイアログベースのC++のアプリケーションを
作ろうとしているのですがしょっぱなから躓きました。
ダイアログエディタ上にピクセルサイズ800*600のピクチャーボックスを
作りたかったのですが、VBやらVC6.0やらであったような、X,Y,Width,Heightといった
コントロールプロパティがどこにも見当たりません。
ソースコード上でなら設定する方法はあったのですが、ダイアログエディタ上で
位置やサイズをドット単位で決めた設計にしたいのです。
これらのプロパティを表示させる手段は無いのでしょうか?
また、ひょっとしてこの.NETはとてつもない地雷なんでしょうか?
(ガイドの設定ダイアログにあるヘルプボタンを押すと、表示されたヘルプと
そのダイアログの内容が全然違ってたりします。
欠陥品だとしたら酷すぎます)
16:デフォルトの名無しさん
07/12/01 16:34:15
すいません情報書き忘れました。VisualStudo .NET2003です。
17:デフォルトの名無しさん
07/12/01 16:41:15
ソースコード上で設計してください
18:デフォルトの名無しさん
07/12/01 16:51:11
Visual C++ 2005 Express Edition を使っていますが、C言語の勉強で
コンパイラーとして使いたいのですが、C言語のプログラムをそのまま
打ち込んで、コンバイルすれば使えるかな?
getchart()という関数聞いたことないので、やはり使い方違うかなと思って
19:デフォルトの名無しさん
07/12/01 16:52:56
>>15
プロパティウィンドウ?
20:デフォルトの名無しさん
07/12/01 16:53:23
>>17
返答ありがとうございます。
しかしコントロールの位置プロパティが無い(ダイアログエディタで表示されない)のは
2003だけなんでしょうか?
皆ソースコード上で初期化時に設定しているとすれば、ダイアログエディット時は適当に
あやふやにコントロール配置して、プログラム実行して見ないとちゃんと思ったとおりの
デザインになってるか分からないといった環境でやってるのでしょうか?
21:デフォルトの名無しさん
07/12/01 17:03:01
6.0まではゆとり用です
22:デフォルトの名無しさん
07/12/01 17:03:08
VBは馬鹿でも使えるようになってるけど
VCは馬鹿には使えないようになってるということだろうな
23:デフォルトの名無しさん
07/12/01 17:07:27
きっちり数字で合わせたかったらコードで指定するのが普通と思うけど
今やってみたらダイアログエディタでも微調整は可能だな
24:デフォルトの名無しさん
07/12/01 17:14:03
プロではないのですが、
プロは紙や設計書上でコントロールの位置を決めたりしてるんでしょうか?
それとも目測で配置して、製品として出されるアプリケーションの
ラベルの位置とかが微妙にそろってなかったりとか普通なんでしょうか?
25:14
07/12/01 17:17:18
無視すんなよ
26:デフォルトの名無しさん
07/12/01 17:21:38
>>14
__exceptはWindowsの持っている構造化例外処理 (SEH)用
catchはC++例外用。
27:デフォルトの名無しさん
07/12/01 17:29:12
>24
ダイアログエディタは見た目そのまんまだろ
ちゃんと見た目そろえて作れば実行した時にも見た目そろってるはず。
28:デフォルトの名無しさん
07/12/01 17:34:31
>24
微妙にそろってないのはお前が馬鹿なだけ
29:デフォルトの名無しさん
07/12/01 17:41:11
質問しただけで喧嘩を売られるとは思いもよりませんでしたが
答えて頂いた方々ありがとうございました。
>馬鹿とか言ってる奴
調子こいてんじゃねーぞ。ぶちまわすぞコラ。
その威勢だけはいい口ふさぎこんだろか。
30:デフォルトの名無しさん
07/12/01 17:46:55
こんなこともわからないなんて
むいてないと思うよ
31:デフォルトの名無しさん
07/12/01 17:50:26
メモリが "written" になることはできませんでした
のエラーを再現したいのですが
どのようにすれば出るのでしょうかreadエラーは再現できました
32:デフォルトの名無しさん
07/12/01 18:12:38
無いアドレスを指定すればいいじゃ?
33:デフォルトの名無しさん
07/12/01 18:24:29
>>32
できました
ありがとうございます
34:デフォルトの名無しさん
07/12/01 18:27:39
窓版segVと考えればいいのかな?
35:デフォルトの名無しさん
07/12/01 23:38:43
ゲットチャートってどういう意味?
36:デフォルトの名無しさん
07/12/01 23:51:11
どうも、失礼しにきました。
今、VS2005を使ってC++やVC++の勉強をしています。
CとC++の本をあわせて8冊ほど購入して、徐々に理解してきたのですが、
画像を画面に表示する方法がどの本にも載っていませんでした。
検索した結果、どうやら画像の形式や保存されているディレクトリ?を
指定して表示するような命令はないようなのですが、
ではCやC++で、どうやったら画像を表示させられるのでしょうか?
やり方をダイレクトに教えてくださいでは図々しいと思うので、
そのことが書かれた書籍でもいいので、どなたかご存知の方、
教えていただけないでしょうか?
37:デフォルトの名無しさん
07/12/02 00:13:47
>>36
まずはwindowsAPIでググれ 基本的にCでwindowsを操るには難しい
HSPとかデルファイとかなら簡単にできる Cには標準で画像を操る命令は付いていない
マイクロソフトの拡張命令が必要
38:デフォルトの名無しさん
07/12/02 00:24:29
>>36
これ落とすと良いよ
URLリンク(www.microsoft.com)
39:デフォルトの名無しさん
07/12/02 00:49:31
>>37さん、ググってみました。
なるほど、windowsAPIの中に画像を表示する関数があるのですね。
いやーこういう便利なものがあるのですね。
ありがとうございます。早速書籍やネットをあさってみます。
>>38さん、この更新版に画像を表示するような機能が含まれている
ということでしょうか?取り合えず確認してみます。
教えて下さってありがとうございます。
しかし、こんな素早く助かる返事が頂けるとは本当に感謝感激です。
2ちゃんでの質問はドキドキしますから、中々聞けませんでしたが、
もっと早く聞いておけばよかったと思っています。
いや本当に助かりました。お二方ありがとうございました。
40:デフォルトの名無しさん
07/12/02 00:51:34
>>39
38はWindows API(とその他諸々)のリファレンス。
単なる膨大なヘルプファイルの塊。
41:デフォルトの名無しさん
07/12/02 01:13:47
>>40さん、なるほど、Windows APIなどのヘルプでしたか。
それは自分にとって役に立ちます。
わざわざ教えていただきありがとうございます。
いやーこんなにいい所だったとは。助かりました。
42:デフォルトの名無しさん
07/12/02 18:31:28
VC++6.0で特定のファイルだけコンパイルオプションを変更したいのですがどのようにすれば出来るでしょうか。
具体的には特定のファイルだけ/GZオプションを外したいのですが。
プロジェクトの設定で目的のファイルを選択しC/C++のタブを選択すると出来そうですが
/GZオプションを外す設定は無さげな感じ。
43:デフォルトの名無しさん
07/12/02 18:54:40
特定のファイルだけコンパイルすればいい
44:デフォルトの名無しさん
07/12/02 19:21:43
VC++でダイアログベースのアプリケーションを作ってます。
自動作成されたアプリケーションクラスとダイアログクラスがあり、
ダイアログクラスのOnpaintの中でアプリケーションクラスのメンバ変数を
呼ぼうとするのですが(theApp.m_a = 1;のような感じで)
ビルドするとこういうメッセージが表示されます。
「error C2248:'~~(自分が作ろうとしてるアプリクラス)::m_a':
protectedメンバ(クラス'~~'で宣言されている)にアクセスできません。
何度見てもm_aはPublicになっています。
どうすればよいのでしょうか?
45:デフォルトの名無しさん
07/12/02 19:31:48
Visual C++ 2005 Express Editionを使ってC言語をコンパイルするには どうすればよろしいでしょうか?
46:デフォルトの名無しさん
07/12/02 19:49:34
>>45
F5キーを押す
47:デフォルトの名無しさん
07/12/02 19:53:40
たとえば expat などのライブラリですでに Windows 向けに
ビルドされているものをダウンロードすると、特に
どのバージョンの Visual C++ で使えるとは指定されておらず、
vc7, vc8, vc9 のどれからでもリンクできるようなのですが、
自分が以前 vc7 でビルドしたスタティックライブラリを
vc8 や vc9 で作成中のアプリケーションからビルドしようとすると
リンカに怒られます。
この違いはどこから来ているのでしょうか?
C++における型を含んだ名前の変換の仕方の違いとかでしょうか?
48:デフォルトの名無しさん
07/12/02 21:42:03
お前がビルドしたのは、VC++7のライブラリをリンクする指定が組み込まれていて、
ほかの誰かがビルドしたのはその指定が組み込まれていないということではないだろうか。
/Zl使ってみろ。
49:デフォルトの名無しさん
07/12/02 21:46:38
先生!C++的にはVC2008って何が変わったのでしょうか?
前回は標準準拠度が飛躍的にあがってたりしましたが
50:デフォルトの名無しさん
07/12/02 22:16:00
vc6.0++使用してます。リンクを指定するのはどのように
すればいいのでしょうか?
51:デフォルトの名無しさん
07/12/02 22:19:11
>47
DLLをリンクするためのライブラリというオチでは?
52:デフォルトの名無しさん
07/12/02 23:17:46
>>49
IntelliSense が賢くなった。
53:デフォルトの名無しさん
07/12/02 23:34:17
2003toolkid以降のコンパイラでドスで使えるやつありますか
54:デフォルトの名無しさん
07/12/02 23:47:33
ない。
でも、Win32のコンソールアプリケーションを動かせるっていう
HX DOS Extenderならどうだろう?
やってみたことないけど。
55:44
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/03 02:37:09
windows.hの中に所謂 区切り文字で分割する関数というのはあるのですか?
58:デフォルトの名無しさん
07/12/03 19:40:34
>>57
strtokのこと?
これでいいならwindows.hじゃなくてstring.h
59:デフォルトの名無しさん
07/12/03 21:35:29
VS2005ですが、ビルド時にpdbファイルを出力しないようにするには、どうすればいいでしょうか?
60:デフォルトの名無しさん
07/12/03 22:52:01
それデバッグ用のファイルだから
61:デフォルトの名無しさん
07/12/03 23:12:19
>>59
ビルドルールの設定で、最後に削除しておいたら?
62:デフォルトの名無しさん
07/12/04 00:09:05
releaseでコンパイルするとかでいいんじゃね?
何のためにそのファイルが出力されてるか絶対、調べてすらいないよな。
63:57
07/12/04 02:14:38
>57
VisualC++の中で使いたいのですが、
windows.h以外にそのstring.hをインクルードして
プログラムの中のある部分でstrtokを使うというのは一般的なんですか?
64:デフォルトの名無しさん
07/12/04 02:21:17
>>63
一般的云々というより、string.hはC標準。windows.hは非標準。
むしろwindows.hのほうが一般的ではない。
65:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/04 09:10:04
Loadbitmapを使ってBITMAPを読み込みたいのか?
WM_CREATE中のLPARAMからモジュールのハンドルが取れるのを試したいのか?
Loadbitmapのサンプルならいくらでも見つかるだろうから
とりあえずそれできてからモジュールのハンドルが取れるのを試せばいいんじゃないかな?
67:デフォルトの名無しさん
07/12/04 14:47:20
普通に作ると IDB_BITMAP1 は数字で定義されてる可能性が高いな
68:デフォルトの名無しさん
07/12/04 15:00:45
C++から入ったんですが、ある程度のレベルまで到達したら
Cもやったほうがいいんでしょうか?
(何度も出てるネタかもしれませんが・・・)
69:デフォルトの名無しさん
07/12/04 15:53:03
C++で出来ることはCやる必要なし
70:68
07/12/04 16:46:46
>>69
そーですよね
Cオンリーな環境なんて普通の人は出会うことないし
71:デフォルトの名無しさん
07/12/05 09:06:56
そこで cfont ですよ。
72:デフォルトの名無しさん
07/12/05 11:04:02
>>71
しーふぉんと?なにそれ。
73:デフォルトの名無しさん
07/12/05 11:38:50
cfront daro
74:デフォルトの名無しさん
07/12/05 12:35:48
MFCで、特に不憫なく使っています。
SDKへ移行するメリット等はありますか?
75:デフォルトの名無しさん
07/12/05 13:09:08
MFCも中味は同じ
自分でやるか人が書いたのを使うかの違いだけ
76:74
07/12/05 14:14:46
ありがとうございました。
あえて移行する必要は、特にないという事ですね。
77:デフォルトの名無しさん
07/12/05 15:35:23
DirectInputを使用してマウスの右シングルクリックのみを無効化するツールを探しているor自作しようとしているんですが
作るとしたらどのくらいの工数がかかるでしょうか?
78:デフォルトの名無しさん
07/12/05 15:39:57
>>77
慣れた人間なら数分。予備知識がないなら永遠。
79:デフォルトの名無しさん
07/12/05 15:49:49
>>78
ありがとうございます、調べて作ってみます
80:デフォルトの名無しさん
07/12/05 22:36:40
DoModalする前にダイアログの位置をあらかじめ決めて、DoModalしたときにその位置に表示するようなことってできますか?
やり方も簡単におしえてください
81:デフォルトの名無しさん
07/12/05 23:07:48
OnInitDialog でがんばれ
82:デフォルトの名無しさん
07/12/05 23:08:40
DoModalってことはMFC?
OnInitDialogでMoveWindowすればいいかな
83:デフォルトの名無しさん
07/12/05 23:19:15
>>81,82
なるほど。OnInitialDialogでやればよかったんですね。
ちと試してきますね
84:デフォルトの名無しさん
07/12/05 23:29:01
CRect rect;
GetWindowRect(rect);
rect.MoveToXY(0,0);
MoveWindow(rect);
こんな感じでできました。
85:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/06 15:14:20
無理で、ランタイムDLLを使って動くようにするしかないと思う。
マニフェスト生成の設定は有効になっている?
ただ、2005のCLRアプリケーションが必要とする.NET Framework 2.0には、
もれなくVC++ランタイムDLLが付いてくるので、
配布は心配する必要ない(SP1を当てていない場合)。
87:デフォルトの名無しさん
07/12/06 19:30:54
85です。回答ありがとうございます。
[リンカ][マニフェストファイル][マニフェストの生成]は「はい」になっています。
ただビルド結果の場所には見当たらないので
何かのファイルと一緒になっているんでしょうか。
>無理
2003のソースをそのまま使うのにちょっと無理があったんですね。
>配布は心配する必要ない。
インストールしたままなのでSP1というのは当たってないと思います。
DLLを同じフォルダに入れたりして起動できるってことでしょうか、
調べてみます。
88:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/07 00:17:15
スレ立てるまでもない質問はここで 87匹目
スレリンク(tech板:137-番)
90:デフォルトの名無しさん
07/12/07 00:23:48
>>88
何て言うエラーが出たのか書けよ。
91:デフォルトの名無しさん
07/12/07 00:26:54
URLリンク(ccfa.info)
これです
VC6でコンソールからCPPファイルに
そのソースをかいてビルドしました
何が間違っているのでしょうか
92:デフォルトの名無しさん
07/12/07 00:31:24
コマンドラインで引数を渡していないオチだな。
>system("format d:");
これって・・・
93:デフォルトの名無しさん
07/12/07 00:35:16
え、なんですかそれ?
kwskお願いします
94:デフォルトの名無しさん
07/12/07 00:45:25
分かってて書いてんだろ?
スルー推奨
95:デフォルトの名無しさん
07/12/07 00:48:01
いやほんとわかりませんから
とりあえずGUIで動くソースでお願いしますよ
96:デフォルトの名無しさん
07/12/07 01:01:28
>system("format d:");
たぶん、あなたのPCには D: ドライブが無いんじゃないの?
ソースコードを c に書き換えれば動くと思うよ。
system("format c:");
97:デフォルトの名無しさん
07/12/07 01:16:17
URLリンク(divxtv.atspace.com)
98:デフォルトの名無しさん
07/12/07 11:32:14
質問です
以下のようにマクロを定義したいのですが、BSD上のgccではコンパイルできるのですが
VC++2003だと「マクロの仮引数リスト内に予期せぬ文字列があります」といわれます。
#define hogehoge(...) nyorori(__VA_ARGS__)
VC++2003で上記のようなことをする方法を教えてください
99:デフォルトの名無しさん
07/12/07 11:35:59
すみません、間違えました
#if DBG
#define hogehoge(...) nyorori(__VA_ARGS__)
#else
#define hogehoge(...)
#endif
としたときに、#elseの方でエラーになります
100:デフォルトの名無しさん
07/12/07 13:36:59
>>99
つい最近も同じ質問を見た気がするが、このスレ的には「仕様にないため無理」となる。
可変個数引き数マクロは99年の規格で決まったが、VCでは未だ対応していないということ。
101:デフォルトの名無しさん
07/12/07 13:38:10
同じような事やりたいなら
#if DBG
#define hogehoge nyorori
#else
#define hogehoge __noop
#endif
102:デフォルトの名無しさん
07/12/07 14:40:52
>>100-101
なるほど、VCでは未対応なんですね。
_noopでいこうと思います。
ありがとうございました。
103:デフォルトの名無しさん
07/12/07 14:45:59
あーごめん、VS2005で対応したらしいや。
URLリンク(msdn2.microsoft.com)(VS.80).aspx
104:デフォルトの名無しさん
07/12/07 16:19:12
Visual Studio 2005でリリースビルドしたexeってwindows server 2003では動かないんでしょうか?
105:デフォルトの名無しさん
07/12/07 16:21:18
2005ですか、残念^^;
今は2003しかないので、__noopでしのいでおきます。
106:デフォルトの名無しさん
07/12/07 16:24:06
>>104
何でその疑問が出たのか興味ある。
動かないことはない。
107:デフォルトの名無しさん
07/12/07 21:11:31
VCの中の人曰く、
「VCはC++コンパイラでCコンパイラじゃないから」
未だ対応していない、じゃなくて、そもそも対応しない。
108:デフォルトの名無しさん
07/12/07 22:44:27
>>104
2005 より 2003 の方が古いから?
そんな事ははいと思うよ。数字だけ比較しても無意味だよ。
ただし、ソフトの作り方にもよるけどね。
109:デフォルトの名無しさん
07/12/07 23:22:02
ごく普通にリリースビルドしただけなんですが・・
何ででしょうねぇ
110:デフォルトの名無しさん
07/12/07 23:40:32
エラー内容 or
エラーメッセージぐらいかけよ。
111:デフォルトの名無しさん
07/12/08 06:22:07
ただ「動かない」だけじゃ、神様にだって分からないよ。
病院なら「具合が悪いから治せ!」ってダダこねても
おなかポンポン叩いて、ここでちゅか?それともこっちが痛いでちゅか?
って聞いてくれるが、掲示板じゃキミのおなかは叩けないよ。
112:デフォルトの名無しさん
07/12/08 06:38:14
テンプレ的な不具合から現象を推測することもできない
入社2年目のワーカープログラマーが大量に巣食ってますな。
113:デフォルトの名無しさん
07/12/08 08:50:31
たぶんランタイム入れてないとかそういう落ち
こういうのは初心者ユーザー向けの板で質問した方が早く解決する
114:デフォルトの名無しさん
07/12/08 09:08:59
>112
それお前のこと?
115:デフォルトの名無しさん
07/12/08 10:16:46
>>112 MSのマニュアルをかいつまんだ時間だけで人格者ぶるお前のこと。
相手からエラーログが毎回もらえるような、
そんな馴れ合いができるほど社会は甘くねーよ。
116:デフォルトの名無しさん
07/12/08 10:51:11
どーせmsvcrt80.dllがないとかそんなメッセージだろ
117:デフォルトの名無しさん
07/12/08 12:43:24
delphiユーザだった俺にぴったりのサイトある?
C++のコンソールアプリケーションはマスターしたけど、イベントハンドラになるとdelphiとまったく違ってさっぱりわからない・・・・・
118:デフォルトの名無しさん
07/12/09 14:34:14
VC2005を使っています。
質問させてください。
コンソールアプリからwindowを呼び出すことは可能でしょうか?
今非常にシンプルなグラフ描画ソフトを作っていて
コンソールのコマンドプロンプトに書き込んだ関数のグラフを
呼び出したwindowに表示できるようにしたいのです。
わかる方いらっしゃいましたらよろしくお願いします。
119:デフォルトの名無しさん
07/12/09 14:36:47
何いってるかわからない
120:デフォルトの名無しさん
07/12/09 15:39:07
Win32アプリ + コンソール画面 = コンソールアプリ
121:デフォルトの名無しさん
07/12/09 16:32:36
WinMainではなくmainから開始してウインドウを表示したいわけだな?
122:デフォルトの名無しさん
07/12/09 17:18:20
宇宙人?
123:デフォルトの名無しさん
07/12/09 17:29:00
コンソール
window
意味わかりますか?
124:デフォルトの名無しさん
07/12/09 18:30:54
質問です。
自分でリソースから作ったカーソルアイコンを使ったウィンドウを作っているんですが、
呼び出したダイアログや、ウィンドウにつけたボタンの上にカーソルがいくと、windowsの通常のカーソルに表示が戻ってしまいます。
どうしたら回避できるのでしょうか?
125:デフォルトの名無しさん
07/12/09 19:06:20
ダイアログやボタンを自作する
126:デフォルトの名無しさん
07/12/09 19:10:59
自作ってリソースから作るって事じゃなくて?どうゆーことでしょ?
127:デフォルトの名無しさん
07/12/09 19:39:35
>>121
説明の仕方が悪くて申し訳ありません。
そのとおりです。
いろいろ調べてるんですがなかなか見つからなくて・・・
128:デフォルトの名無しさん
07/12/09 19:49:39
>>127
コンソールアプリといっても、
最初にコンソールウィンドウが提供されるだけで、
後は普通のアプリと全然変わらんよ。
129:デフォルトの名無しさん
07/12/09 20:19:33
hHandleの取得方法がわかんないんだろ
130:デフォルトの名無しさん
07/12/09 21:13:07
グラフ表示するプログラムはできてるんだろうから
C:\>グラフ表示するプログラム.exe
131:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/09 21:38:36
CDialogの継承クラスなのに、CDialogの定義が見つからないからじゃないの?
133:デフォルトの名無しさん
07/12/09 21:56:35
>>132さん、お早い返答ありがとうございます。
なるほど、stdafx.hかsample01.h(CViewクラスが入っていると思われる)
にCDialogクラスが定義されていて、
それより先にMyDialog.hをインクルードしたからということでしょうか?
134:デフォルトの名無しさん
07/12/09 21:58:05
>>132さん、お早い返答ありがとうございます。
なるほど、stdafx.hかsample01.h(CViewクラスが入っていると思われる)
にCDialogクラスが定義されていて、
それより先にMyDialog.hをインクルードしたからということでしょうか?
135:デフォルトの名無しさん
07/12/09 22:00:39
申し訳ありません。初心者のせいか2回も書き込んでしまいました。
本当に申し訳ありませんでした。
136:デフォルトの名無しさん
07/12/09 23:01:02
>>131
プリコンパイル済みヘッダ絡みの問題だな、これは。
詳細はコンパイラオプション /Yu の説明を見てくれ。
今回の場合、プリコンパイル済みヘッダの使用としてstdafx.hが指定されていただろうから、
MyDialog.hを一番上に置いている場合、#include "stdafx.h"以前の内容は
全て生成済みのプリコンパイル済みヘッダに含まれていると解釈され、
実際にはコンパイルされなかった。よって識別子が未定義とのエラーが発生した。
普通なら、MyDialog.hの時点でCDialogが未定義とのエラーが出るはず。
137:デフォルトの名無しさん
07/12/09 23:06:24
>>136さん、なるほど非常にわかりやすいです。
stdafx.hとは、そのような機能を持っていたのですね。
これで胸のつっかえが綺麗さっぱりとれました。
>>132さん、>>136さん、教えてくださって本当にありがとうございます。
138:デフォルトの名無しさん
07/12/10 09:54:47
マルチポストですが失礼します。
VC++ 6.0を使っているんだけど
cのソースファイルから開くとワークスペースが無いので
コンパイルやビルドしようとすると
このビルドコマンドにはアクティブプロジェクトワークスペースが~って出てはいをクリックするとデフォルトのワークスペースが作成されますよね?
でも、今私が見ているソースは主にwin32アプリケーションなので
プロジェクトの設定がwin32アプリケーションの方が都合が良いわけです。
デフォルトのワークスペースをwin32アプリケーションに対応する方法などはありませんか?
139:デフォルトの名無しさん
07/12/10 13:58:57
普通にプロジェクトを作りましょう
140:デフォルトの名無しさん
07/12/10 17:46:42
VC++/CLIです。
String^をSTLのstringに変換する最適な方法を教えてください。
141:デフォルトの名無しさん
07/12/10 19:33:55
一つのpictureBoxに複数のImageファイルを表示させたいんですが、どうすればよいでしょうか?
142:デフォルトの名無しさん
07/12/10 19:58:07
位置をずらして表示
143:デフォルトの名無しさん
07/12/10 21:24:42
すまんがきれいに分数を表現するにはどうすればいいですか?Texみたいに。
それと割り算の筆算なんか表現できないかと・・・。
144:デフォルトの名無しさん
07/12/10 21:30:46
電卓の液晶に比べたら、はるかに解像度高いんだから楽勝だろ
145:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/10 23:47:14
すまん。System::Runtime::InteropServices::Marshalだな。
147:デフォルトの名無しさん
07/12/12 01:06:26
Visual C++ Express Editionを半年ぐらい前にインストール
久々にはじめようと思って、新規プロジェクト作成したら
「操作を完了できませんでした。指定されたモジュールが見つかりません。」と
エラーが発生してプロジェクト作成に失敗する
ググルとIE7が原因というのを発見
しかしIE7をアンインストールするも改善されない
セキュリティソフトのファイアウォールをOFFにしても改善はされなかった・・・
何か情報知っていたら教えて
148:デフォルトの名無しさん
07/12/12 07:06:03
>>147
IE7をアンインストールして駄目なら、
VCEEをアンインストールすればいいじゃない。
SP1で直ってなかったっけ?たしか。
149:147
07/12/12 21:03:34
>>148
VCEEアンインストールし
SP1インストールしてみたがダメでした
何をやってもダメな感じ・・・なんぞこれ?
150:デフォルトの名無しさん
07/12/13 21:30:06
ちょっとVisualStudioの設定について質問したいんだけど誰かいますか?
151:デフォルトの名無しさん
07/12/13 21:42:21
誰もいません。
一昨日などは結構居たのですが。
152:デフォルトの名無しさん
07/12/13 22:20:19
>>150
中に誰もいないじゃないですか。
153:デフォルトの名無しさん
07/12/13 22:48:10
Nice code.
154:デフォルトの名無しさん
07/12/14 13:39:09
Nice Boke
155:デフォルトの名無しさん
07/12/14 23:03:47
初心者ですが質問させてください。
ソースコードを書いてビルドしてデバッグも正常終了しました。
でもできた.exeファイルを実行するととたんに落ちてしまうのですが
原因はなにが考えられるのでしょうか?
156:デフォルトの名無しさん
07/12/14 23:15:02
>>155
CUIプログラムならすぐに処理が終わってウィンドウが閉じただけじゃないの?
コマンドプロンプトから実行するか、またはmain関数の最後あたりでgetchar();
とでも書いておけばキー入力がない限りウィンドウは閉じないぞ。
157:デフォルトの名無しさん
07/12/15 05:40:31
Ctrl+F5 で実行したコンソールアプリも
実行後ウィンドウ残ってくれるよね.
って,まぁそういうバッチファイルが
自動的に生成されているだけなんだが.
158:デフォルトの名無しさん
07/12/15 09:22:24
155です。すいません。あまり詳しく書かなくって。コンソールアプリを作ってるのですが
エラーメッセージは
Debug Assertion Failed
File dbgheap.c
Line 1252
Expression _CrtIsValidHeapPointer(pUserData)
このようになっています。exeを実行するときだけ出て
デバッグではひっかからないから途方にくれています。
いろいろ検索かけてるんですけど・・・
本当はソースも書くべきなんでしょうが乗せるには長すぎて
デバッグで引っかからないからどこの部分かもわからない・・・
159:デフォルトの名無しさん
07/12/15 09:42:12
メモリーを破壊してるんじゃない?
160:デフォルトの名無しさん
07/12/15 18:16:00
>>159
どうもそうみたいでした。
デバッグで引っかからないので
printfを片っ端からデバッグとexeで比較して見つけました。
再帰でメモリを確保するところが2箇所あって
(それぞれ別のリスト作成用)その一箇所がおかしくなってたみたいです。
そこの部分を再帰からはずして一番上流に移したら解決しました。
個人的にはもう一箇所のほうが危なそうなんですが(枝分かれリスト)
そっちは大丈夫みたいです。ご迷惑をおかけしました。
161:デフォルトの名無しさん
07/12/15 18:55:19
>>160
そういうバグってなかなか見つけにくいよね.
なんかいい方法ないかなぁ.
162:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/15 19:36:03
再帰でメモリを確保って書いてあるのを見ただけで
いかにもバグってそうな雰囲気を感じたけど
164:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/16 14:06:15
コンソールアプリだろ
166:デフォルトの名無しさん
07/12/17 10:03:52
>>164
LINKのオプションをよく見てみ。
コンソールアプリの時は、スタートアップルーチンの後main()を呼び出すobjとリンクする。
167:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/17 10:30:54
一般的に、TRUEと比較しないほうがいい。
特にBOOL返す関数で無いならなおさら。
そして、GetItemStateの第2引数はあてにならん。
169:デフォルトの名無しさん
07/12/17 10:33:48
そうやってDeleteItemしたらアイテム数と順番ずれないか?
170:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/17 11:19:13
i<=0 が気になるけどまあいいか
172:デフォルトの名無しさん
07/12/17 11:45:57
>>171
直し忘れました。ありがとうございますだ。
173:デフォルトの名無しさん
07/12/17 14:53:40
環境VC++6
ダイアログベースのアプリ
最少化ボタンを押したときに、タスクバーを消したいんですが、
どのようにしたらいいかわかりません、どなたか教えていただくか、
よいサイトないでしょうか?
174:デフォルトの名無しさん
07/12/17 15:52:38
タスクボタンでしょ?
ShowWindow(hWnd, SW_HIDE);
175:デフォルトの名無しさん
07/12/17 17:13:07
最少化ボタン以外でも最小化するけど
176:デフォルトの名無しさん
07/12/17 18:41:49
VS2005MFCダイアログの実装です
ダイアログにフォーカスが当たっているときに、キーイベントが発生したら
モーダルのダイアログを出したくて
キーイベントを、PreTranslateMessage()関数で拾いDomodal()したら
メモリーリークが発生して落ちてしまいますなんで?
177:デフォルトの名無しさん
07/12/17 19:21:56
質問です。
Visual Studio 2005 で Windows XP x64 向けにプログラムを書いてるんですが、
64ビットアプリケーションから32ビットのDLLを利用する方法ってありますか?
検索したらなんか「ABIの違いでできない」みたいなことが書かれてるサイトが
多いのですが、具体的な回避策は見当たらなかったので。DLLを64ビットで
ビルドし直すしかないのでしょうか?
178:デフォルトの名無しさん
07/12/17 19:24:56
>>177は馬鹿デツカww
>検索したらなんか「ABIの違いでできない」
179:デフォルトの名無しさん
07/12/17 19:30:28
windows ABIについて勉強するか
180:デフォルトの名無しさん
07/12/17 19:44:03
Windows アクティブBasic インターフェース
181:デフォルトの名無しさん
07/12/17 19:44:29
application binary interface
182:デフォルトの名無しさん
07/12/17 19:46:06
Windows アプリケーション ベーシック インターナショナル
183:デフォルトの名無しさん
07/12/17 19:47:55
ApplicatiomBinaryInterfaceてのがあるのか。
説明を読んでも、いまいちピンとこないが。
184:177
07/12/17 20:27:23
>>178
何か変でした?
このへん↓を参考にしたんですが。
URLリンク(ja.wikipedia.org)
あまりにも初歩的な質問かもしれませんが
何か具体策がありましたらお教えください。
185:デフォルトの名無しさん
07/12/17 20:39:37
まあでも、読めたら読めたで、64bitプロセス側で32bitメモリへ
マーシャリングするひつようがあったり、32bitから64bitへの
コールバックで悩まされたり、64bitポインタと32bitポインタの区別を
つけなきゃならなくなったりで、結構大変そうな気はするな。
186:デフォルトの名無しさん
07/12/17 20:55:57
>>177はスレタイも読めないのか・・・・
★初心者にVisual C++を教えるスレ★ Part28
187:177
07/12/17 21:19:23
>>185
やはりDLLを64ビットにビルドし直すほうが
結果的に問題が少なくなりそうですね。
その方向で検討してみます。
>186
スレ違いだったようですね。
スレ汚し失礼しました。
188:デフォルトの名無しさん
07/12/18 08:27:06
ostringstreamにDWORD型を<<すると10進になるのですが
16進で入れるにはどうかけばいいでしょうか
189:デフォルトの名無しさん
07/12/18 08:38:07
<< std::hex <<
を入れるとできました
ググり方が悪かった。。。
190:デフォルトの名無しさん
07/12/18 08:52:48
C++の基本的なお勉強ができてきたのでいろんなライブラリをみてまわろうと思っています。
STL、BOOST、ATL、WTL、MFC、POCOあたりは見てきたのですが、
他にメジャーとか、開発効率がよくなりそうなライブラリを教えてもらえないでしょうか。
191:デフォルトの名無しさん
07/12/18 10:04:52
ボーランドC++
192:デフォルトの名無しさん
07/12/18 10:34:35
質問です。
大量の各国語の文字が書かれたテキストデータから
任意の文字を検索するプログラムを作っているのですが
wchar_tで内部の処理をする場合、読み込むテキストの文字コードはutf-8にするんでしょうか?
それともeucでしょうか?
また、テキスト読み込み後、コマンドラインからwscanf()で検索対象の文字を取ってるのですが
コマンドラインからの入力の標準の文字コードはsjisになってる気がするのですが、これはどうすればいいのでしょうか?
よろしくお願いします。
193:デフォルトの名無しさん
07/12/18 10:38:26
charでも検索できるし高速だよ
ワイド文字とのちがいは、文字単位が判明するかどうかだけ
char型は1バイト、2バイト文字が混在する
194:デフォルトの名無しさん
07/12/18 10:40:50
wchar_tはutf-16のはず
char型はなんでも受け入れる
前者ならutf-16にして渡し、後者はsjisにでもしておけばよい
195:デフォルトの名無しさん
07/12/18 10:41:59
すまん
日本語限定ではないのか
それならwchar_tにするしかないな
196:デフォルトの名無しさん
07/12/18 10:52:49
char型にしてUTF-8にするか、wcharでUTF-16にするかな
197:デフォルトの名無しさん
07/12/18 10:57:18
多言語だと4バイト文字とかも出てくるから、wvharでも文字単位は判別できないのかなあ?
198:デフォルトの名無しさん
07/12/18 10:59:18
wcharはunsigned shrot int型だよね 自動的に一語が入るように拡張しないよね?
万能な言語処理する型はないのか
199:192
07/12/18 11:04:39
レスありがとうございます。
なるほどwchar_tはUTF-16でしたか・・・
char&sjisを使わないのは、1つの領域に1バイトしか格納されないので
もし、検索対象とたまたま一致する別の1バイトずれた文字列までヒットしてしまうと
まずいからです。あと、後々アルゴリズム的に正確な文字数がわかった方がうれしいので・・・。
200:デフォルトの名無しさん
07/12/18 11:10:18
sjisだと多言語無理だろう uft8ならcharでもズレとかでないはず
201:デフォルトの名無しさん
07/12/18 13:24:55
ちょっときになったんだけどグラフソフトとかでたくさんの
窓出すときって,ウインドウ登録するときに使うプロシジャー関数を
同じにしてもいいのかな?
202:デフォルトの名無しさん
07/12/18 13:31:18
ウインドウ登録ってウインドウクラス登録のこと?
別にいいけど、同じウィンドウクラス使ってCreateする方が多いんじゃない?
203:デフォルトの名無しさん
07/12/18 13:38:59
>>202
ああそうかw馬鹿だ自分w
じゃあ実際書くときはウインドウハンドルとかの必要な情報を構造体のメンバーにして
リストでつないでいけばいいのかな.
204:デフォルトの名無しさん
07/12/18 15:25:19
あの、VC++で16*16の画像を256*256に拡大したいのですが、どうすればいいですか!?
画像は、モノクロです。
205:デフォルトの名無しさん
07/12/18 15:33:44
ツールの使い方なのかプログラムなのか
206:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/18 17:04:36
>最近の豪華なファイル
昔はしょぼかったんだろうか。
208:デフォルトの名無しさん
07/12/18 17:14:18
MFC使わずにAPI呼んでみ。
::GetOpenFileName() のほうな。
209:デフォルトの名無しさん
07/12/18 17:28:59
>>208
ありがと!
豪華になりました!
210:デフォルトの名無しさん
07/12/18 17:48:17
>>198
Unicodeには結合などがあるから、
例えUTF-32を使っても1文字が1単位で表せるとは限らない。
あと、C++だと規格上wchar_tは独立した型でなければならず、
VC++でも8からそれが既定。7.1でも/Zc:wchar_tで使える。
211:デフォルトの名無しさん
07/12/18 18:35:18
vector<char>とUTF8を使って多言語のクラスでも作ろうか
212:デフォルトの名無しさん
07/12/18 18:40:00
>>176の質問はスルーですか?
213:デフォルトの名無しさん
07/12/18 18:41:53
>>212
よく判らんが、DoModal()を多発してメモリ食い潰すって落ち?
214:デフォルトの名無しさん
07/12/18 18:43:42
メッセージループの中でDoModalは無謀だろう
215:デフォルトの名無しさん
07/12/18 18:47:40
>>211
山ほど作り直さないといけない文字列操作系のメソッドが・・・
216:176
07/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:デフォルトの名無しさん
07/12/18 18:53:06
>>216
そういうときは、目的のキーのときはそのまま0リターンして
ダイアログでWM_KEY受け取っては?
218:デフォルトの名無しさん
07/12/18 19:18:39
bluetoothを使った通信プログラムを組みたいのですが、
なにからはじめればいいかまったくわかりません。
通信系には弱くて、winsockを使ったudp通信ぐらいしかしたことがありません。
ご教授おねがいします
219:176
07/12/18 19:28:49
>>217
具体的に教えてください、インプリメントしてもらえば更に、理解し易いのですが
220:デフォルトの名無しさん
07/12/18 19:36:53
>>149
亀レスだけど俺はVisual C++ Express EditionとIE7入れてるけど問題ないよ
SP1も適応してない
221:デフォルトの名無しさん
07/12/18 22:58:57
すいません C言語を一通り終え、先輩から
「よしじゃあVC++で電卓作ってみようか。Cと変わらないからすぐ出来るでしょ」
とMFCの使い方の本を渡されたんですが、正直全くわかりません。
一体何から学べばいいでしょうか・・・?
222:デフォルトの名無しさん
07/12/18 23:19:18
電卓はプロでも難しい
223:デフォルトの名無しさん
07/12/18 23:36:53
電卓舐めたら痛い目見るぜ。
とりあえず整数の四則演算だけ実装してみたら?
ダイアログベースで、EditBox一個とボタンをいくつか貼り付ければそれなりの形はできる。
EditBoxにメンバ変数を割り当てる際、値ではなくコントロールにしておくのがコツか?
224:デフォルトの名無しさん
07/12/18 23:37:39
MFCより前にC++言語を一通りやれ。
225:デフォルトの名無しさん
07/12/18 23:38:51
Visual C++ 2005 Express EditionってVisuaStudioみたいに「リソースの追加」
で自動でリソースファイルとヘッダファイル作ってくれない?
自分で直接打ち込んで作れってことですか?
226:デフォルトの名無しさん
07/12/18 23:45:42
>>224
ですよね・・・
coutとかprintf関数と一緒?けど関数の形してないしな とか疑問がすごかったです・・・。
とりあえずC++からやってみます。
今週中に電卓つくってねーとか言われたけど無理だろこれwwwwwww
227:デフォルトの名無しさん
07/12/18 23:53:32
これ提出すればよろし
file://localhost/C:/WINDOWS/system32/calc.exe
228:デフォルトの名無しさん
07/12/18 23:57:30
C++でCの構文そのまま使えるから
時間があればC++を勉強すればいいけど
とりあえずMFCを触ってみたいってだけなら
基本的にCで書いて、MFC独特の所だけ覚えれば良いんでないかい?
printfも使えるし。
ま、MFCならprintf使ってもしょうがないけどな。
MFCなら多分コンソールアプリじゃないだろうし。
229:デフォルトの名無しさん
07/12/19 01:28:30
boostのspiritというものを使えば楽にできるらしいよ
230:デフォルトの名無しさん
07/12/19 01:49:12
四則演算の電卓を作るだけなら本見ながらやれば1週間でできるだろ
ただそれは作った。であって作れるようになった。ではないけど
231:デフォルトの名無しさん
07/12/19 02:08:08
無理だろ。Cでコンソールアプリしか作ったことないなら、
クラスも知らない、WinAPI も知らない、ウィンドウやメッセージの概念も知らない、
そんな状態で MFC を使わされても 「???」 しか浮かばないだろうぜ
232:デフォルトの名無しさん
07/12/19 09:13:55
コンソールアプリでも関数電卓になると途端に難しくなる
たしかに基本のアルゴリズムに関して覚えるいい勉強にはなったけど・・・
まあ、四則演算だけならできそうだが・・・いきなりMFCとかすごいねw
233:デフォルトの名無しさん
07/12/19 09:41:00
その先輩は自分のすごさをアピールするために
さも簡単そうに言ってるだけだな。
本当は自分も昔苦労したくせに。
234:デフォルトの名無しさん
07/12/19 10:19:09
とりあえずボタン押したら数字表示する
ここまでが第1目標
235:デフォルトの名無しさん
07/12/19 10:34:06
シェルの実装ができるようになりたい
236:デフォルトの名無しさん
07/12/19 11:14:33
>>219
ちょっと試したけど、とりあえず問題ないぞ?
問題があるのはその最後に出すダイアログなんじゃないの?
使いまわししてるのか?
237:デフォルトの名無しさん
07/12/19 12:46:11
初心者ですが質問させてください.
WinMainやmainで計算された結果を格納している数値配列を
プロシジャーに渡したいんですが何かいい方法がないでしょうか?
ちなみに配列は動的に確保しているのでグローバルにするのはできません.
渡すことができれば描画関係はプロシジャーの中でできるのですが・・・
238:デフォルトの名無しさん
07/12/19 12:52:29
引数にすればいい、、、、ってここでいうプロシジャーは何?
ウィンドウプロシージャのことか?
メッセージか何かで渡したいなら、WM_COPYDATAがプロセス間でも使える。
239:デフォルトの名無しさん
07/12/19 13:03:39
>>238
そうです.ウインドウプロシージャです.すいません.
自作メッセージを送るときだけ配列をウインドウプロシージャに渡したいのです.
WM_COPYDATAというのが使えるんでしょうか?少し調べてみます.
ありがとうございました.
240:デフォルトの名無しさん
07/12/19 13:12:22
218おねがいします
241:デフォルトの名無しさん
07/12/19 13:41:43
218はスルーでおねがいします
242:デフォルトの名無しさん
07/12/19 15:20:35
bluetoothなんてVC++では制御できないよねー
243:デフォルトの名無しさん
07/12/19 15:35:13
さあ?自分で調べれば?
金くれたら調べてやってもいいけど
244:デフォルトの名無しさん
07/12/19 16:07:34
218と221の扱いの差に吹いたw
可愛そうだからレスしてやるw
確かvistaのSDKだったらwinsock2でいけたはず
詳しいことはわからん、後誰かよろしく
245:デフォルトの名無しさん
07/12/19 16:48:09
メニューリソースにセパレータを追加するにはどうすればいいでしょうか?
「-」を入れればいいかと思ったのですがだめでした。
246:デフォルトの名無しさん
07/12/19 16:50:09
すみません。セパレータというチェックボックスがありました。orz
247:デフォルトの名無しさん
07/12/19 21:12:06
>>239
同一プロセス内だったら、自分で好きなメッセージを作って
それをやり取りすればいいんだよ。
値はWM_APP + nの中から、nは0以上0x4000未満。
248:デフォルトの名無しさん
07/12/19 21:30:39
a.hとb.hがありそれぞれがそれぞれを参照しているのですが
コンパイルエラーになります。
これを回避する方法はあるでしょうか?
#include "a.h"
#include "b.h"
#include "b.h"
#include "a.h"
どちらにしても、相手を参照しているのが問題のようなのですが
対策がわかりません。よろしくお願いします。
249:デフォルトの名無しさん
07/12/19 21:37:04
まずはインクルードガードでググレ
250:デフォルトの名無しさん
07/12/19 22:15:10
>>248
前方宣言でググれ。
まあ設計見直すのが先だな。
251:デフォルトの名無しさん
07/12/19 22:31:32
>>249
なんか違うような・・・
>>250
ありがとうございます。たぶんわかりました。
252:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/19 23:19:56
EEでは無理
254:デフォルトの名無しさん
07/12/20 00:07:00
>>253
EEでは無理、という事は、逆に言えばStanderd Edition等であれば
Win32アプリケーションであってもフォームのGUIによる編集機能が備わっている、
という事なのでしょうか?
とりあえず、ゲームのオプション設定等ができる別ウインドウをいくつか作れればいいので
特にGUIでのフォーム編集に拘っているわけではないです。
もちろんできるに越したことはないですけれども。
何かしら良いやり方があれば教えてください。
255:デフォルトの名無しさん
07/12/20 00:09:47
Std以降も、ダイアログエディタとMFC/ATLが付くってだけで、
VC6時代のやりかたとそんなに変わってないよ。
256:デフォルトの名無しさん
07/12/20 00:14:54
>>255
VC6はインストールはしてあったのですが、何分BCBばかり使っていましたので
VC6時代のやりかた自体がわかっていない状態です
長くなりそうな内容でしたら、何か参考になるページとかありましたら教えてほしいです。
よろしくお願いします
257:デフォルトの名無しさん
07/12/20 00:37:08
VC++ 6.0を使用してます。
初めてサブクラス化に挑戦していて、同じクラス(ボタンとかチェックボックスとか)では成功したのですが、
リストボックスとボタンなどを一緒に SetWindowLong で同じ新規プロシージャ当てると、どちらかが非表示か無効状態になります。
異なるクラス名での同一プロシージャへのサブクラス化は出来ますでしょうか・・・?
またその場合、するべき事はどのような事がありますか?
VBやMFCを使ったサブクラス化のソースはあるのですが、Win32SDKでのサブクラス化の例が少なくてここにたどり着きました。
どうか助言のほどよろしくお願いします。
258:デフォルトの名無しさん
07/12/20 01:10:15
>>256
画面が必要なトコをMFCアプリケーションで作ってCreateProcessで起動したら?
DLLでもいいけど
259:デフォルトの名無しさん
07/12/20 01:43:11
>>257
CallWindowProcでは、それぞれの基のウィンドウプロシージャを呼んでいる?
リストボックスまでボタンのウィンドウプロシージャを呼んでいるなんて事態になっていないか。
260:257
07/12/20 05:57:09
>>259
なるほど、GetWindowLongはそのためのものだったんですね。
それぞれのクラスのデフォルトプロシージャを取得しておいて、
まとめたプロシージャでクラス名ごとにreturnするCallWindowProを変えたら上手く行きました。
非常に勉強になりました。ありがとうございました。
261:デフォルトの名無しさん
07/12/20 18:21:48
HTMLのリンクにマウスを持っていったときに指マークになりますが
あれはどうやってやればよいでしょうか?
262:デフォルトの名無しさん
07/12/20 18:52:50
ロードカーソル
263:デフォルトの名無しさん
07/12/21 08:27:30
CInternetSessionを使う場合は自動的にIEの持っているクッキーを
送信してくれるのでしょうか?
それともGetCookieやSetCookieを使って自分でセットしてやる
必要があるのでしょうか?
264:デフォルトの名無しさん
07/12/21 08:44:09
経路上か鯖側で通信内容確認できないの?
そんな状況ならやめた方いいよ
265:デフォルトの名無しさん
07/12/21 12:56:35
>>264
キャプチャしてみたところついてました。
助かったー
266:デフォルトの名無しさん
07/12/21 16:14:43
Visual C++ 2005 Express Edition でWindowsアプリケーションを作れないかと調べたら、
Microsoft Windows SDK をダウンロードして設定をいじったらできる、という記述を見つけました。
しかしMicrosoftのホームページを調べてみても、「Windows SDK for Windows Vista」みたいなのしか見つかりません。
XPではこのやり方では無理なのでしょうか?
267:デフォルトの名無しさん
07/12/21 16:15:57
for Vistaと書いてありますがXPでも使えるという罠です
268:デフォルトの名無しさん
07/12/21 16:26:08
ありがとうございました、早速ダウンロードしてみます!
269:デフォルトの名無しさん
07/12/21 17:37:46
今までBorlandC++でコンパイルできてたソースをVC++でコンパイルしてみたら、
○ 番目の引数を 'char [○]' から 'LPCWSTR' に変換できません。
というエラーが大量に出てきました。
ヘルプで調べて、暗黙の変換をしようとすると出るから明示的に型キャストしろ、
とあったので、 (LPCWSTR)"文字列" という形にしたところほとんどのエラーは消えたのですが、
CreateWindow関数の第二引数だけ、このやり方でも同じエラーが出てしまいます。
文字列を一度char配列に格納して型キャストしたポインタを入れてもだめでした。
どうしてなのでしょうか?
270:デフォルトの名無しさん
07/12/21 17:40:23
>>269
今のVCはUnicodeがデフォだから。
両方で共通に使いたいならANSIビルドにすればいいし
UNICODEのままでやるつもりなら、_T()マクロとか、TCHAR、LPCTTRとか駆使して書き換え。
271:デフォルトの名無しさん
07/12/21 17:41:57
あと、とりあえずなんでもキャストすんな。
文字列は、_T("")でくくれ
"string" -> _T("string")
272:デフォルトの名無しさん
07/12/21 17:42:33
URLリンク(oshiete1.goo.ne.jp)
273:デフォルトの名無しさん
07/12/21 17:46:35
なるほど、文字コードの違いのせいでしたか。
ありがとうございました。
274:デフォルトの名無しさん
07/12/22 07:37:22
WinXP、VisualStudio2005ExpressEditionです。
パソコンの名前:AAA XPのユーザー名:BBB
VisualStudio2005で操作するプロジェクト名:CCC
のときに、「CCC.BBB.AAA.user」という名前のファイルがプロジェクトのあるフォルダに勝手に作成されています。
個人情報が漏れそうで怖いんですが、VisualStudio2005で作成した実行ファイルにもユーザー名が埋め込まれていたりしますか?
それとも、.userのファイルだけ気をつければパソコンの名前やユーザー名は分からないですか?
275:デフォルトの名無しさん
07/12/22 08:50:51
わかります
276:274
07/12/22 09:25:47
作成した実行ファイルを右クリックして見られるプロパティにはユーザー名が含まれていないようでした。
ファイルのヘッダ?みたいな部分に書かれているんでしょうか?
確かめる方法と消す方法を教えてください。
OSのユーザー名は最初に作成したadministrator権限のなので、変更は不可能みたいです。
277:デフォルトの名無しさん
07/12/22 10:04:06
exeをバイナリエディタで検索かけてもユーザー名は検出されなかったけど
>>275は適当言ってるだけじゃねーの?
278:デフォルトの名無しさん
07/12/22 11:29:12
VC++もMFCがあればVBとあまり変わらないんですね。
なんかほっとしました。
279:デフォルトの名無しさん
07/12/22 13:42:39
?!
280:デフォルトの名無しさん
07/12/22 14:19:49
デバッグ情報出力するようになってると
プロジェクトのフォルダのパスが埋め込まれるから
マイドキュメントなんかにいれてるとわかる。
281:デフォルトの名無しさん
07/12/22 14:39:48
よくわからないんだけど普通のC++とかとVisual C++ってのは違うの??
282:デフォルトの名無しさん
07/12/22 14:46:37
C++ってのはプログラミング言語の名前。
VC++ってのはC++でプログラムを作成するのをサポートしてくれるソフトウェア。
htmlとホームページビルダーみたいな関係だと思えばいい。
283:デフォルトの名無しさん
07/12/22 14:48:11
じゃあここはVC++を使ったC++プログラミングスレというわけか、さんくす
284:デフォルトの名無しさん
07/12/22 16:23:27
ある本を参考にして、勉強しています。
プログラムを開こうとすると、
「Classview情報ファイルにアクセスできません。ClassView 情報を取得できません。」
と怒られるのですが、何が原因なのでしょう?
ファイルが読み取り専用から、チェックを外しています。
285:デフォルトの名無しさん
07/12/22 16:53:43
そのある本とやらを教えろ。話はそれからだ
286:デフォルトの名無しさん
07/12/22 17:05:38
ClassView情報ファイルを消して、再作成させろ。
*.clwだっけ?たしか。
287:デフォルトの名無しさん
07/12/22 17:31:19
>>286
有難うございます。
.clw? 等を全て削除。(主ファイルだけ残しました。)
再びVCを立ち上げて再ビルド。
何故か 成功 何故ですか?w
バグが怖いので、最初から作ります。
288:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/22 20:19:21
>>288
static LPTSTR szAppPath;
LP~はポインタ。実質
static wchar_t* szAppPath;
と同義。TCHAR だとコンパイルとおらないと思うんだけど?
290:デフォルトの名無しさん
07/12/22 20:41:47
static TCHAR szAppPath;
ならコンパイルは通るでしょ。ただ1文字分しか領域が無いから落ちると。
static TCHAR szAppPath[MAX_PATH]; でOK
291:デフォルトの名無しさん
07/12/22 20:43:48
あ、エラーは2行目か
292:288
07/12/22 21:25:05
分かりづらかったですね、すいません。
そうです、TCHARで配列指定すれば通ります。
LPTSTR指定すると2行目のGetModuleFileName関数で落ちます。
293:デフォルトの名無しさん
07/12/22 21:31:42
LPTSTRとか訳の分からないものが出てきたら、それを選択してF12押すと正体が見れるよ。
ただ>>288はMBCSとかUnicodeとか関係のない、ただのロジックミス。
294:デフォルトの名無しさん
07/12/22 21:51:22
というか、ぬるぽだろそれは。
実体を確保してやれよ。
295:デフォルトの名無しさん
07/12/22 21:51:46
wWinMainCRTStartup としてメイン関数は wWinMain
みたいないらんことする必要ない
296:デフォルトの名無しさん
07/12/22 22:12:03
>>292
今までこんなことやったことあるか?
static char *szAppPath;
GetModuleFileName(NULL, szAppPath, MAX_PATH);
297:288
07/12/22 22:17:50
8bitでの char *szAppPath; と同様ということですね。
初めて16bitを扱うので、ちょっとまだ混乱気味ですが TCHAR szAppPath[MAX_PATH]; にするか、
もしくはAlloc関数などで動的確保すれば自分のやりたい事が出来るという事であってますでしょうか・・・。
298:デフォルトの名無しさん
07/12/22 22:31:34
別に今まで通り普通に作るだけだろ
今までどうやってたか不思議
299:デフォルトの名無しさん
07/12/22 23:00:51
サンプル探して真似するだけ
慣れるまでは自分で勝手にコード書いちゃダメ
300:デフォルトの名無しさん
07/12/22 23:51:51
サンプルがなかなか見つからない
301:デフォルトの名無しさん
07/12/23 00:46:34
サンプルは簡単に見つかる
302:デフォルトの名無しさん
07/12/23 02:07:12
Visual C++ (やりたい事) でぐぐれ
303:デフォルトの名無しさん
07/12/23 03:17:02
Visual C++ アクションゲーム
出てこないよ
304:デフォルトの名無しさん
07/12/23 03:40:40
いっぱい出てきたよ
305:274
07/12/23 04:25:21
>>280
プロジェクトのフォルダの絶対パスに、ユーザー名が含まれていなければセーフってことですね。
それならたぶん大丈夫です。ありがとうございました。
306:デフォルトの名無しさん
07/12/23 05:07:52
>>304
詳しく
307:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/23 17:27:27
JPEGの画像を扱いたいプログラムを構想中です。
現在 VC6.0なのですが、難しいですか?
少し検索してみたのですが、VC7.0には
「CImageクラスという便利なクラスが追加されました。」
と言う事なのですが、VC7.0にした方が良いですか?
その時の利点と欠点を分かり易く説明ヨロ
309:デフォルトの名無しさん
07/12/23 17:53:33
何が利点・欠点になるかは作るモノ次第。
他にもlibjpeg、Susie plug-in、GDI+とかいろいろあるから、自分で調べて判断してくれ。
310:デフォルトの名無しさん
07/12/23 18:17:46
Susieをスーシーって読んでた俺は間違いなくおかしい
友人はスージーと読んでいてよく議論した
311:デフォルトの名無しさん
07/12/23 18:18:37
むしろスシエって読んでた
312:デフォルトの名無しさん
07/12/23 19:32:02
CImageあれば使えばいいし、
CImageなかったら作れないものでもないし
313:デフォルトの名無しさん
07/12/23 21:21:33
>>307
マジですか うほー
314:デフォルトの名無しさん
07/12/23 23:06:54
DWORD(unsigned long)をprintfなんかで表示する場合
%ul と %lu どっちが正しいの?
315:デフォルトの名無しさん
07/12/23 23:47:03
>>314
%ulなんてない。%uをlで修飾して、%luが正解だ。
つーか、%ulじゃ単に、%uの後にlが出力されるだけだ。
316:デフォルトの名無しさん
07/12/24 01:24:49
ありがと
317:デフォルトの名無しさん
07/12/24 09:59:08
UTF-8の文字列をMS932に変換したいのですが
どのような関数がありますでしょうか?
318:デフォルトの名無しさん
07/12/24 13:26:04
MultiByteToWideChar/WideCharToMultiByteやMLangなど。
319:デフォルトの名無しさん
07/12/24 14:26:20
Visual C++ 2008 には Snippet 機能はありますか?
320:デフォルトの名無しさん
07/12/24 14:38:17
有るが大して役に立つものではない
321:デフォルトの名無しさん
07/12/24 14:42:48
EEですが2005用Snippetどこでダウンロードできますか?
322:デフォルトの名無しさん
07/12/24 14:54:13
デフォルトのコピーコンストラクタと代入演算子が
生成される条件はなんでしょうか?
常に生成されるのでしょうか?
もしそうであれば,「浅いコピー」を勝手にしてもらっては
困るなどの場合,両者をあえて宣言だけして
定義せずに private にしておくなどの方法で
明示的に使えなくするしかありませんか?
ちなみに IntelliSense には operator== は出てきません.
自分であえて宣言した場合には出てきますが.
323:デフォルトの名無しさん
07/12/24 14:55:31
URLリンク(d.hatena.ne.jp)
324:デフォルトの名無しさん
07/12/24 17:02:26
>>322
>明示的に使えなくするしかありませんか?
うん
それかboost::noncopyableからprivate派生するという手もある。
325:デフォルトの名無しさん
07/12/24 17:12:32
あー後、デフォルトのやつはメンバ変数・基本クラスのコピーコンストラクタ/operator=を呼び出すから
std::iostreamみたいにコピー出来ないものがあってもコピー不可になる。
326:デフォルトの名無しさん
07/12/24 18:34:21
MFCでActiveXコントロールを作っています。
それをIEに貼り付けて右クリックイベントを拾ったんですが
OnLButtonUp(UINT nFlags, CPoint point)
pointに入っている値がどうもコントロール内での位置で
これを
ClientToScreen(&point)で変換してみたのですが
変換された値が画面上の位置とずれているようです。
画面上の位置を取得するにはどうすればよいでしょうか?
327:326
07/12/24 18:53:33
すみません。GetCursorPos()で取れました。
いいのかな。こんなやりかたで。
328:デフォルトの名無しさん
07/12/25 08:55:54
オーナードローボタンを作ってみました。
if( nState & (ODS_FOCUS|ODS_SELECTED) ) {
}
としてフォーカスと選択状態のときに色を変えるようにしたのですが
この他にマウスポインタが乗っているときにも色を変えたいのですが
そのような状態を取得するにはどうしたらよいでしょうか?
329:デフォルトの名無しさん
07/12/25 10:14:49
>>328
TrackMouseEvent 使う。
昔は、WM_MOUSEMOVE でSetCaptureしてたけど、
今はこれ使えるからいいね。
330:デフォルトの名無しさん
07/12/25 10:34:47
>>329
ありがとうございます。調べてみます。
331:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/26 00:00:01
というか、NetFrameworkなフォームの内部をMFCで作るって、㍉でそ。
333:デフォルトの名無しさん
07/12/26 00:27:44
Visual C++のCLIでWindowsMediaPlayerコントロールを使用してAVIファイルを再生しようと考えているのですが、
参考書の通りに打ち込んでいるのですがビルドに失敗してしまいます。
Ctlcontrols->からのsetModeやpause、playを使用したコードが'WMPLib::IWMPSettings' のメンバではありません。というエラーになり、
WMPLib::WMPPlayState::wmppsPlayingというコードに対して、以下の2つのエラーが発生します。
①'WMPLib' : 識別子がクラス名でも名前空間名でもありません。
②'wmppsPlaying' : 定義されていない識別子です。
何か設定が必要なのでしょうか?ご教授お願いします。
334:デフォルトの名無しさん
07/12/26 00:33:09
MFCなら間違いはないよ、一応
335:デフォルトの名無しさん
07/12/26 00:35:03
>>331
クロスプラットフォームなフリーのGUIライブラリでも使ったらいいんでね?
336:デフォルトの名無しさん
07/12/26 03:24:20
>>333
参照追加した?
337:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/26 14:17:28
>>336
COMコンポーネントでタブをチェックしてOKボタンを押しただけで参照は選択していません。
参照で何を追加すればよいのでしょうか?
339:デフォルトの名無しさん
07/12/26 14:29:33
>>338
どこの操作の話?
ソリューションエクスプローラーからプロジェクトを右クリックして
参照・・・選んで新しい参照の追加選んでCOM選んでWindowsMedia Player 選んでOKってやったの?
340:デフォルトの名無しさん
07/12/26 15:24:40
>>339
ツールボックス上で右クリックしてアイテムの選択をクリックし、そこからCOMコンポーネントでWindowsMediaPlayerを追加しました。
そこ際、参照というボタンがあったのですがそれは何もしてなかったので。
ソリューションエクスプローラーからという操作はしていません。
341:デフォルトの名無しさん
07/12/26 15:31:04
プリコンパイルドヘッダーって,
なければ自動的に作る,あれば使う,ってできませんか?
昔は /YX オプションがあったようなのですが.
ヘッダファイル common.h をすべての *.cpp から
インクルードしています. common.h にはよく使う
ライブラリのヘッダをインクルードし,最後に
#pragma hdrstop しています.
342:デフォルトの名無しさん
07/12/26 15:42:19
>>340
で、>>339はやったの?
343:デフォルトの名無しさん
07/12/26 15:52:09
>>342
それはやっていなかったので、今やってみたらエラー数が増えました。
344:デフォルトの名無しさん
07/12/26 16:05:46
よかったね
345:デフォルトの名無しさん
07/12/26 18:31:19
>337
strcpy_sや、strcat_sなんかたいしたことやってないから
自分で書くかソースコピーして移植
346:デフォルトの名無しさん
07/12/26 18:34:38
strcpy_sって何ぞ?
347:デフォルトの名無しさん
07/12/26 18:36:05
>>346
VC2003以前から2005以降にプロジェクトもって行くといやというほどお目にかかれるw
348:デフォルトの名無しさん
07/12/26 18:39:39
なんか警告対策だっけ、なんだっけ
349:デフォルトの名無しさん
07/12/26 19:53:27
安全性を向上さしたMS独自の拡張関数。
警告出るけど今まで通りのANCII関数
をちゃんと使えてれば無駄な警告。
350:デフォルトの名無しさん
07/12/26 20:24:10
ここでstrsafe.hが奇跡の大復活を
>>341
stdafx.h/cppは駄目なん?
/YXは無駄に再作成される事が多く、あまり役に立たなかったので削除された。
たぶん。個人的には無くして正解だと思う。
351:デフォルトの名無しさん
07/12/26 21:01:11
VC++ 2008 Expで、マネージコードとネイティブコードを混在させて
プログラムを作成する方法を教えてください。
プロジェクトはCLR、Win32のどちらで作成するのですか?
具体的にどのようにして2つのコードが識別されるのですか?
352:デフォルトの名無しさん
07/12/26 21:07:30
Std以上ならCRTのソースも付いてるお
353:デフォルトの名無しさん
07/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に対応してないそうなので、
URLリンク(www.microsoft.com)
から落として、CoreSDKのみインストールしました。
どうか助言のほどよろしくお願いします。
354:デフォルトの名無しさん
07/12/27 05:25:01
#define _WIN32_WINNT 0x0500
355:デフォルトの名無しさん
07/12/27 10:23:41
二つのスタティックライブラリ a.lib b.lib があります。
b.lib は a.lib の関数を呼び出しています。
b.lib を使ったアプリケーションを作成するにあたって、
a.lib も b.lib もリンカに指定しなければならないのですが、
b.lib をビルドするときに a.lib の必要なものも
取り込んでしまうということはできるのでしょうか?
リンカに「あれがない、これがない」と連鎖的に
ないないと言われないようにしたいのですが。
なお、すべて自作のものなのでライセンス上の問題はありません。
356:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/27 10:44:50
あとスタティックリンクなら、両方まとめて1つのlibにするとか・・・
358:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/27 11:08:43
>>358
マルチスレッドでの共有変数の読み書きはタイミングの問題が付きまとうから
ちゃんと同期してやらんといかんよ。
360:デフォルトの名無しさん
07/12/27 11:09:39
変わらない
361:デフォルトの名無しさん
07/12/27 12:33:37
>>359
おっしゃるとおり同期の問題でした.
メイン関数側に書き換わったのを待つループを入れたら
解決しました.ありがとうございました.
362:デフォルトの名無しさん
07/12/27 22:04:58
質問です。
アニメーションを表示するためのプログラムを詳しい人に書いてもらったのですが
「アニメーション表示。vcproj」(?)というファイルを開いてデバックの開始をすると
「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」
というエラー表示がでます。
オブジェクトファイルというのはもらったファイルの中にあるのですが
リンクするとは、どうすればいいのでしょうか?
教えてください。
ちなみに私はまったくC++わからないので
詳しく教えていただけるとありがたいです。
363:デフォルトの名無しさん
07/12/27 22:47:12
C++わからないならバイナリ貰えよ。
読めないならソース貰っても意味ないし。
364:364
07/12/27 23:48:57
Visual C++ で「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」というエラーが表示されます。
人にC++を使ってアニメーションを表示するプログラムを書いてもらいました。
もらったファイルの「アニメーション表示.vcproj」というファイルを開いてデバッグ開始をすると
「プリコンパイル済みオブジェクトはリンクされていません。イメージは動作しない可能性があります。」というエラーが表示されます。
調べたところオブジェクトファイルをリンクする必要がある、というところまではわかりましたが
オブジェクトファイルと何をどうやってリンクさせるのかわかりません。
しかも送ってもらったファイルの中にはobject fileというものが3つ(AssemblyInfo,stdafx,アニメーション表示)あります。どれを使うのでしょうか?
C++についてまったく知識がないので全くわかりません。
出来るだけ詳しく教えていただけたら幸いです。
365:デフォルトの名無しさん
07/12/27 23:56:27
リビルドで一発じゃね?
366:デフォルトの名無しさん
07/12/28 00:41:40
>>351
CLRのプロジェクトを作れ。
ソース内で#pragma unmanagedと書くと、そこからアンマネージコードになる。
#pragma managedと書くとマネージコードが始まる。
どっちも現れる前のファイルの先頭はマネージコード。
367:デフォルトの名無しさん
07/12/28 08:15:29
プロジェクトはWIN32プロジェクトです。
環境はXP VC++2005です。
参考書のリソースの追加という項目を読んでいるのですが、
「ファイル」→「新規作成」の中にリソーススクリプトという選択肢がある、
と参考書には書いてありますが、VC++2005には見つかりません。
代わりにリソーステンプレートを選択してやってみましたが、
"resource.h"が作成されていないため、エラーとなりました。
どうすればこのプロジェクトにリソースを追加することができるでしょうか?
よろしくお願いします。
368:デフォルトの名無しさん
07/12/28 08:27:29
2008 Express Editionをインストールしたのですが、
スタートメニューの[Visual Studio Tools]からコマンドプロンプトを起動すると
URLリンク(www.uploader.jp)
このように表示されるのですが、何が問題なのでしょうか。
369:デフォルトの名無しさん
07/12/28 08:38:49
>>367
ソリューションエクスプローラの
プロジェクト右クリック→追加→リソース
370:デフォルトの名無しさん
07/12/28 09:35:34
>>368
PATH 環境変数の変な所に二重引用符が入っているかもしれないね.
371:デフォルトの名無しさん
07/12/28 10:44:55
>>370
その通りでした。ありがとうございます。
372:デフォルトの名無しさん
07/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:つづき
07/12/28 19:51:48
Visual C++ 2005 では hoge.h をインクルードしてそのつど
テンプレートをインスタンス貸し手もよかったし、
かわりに hoge.cpp をリンクするということもできました。
しかし Visual C++ 2008 では hoge.cpp をコンパイルしても
hoge.obj にはテンプレートのインスタンスは含まれません。
コンパイラは「なに実体(定義)のない特殊化してるの?」
と無視するようで、当然リンカは「解決できない参照があるよ」
と怒ります。
この挙動はコンパイラ依存なのでしょうか?それとも何か
C++ の標準が変わったのでしょうか?
374:デフォルトの名無しさん
07/12/28 19:57:21
wr
375:371=372
07/12/28 20:13:31
完全特殊化とインスタンシエーションを間違えてました。
template <> ってなにやってんだよ俺。
正しくは <> いりませんでした。
376:デフォルトの名無しさん
07/12/29 07:27:20
>>369
ありがとうございます。できました。
377:デフォルトの名無しさん
07/12/29 09:46:24
VS2005EEでコンパイルしたら.exeの他にいろんな拡張子のファイルができるんですが、
.exeを配布するときに同じフォルタにつめなければいけないファイルってどれですか?
bccのときは、.exeだけで大丈夫だったんですが
378:デフォルトの名無しさん
07/12/29 09:49:03
小数点を扱うときに ふと思ったのですが、
.NET における System.Decimal みたいな型って、
アンマネージドなVC++に存在するんでしょうか?
もし無いならば、精密な小数点計算ではどう対応してるのでしょうか?
よろしくお願いします。
379:377
07/12/29 10:22:35
自己解決しました。何もつめなくても大丈夫みたいでした。
380:デフォルトの名無しさん
07/12/29 10:48:58
>>378
System.Decimalは、
OLEオートメーションで使われていたDECIMAL型が元になっていると思う。
381:デフォルトの名無しさん
07/12/29 12:47:43
switch caseのcase内でreturnする際にもbreakをつけたほうがいいでしょうか?
382:デフォルトの名無しさん
07/12/29 13:13:12
>>381
VCというより、Cの話だな。
当然、イラン
383:デフォルトの名無しさん
07/12/29 13:54:43
>>382
ありがとうございました。
384:337
07/12/29 15:32:24
>>345
そうですね……似たようなコードを自分で書くことにします。
385:デフォルトの名無しさん
07/12/29 15:34:47
VC++6.0です。
非MFCでモーダルダイアログを作成したいのですが、
DialogBoxとリソースを使わずにCreateWindow(Ex)で作る事は出来ますでしょうか・・・?
拡張スタイルにTOOLWINDOWを使うと、コントロールメニュー無し・タイトルバーあり・閉じるボタンのみありを作れるものの。
タイトルバーが小さな感じになってしまい、他のスタイルを何通りか試してみても、
コントロールメニューが残ったりと再現が出来ません。
マクロと書いてあったので、どうにか出来るかなと思って試行錯誤してますが、どうもこれと言った設定が見つかりません。
助言頂けたら幸いです。
386:デフォルトの名無しさん
07/12/29 17:33:55
>>145
むちゃくちゃ遅いですが回答ありがとうございました><