くだすれVisual C++(超初心者用)その5

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を愛と勇気を持って書き込むスレッドです。
Visual C++使いが優しくコメントを返しますが、
お礼はVisual C++の布教と初心者の救済をお願いします。

■過去スレ 
前々スレ
http://pc11.2ch.net/test/read.cgi/tech/1164787254/
前々スレ
http://pc8.2ch.net/test/read.cgi/tech/1150105712/
前々々スレ
http://pc8.2ch.net/test/read.cgi/tech/1141087248/

■遠い親戚スレ
くだすれC++/CLI(初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1142144110/

■関連ページ
Visual C++ Home Page
http://www.microsoft.com/japan/msdn/visualc/
2デフォルトの名無しさん:2007/06/07(木) 11:12:55
                          , -、, −- 〜‐ 、、
                       ,r-'":::::::::::::::::::::::::::::::::`'ー-,、
                      ,ィ'"::::::::::r-y−、::::::::::::::::::::::::::::丶、
                     j::::::::::::r'" _,,..,,、゙'´ ̄``'ーへ::::::::::ヽ
                     /:::::::::::{  '' ゙'ー、ヽ、 ヽ.    久_::::::l
                    ,ゝ-、::::::)ι_,,...,,_、ヾ'、 ` r'´   l::::::〉
                    /rァヽヾノ :'ィテヘ9ンミヽ`゙リ, i ィr'ニ二ヽi::::ノ
               ,.、,、,..,、,i、.,/{,.ィ'i   `''==ヲ' ノィ=く/r_,,...,,_'ソ/       /i
              ;'`;、、:、. .:、:,L(  ', ι     , {  ,l :'ィテヘ9ンミ:`゙:.:゙:`''':,'.´ -‐i
              '、;: ...: ,:. :.、.:'ノ ) /       /  、 '、``''==ヲ': ;;..; :..‐'゙  ̄  ̄
                    `トィ  ι    '´ヽrュ、 ,, )   ,ノ|
                      |! , : ',r'" ,/  _,,...,_,,..,ヽ   /,/
                   _}、: {( ( ィニ ,ィiTTTTTト,丶 /レ′
                 / , }ヽ、: , ,  `‐,/⌒'ー'‐'‐'‐',リ} ,!
                / / /  l丶、' : ,{,ゝ、‐r‐'ン-i/ , イ
              , イ  〈 /  |  `ヽ ':ヾ<Zェェェシ' ノ'
            , ィ‐ ' /   V!  l,   丶、' : : . , , : ノ´
         、. - '" , r 7l     ヽ'、 ',     `` ニ='"ハ, 丶
      ,. - '" _, ィ"´ ,/ |     ト、  '、     /  ,/ }  l 
   ,, -'" ,. - '"/    ,}      ',ヽ、 ヽ    ,ノ ,ノ 〉,ノ  ト、   ┼ヽ  -|r‐、. レ |
,, - '" ,, -'"  /      /      ', `ヽ. ',j  rァ' / {/!  `ヽ  d⌒) ./| _ノ  __ノ
3デフォルトの名無しさん:2007/06/09(土) 07:28:01
SSE3には対応していますか?
4デフォルトの名無しさん:2007/06/13(水) 01:55:17
MoveWindow()を使うとウィンドウの大きさや位置を変えることができますが、
大きさを変えるときにはウィンドウの左上が始点になっていますよね?

つまり、MoveWindow()だと左半分や上半分の表示はできても
右半分や下半分の表示はできないですよね?


この、右や下の半分だけを表示させるいい方法はないものでしょうか?
5デフォルトの名無しさん:2007/06/13(水) 02:03:48
何したいのか分からんけど、オーナードローしたら?
裏画面とか使って画像ロードして、一部切り出して描画。
6デフォルトの名無しさん:2007/06/13(水) 02:08:10
>>5 それってダイアログ相手でもできたっけ??
7デフォルトの名無しさん:2007/06/13(水) 02:23:07
あー、ダイアログか。
ボタンとかその辺の話?
空のダイアログに今のダイアログ貼り付けて、
子ダイアログの位置をマイナスにしてみたら?
8デフォルトの名無しさん:2007/06/13(水) 12:25:11
c:\program files\microsoft visual studio 8\vc\include\string.h(136) : warning C4002: マクロ '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX' に指定された実引数の数が多すぎます。
のようなエラーが100個くらいでるのですが、どうしたら直りますか?
お願いします
9デフォルトの名無しさん:2007/06/13(水) 13:13:16
再インストールしたらなおりました
原因を一応言っておくと、ライブラリーファイルを書き換えたのが原因ですか?
この間違えを防ぐために間違って書き換えないように書込み禁止にするほう方があれば教えてください
10デフォルトの名無しさん:2007/06/13(水) 13:16:06
Visual C++2005 を使い始めました。 プロジェクトの種類はCLR
テンプレートはWindowsフォームアプリケーション
を使っています。

フォームにピクチャーボックス1つとボタンを2つ配置しました。
1つ目のボタン(開始)をクリックすると、
ピクチャーボックスにグラフのようなものを書くようなプログラム
をつくりました。
ここまでは上手く動作しています。
次に、2つめのボタン(停止)で、
グラフの描写(For文で繰り返しているため時間がかかります)
を途中で一時停止させたいのですが、
グラフをすべて書き終えるまで、ボタンが押せる状態になりません。
どのような方法を使えばいいのか教えてください。
よろしくお願いします。
分かりにくくてすみません。
11デフォルトの名無しさん:2007/06/13(水) 15:05:45
>>10
どっかでスッドレとか言われてなかったっけ?
12デフォルトの名無しさん:2007/06/13(水) 17:35:26
>>10
Thread
13デフォルトの名無しさん:2007/06/13(水) 17:53:45
>>9
エクスプローラからファイルシステムの読み取り専用属性でも付けておけば?
14デフォルトの名無しさん:2007/06/13(水) 23:29:44
Visual C++2005 express editionを使ってます。

質問何ですがコントロールの配列化ってどうやるのでしょうか?

例えばボタンが2つあるとして
button1 と button2 を

button[0]とbutton[1]としたいのですが
よろしくお願いします。
15デフォルトの名無しさん:2007/06/14(木) 00:02:07
おまいら、こっちのCStringで休憩汁

ttp://www.lovehoney.co.uk/product.cfm?p=11481
16デフォルトの名無しさん:2007/06/14(木) 18:23:05

今までBCCを使っててVC++2005に乗り換えたのですが
コマンドラインでのWindowsアプリケーションの作り方がわかりません。
cl app.c とすると LNK1561 のエラーが出てEXEが生成されません。

#include <windows.h>
int WINAPI WinMain() { return 0; }

コードはこんな感じです。
後、brc32の様にアイコンをEXEに埋め込みたいのですが、
どの様な手順でやってけば良いのか全く分かりません。
検索ワードがダメなのか全く情報が出てこず…宜しくお願いします
17デフォルトの名無しさん:2007/06/14(木) 19:01:48
WinMainの引数が間違っている
俺が試したらレベル1でも警告出たんだが

リソースは、rc.exeでrcファイルをresへコンパイルした後、
(後からexeファイルに埋め込むBCCと違って)objをリンクするときに渡す
1816:2007/06/14(木) 19:26:33
>>17
ありがとうございます。
色々自分でやってみたのですが、こんなんになりました

cl app.c user32.lib
rc app.rc
link app.obj app.res user32.lib

MessageBox関数を使う為user32.libを入れたのですが
このコマンドをもっと綺麗な順番や、不必要な所をカットして頂きたいのです…
19デフォルトの名無しさん:2007/06/14(木) 20:18:56
>>18
コマンドラインにこだわるならMakefile作って
nmake実行するのがいいけど、
とりあえずcl.exeにファイル全部指定してみ
それでできないやつだけ別に実行すればいいかな
20デフォルトの名無しさん:2007/06/14(木) 20:21:27
>>18
あ、あとコマンドは、、、帰宅してからまた書くわ
21デフォルトの名無しさん:2007/06/14(木) 20:35:55
user32.libなどは、環境変数LINKに書いておけばよい
リンカ (link.exe)は、環境変数LINKの値も入力として読み込む。
http://msdn2.microsoft.com/ja-jp/library/6y6t9esh(VS.80).aspx

同様に、コンパイラは環境変数CLの値を読み込むので、
/W4 /Wp64あたりを指定しておくのがいい
22デフォルトの名無しさん:2007/06/14(木) 21:18:07
cl app.c user32.lib →たぶんexeができる
rc app.rc → res ができる
link app.obj app.res user32.lib →exeができる

cl はリンクもできるから
rc app.rc
cl app.c app.res user32.lib
でもいいな
2310:2007/06/14(木) 21:36:23
>>11、12
お返事が遅くなってしまい申し訳ございません。
スレッドを使う方法も検討したのですが、
初心者には敷居が高すぎて、挫折してしまいました。
でも、DoEventを使う方法で、希望通りの動作を得ることができました。
どうも、ありがとうございました。
24デフォルトの名無しさん:2007/06/14(木) 21:44:50
VisualStudio2005を手に入れました。
for文をやってるんですが、
空のコンソールプロジェクトでやってるんですが、
Studio.hがありません。><
どうすればいいですか。あ、自分で創れという破天荒な答えは間違いではないが却下しますよ。
25デフォルトの名無しさん:2007/06/14(木) 21:47:25
>Studio.hがありません。
無いのはどうやって確かめたの?
無いはず無いんだけどな
2624:2007/06/14(木) 22:03:34
>>25
ソリューションエクスプローラーでは、

+ソースファイル
+ヘッダーファイル
+リソースファイル

の3つのフォルダがあります。
ヘッダーファイルのフォルダには、Studio.h が無かったからです。
Studio.hだけでなく、何もないからです。
27デフォルトの名無しさん:2007/06/14(木) 22:04:41
Studio.hを下の内容で作れ
#include <stdio.h>
28デフォルトの名無しさん:2007/06/14(木) 22:08:55
C:\Program Files\Microsoft Visual Studio 8\VC\include\stdio.h
たぶんここにあるだろうけど
ソリューションエクスプローラーのヘッダは
自分が作ったファイルを置くとこだから、stdio.hはここには出ないよ
2924:2007/06/15(金) 08:35:55
え、あ。そうなんですか。
ユーザーが作ったものだけが
ソリューションエクスプローラーのヘッダファイルフォルダに
表示されるのですね。
3016:2007/06/15(金) 09:09:51
>>19-22
ありがとうございます!
「Visual Studio 2005 コマンド プロンプト」
からやってるのに %LINK% に何も入ってないのは仕様なのでしょうか…
どこのコマンドプロンプトからも利用出来る様にしたいのですが、
どの環境変数を設定すれば良いみたいなのを解説したサイトはないんでしょうか…
31デフォルトの名無しさん:2007/06/15(金) 11:59:05
>>30
必ず user32.lib をリンクするのであればいいけど
そうじゃないから入ってないんだろ。

自分でそうしたいなら、newvars32.bat を書き換えるか自分でbatを作るか
マイコンピュータのプロパティの詳細設定の環境変数にでも設定したら。
32デフォルトの名無しさん:2007/06/15(金) 19:54:32
必要なければリンカは無視するだけだから
常にuser32.libやその他インポートライブラリを入れておいても、
性能の低いPCだと処理時間が長くなるのが実感できるであろうこと以外実害はない
33デフォルトの名無しさん:2007/06/15(金) 22:40:30
無視するのは同名の関数がないときだ
同じ名前の関数が複数個所にあると
面倒なので、ふだんは入れない方がいい

すこししかコーディングしないなら不便はないかもな
34デフォルトの名無しさん:2007/06/16(土) 10:10:38
まあ必要なLIBを片っ端から環境変数に載せるなら
その環境変数設定バッチを作って切り替えるのがいいかもな
複数台PC使ってたり、人とやり取りするとき困るけど。

makefileをキチっと書くかIDE使うのがいいのでは
35デフォルトの名無しさん:2007/06/17(日) 19:18:52
すいません教えてください。
CBitmapクラスのメンバ変数にLoadBitmapしてリソースからビットマップを読み込んでいます。
この読み込んだビットマップのピクセルサイズを変更したいのですが
なにかいい方法はありますか?
よろしくお願いします。
36デフォルトの名無しさん:2007/06/17(日) 20:19:19
ピクセルサイズの変更って具体的に何をどうしたいの?
37デフォルトの名無しさん:2007/06/21(木) 09:56:18
C# では(言語仕様ではなくて Visual Studio の機能なのでしょうけど)
<summary> や <remarks> タグによってドキュメントをコードの中に
明示的に埋め込むことができます。

このような規格(?)は Visual C++ では定められていないのでしょうか?
38デフォルトの名無しさん:2007/06/24(日) 13:51:02
スタティックライブラリ(abc.libとします)をビルドしています。
abc.lib がデバッグ版のランタイムとリリース版のランタイムの
いずれともリンク可能にするような方法はあるのでしょうか?
それとも abc-debug.lib と abc-release.lib のように別々に
用意する必要があるのでしょうか?

たとえば abc.lib をリリース版としてビルドしてしまうと、
他のプログラム P から利用するに当たって、P を
デバッグ版としてビルドできません。abc.lib 内の
いくつかのシンボルは libcmt.lib を要求し、
P 内のいくつかのシンボルは libcmtd.lib を要求します。
39デフォルトの名無しさん:2007/06/24(日) 15:43:54
結局 libcmt.lib を無視させリンクしました。
40デフォルトの名無しさん:2007/06/24(日) 16:22:48
>>38
/Zl
msdn2.microsoft.com/ja-jp/library/f1tbxcxh(VS.80).aspx
41デフォルトの名無しさん:2007/06/24(日) 16:41:54
VC++6から移ろうと、VC2005Expressを落として入れたんですが
これって、新規作成したプロジェクトのみしかビルド出来ないのでしょうか?
VC++6では、組んだプログラム単体をD&Dで、F7ビルドという使い方をしてたため
これが出来なくなったとなるとかなり痛いorz
42デフォルトの名無しさん:2007/06/24(日) 17:00:07
>>41
いみがわかんねぇ〜
F7 はソリューション全体のビルドだよね。
関係ないと思うけど、 F5 でビルド&実行されるのは
スタートアッププロジェクトに指定されているプロジェクト。
43デフォルトの名無しさん:2007/06/24(日) 17:17:21
>>42
すみません、分かりづらいですねorz
VC++6ではCやC++のファイルを放り込めば、すぐにビルドの処理に持っていけます
VC++6ではF7がビルドへのショートカットキーです

VC2005Expressでは、VC++6見たいに、C++のファイルを放り込んでもメニューバーにビルド自体がないため、
ビルドの処理を実行できません。
新規プロジェクトを作成するとメニューバーにビルドが表示され、ビルドが実行できます
ですので、VC2005では一々プロジェクトを作成しないとビルドが出来ないのかと思い、質問させて頂きました。
44デフォルトの名無しさん:2007/06/24(日) 23:41:37
メモリーリーク検出についての質問なんですが、
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
とプログラム開始場所に書いて、

int *p = new int[100];
delete p;//delete[] p;が正しい。

こんなコードを書いたのですが、メモリーリークしてるはずなのに
検出されませんでした。
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
↑これって、万能じゃないんでしょうか?

よろしくお願いします。
環境は
visual c++.net 2003

45デフォルトの名無しさん:2007/06/25(月) 04:54:25
>>44
それでちゃんと開放はされている。
メモリリークはしていない。
ただ、delete[] を使ってない以上バグと言っていいだろう。

delete と delete[] の違いは、デストラクタを1つしか呼ばないか、全要素に対して呼ぶか、だ。
そして、全ての環境でそうだと保証されているわけではないけど、
デストラクタのある型を new した際には、実際に確保したメモリ領域の先頭に要素数を保存しておいて、
その次のメモリ領域を返してくるような場合がある。
もちろん、これはデストラクタを呼ぶ際のループで使われるわけだ。
この場合は開放すべきメモリの位置が new の返す値からズレてるので、
delete[] でなく delete を使ってしまうと、無効なアドレスが渡されたとしてエラーになる。
46デフォルトの名無しさん:2007/06/25(月) 05:02:34
今回はデストラクタのない型だったから
たまたまエラーが出なかっただけであって、
適当なデストラクタのあるクラスを使ってみたら
エラーになるはず(メモリリークじゃなくて、開放に失敗するというエラーだけど)。

その時、デストラクタで何かを出力するようにしてみ。
delete[] だと要素数分出力されて正常終了して、
delete だと1要素分しか出力されないでエラー終了すると思う。
全部違う値を出力するようにしておけば、
delete だと先頭の要素しかデストラクタが呼ばれてないことが確認できるはず。
47デフォルトの名無しさん:2007/06/25(月) 08:15:27
ついでに、前にある要素数を表示させてみたり、
アドレスをずらして delete してみたり、
色々やってみると面白いかと。
48デフォルトの名無しさん:2007/06/25(月) 11:47:58

.NET言語を来月から授業で使うんですが、.NEt言語というのは、
マネージ拡張C++を使う言語のことですか?
それともC++/CLIを利用した言語のことでしょうか?

Windows SDKやMFCってのは.NET言語と関係ありますか?
49デフォルトの名無しさん:2007/06/25(月) 12:31:59
VisualC++ってWindowsだけでしか動かせないんですか?
Macで簡単にフォーム作成したいんですけど、無理かなあ
50デフォルトの名無しさん:2007/06/25(月) 12:33:59
XCode と Interface Builder 使えば簡単にフォームは作れる。
51デフォルトの名無しさん:2007/06/25(月) 13:49:52
>>48
CLR で実行されるものならなんでも .NET 言語って呼べるんだろうけど、
Managed C++ はさすがにもう死滅しているんじゃないかな?
授業でやるというなら C++/CLI もしくは C# じゃないかなぁ。
52デフォルトの名無しさん:2007/06/25(月) 21:52:18
>>45-47さん、レスありがとうございます。
c++って、奥が深いんですね。
おっしゃるように実際にデストラクタの存在するクラスの配列をnewして、
deleteしたら、ちゃんとエラーが出ました。
疑問が解決し、スッキリしました。

本当にありがとうございました。
53デフォルトの名無しさん:2007/06/26(火) 10:36:11
VisualC++.NETって無料ですか?
54デフォルトの名無しさん:2007/06/26(火) 11:09:01
むりよう
55デフォルトの名無しさん:2007/06/26(火) 11:49:22
どっちやねんw
56デフォルトの名無しさん:2007/07/05(木) 13:37:10
Visual C++でスロットゲームを作成しようと思っているのですが、
リール表示の制御(上から下へ流れる感じ。)部分が思いつきません。
どなたか教えていただけませんでしょうか?
57デフォルトの名無しさん:2007/07/05(木) 13:49:38
流れてる絵も作って切り替えたら
58デフォルトの名無しさん:2007/07/05(木) 13:53:18
みためだけでよかったらIEのロゴみたいにアニメーションで
目を合わせるんなら落ち物ゲームみたいに実際に動かす
59デフォルトの名無しさん:2007/07/05(木) 14:35:26
y = 0〜399で回す
◇ <-- y = 0
★ <-- y = 100
☆ <-- y = 200
■ <-- y = 300
6056:2007/07/05(木) 14:40:01
ロジックがまったく思い付きません・・・orz
61デフォルトの名無しさん:2007/07/05(木) 14:43:32
アニメーション カウンターみたいなもんだろ
6256:2007/07/05(木) 15:06:40
PictureBoxコントロールにビットマップを読み込んで
スクロールさせるにはどうしたら良いでしょうか?
サンプルコードがあると助かるのですが・・・。
63デフォルトの名無しさん:2007/07/05(木) 18:37:25
はあ?
お前人の言ってること聞いてないのか?
64デフォルトの名無しさん:2007/07/05(木) 19:31:32
いくつか出てるのにそれが理解できないなら
自分がどこまで出来るのか書いたほうがいいぞ
65デフォルトの名無しさん:2007/07/12(木) 23:17:57
アク禁解けたので質問させて下さい。
VC++を使ってExcelのVBAから利用できるDLLを作りたいと考えています。
通常の関数についてはVC側でExportして、Excel側でdeclareしてやればOKだったのですが
オブジェクト(ってかクラス)についてはどうやればいいのでしょうか?

自分で少し調べたところ、COMコンポーネントという形にしてやればExcelから参照設定して set object で使えそうなのですが
肝心のCOMの作り方がさっぱりです。
どんなやり方でもかまいませんので、御存知でしたら教えてください。

環境は
 Win XP Pro
 VC++ 2005 Express
 Excell 2000
です。
よろしくお願いします。
66デフォルトの名無しさん:2007/07/13(金) 12:44:31
製品版買ってATLかMFCを使ってください。
67デフォルトの名無しさん:2007/07/21(土) 14:11:44
char *ptr = char[10];
で、10バイト(以上)確保されている事をプログラム内で確認できるAPIってありますか?

WinXP pro
VC++ Express Edition
です。
68デフォルトの名無しさん:2007/07/21(土) 15:44:29
そもそも10バイト以上確保されることは保障されてないか?
確保されている領域知りたいならstd::vector<char>でも使えば?
69デフォルトの名無しさん:2007/07/21(土) 18:20:11
>char *ptr = char[10];
>char *ptr = char[10];
>char *ptr = char[10];

???
70デフォルトの名無しさん:2007/07/22(日) 03:02:59
new が抜けたんだろう
71デフォルトの名無しさん:2007/07/22(日) 03:15:53
>>67
それってプログラム的にわかるっけ?
わかったら不便だからわかりやすいように隠蔽されるんじゃね?

マジで確保される領域は4バイトごととかあるんだっけ?
つまり10なら12確保される?とか?w

よくわからないのにテキトウなこと言う俺マジ外道w
72デフォルトの名無しさん:2007/07/22(日) 04:15:10
サイズを保存しておかなくても
後からサイズを取得できるか、という質問なのか?

non-POD 型なら配列の直前に配列の要素数を保存する処理系も多いが、
POD 型の char でもそうする処理系は知らないし、
そもそもそういう手段なら vector<char> 使え。
73デフォルトの名無しさん:2007/07/22(日) 04:28:27
HeapWalker
74デフォルトの名無しさん:2007/07/22(日) 05:48:37
使って問題が起きても責任は持たん。
ttp://sund1.sakura.ne.jp/uploader/source/up8618.txt
75デフォルトの名無しさん:2007/07/22(日) 06:02:06
これにスレッド安全性と自動解放機構をつけてアロケーターとデリーターを指定できるようにすれば
十分使い物になるとおもうけどそんなことするなら結局ただのスマートポインタベクターになるだけか…
76デフォルトの名無しさん:2007/07/22(日) 09:58:05
>>67
これでは駄目?

if(ptr != NULL)
{
// 10byte確保されている
}
77デフォルトの名無しさん:2007/07/22(日) 10:04:50
ptr = new char[10]だったら、
メモリ確保できるか、さもなくば例外を投げるのだから意味がない。
もちろんVC6なんかは別だけど。
78デフォルトの名無しさん:2007/07/22(日) 18:50:05
IEで使用するActiveXを作成しようと思っています。
開発機では問題ないのですが、それ以外のPCだと
エラーとなってしまいます。
開発環境
Win XP Pro
.NET 2002 VC++(Microsoft Development Environment 2002)
ocx, dllのどちらでやっても同じエラーとなってしまいます。
とりあえず、ocxでやった場合の手順です。

1.新規プロジェクトの作成 → Visual C++ プロジェクト → MFC ActiveXコントロール (名前:test)
2.デフォルトでウィザードを終了
3.クラスビュー → testLib → _Dtestにメソッドを追加 (名前:add)
4.testCtrl.cppに処理を記述

LONG CtestCtrl::add(LONG a, LONG b)
{
Afx_MANAGE_STATE(AfxGetStaticModuleState());

return a + b;
}
5.ビルドを実行
6.test.ocxをWebサーバに配置
7.HTMLでOBJECTタグを使ってインストール → JavaScriptでメソッドを呼び出し
(ClassIdはtest.idlの最下部のuuidを使用)

現象としては開発機でビルドした後にはJavaScriptでメソッドを呼び出せますが
別のPCや開発機でもビルド−消去を実行するとエラーとなってしまいます。
根本的にやり方が違っているのでしょうか?
ちなみにOBJECTタグでDownloaded Program Filesには正常にインストールされています。
よろしくお願いします。
79デフォルトの名無しさん:2007/07/22(日) 19:05:37
さあ
80デフォルトの名無しさん:2007/07/23(月) 00:12:51
質問させてください。
VC++2005でコールバック関数を実現しようと思っています。
それで関数ポインタを実装しようとまずは思ったのですが、
コンパイルエラーになります。

void main(){
int (*myf)(int, int);
myf = func; // この行でエラー。関数呼び出しには引数がありません、という
// エラーになる
}

int func(int x, int y)
{
return x * y;
}

どのように修正すればよいでしょうか?
81デフォルトの名無しさん:2007/07/23(月) 00:34:28
static int func(int x, int y)
{
return x * y;
}
int main(){
int (*myf)(int, int);
myf = func; // この行でエラー。関数呼び出しには引数がありません、という
// エラーになる
return 0;
}

82デフォルトの名無しさん:2007/07/23(月) 02:03:22
プロトタイプが必要なのは一緒だぜ
83デフォルトの名無しさん:2007/07/23(月) 03:10:38
>>82
>81はプロトタイプ宣言を(定義そのものによって)省略できるケース。
8481:2007/07/23(月) 09:17:03
>>83
いや、、、>>79へのレスなんだ、すまん
呼び出し時もポインタへの入力の時も
必要なのは一緒ってこと
8584:2007/07/23(月) 09:18:14
うわ、、レス番ずれた。察してくれ
86デフォルトの名無しさん:2007/07/24(火) 10:55:56
LSI-Cが使われなくなった理由を教えてください。LSI-Cを使う参考書を
買おうか迷っています。
87デフォルトの名無しさん:2007/07/24(火) 10:59:15
まず16bitということ。
試用版の制限が大きすぎること。
他にもっといいものが無料で手に入るようになったこと。
88デフォルトの名無しさん:2007/07/24(火) 11:21:25
補足しておこうか。
・intが16bit
そのお蔭で例えば一日の秒数をカウントするだけでオーバフローしてしまう。
だからと言って、longを使うと割り算も16ビット演算で実装されているからのんびりしているし。
・DOSアプリ
ロングファイル名を適切に扱うI/Fを持っていないので、長いパスを与えると
誤動作しかねない(確かした)。
・スモールコード、スモールデータモデル限定
64KiBを超えるデータを扱う標準関数がない。メモリ確保もできなきゃコピーもできない。
例えば、2chのスレッド一本処理できない。
・関数サイズ制限
関数を(恐らく)32KiBの作業空間でコンパイルしようとする。このため、ちょっと関数が大きくなると音を上げる。
#まぁ、初級者には関数分割を勉強するいい機会にはなるが。
・バグがある
配布されている試食版には、少なくともコンパイラのバグとライブラリのバグがあることが判っている。
#勿論それは、製品版では直っている筈だが……
89デフォルトの名無しさん:2007/07/24(火) 11:38:27
よく分かりました。昨日本屋で参考書を買おうとページをめくってコンパイラは
なにか調べたら、LSI-Cだったので買わずに帰ってきました。
もっともその本が出版されたのは2004年でしたが。
90デフォルトの名無しさん:2007/07/24(火) 12:09:30
LSI-Cの話題はスレ違いだと気づいてくれ。
91デフォルトの名無しさん:2007/07/24(火) 13:08:27
>90 でも、C++の前は大分お世話になった筈でしょう。
  供養の意味でも思い出してやってはくれませんか。
92デフォルトの名無しさん:2007/07/24(火) 13:17:13
DOS 時代は Turbo C++ しか使ったことない。
93デフォルトの名無しさん:2007/07/24(火) 13:23:17
>88 それにしては大分お詳しいじゃありませんか、お客さん。
9488:2007/07/24(火) 13:25:30
そりゃぁあんた、kmoriさんやpnoriさんにバグ報告のメールを何度も出したからねぇ。
ってことで、私ゃ>92じゃないよ。
尤も、TurboCも使ってたけど。
#そっちはそっちで、やっぱりバグ報告してたけど。
95デフォルトの名無しさん:2007/07/24(火) 13:28:32
TurboCはコンパイル激速だったっけ
でも、CodeView使ったらやめられんかった
その流れでVC++に至る
96デフォルトの名無しさん:2007/07/24(火) 21:21:15
>>78
必要なDLLが足らないんじゃないの?regsvr32で登録できた?
97名無しさん@そうだ選挙に行こう:2007/07/29(日) 11:32:44
Turbo Cは何度か使わせてもらったけど、
アレは初心者にとっつきやすくて勉強にもなった。
98デフォルトの名無しさん:2007/08/04(土) 18:04:45
質問です。
VC++って、一つのファイルをコンパイルするごとに、
いちいちプロジェクトつくらないといけないんですか?

例えば、Cygwinだと、cファイルが一つのフォルダにいくつあっても、
個別にコンパイルできるけど、
VC++の場合は、一つだけcファイルをコンパイルするのに、
一つのフォルダをプロジェクトで用意する必要があるんですか?

C言語の学習中なので、そんなに長いプログラムは書かないかつ沢山ファイルをつくるんですが……。
99デフォルトの名無しさん:2007/08/04(土) 18:19:32
>>98
cygwinでもmakeコマンドだけで済まそうと思ったら個別にmakefileが要る。
VSでもプロジェクトを省略したいのなら、同じようにコマンドラインから直接コンパイラを起動すればいい。
100デフォルトの名無しさん:2007/08/04(土) 18:38:27
プロジェクトをたくさん作って
メニュー→ビルド→バッチビルド
からも一気にできる

前の御馬鹿な担当者がモジュールを全部別プロジェクトにしてやがったときに重宝した
101デフォルトの名無しさん:2007/08/04(土) 18:53:36
それは便利だけど、98は一気にビルドしたいわけではないように見えるよ。
102デフォルトの名無しさん:2007/08/04(土) 20:00:46
必要なソースだけをプロジェクトに加えてビルド、
要らないソースはプロジェクトから外す、
って感じでやればいいんじゃね?
ソース単位でコンパイルしない設定もあるけど面倒だし。
10398:2007/08/04(土) 21:11:21
質問に答えてくれた方々どうもありがとうございました。
>>102の方法でやってみたいと思います。

もうひとつだけ質問を……。
エディタのように、TABや空白したことを表示させるのは、どうすればいいんでしょうか?
設定をいじろうとしましたが、みつかりませんでしたorz
104デフォルトの名無しさん:2007/08/04(土) 21:24:12
メニュー > ヘルプ
105デフォルトの名無しさん:2007/08/04(土) 21:58:10
ヒント : スペースの表示

この機能、MSDNだとメモでしか説明されていないように見える。
まあ、メニュー色々弄ってれば、すぐに見つかるのだろうけど。
106デフォルトの名無しさん:2007/08/04(土) 23:23:42
メニュー > ヘルプ は
MSDNじゃないんだけどね
107デフォルトの名無しさん:2007/08/05(日) 00:17:14
>>105
ありがとうございました。
編集メニューにあったとは……。
108デフォルトの名無しさん:2007/08/05(日) 01:46:40
行番号はVC6だと無理で.NET以降だと表示できた希ガス
と俺メモw
109デフォルトの名無しさん:2007/08/05(日) 14:46:15
VS.NET 2002をインストールして以降、
Windowsのシャットダウンに数分かかるようになりました。

いまは2002はアンインストールして2003をインストールしていますが、
症状は変らずです。

以前に、
デバッグのための機能が云々で設定がどうこう
というような話を聞いたような気がするのですが、思い出せません。

VS.NETの設定の問題なのでしょうか。
110デフォルトの名無しさん:2007/08/05(日) 14:48:17
VS.NETの設定の問題
111デフォルトの名無しさん:2007/08/05(日) 15:28:01
112109:2007/08/05(日) 19:45:25
>>110
設定のどこが問題なのですか。

>>111
ありがとうございます。

イベントログにUserenvのID:1000 (レジストリファイルをアンロードできません。)が出ていて、
自力で調べるヒントがあったのに、放置してました。

さっそく、UPHCleanを入れてみたところ、

> The following handles opened in user profile hive ATHLONMP\Administrator (S-1-5-21-484763869-1757981266-682003330-500) are preventing the profile from unloading:
>
> mdm.exe (664)
> HKCU (0x19c)
> cannot get call stack data

と出ました。

VS.NETのデバッガを使わないでシャットダウンすると遅くならなかったし、
Machine Debug Managerサービスを停止してからシャットダウンすると遅くなりませんでした。

ログオフ時にサービスを止めるスクリプトを走らせるように仕込んで対処することにしました。
113デフォルトの名無しさん:2007/08/07(火) 23:46:38
Win32コンソールでデバックするときに、ウィンドウがでないときがあるのは何で……?
特にエラーも警告もでてないのに……。
114デフォルトの名無しさん:2007/08/07(火) 23:51:00
他のウィンドウの下に隠れているというオチだったら許さんぞ。
115デフォルトの名無しさん:2007/08/07(火) 23:54:33
>>114
いえ、違います。
全くでない時と、一瞬だけパッとでて、消えるときもある。

ブレークポイント設定しても、なぜかでないorz
でるときは、普通に出る。
116デフォルトの名無しさん:2007/08/07(火) 23:59:45
ブレイクしている時点でDOS窓でていない状態なんてありえたっけ?
117デフォルトの名無しさん:2007/08/08(水) 00:01:59
mainのはじめの方で何かまずい処理してんじゃないの?
118デフォルトの名無しさん:2007/08/08(水) 00:09:50
ステップ実行してみたけど、ちゃんと問題なく動いてるようだ……。

試しに、ちゃんとウィンドウがでて、問題のなかったプログラムをデバッグしてみたら、
でなくなってしまってた。

設定なにもいじってないのに何故だorz
Escキー押してるとかそういうオチじゃないんだぜ……。
119デフォルトの名無しさん:2007/08/08(水) 00:14:06
誰か知ってたら教えてください。

VC6++ で新規プロジェクトを複数作成したいのですが、
msdev.comのコマンドやVSのマクロなどで以下を自動化は可能でしょうか?

プロジェクトの新規作成 → ビルド設定

お願いします。。。
120デフォルトの名無しさん:2007/08/08(水) 00:19:29
あ、でた。
そしてまたでなくなった。

なんか出たり、出なくなったりする……PC自体は安定してるんだが。
このファジーな不具合……MEを使ってたときを思いだす。
121デフォルトの名無しさん:2007/08/08(水) 00:28:22
>>120
ソースは晒せないの?
122デフォルトの名無しさん:2007/08/08(水) 00:37:26
>>121
ほい。番兵法の勉強してたんだぜ。
http://www.vipper.net/vip299920.c
123デフォルトの名無しさん:2007/08/08(水) 00:40:54
すまね。間違ってけしちゃった。
http://www.vipper.net/vip299926.c
124デフォルトの名無しさん:2007/08/08(水) 01:01:11
別に、コマンドプロント開いたら、何故か治った。
そして、コマンドプロント消しても大丈夫だった。
d。
125デフォルトの名無しさん:2007/08/09(木) 00:49:32
119です。
自己解決しました。スレ汚し失礼しましたー(^^;;
126デフォルトの名無しさん:2007/08/10(金) 01:36:28
VC++2005(MFCアプリ)でアクティブ画面(自画面)
のプリントスクリーンボタンを作りたいのですが
何かいい方法ってありますか?やさしく教えてください。
127デフォルトの名無しさん:2007/08/10(金) 08:19:41
VC6++でMFCアプリを作ろうとしていて、
ボタンをクリックした際にボタンのキャプションを書き換えたいのですが、
その際に&を含む文字列を表示させたい場合は渡す文字列を
&&と表記するしかないのでしょうか?
SS_NOPREFIXのような指定はできないのでしょうか?
128デフォルトの名無しさん:2007/08/10(金) 08:41:05
>>126
http://www.codeproject.com/cpp/sendkeys_cpp_Article.asp
これでAlt+PrtScを再現すればアクティブウィンドウのプリントスクリーンをクリップボードにコピーする
あとはクリップボードから読み出してファイルに保存するなり何なりすればいい
129デフォルトの名無しさん:2007/08/10(金) 09:07:51
>>126
何が問題なのか明確に書いてほしい。

特定のウィンドウの見た目のビットマップを取得したいということであれば、
そのウィンドウのデバイス・コンテキストからBitBltなどでコピーすればいいと思う。
130デフォルトの名無しさん:2007/08/14(火) 09:21:03
_beginthreadで作ったスレッドがreturntかなにかで終わる前にPostQuitMessageでプログラム自体を終了させると
スレッドも動かなくなるけど、こういうスレッドの非正規終了(?)が直接の原因でメモリリーク起こしたりとかしない?
131デフォルトの名無しさん:2007/08/14(火) 10:26:30
>>130
プロセス終了時にはすべてのハンドルは自動的に解放されるので、
メモリリークを起こしたとしてもたいした問題になることはないと思う。

もちろん、スレッド内でファイルを書き込みオープンのままフラッシュしてなかったり、
通信してたりすれば話は別なので、基本は後処理をしっかりやるべき。
132デフォルトの名無しさん:2007/08/14(火) 10:39:58
OSが何とかしてくれるとは言っても、
そこにバグがある可能性もあるので、
リソースの後片づけは頑張ってすべし。

プロセスのメインスレッドが終了する前に、
他のスレッドに終了しろと指示を出して、
他のスレッドが終わるのを待つとかしてさ。

COMのアウトプロセスサーバを使っていて、
循環参照になっている場合には、
どうもヤバそうな気がするよ。
133デフォルトの名無しさん:2007/08/14(火) 11:20:00
まぁ、メインスレッドが死んだ後もサブスレッドが生きていればどってことはないけどな。
#それはそれで別の問題が発生するわけだが。
134デフォルトの名無しさん:2007/08/14(火) 15:07:01
質問に答えてくれてありがとう。
135デフォルトの名無しさん:2007/08/16(木) 22:03:36
コンパイラのオプションの/EHsと/EHaの違いについて教えてください。

非同期よりも同期のほうが処理が軽いがメモリリークを伴う
という解釈でいいのでしょうか。
136デフォルトの名無しさん:2007/08/16(木) 22:29:46
単に構造化例外を処理するかどうかってことじゃないの

余分に例外を処理をしている方がその分遅くなる。
逆に例外を処理しないほうは例外が処理されないわけなので、たぶん落ちる。
リークってのは単なる副作用の1つでは。

Microsoftが何故あえて同期/非同期って言い方をしてるかよく分からないけど、
少なくともマルチスレッドとかそういうのとは全然関係ないので、
この言葉に変にとらわれないほうがいいと思う。
137デフォルトの名無しさん:2007/08/16(木) 22:47:37
同期例外は、throw句もしくは関数呼び出し先で発生すると決まっているが、
非同期例外はそれ以外でも発生しうる例外、ってことらしい。
アクセス違反とかは、もろにこの部類だな。
138デフォルトの名無しさん:2007/08/16(木) 22:50:47
なるほどそういう意味か。
だとすると構造化例外は確かにすべて非同期ってことで納得。
139135:2007/08/16(木) 23:02:19
なるほど。

試しに
*(int*)NULL = 0 ;
したとき、
/EHsではcatchできず、
/EHaではcatchできました。

http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclang/html/_core_Exception_handling.3a_.default_synchronous_exception_model.asp
には、
> Catching hardware exceptions is still possible with the synchronous model.
と書かれていたんだけどなぁ・・・

メモリリークを伴うと思ったのは、
> Catching hardware exceptions is still possible with the synchronous model.
> However, some of the unwindable objects in the function where the exception occurs may not get unwound, if the compiler judges their lifetime tracking mechanics to be unnecessary for the synchronous model.
と書かれていたからなんですけど、catchできないならメモリリークどころではないですよね。
140デフォルトの名無しさん:2007/08/16(木) 23:31:24
というか、それ、解説に/GXって書いてある時点で古い・・・
141135:2007/08/17(金) 00:01:50
>>140
すみませんVC7.1を使っていることを書くべきでした。

/EHsの場合
最適化を切っている場合には例外のためのコードが生成されるのでcatchできる。
最適化している場合には例外のためのコードが生成されないのでcatchできない。

む〜。
142デフォルトの名無しさん:2007/08/17(金) 00:31:30
143デフォルトの名無しさん:2007/08/17(金) 15:20:23
>>142
素晴らしい。

> According to the C++ standard, both programs produce undefined behaviour.

C++標準化委員会の連中のセンスって、よくわからんなぁ。

ハードウェアの仕様には口出ししないという綺麗事なのか、
議論がまとまらないので先送りしているのか、
わからないけどさ。
144デフォルトの名無しさん:2007/08/17(金) 15:29:23
マイクロソフトのセンスも、よくわからない。

IDEの設定の選択肢には/EHscの有無しかない。
/EHaを手で設定してやればいいというが、
選択肢に/EHaも用意してほしかった。
145デフォルトの名無しさん:2007/08/17(金) 15:38:15
清く美しく正しくコーディングすれば、ポインタ変数に不正なポインタがセットされた状態になることは、ありえない。
よって、メモリアクセス違反が発生するのは明らかにバグであり、バグのあるプログラムを騙し騙し動かすべきではない。
ということなんだろうなぁ・・・
146デフォルトの名無しさん:2007/08/17(金) 22:44:56
パフォーマンスよりも安全性をとって/EHaをデフォルトにすべきなのに、
どういうわけだか、/EHscをデフォルトにするマイクロソフトってステキ。
147デフォルトの名無しさん:2007/08/18(土) 00:47:23
全く想定していない例外を下手にハンドリングするくらいなら、
さっさと自爆しろとか思うのは俺だけ?
148デフォルトの名無しさん:2007/08/18(土) 01:22:23
不正なポインタにアクセスする状況ってのは、すでに一貫性がズタズタだものな。
149デフォルトの名無しさん:2007/08/18(土) 02:33:25
ところでコンパイラオプションなんて触るとろくなことにならなくね?
Libとかプロジェクト同士でコンパイラオプションが一致してないとエラーでるっしょ?w
これ知らんでLibだけひょいって渡されるとすげー困るよね
外観でデバッグ情報の有無とかごちゃごちゃしたの一致させるのすげームズイしね
150デフォルトの名無しさん:2007/08/18(土) 05:05:25
スコープの
::
ってなんて読むの?
151デフォルトの名無しさん:2007/08/18(土) 05:09:12
コロンコロン
152デフォルトの名無しさん:2007/08/18(土) 05:11:59
スコープ決定演算子
153デフォルトの名無しさん:2007/08/18(土) 05:26:43
今はVC6.0しかできません。
守備範囲を広げるため使える言語を増やしたいです。

Java
C#
C++/CLI
VB

次にやるとしたらどれがいいですかね?
154デフォルトの名無しさん:2007/08/18(土) 11:42:13
とりあえず、
>C++/CLI
でなければどれでもいいよ。 
155デフォルトの名無しさん:2007/08/18(土) 12:12:08
スコープ解決演算子じゃなかった?
156デフォルトの名無しさん:2007/08/18(土) 16:49:41
scope resolution operator
157デフォルトの名無しさん:2007/08/18(土) 17:09:38
CreateSolidBrushで色を指定してhBrushを作れるみたいだけど、色を変更する時はどうするの?
アニメーション作ってるんだけど、各フレームで色を変えるときに一々DeleteしてからまたCreateするの?
あとageておく。
158デフォルトの名無しさん:2007/08/18(土) 17:18:23
>>157
単色ブラシなら、GetStockObject(DC_BRUSH) と
SetDCBrushColor の組み合わせでできる
159デフォルトの名無しさん:2007/08/19(日) 03:27:27
MFCとかATLってこれからマスターする価値ありますか?
ちなみに今はMFCは多少はできます。
自分的には肌が合わない気がします。
WIN32APIそのままの方がずっとわかりやすいです。
ATLはまったくやったことないです。
160デフォルトの名無しさん:2007/08/19(日) 03:39:43
ウィンドウアプリケーションとか作るなら生のC++よりはMFC/ATLが断然便利。
MFCとATLの比較なら、ATLがまし。

今からやる価値があるかどうかは人による。
ネイティブC++の世界でもう少し頑張るつもりならATL覚えてみても
損はしないと思う。
161デフォルトの名無しさん:2007/08/19(日) 09:29:36
VC++6.0で、一度作ったプロジェクトを次回起動後、どうやったら開けるんでしょうか?
162デフォルトの名無しさん:2007/08/19(日) 10:57:32
拡張子 dsw を開く
163デフォルトの名無しさん:2007/08/19(日) 11:15:24
何気にVCはコツがいるなw
WordやExelみたいにブツが1つじゃない上に
初回閉じたらどこに保存したかわからなくなるからなw

ちゃんとプロジェクト作成時にフォルダのパスを確認しておいて
フォルダまるごとセットで扱う必要があるぜ
164デフォルトの名無しさん:2007/08/19(日) 11:24:21
>>162 >>163
ありがとうございます。一度覚えれば簡単ですが、なんとも初心者にはとっつきにくいですね・・・
165デフォルトの名無しさん:2007/08/19(日) 12:36:12
ATLってCOMのためのもので、GUIまわりは未完成もいいところで話にならない
かつてそう聞いたのですが、使えるところまで進化したのですか。
WTLはどーなったんですか?

wxWidgetsはどーですか。
166デフォルトの名無しさん:2007/08/19(日) 12:46:06
>>158
遅くなったけど、ありがとう。
167デフォルトの名無しさん:2007/08/19(日) 17:55:45
>>165
ATL/WTL Part5
http://pc11.2ch.net/test/read.cgi/tech/1155951708/

つい最近、数年ぶりのWTL8.0が出た。
Vistaで追加された機能にも対応し始めていて、割と面白そうだ。
168デフォルトの名無しさん:2007/08/19(日) 21:01:02
とりあえず、ATL/WTLは超初心者が手を出すライブラリじゃないと思うが・・・・
169デフォルトの名無しさん:2007/08/19(日) 21:04:35
MFCしか使えない人間が生まれるよりはマシ。
170デフォルトの名無しさん:2007/08/19(日) 21:06:40
ATL/WTLは超初心者が手を出すライブラリだが?
理解できない脳味噌の奴を除いて
171デフォルトの名無しさん:2007/08/19(日) 21:18:17
C++とwin32でプログラミング初めて一ヶ月の方にも
お勧めのWTL、WTLでございます。
172デフォルトの名無しさん:2007/08/19(日) 21:23:47
>>170
まぁ使える奴が増えることはWTL使ってる俺としてはうれしいけどね
MFCのソースを全部読むよりは簡単だし
テンプレートの使い方も覚えるし
でも、ATLを使って製品になるようなActiveXコントロールを作ってるかと
問われるともう3年くらい作ってないのも事実
俺自身は、今でも簡単なツール作るときにお世話になってるが
173デフォルトの名無しさん:2007/08/20(月) 08:50:56
ExpressEditionでウィンドウつくると、WinMainが_tWinMainとかになってるんだけど、何が違うの?
174デフォルトの名無しさん:2007/08/20(月) 09:52:46
>>173
WinMainはマルチバイト(ANSI)専用、wWinMainはUNICODE専用。
_tWinMainにしておけばコンパイル時のオプションに従って、いずれかを適切に選択してくれる。
175デフォルトの名無しさん:2007/08/20(月) 13:34:48
>>174
なるほど。でも新しい仕様っぽいから、古いVC++だと認識しなさそうですね。
176デフォルトの名無しさん:2007/08/20(月) 13:43:59
VS6にはなかった気がする
177デフォルトの名無しさん:2007/08/20(月) 15:50:23
VC6付属のPlatformSDKになかったら、PlatformSDKだけ新しくすればいい。
それでもなければ、自分で#defineすればいい。

でもさ、古いVCなんて相手にするだけ無駄だと思うけどなぁ。
既存のVC6で作られたソフトの保守なら仕方ないけれども、
新規に作るものをVC6で作るのは、どうかと。

VC6付属のSTLはバグが多数見つかっているし、
コンパイラの標準への準拠度は低いし。
178デフォルトの名無しさん:2007/08/20(月) 17:21:26
.NETにも頼らず、OSもしばらくはXPでというなら
VC++6.0(IDE) + VC++Toolkit2003 のコンビネーションは
結構イケてる組み合わせと思う。
179デフォルトの名無しさん:2007/08/20(月) 17:55:45
VC6のIDEから、VC7.1のコンパイラ&リンカを使ってみたら、デバッグ情報に互換性なくてダメだったよ?
どーせVC7.1のコンパイラは遅いので、VC6のIDEを使う意味は薄いのだが。
180デフォルトの名無しさん:2007/08/20(月) 22:46:27
VC6・MFC無しで、他人が書いた既存のプログラムを改修しようとしています。
そのプログラムはいくつかのモジュールからなり、それぞれEXEだったり
DLLだったりサービスだったりISAPIだったりします。
で、各モジュールまたがって処理を追いたいと思い、標準出力に出すコードとか
ファイルに出すコードとかを挟んで、そこを通ったことを確認しようとしても、
出力されていませんでした。
出力されてないのが、実行ファイルのパスか何か間違ってて通っていないだけなのか、
サービスとかISAPIとかいう特殊な実装が原因なのかがわからない状態です。
そこでお聞きしたいのですが、どんな実装だろうとこれを呼べばダイアログか何か出て、
通ったか通ってないかが間違いなくわかるものって無いでしょうか?
assert.hのassertかなぁと思って書いてもみたのですが、走らせてみてもうんともすんとも言わず
よくわからない状態です。
ラインデバッグもISAPIとかの場合どうすればいいのかよくわからず、とりあえず上記のような
ことをして、そこを通っているかどうかが知りたいです。
よろしくお願いします。
181デフォルトの名無しさん:2007/08/20(月) 23:02:22
>>180
口ぶりからして、お前さん、プロだね?
手に負えない仕事を請けた時点でアウト。

正直に自分のスキルでは無理だと言って断れ。
さもなくば辞表出して逃げ出すか。

その程度のスキルで、そういったものに手を出すと、大変なことになる。
182デフォルトの名無しさん:2007/08/20(月) 23:08:25
>>180
181に賛成
派遣だったら即逃げ、正社だったら上司に相談
個人だったらPG辞めるべき
一つ教えておいてやるが、ソースを引き継いでメンテできる奴は
長い経験と、広い知識と、才能が必要
183デフォルトの名無しさん:2007/08/20(月) 23:23:04
前任者に聞けばいいじゃんか。
どーやってデバッグしてたの? と。

聞けない状況にあるなら、
他にも多数の問題が発生すると思われ。
184デフォルトの名無しさん:2007/08/21(火) 00:19:11
本質的なことは>>181>>182のとおりとして・・・

とりあえず、ごちゃごちゃになってるプロジェクトの整理からはじめるかな?
EXEやDLLがごっちゃになってるのも変な感じだし、そいつらも一緒に
デバッグトレースしなきゃいけないなら同じワークスペースに入れちゃえばいいし・・・

そういったことが出来ない、難しい環境であれば外部モジュールの呼び出し箇所を
限定、まとめるような作業をしたりすればいいのかな?
185デフォルトの名無しさん:2007/08/21(火) 00:25:51
>>184
十分に理解していない人間が、
コードをいじくり回すことが、
いかに危険なのか、
わかっていないな。

あんた、プロはプロでも、詐欺のプロか?
186デフォルトの名無しさん:2007/08/21(火) 00:31:05
>>180
標準出力に出そうとするからわかんねーんだ。
Win32APIの

MessageBox()
とか

CreateFile()でファイル出力してみる。

俺だったら、勤め人だろうが個人経営だろうが
仕事が来た時点で「それいくら(で請け負ったの)?」
と、聞き返すけどな。

改修だったら、最低でも解析料込みで月150万、実費もらうけど。
一から作り直すなら月100万(設計+PGをMIX)。何ヶ月かかるかわからんけど。
187デフォルトの名無しさん:2007/08/21(火) 00:36:51
>>186
無責任なことするなよ。

中途半端に教えるのは罪だよ。
188デフォルトの名無しさん:2007/08/21(火) 00:47:48
>>184
理解していない人間から見て、ごちゃごちゃになってるだけで、
それなりに理由のある構成だという可能性も残っているぞ。

なぜ、その案件を断らない。
まったくやったことのないことをやるのは、やたらと時間がかかるから儲からないぞ。
189デフォルトの名無しさん:2007/08/21(火) 01:06:41
>>180
サービスとかISAPI(これもサービスだけど)の場合、コンソールやデスクトップは有効でない
場合が普通なので、コンソール出力やメッセージボックスは不可。
有効なのはファイルやイベントログで、安直なのはファイル。

しかし、ファイルに出すコードを挟んで試してダメというのはいただけない。
本当に想定のルートが通っているかを確認するのが先決。
まず、そもそもプロセスが正しく起動していること、次にプロセス毎の処理の
先頭でファイル出力を行ってファイルが書き出せること、の2点を確かめることを
お勧めする。あとはそれからの話。

前提としてどのファイルがどのプロセスに関連付けられて、どのように起動されるかってのは
理解できてるんだよね。
190デフォルトの名無しさん:2007/08/21(火) 01:07:40
>>189
やめろって。

最後まで責任持って教えるのか? 尻ぬぐいもしてやるのか?
191デフォルトの名無しさん:2007/08/21(火) 01:12:34
所詮くだすれなので、責任なんて必要ないんじゃね?気楽にいこーぜ
192デフォルトの名無しさん:2007/08/21(火) 01:18:04
中途半端に教えて、引き返せる限界のポイントを越えさせて、越えた途端に突き放すのも一興か。
193デフォルトの名無しさん:2007/08/21(火) 01:55:21
うーん、危険なのはいつまでも理解しようとしないまま行き当たりばったりで
開発を続けることであって、現状で十分な知識がない作業が上から降ってくるのは
珍しくもないと思うけどなあ。
もっとも調査の時間が十分にとれないのも珍しくなくて、だから厳しいわけだけど。

てか、仕事を受けるとき、自分に断る権限があるなんて、みんなすごい恵まれた
環境にいるんじゃないの?
194デフォルトの名無しさん:2007/08/21(火) 02:10:15
>>193
> いつまでも理解しようとしないまま

これが間違い。

理解しようとする
のではなく、
理解する
ことが必要。

> 現状で十分な知識がない作業が上から降ってくるのは珍しくもないと思うけどなあ。

2chに助けを求めている時点で、不十分っていうレベルではないと思う。

> てか、仕事を受けるとき、自分に断る権限があるなんて、みんなすごい恵まれた
> 環境にいるんじゃないの?

上の責任だって言うのなら、まぁ、いいんじゃない?
受けるかどうか判断する人が、判断の責任を負うのだから。
195デフォルトの名無しさん:2007/08/21(火) 05:50:12
でも、正直、無理だと思うね

dllとかexeとか変なスレッドの使い方(並列動作?)狙って
dll化exe化してる場合はもうどうしようもないと思う

組んだ奴は悦に言ってるかもしれないけど
これ以上保守不能なもんはねぇと思う

これ、組んだ奴がみつからないときは素直に逃げたほうがいいと思う

前にやったときはデバッガで追うなんてこともできなかったし
何がどう絡んでるのかさえ不明だった
ブレークポイントも全く止まらないし誰からどう呼び出されてるかもわからないし
複数VCを起動するわけにもいかず死んだw

データ(インスタンス)はどういう風に動くのか?
そもそもどういう構造で動いてるのか?

とか前の担当者から聞いたって理解するの難しそう・・・
(大抵、前の担当者なんていないんだよなw・・・orz)

結局、どういう動作してるのかもわからず派遣先契約切れってのが
俺がやったときの話w(ちなみに富○通・・・w)
196デフォルトの名無しさん:2007/08/21(火) 11:05:23
こういう問題って難しいんだよね
経験したことある奴なら、絶対に逃げるパターンだよ

一番怖いのが、大した管理が行われていない会社で
ソフトやり始めて2~3年くらいの人間が作ったソース
プログラムがわかって来て、自分主導で組み始めて、新しいことにチャレンジして
出来てみたら、本人しか理解できないようなものが出来上がる
そして、製作者は仕様書、設計書を残さずドロン
客に納めてた日にはもう目も当てられない
何も知らない若者を勉強のためとか言って丸め込んで解析させようとする・・・

あああ、怖ぇえええ
197デフォルトの名無しさん:2007/08/21(火) 11:41:53
なんでみんなそこまで意見がそろってるんだよw

前任の担当者がいないなんて普通だし(いれば作業なんて回ってこない)、
サービスIなんかだと普通のデバッグとは異なるので、最初やり方が
分からないのもしょうがない。

だいたい、構造が致命的に分かりにくいとかバグがあるってのと、
デバッガで追えないとかブレークポイントで止められないってのは別問題だろ。

くだすれなんだから、質問者のレベルが低いのは当たり前だし、
デバッガで追いかける方法が分からないからって質問するくらいいいじゃないか。
198デフォルトの名無しさん:2007/08/21(火) 11:59:53
>>195
> ブレークポイントも全く止まらないし誰からどう呼び出されてるかもわからないし

そりゃぁ195が知らない世界に無理に足を突っ込んだからだろう。
EXEとDLLとISAPIとサービスに分割するのは、ありがちな形態。

>>196
2・3年目くらいに詳細なドキュメントなしでデバッグを担当したものを、
協力会社の人に引き継いだが、彼らは目を白黒させていたなぁ。

あるインプロセスのCOMコンポーネントについて、
main関数どこですか?
誰から呼ばれるんですか?
なんて聞かれて、びくーりしたよ。

クラスとか無視して強引にC風にフローチャート書いてきて、確認を求められた時には、
そんな無駄なことをする前に了解を取ってくれ、そのフローチャートに金は払わないぞ!と
ブチ切れそうになりましたよ。
199デフォルトの名無しさん:2007/08/21(火) 13:34:29
>>197
多分、みんな同様の経験をしてきてるからじゃない?そして地獄を味わった
でも、乗り越えられれば確かに糧にはなるけどな
200デフォルトの名無しさん:2007/08/21(火) 14:06:35
適切に前提知識を揃えれば普通に済むのに、
自分で地獄にしてしまい、大変だとか愚痴る
人間をみるとムカつく。

サービスやISAPIフィルタを作ったことがないのに、
いきなり人様が作ったものを改修しようという
のは大きな間違い。

そういう場合、細かいことを1つずつ教えてはダメ。
サービスやISAPIフィルタの作り方を解説した本
を読ませて、実際に何か作ってみさせるべき。
201デフォルトの名無しさん:2007/08/21(火) 14:39:30
サービスアプリケーションを作成するとき、一定規模以上のものを複数人で開発するなら、
どうしても作業を分担する。
そのとき、サービス制御部とビジネスロジック、DBアクセス、コマンドインタフェースなどの各コンポは
それぞれ別の人が担当し、他の部分は理解しないことが普通(いいか悪いかは別にして時間もスキルもない)。

改修/保守ではそれが1〜2人の担当者に振ってくるので、全体を理解するのは
あるべき姿かも知れないけど、現実的な工数ではさらに難しい。
もちろん、サービスの概要が分かってないと、デバッグもできないけど、
逆に機能追加のためにビジネスロジックとDBアクセスの一部をエンハンスする場合に
サービス制御部の詳細動作が分かってなければいけないってものでもない。
だから、サービスの勉強を1からやるっていってもさせてもらえない。
まあ、改修部分以外の箇所が安定して動作してるってのが前提になるけど。

これがよくある開発の現状。
>>200は比較的少数精鋭の部署にいるんじゃないの?
202デフォルトの名無しさん:2007/08/21(火) 15:11:37
>>180は横断的にトレースする必要に迫られているんでしょ?
203デフォルトの名無しさん:2007/08/21(火) 22:21:48
>>200
そんな時間がある会社なら前の担当者がいないなんて話にはならないだろw
204デフォルトの名無しさん:2007/08/21(火) 22:27:30
>>198
俺もCOMとか全く駄目だわ
何がどう動いてんのか理解不能w
これはCOM入門かなんかやらんと駄目だねw

なんも知らないで「VCではできないような・・・?」みたいなこと報告しちゃった嫌な思い出w

みんなもあるだろ?w
理解不能なWindowsプログラムってよw
俺ができないっていっちゃったのはなんかドラッグ&ドロップでワードとかエクセルとか起動する奴w
MFCのサンプルにそれっぽいの付いてるけどみても何やってるのかさっぱりわからんかった
書籍も資料も落ちてないし

テキストウィンドウと変なIEが混ざってるようなのも駄目だった・・・
Win32APIでプログラムが組めますって言って仕事もらったのになにもできなくて申しわけないwって感じw
205デフォルトの名無しさん:2007/08/21(火) 22:31:27
前提知識が抜けたまま闇雲にトレースして、
そこから前提知識を推理するよりかは、
よっぽど短時間で済むと思うが。
206デフォルトの名無しさん:2007/08/21(火) 22:40:46
>>204
知らないのに、できます! と言うのに比べれば、
知らなくて、できません! と言うのは悪くない。
207デフォルトの名無しさん:2007/08/21(火) 22:41:02
下記のサイトの
http://www.ujasiri.com/
Excelのグラフの凡例の表示・非表示 → VC++ 2003.NetでExcelを起動 から行ける
http://www.ujasiri.com/prglib/vc/excel/import/xls_imp_open_2003.html
のソースについて質問です。

該当ページにこのような表現がありますが理解できません。
 _ApplicationPtr pXL;
 pXL.CreateInstance(L"Excel.Application");
 pXL->Visible = true;
これまで
 pXL がポインタであれば ->
 pXL が実体(?)であれば ドット
を使うと考えていました。
例に挙げたような -> と ドット が混在するようなケースは、
どのように理解すればよいのでしょうか?
参考になるサイト等紹介いただけるとありがたいです。
(検索キーワードでもいいです)
208デフォルトの名無しさん:2007/08/21(火) 22:47:20
>>207
おお、すげーな
COMとOLEについて書いてあるページなんてはじめて見たw(実は結構ある?)
1年前ぐらいに調べたときはホント1ページもなかった(俺が探した限りでは)
ってか、検索するワードすらよくわからなかったし
209デフォルトの名無しさん:2007/08/21(火) 22:48:26
>>207
operator->が定義されてる。
210デフォルトの名無しさん:2007/08/21(火) 22:49:31
>>205
スキルのある人はみんなそういう。
でも、スキルのない人にはまた別の意見がある。
211デフォルトの名無しさん:2007/08/21(火) 22:51:29
>>210
スキルを身につける気がないなら、プログラマやめたら?
212デフォルトの名無しさん:2007/08/21(火) 22:52:10
>>207
しかし、あいかわらず意味不明だなw
サンプルソース読んでもなにをやってるのかさっぱりわからんw

こりゃCOM入門やらなきゃ手がでないね
っつってもその情報がどこにあるか全く知らんけどw
1年前に探したときは、自分なりに必死に調べてみたけど
手がかりすらつかめなかったなw
213デフォルトの名無しさん:2007/08/21(火) 22:53:23
>>211
やりたいのはやまやまだけどCOMとOLEって情報がないじゃん
なんか順にステップアップする道ってないの?
214デフォルトの名無しさん:2007/08/21(火) 23:00:43
>>213
inside ole
atl com
とりあえずこの2冊読んだだけだが、COM使うレベルだったら十分だったよ
果たして、まだ売ってるのかどうかもわからんが
しかも、今から勉強しても役に立つかどうかはわからない
215デフォルトの名無しさん:2007/08/21(火) 23:06:07
>>213
訂正、その2冊を読んで、あとはネットなどで調べればって事ね
216207:2007/08/21(火) 23:09:27
>>209
"operator->" で検索したところ、おぼろげに分かりました。
メンバ変数として持っているオブジェクトのポインタを返して、
あたかも自分自身のメンバ関数のように見せる手法といったところでしょうか。
この路線で少し調べてみます。
どうもありがとう。
217デフォルトの名無しさん:2007/08/21(火) 23:12:04
>>214
片方絶版でしょ?

http://www.amazon.co.jp/o/ASIN/4881356992/249-8768613-0303516?SubscriptionId=1PGV4GGGAXZ1AMXAKKG2
こっちはもってるけど、
当時のお客様のご要望であるエクセルダイアログを作るまではいかなんだw・・・orz
期間も短かったし、あせってたから理解できなかっただけかもなw

用語にサーバーとかでてくるけど通信がやりたいわけでもないのに
なんでこんな言葉が出てくるのかヒタスラ謎だったw
218デフォルトの名無しさん:2007/08/21(火) 23:17:21
>>212
必死に調べないと手がかりすら掴めないなら、プログラマに向いてない。
ましてや、必死に調べてもダメっていうのなら・・・。

>>213
いったいどこを探したのか、と。
219デフォルトの名無しさん:2007/08/21(火) 23:20:26
>>218
マジか
今のところ>>207のリンクと
ATLCOMプログラミングの本しか情報ないんだけど(俺が探すとw)

とりあえず英語読め無いから海外は勘弁してくれw
しかも、>>207のリンクのサンプルソースって俺の環境で実行すると
警告ダイアログが出て強制終了するんだけど?w

ああ、もう、いつもどおり手係りねぇよw
220デフォルトの名無しさん:2007/08/21(火) 23:22:20
そんないうほど情報ないと思うけどね

だって
http://www.google.co.jp/search?hl=ja&q=COM+OLE&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
って調べてもろくなページでてこないじゃん
221207:2007/08/21(火) 23:26:35

質問した手前。

>>219
http://www.jsdlab.co.jp/~kei/studio/excel/index.html
これとかどうです?
どうもExcelのバージョンとかによって色々変えなきゃなんないようです。
私の場合は上記サイトのimportのパスのところ適当に変えたらそのまま動きました。
VCからExcel動かせるようになってとても面白いです。
222デフォルトの名無しさん:2007/08/21(火) 23:28:35
>>216
なんか心配だなぁ。

_ApplicationPtrが何者なのかわかっていれば、そういう質問は出て来ないと思う。
よく見てないけど、たぶん_com_ptr_tでしょう。COMのイロハを先に勉強しよう。
223デフォルトの名無しさん:2007/08/21(火) 23:34:24
>>219
> とりあえず英語読め無いから海外は勘弁してくれw

英語読めないなんて論外だろう。
前提として必要なものが欠落していると、いかにダメかっていう好例になっちゃうぞ。
224デフォルトの名無しさん:2007/08/21(火) 23:36:13
なぜ日本語で書かれた資料が少ないか。

大半のプログラマが、
英語で書かれた資料を読んで、
それで事足りているから。
225デフォルトの名無しさん:2007/08/21(火) 23:36:15
>用語にサーバーとかでてくるけど通信がやりたいわけでもないのに
なまじ日本語だと勘違いする罠。
Websterで調べるとやっとそれっぽい意味が出てくるのは4番目で、
ネットワーク云々が出てくるのは最後の6番目だ。
# 1番目は勿論、日本でもケーキサーバと言えば通じるあれのことだ。
226デフォルトの名無しさん:2007/08/21(火) 23:38:14
英語読めないってのは致命的だよ
しかも技術英語なんて、文法簡単だし
単語は技術英語辞典あればいい
227デフォルトの名無しさん:2007/08/21(火) 23:38:57
>>217
OLE ServerとOLE Container。
むっちゃくちゃ基本的な話なのに。
228デフォルトの名無しさん:2007/08/21(火) 23:40:33
>>219
Excelを使うみたいなCOMの使い方サンプルってページならかなりたくさんあると思うけど、
COMを基本から学ぶのに絞っても例えば以下のあたりとかそれなりにはある。
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdnguion/htm/msdn_drguion020298.asp
ttp://www5.plala.or.jp/atata/
ttp://www.asahi-net.or.jp/~kv8s-yjm/another/yjamain.htm
229207:2007/08/21(火) 23:41:48
>>222
私の場合、学習の順序がむちゃくちゃですね。
Excelのファイルを作りたくて色々調べて、とりあえず近々やりたいことは出来るようになりました。
でも、基本が無いからちょっと詰まるとカットアンドトライで切り抜けている状況です。
COMというものを勉強すれば、その辺の基礎中の基礎が分かるようになると今知りました。
今後、その辺含めて勉強していきます。お手数おかけしました。
230デフォルトの名無しさん:2007/08/21(火) 23:42:56
>>228
一番上懐かしいなw
10年位前に読んだ気がする
231デフォルトの名無しさん:2007/08/21(火) 23:49:58
英語は嫌といっているが、C++コードで書かれた宣言だけ見ても手がかりにはなると思うぞ。
http://msdn2.microsoft.com/en-us/library/417w8b3b(VS.80).aspx
232デフォルトの名無しさん:2007/08/21(火) 23:52:42
>>221
一応、設定してみたけど
beext1.tlhの中でCommandBarsがどうたらこうたらってエラーが18個ぐらいでるw

まあ、いいです、色々ありがとう
これが動かせたからどうって問題でも多分ないと思うし
根本的に基本的なところの理解が足りて無い状況なわけでw
233デフォルトの名無しさん:2007/08/21(火) 23:57:08
>>231
_com_ptr_tならMSDNライブラリで日本語訳されてるぞ?
234デフォルトの名無しさん:2007/08/21(火) 23:57:34
でも、すげーなみんなよくリンク知ってるね
俺が1年前探したときにはなんも見つからなかったのに・・・
235デフォルトの名無しさん:2007/08/22(水) 00:06:47
>>229
正直、excel動かしたいだけだったらVB使えばいい
もしくはMFCでタイプライブラリからクラス作ればわずらわしい部分はほとんど無くなる
COMの勉強というが、もし仕事でやってるなら今後、どうなるかわからない技術だから
必要に迫られて無い限り深く知る必要は無いとも思う
ただ、俺個人としてはどんなことでも勉強する人間は嫌いじゃないけどね
仮に、自分の部下だったらCOMを勉強すると言うなら、アセンブラと電気勉強させるがw
236デフォルトの名無しさん:2007/08/22(水) 00:12:43
COMって勉強するってほどのものか?

Windowsプログラマには当たり前のことだと思うが。
DirectXでゲーム作ってる厨房だってCOM使ってるぞ。(DirectXローカルに変更されたものだが)
237デフォルトの名無しさん:2007/08/22(水) 00:18:31
>>236
COMを使うだけだったら、勉強なんてほとんどイラン
COMサーバを作るんだったら、それなりに勉強しないと出来ない
勉強するといのは=COMサーバを作るってことだと思っているが違ったかな
238デフォルトの名無しさん:2007/08/22(水) 00:19:21
>>236
一口にCOMといってもいろいろあるし、
自分でもアパートとかスレッドなんてキーワードがでてくるとかなりあやしい。
239デフォルトの名無しさん:2007/08/22(水) 00:21:14
>>236
俺、ゲーPGだったからDirectXはバリバリ使えるけどCOMはさっぱりだぞ
エクセルダイアログ作って上げたかったよ・・・orz
240デフォルトの名無しさん:2007/08/22(水) 00:28:44
>>239
ゲーPGだったのか
俺もゲーPGだったよ10年以上前は
241デフォルトの名無しさん:2007/08/22(水) 01:05:56
ExcelならVB(A)でオブジェクトモデルを把握して、
必要ならVC++では、MFCか#importでちょいちょいだろ。
242デフォルトの名無しさん:2007/08/22(水) 01:13:58
ぶっちゃけ、VBでいいじゃん。

なぜVC++を使うん?
243デフォルトの名無しさん:2007/08/22(水) 01:21:58
VB知らないからですね。
244デフォルトの名無しさん:2007/08/22(水) 07:46:59
>>242
やっぱり客の要望的にVCのが小回りが効く
COM/OLEの部分はどっちかっていうとプラスアルファ的要素
基本はVCのスッキリした動作と細かいサポートが必要

って状況だからVCで使えないとあんまり意味がない
245デフォルトの名無しさん:2007/08/22(水) 12:31:52
超初心者スレなのにプロの巣窟。
246デフォルトの名無しさん:2007/08/24(金) 10:17:39
エキスプレスエディチョンで、複数のソースファイルで、呼び出し元とか、宣言、定義に移動できるのはいいが、そっから巻き戻して元の文に戻る方法はないのか?
247デフォルトの名無しさん:2007/08/24(金) 10:29:08
ある
248デフォルトの名無しさん:2007/08/24(金) 10:33:06
エキスプレスエディチョンなんてない
249デフォルトの名無しさん:2007/08/24(金) 10:33:46
エキスプレスエディチョン
250デフォルトの名無しさん:2007/08/24(金) 10:34:55











251デフォルトの名無しさん:2007/08/24(金) 10:36:06
「チョン」は朝鮮人の事を指す言葉ではなく、一般的に頭の悪い人を指す言葉なので差別用語ではない。
252エキスプレスエディチョン:2007/08/24(金) 10:36:50

253という理屈も成り立つよね:2007/08/24(金) 11:48:31
>>251
鮮人のことを指したからといって、差別語ではない。親しみを込めていっているだけだ。
254デフォルトの名無しさん:2007/08/24(金) 11:49:20
EEで.net用のソースは問題なく使えますか?
255デフォルトの名無しさん:2007/08/24(金) 11:51:43
意味がよくわからんが使える
256デフォルトの名無しさん:2007/08/24(金) 12:35:56
無理
257デフォルトの名無しさん:2007/08/24(金) 15:09:33
なぜ自分で試さない?
258デフォルトの名無しさん:2007/08/24(金) 15:17:58
PCを持っていないから
259デフォルトの名無しさん:2007/08/24(金) 21:21:32
>>258
違うな
俺にはわかる
>>254は女子小学生だからだ
260デフォルトの名無しさん:2007/08/24(金) 21:58:07
いい加減にしておけよ性犯罪者予備軍
261デフォルトの名無しさん:2007/08/25(土) 00:11:41
>>259
俺にも分かった。腕の細いところときめ細かい肌の日焼けが特徴だ
262デフォルトの名無しさん:2007/08/25(土) 01:25:36
Visual Studio 2005 MFCでCFormViewを基本クラスとするアプリを作成しています。
OnInitialUpdate()で別ダイアログを表示させ、そのダイアログの戻り値によって
アプリを起動させずに終了させたいと思っています。
OnInitialUpdate()でどのような命令を実行させればよいですか?
そもそもOnInitialUpdate()で設定する内容ではないのでしょうか??
263デフォルトの名無しさん:2007/08/25(土) 01:31:11
今時MFCなんか使ってるからだよバ〜カm9(^Д^)プギャー
264デフォルトの名無しさん:2007/08/25(土) 01:43:13
>>262
CFormViewでなく、アプリのInitInstanceにしとけば?
InitInstance( )内で直接ダイアログを表示して判定、
起動しない場合はそのまま復帰値FALSEでInitInstanceを抜ける。
265デフォルトの名無しさん:2007/08/25(土) 16:51:58
vs2005を使ってます。
デバッグするときに止めたい場所にブレークポイントを設定しますが、
プログラムをある程度進めた段階で(例えばブレークポイントを1000回通過した時点で)
止めるということは出来るのでしょうか?
方法があれば教えてください。
266デフォルトの名無しさん:2007/08/25(土) 16:56:02
>>265
i++
if(i > 4000){
  int a = 0;
}
267デフォルトの名無しさん:2007/08/25(土) 16:58:42
>>265
ヒットカウントを指定する
268デフォルトの名無しさん:2007/08/25(土) 17:01:40
>>265
1)ブレークポイントを作成
2)ブレークポイント行を右クリック
「ブレークポイント」-「ヒットカウント
269デフォルトの名無しさん:2007/08/25(土) 17:14:11
>>266-268
ありがと。できました。
270デフォルトの名無しさん:2007/08/25(土) 17:20:43
>>266って恥ずかしいね。無知なのに人様に教えようだなんて。
271デフォルトの名無しさん:2007/08/25(土) 17:42:45
いいんじゃね。
ヒントでも欲しいって場合もあるし、
他に明確な回答があるなら他の人が答えるだけでしょ。
272267:2007/08/25(土) 18:00:11
ヒットカウントは知っているけど>>266なコードを使うことが殆どだな。
一定回数毎とか言い出すと、ソースに組み込んだ方が早い。
273デフォルトの名無しさん:2007/08/25(土) 19:59:12
 /\___/\
/ ⌒   ⌒ ::: \
| (●), 、(●)、 |
|  ,,ノ(、_, )ヽ、,,   |  < VS2005 コマンドラインでコンパイルすると
|   ト‐=‐ァ'   .::::|     "public列挙子(クラス***)にアクセスできません"とか
\  `ニニ´  .:::/     "純粋仮想関数の宣言は'=0'でなければなりません"とか
/`ー‐--‐‐―´´\

  /\___/\
/        ::\
|  ─   ─   |
| (●), 、 (●)、 |
|  ,,ノ(、_, )ヽ、,, .::::|  < IDEでは問題なくビルドできるのに・・・・
\   r‐=‐、  .:::/
/`ー `ニニ´一''´ \

  /\___/\
/        ::\
|           :|
|   ノ   ヽ、   :|
| (●), 、 (●)、.:::|  < なんでコマンドラインからだと
\ ,,ノ(、_, )ヽ、,, ::/    どうしようもないエラーが沢山出るの・・・?
/`ー `ニニ´一''´ \
274デフォルトの名無しさん:2007/08/25(土) 20:19:40
C++/CLIなら/clrオプションでも付けておけ。
275デフォルトの名無しさん:2007/08/25(土) 20:35:09
>>273
IDE上で、コンパイラに与えるコマンドラインスイッチ見れるだろ?

それと同じものを与えてみ。
276デフォルトの名無しさん:2007/08/25(土) 21:02:28
>>272
色々条件指定できるみたいだけど面倒臭くて使えないよな
俺もソースに書き込むことのが多い
277デフォルトの名無しさん:2007/08/25(土) 21:19:00
ソースに書き込んでもいいが、リリース版に残ったりしないように、適切にマクロ使えよ。
278デフォルトの名無しさん:2007/08/25(土) 21:20:25
>>277
そんときその場だけの情報がほしいことが多いから
すぐに消しちゃうよ
int a=0;
とかありえないコード書いておけば後で検索も効くし
279デフォルトの名無しさん:2007/08/25(土) 22:03:08
>>278
人間はミスをするものだから。
280デフォルトの名無しさん:2007/08/25(土) 22:04:30
>>279
は?int aとかa=0;で検索掛けるだけだってのに頭思いっきり悪いなお前
281デフォルトの名無しさん:2007/08/25(土) 22:06:10
それにそのまま出荷しても

if(i > 4000){
 int a=0;
}

このソースはプログラムに影響なんて与えないんだよ
282デフォルトの名無しさん:2007/08/25(土) 22:11:00
意味不明なコードは保守性に悪影響です。
283デフォルトの名無しさん:2007/08/25(土) 22:15:21
>>282
>>281のコードがわからんようなプログラマはなにやらせても駄目だろw
284デフォルトの名無しさん:2007/08/25(土) 22:16:11
この程度のコードなら並みのPGは一瞬で動作も意図も理解できるんですよ
285デフォルトの名無しさん:2007/08/25(土) 22:19:07
>>283
ブレイクポイント用にこんなコードを書くPGなんて君だけだから、普通のPGには意図が汲めません。
286デフォルトの名無しさん:2007/08/25(土) 22:20:37
>>285
え?こんなのわかんないの?w
さすがに反論する気にもなれない
287デフォルトの名無しさん:2007/08/25(土) 22:24:18
281のコードならどうせ警告が出るはずだから、
出荷時まで残るなんてことはないと思う。
288デフォルトの名無しさん:2007/08/25(土) 22:24:59
ShortCodingとかいう本読んだら発狂するだろうなw
289デフォルトの名無しさん:2007/08/25(土) 22:25:07
>>285
俺も281みたいなことをやるが、他人に見せる前には消すぞ。
290デフォルトの名無しさん:2007/08/25(土) 22:26:03
281の会社は警告OFFとかしてそう。
残ってても問題ないらしいし。
291デフォルトの名無しさん:2007/08/25(土) 22:28:57
そういう香具師に限って残してることに気付かないんだ。
292デフォルトの名無しさん:2007/08/25(土) 22:29:35
>>290
苦しい決め付け乙w
293デフォルトの名無しさん:2007/08/25(土) 22:30:15
>>281ならどんな会社にいても、同じことを言って
周囲に迷惑かけまくっているに1票。
でも、きっと本人はそれに気づいていない。
294デフォルトの名無しさん:2007/08/25(土) 22:30:39
動作に問題ないからって>>281みたいなコードが残ってる製品ってダメだろ。常識で。
295デフォルトの名無しさん:2007/08/25(土) 22:31:31
>>292
>>281のほうが見苦しい屁理屈に見えるぞ。
296デフォルトの名無しさん:2007/08/25(土) 22:45:49
なんで、マクロを使わないの?

マクロを使って自動的にリリース版から除去するのが、許されない何か理由でもあるの?
297デフォルトの名無しさん:2007/08/25(土) 23:12:14
>>293-295
ぷw
明らかに孤立してるからって自演すんなよw

>>296
マクロは定義をみないと動作がわからない上に
VSのインテリジェンス機能が使えなくなるときがある
さらにマクロを定義したヘッダをソース中にインクルードする必要があるところも嫌だな

このやり方が便利だと思うってことはお前のソースには
総合ヘッダみたいなグローバルに影響を与える仕組みが存在するってことなんかな?
298デフォルトの名無しさん:2007/08/25(土) 23:14:27
いや、ふつーにデバッガの機能使えば済む話だろ。
299デフォルトの名無しさん:2007/08/25(土) 23:19:33
>>298
ぶっちゃけ効率悪い
300デフォルトの名無しさん:2007/08/25(土) 23:25:08
>>297
>>296は、たぶんこういうマクロを指しているものとおもわれ。
#if !NDEBUG
//デバッグ用コード
#endif
301デフォルトの名無しさん:2007/08/25(土) 23:25:29
>>297
> マクロは定義をみないと動作がわからない

動作がわかる名前を付ければいいだけのこと

> VSのインテリジェンス機能が使えなくなるときがある

当該のマクロに対して使えなくたって構わないだろう。

> お前のソースには総合ヘッダみたいなグローバルに影響を与える仕組みが存在するってことなんかな?

Yes。
stdafx.hがそうだよ。
302デフォルトの名無しさん:2007/08/25(土) 23:25:39
>>297
マクロはインクルードファイルに書かなければいけないわけではないことはご存知?
どうも今日は、インクルードファイルを特別視している意見をあちらこちらのスレで見かける気がするが。
303デフォルトの名無しさん:2007/08/25(土) 23:28:16
>>300
普通にリリースモードのときに使えない
304デフォルトの名無しさん:2007/08/25(土) 23:30:22
>>302
それでなにが変わるの?
だってその機能を汎用で使うってことは定義したファイルを
全ソースにインクルードしなきゃ使えないことには変わりないじゃん
なくていいバグをソース中にばらまいてるだけだな

非常にコーディングレベルが低い
305デフォルトの名無しさん:2007/08/25(土) 23:34:03
元々の意図が、デバッグ用コードを埋め残すって話でしょ。
で、そんなことするくらいならマクロを使えって流れなんだから
インクルードファイルは関係ないわけだけど。
で、リリースモードでデバッグする馬鹿は論外だと思う。
306デフォルトの名無しさん:2007/08/25(土) 23:34:10
>>299
ふつーに使う分には問題ないんじゃないの?
307デフォルトの名無しさん:2007/08/25(土) 23:36:22
>>305
>で、リリースモードでデバッグする馬鹿は論外だと思う
デバッグモードでは起きないけどリリースモードでは起きるって初期値バグって結構あるから
考慮に入れてもいいと思うけどな
308デフォルトの名無しさん:2007/08/25(土) 23:43:47
>>307
ログ出力処理にレベルを付加して、リリース時のデフォルトは低くしておくけど、
設定変更すればたくさんのログが取れるように仕込むというなら、よくあること。

でも、
if(i > 4000){
 int a=0;
}
こんなレベルのコードをリリース時のソースに残すってのはありえない。
309デフォルトの名無しさん:2007/08/25(土) 23:44:38
リリースビルドとは別に、デバッグ用にリリースビルドと同じ設定のビルドを用意すりゃいいじゃん。
310デフォルトの名無しさん:2007/08/25(土) 23:56:26
そもそも>>281のコードは一時的にブレイクポイントを仕掛けるためにやるんだろ。
該当箇所のデバッグが済んだら、すぐにさよならで、
そんな恒久的に残すわけないだろ。

結論:リリース時まで残す281はあほ。
311デフォルトの名無しさん:2007/08/26(日) 00:01:48
>>308,309
は?誰もリリースのときまで残すなんて発言してないけど
どこを見てそんな発言でてくるのか教えてくれよ

ちょっと電波入ってね?
312デフォルトの名無しさん:2007/08/26(日) 00:06:30
残すつもりがなくても、
残ってしまうという事故は、
人間がやるかぎりある。

だからこそ、
自動的に削除されるようにすべき。
たとえそれが、すぐ消すものであっても。
313デフォルトの名無しさん:2007/08/26(日) 00:07:02
>>311
「そのまま出荷しても」と書いているのだから、
281はそのまま出荷することがあるかのように思われても仕方がない。
314デフォルトの名無しさん:2007/08/26(日) 00:08:46
そりゃうまい具合にミスすれば残ったまま出荷する事は有るだろうな
315デフォルトの名無しさん:2007/08/26(日) 00:11:53
久しぶりに勢いづいていると思ってきてみたら
なんか荒れてるなぁ
281みたいなコードは普通に使うけどね
自分の場合もppで、ON/OFFさせて
配布時にスクリプトで一掃させるかな
316デフォルトの名無しさん:2007/08/26(日) 00:12:39
>>314
万に一つに備えるのがプロのプログラマだと思いますが。
317315:2007/08/26(日) 00:14:07
あ、pp->cppの間違いだった
318デフォルトの名無しさん:2007/08/26(日) 00:20:56
備えた結果がこの影響が無いコード
319デフォルトの名無しさん:2007/08/26(日) 00:21:49
>>313
曲解してまで自分が正しいことにしたいの?w
320デフォルトの名無しさん:2007/08/26(日) 00:24:17
>>319
おまえが思いつきで屁理屈言ってるようにしか見えないよ。
321デフォルトの名無しさん:2007/08/26(日) 00:27:28
>>319
え?曲解なんかではなく、俺は>>281がそのまま出荷するんだと感じたんだけども。

でもそう言われてみれば、281は誤って残した場合でも影響を与えないと言いたかったとも取れるな。
そうだとしたら、俺みたいな読解力ない人間のためにもきちんとそう書けという話になるが。
322デフォルトの名無しさん:2007/08/26(日) 00:31:18
リリースビルドでしか発症しないバグを云々って言うけどさ、
>>281のようなコードはリリースビルドでは最適化されて、
ブレークポイントを張れないと思うんだけど、どうよ。
323デフォルトの名無しさん:2007/08/26(日) 00:35:02
屁理屈とレッテル貼るだけじゃなくもっとましな反論したら
324デフォルトの名無しさん:2007/08/26(日) 00:36:57
>>321
ハイハイw

>>322
もちろん値はprintfやoutputDebugStringでひっかけるよ
int aは検索用にのこして置くけどね
それでもうっかり出荷しても問題は起こらないけどねw
325デフォルトの名無しさん:2007/08/26(日) 00:37:58
Xもちろん値はprintfやoutputDebugStringでひっかけるよ
○もちろん値はprintfやoutputDebugStringで出力してifはひっかけるだけだよ
326デフォルトの名無しさん:2007/08/26(日) 00:47:31
>>323
もとが「曲解してる」とか言いがかりだし。
327デフォルトの名無しさん:2007/08/26(日) 00:54:51
とりあえず

if(i>4000){
 int a=0;
}

は俺も使うし、出荷時にうっかり残っても問題にならないしで
いいデバッグコードということでFA?
328デフォルトの名無しさん:2007/08/26(日) 00:55:48
>>324
なんでマクロ使わないの

DEBUG_BREAK_EACH_X_TIMES(4000)

これでいいじゃない。
329デフォルトの名無しさん:2007/08/26(日) 00:59:44
>>326
だよね
読解力が無いだけなのにひどいよね
330デフォルトの名無しさん:2007/08/26(日) 01:02:59
>>328
VSのインテリ効かなくなる・・・って既出か
331デフォルトの名無しさん:2007/08/26(日) 01:03:48
>>329
レッテル貼りしないでまともに反論しろって言う割には、自分はそれか。
332デフォルトの名無しさん:2007/08/26(日) 01:04:45
>>327
こんなコードが残ってる製品っていやだよね。
333デフォルトの名無しさん:2007/08/26(日) 01:08:03
>>330
まじで?
334デフォルトの名無しさん:2007/08/26(日) 01:09:44
>>333
やってみやってみ(っていっても会社のVC6だからってのもあるかもw)
てか、インテリはマクロの類は全部駄目だなぁ・・・w
335デフォルトの名無しさん:2007/08/26(日) 01:11:02
>>334
VC6を暗黙の前提にしてたのかよ。
336デフォルトの名無しさん:2007/08/26(日) 01:17:30
>>335
さっきやってみたら.Netでもインテリ消えるな
2003とか2005とかどうだろ?
337デフォルトの名無しさん:2007/08/26(日) 01:39:46
インテリ消えるなら{}で括ればいんじゃね?
ダメだった?
338デフォルトの名無しさん:2007/08/26(日) 01:44:36
>>337
どういう法則で消えてるのかわからない
なんかマクロはさまるだけで駄目って気もするし
そうで無い気もするし
339デフォルトの名無しさん:2007/08/27(月) 10:51:45
質問です。
ビルドした静的ライブラリ(.lib)のシンボルの一覧を確認したいのですが、
何か方法はありませんでしょうか。

Dependency Walkerで試してみたのですが、.dllでないとダメなようです・・・。
340デフォルトの名無しさん:2007/08/27(月) 11:12:30
>>339
dumpbin /symbols *.lib
341デフォルトの名無しさん:2007/08/27(月) 15:16:42
ちょっと質問。
起動されたときに、自分自身をデバッガにアタッチするプロセスの作り方を教えて。
VC7.1、CRT使用、ほかのプロセスから起動されるプログラムを作ってます。
342デフォルトの名無しさん:2007/08/27(月) 16:18:23
最近C++勉強はじめた(ゲーム作成のために)
プログラムの経験は、はるか昔にN88日本語BASICとCOBOLをやったくらいしかない
適当なテキスト見ながらやってみた
なるほど、こういう便利なライブラリがあるのか
一通り簡単な事なら出来るようになった
でも、なんかスッキリしない
ライブラリを拝借して使ってるだけで、ちっともゲームを自分で作ってる気がしないw
これは違うんじゃないか俺?
ちょっと心配になってきたこの頃です
ここの住人とかはライブラリを自作したり出来るんでしょ?
すけーな・・・道は険しそうだ・・・
343デフォルトの名無しさん:2007/08/27(月) 16:31:02
ライブラリなんてゲームに関係ないと思うが。
どんなライブラリつかってオセロを作ろうがオセロはオセロだろ?

そんなにライブラリから作りたいなら、
Cのライブラリから自作するよなもちろん?
344デフォルトの名無しさん:2007/08/27(月) 16:36:17
いやいや、Cのライブラリを実装するのにOSを呼び出すんだから、
そのOSから自作だろ。
345デフォルトの名無しさん:2007/08/27(月) 16:37:29
>>341
「起動されたとき」というのを詳しく。
346デフォルトの名無しさん:2007/08/27(月) 16:38:24
ライブラリを作りたいならライブラリを作ればいいし、
ゲームを作りたいならゲームを作ればいい。
ゲーム用のライブラリが作りたいのならそうすればいい。
自分の目的にあわせて手段をどう取るべきかよく考えろ。
フルスクラッチで作成しなければ達成感が得られないのなら仕方ないが、
ゲームを作るという目的のために既存のライブラリを使ってもズルでも何でもない。
何でも最初から、とか言い始めたら、ゲームのための筐体作りから始めなきゃならんぞ。
347デフォルトの名無しさん:2007/08/27(月) 16:43:04
むしろ自分で組む量をできるだけ減らすように努力した上で
スニペットとかの入力補完とかフルに使った上でもrubyの数倍のタイプ量がC++には必要だから安心していいよ^^
348デフォルトの名無しさん:2007/08/27(月) 16:47:04
Ruby厨乙
349デフォルトの名無しさん:2007/08/27(月) 17:02:59
>>345
ほかのプロセスから起動されるプログラムを作っているので、
このプログラムがプロセスとして生成された時点で自動的に
デバッガヘアタッチしたい。
350デフォルトの名無しさん:2007/08/27(月) 17:09:21
>>342
便利なライブラリってのが何のこと言ってるのかわからなが
例えばゲームという事でDirectXだと仮定する

このスレッドの回答者側と言えども作れる人間はほとんど居ないと思うよ
かく言う自分も、まだDirectXがそれほど浸透していない、DOOM系FPSがもてはやされていたころ
DIBSectionを使った、擬似3D描画エンジンとか簡易な3Dレンダラーは作った事あるけど
DirectXが持っているような複雑な3D演算や、HALライブラリは作れない

あと、N88Basicを知っているなら、IO直叩き可能なOS(CP/MとかMSDOS)とかを経験した
世代かもしれないけどwindowsというOSは、自分でIOに直接命令するようなライブラリは、
SDKレベルでは作れないから、結局はwin32APIというOS提供ライブラリの上で踊っているだけだ

ライブラリってのが何のこと言ってるのわからないけど、これほど複雑になったOSの上で
すべて自分で作ってるような人間は居ないから安心していいよ
もちろん、そういうものを作っている人間がいるのは間違い無いわけだから、そういうのに興味を持っていくことを
否定しないし、そういうのを作りたいというなら賞賛するよ
351デフォルトの名無しさん:2007/08/27(月) 17:10:02
>>349
プロセスとして生成された時点というのは、
EXEのエントリポイントが呼ばれるよりも前? それとも後?
352デフォルトの名無しさん:2007/08/27(月) 17:10:52
>>341
任意の時点でint 3を発行すれば、その時点でそれを
OSが捕まえて、デバッガにアタッチしてくれる。
いまは確認できないけど、VCだとint 3をラップする
DbgBreak(?)とかのマクロが用意されてたはずなので
それを呼べばよい。
353デフォルトの名無しさん:2007/08/27(月) 17:11:32
>>351
エントリポイントに入った後というか、main()が呼ばれた後くらいで
止まっててくれると非常に助かる。
354デフォルトの名無しさん:2007/08/27(月) 17:16:28
>>353
int main()
{
DbgBreak();
...
とするだけ。
355デフォルトの名無しさん:2007/08/27(月) 17:17:02
>>353
それだったら、DebugBreak というAPIを使えばOK
356デフォルトの名無しさん:2007/08/27(月) 17:19:08
>>353
それなら、プロセスが生成された時点でもなければ、起動された時点でもないな。
メイン関数に入った後でよければ、それは、任意の時点だ。

Win32APIだと
DebugBreak()
がある。

ただし構造化例外をキャッチしているとダメよん。
357デフォルトの名無しさん:2007/08/27(月) 17:19:22
やはり記憶違いだったか...
orz
358デフォルトの名無しさん:2007/08/27(月) 17:28:27
>>352
>>354
>>355
>>356
ありがとう!

#include <windows.h>
...main()...
::DebugBreak();
で無事にできた。

ヘッダー:winbase.h 内で宣言...ということになってるが、エラー
windows.hでできた。
win32コンソールプロジェクトでビルド。

重ねてさんくす!
359デフォルトの名無しさん:2007/08/27(月) 18:07:09
>>358
> ヘッダー:winbase.h 内で宣言
MSDNライブラリならそのすぐ下にwindows.hをインクルードと書いてあるだろうに。
360デフォルトの名無しさん:2007/08/27(月) 18:16:19
>>354 == >>359と予想してみる。
361354:2007/08/27(月) 19:09:25
>>360
残念ながら違う。
だいたいMSDNを確認できる環境になかったので、マクロ名を間違えているくらいだ。
362デフォルトの名無しさん:2007/08/27(月) 19:12:38
>>361
2chに書き込みできるのに、MSDNオンラインを参照できないなんて。
363デフォルトの名無しさん:2007/08/27(月) 19:32:09
ヒント ぽけギコ
364デフォルトの名無しさん:2007/08/27(月) 23:11:30
VC#で作成したアプリがあまりの遅さにクレームがつき
VC++MFCで書き直すことになりました。

VC#ではDataGridViewなんて便利なものがあったのですが
VC++では見つかりません。
yahooで調べてみたらMSFlexGridを使うらしいのですがいまいち柔軟性がない

おそらく一から作っていくと思いますが、いいサイトしりませんか?
365デフォルトの名無しさん:2007/08/27(月) 23:21:43
お前みたいなのがC#の評判を悪くして普及を妨げてるんだな。
366デフォルトの名無しさん:2007/08/27(月) 23:26:13
>>364
MSFlexGridはVSFlexGridのサブセットということになっているんだが、
そっちは試してみたか?トライアル版もあるぞ。
http://www.grapecity.com/japan/support/database/P1_223.htm
367デフォルトの名無しさん:2007/08/27(月) 23:42:37
codeguruとかcodeprojectとかにいくらでもあるじゃん
つーか、ドトネトのDataGridViewが遅いのは有名な話で、
ひょっとしてそこだけ有料コンポーネントで置き換える手が
あるんじゃねーの
368デフォルトの名無しさん:2007/08/27(月) 23:47:12
>>364
速度に拘るならMFCもやめとけ
369デフォルトの名無しさん:2007/08/28(火) 01:41:47
極端に速度が遅い場合、言語のオーバーヘッドよりも、アルゴリズムの悪さのほうが支配的。
(アルゴリズムと言うのも、はばかられるような、ただただ酷すぎる代物だったりもするが・・・)

370デフォルトの名無しさん:2007/08/28(火) 01:51:38

アフォ発見
371デフォルトの名無しさん:2007/08/28(火) 01:54:09

馬鹿発見
372デフォルトの名無しさん:2007/08/28(火) 01:58:42
ぬるぽ発見
373デフォルトの名無しさん:2007/08/28(火) 02:39:59
ム板でぬるぽに反応する奴なんていねーよ







ガッ!
374デフォルトの名無しさん:2007/08/28(火) 12:58:56
あいかわらずキモい流れ
375デフォルトの名無しさん:2007/08/28(火) 16:44:15
神様教えて。
templeteを用いた関数を、宣言と実態とで別ファイルに書くと
コンパイルエラーが出ます。

↓↓↓↓↓↓動く↓↓↓↓↓↓
 (test.h)
template <typename T>
void swap(T& a, T& b)
{
 T tmp = a; a = b; b = tmp;
}
 (main.cpp)
#include "test.h"
void main(){
 int a =1, b =1; swap<int>(a,b);
}

↓↓↓↓↓↓コンパイルエラー↓↓↓↓↓↓
 (test.h)
template <typename T> void swap(T& a, T& b);
 (test.cpp)
#include "test.h"
template <typename T> void swap(T& a, T& b)
{
 T tmp = a; a = b; b = tmp;
}
 (main.cpp)
#include "test.h"
void main(){
 int a =1, b =1; swap<int>(a,b);
}
376デフォルトの名無しさん:2007/08/28(火) 16:45:13
エラーとしてはswap<int>が未解決になります。
ちなみにVC++ 6.0です。
377デフォルトの名無しさん:2007/08/28(火) 17:10:50
378デフォルトの名無しさん:2007/08/28(火) 17:29:10
あるダイアログ内にある全コントロールのID(IDC_xxx)を取得するには
どうすればいいでしょうか?
379デフォルトの名無しさん:2007/08/28(火) 17:46:03
どうしてもcppファイルに定義を書きたければ、
明示的実体化(あるいは明示的インスタンス化とも)を行えばよい。
380デフォルトの名無しさん:2007/08/28(火) 18:04:38
あらかじめ想定した型でしか使えないなら、テンプレートの威力半減だと思う。
381デフォルトの名無しさん:2007/08/28(火) 18:12:12
FindWindowExでHWNDをとって、
GetDlgCtrlIDでIDに変換。

そこからさらに"ID_XXXX"という文字列が
欲しいなら逆変換テーブルの御用意を
382デフォルトの名無しさん:2007/08/28(火) 18:37:46
Visual C++を購入したいのですが表示言語設定などは設定できるでしょうか
それとも日本語しか表示できないのでしょうか
383デフォルトの名無しさん:2007/08/28(火) 18:42:53
>>381
EnumChildWindowsは要らないの?
384デフォルトの名無しさん:2007/08/28(火) 19:01:13
スレッドを作った側が、そのタイミングでスレッドを停止させるには?
385デフォルトの名無しさん:2007/08/28(火) 19:07:34
>>384
「そのタイミング」って何かな。
最近、自分のやりたいことを正確に書けない質問者が多いよ。

スレッドを停止状態で作るということであれば、CREATE_SUSPENDED。
386デフォルトの名無しさん:2007/08/28(火) 19:16:11
>>385
すみません。うんこ我慢しつつ脂汗かきながら書いていたので変になってました。
_beginthreadした側が、スレッドを作った側の好きなタイミングで停止させられるかどうか、という事です。
ハンドルで何とかなるかなと思って調べているんですが、中々答えまでたどり着けません。
ちなみにまだうんこ我慢してます。
387デフォルトの名無しさん:2007/08/28(火) 19:19:44
SuspendThread

あと_beginthreadより_beginthreadexな。理由はここに。
http://msdn2.microsoft.com/ja-jp/library/kdzttdcb(VS.80).aspx
388デフォルトの名無しさん:2007/08/28(火) 19:44:06
>>387
ああ、ありがとうございました
389378:2007/08/28(火) 20:39:55
>>381 >>383
EnumChildWindowsとGetDlgCtrlIDでできました。
ありがとうございます。
390デフォルトの名無しさん:2007/08/28(火) 22:27:09
VC++6.0で

  int *kaisu;

  kaisu = (int *) calloc(10, sizeof(int));

とすると
error C2440: '=' : 'bool' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
と言われてしまいます。ヘルプの例でもこうなってるのですがなんででしょうか
391デフォルトの名無しさん:2007/08/28(火) 22:50:38
まずは<stdlib.h>をインクルードしているか確認だ。
392デフォルトの名無しさん:2007/08/28(火) 22:52:10
>>390
malloc.hを#includeしてる?
393390:2007/08/28(火) 23:12:06
ご指摘の通りでした。失礼しました。
394デフォルトの名無しさん:2007/08/29(水) 01:00:22
ウィザードがCViewから派生してCXXXViewを作ってくれますが
このCXXXViewにどうやってコントロールを置くのですか?

例えば、Excelみたいなスプレッドシートを作る際
ここから自前でグリッド、カーソルを描画するのですか?
395デフォルトの名無しさん:2007/08/29(水) 01:21:37
GridViewを使うかFormViewにGridコントロールを張れ。
396デフォルトの名無しさん:2007/08/29(水) 01:24:51
ウソこいた。CListViewかCListCtrlのレポートビュー
397デフォルトの名無しさん:2007/08/29(水) 01:35:45
CListViewって項目の変更ができないからダメds
398デフォルトの名無しさん:2007/08/29(水) 01:54:49
・セルに重ねてCEdit出す
・.NETワークフレーム使う
・他の言語でコンポーネント作る
などなど。
好きな方法使えよ。
399デフォルトの名無しさん:2007/08/29(水) 03:31:27
VC++2005使ってWindowsプログラム作ってます。
.NETではなくネイティブAPIです。
文字列定義するときはどの型で作るのがベターですか?
charとかLPSTRとかこいつらに似たような型やらがいっぱいあって
どれを使えばいいのかわかりません。
400デフォルトの名無しさん:2007/08/29(水) 03:35:48
TCHARとTEXTマクロ使っとけ
401デフォルトの名無しさん:2007/08/29(水) 07:45:29
LPxSTRとPxSTRはxCHAR*
LPCxSTRとPCxSTRはxCHAR const*
共にヌル文字終端する。

LPxCHARとPxCHARはxCHAR*
こっちはヌル文字終端しない。

ただし、xは(空)、T、Wの3種類で、
例えばxCHARならCHAR、TCHAR、WCHARという具合。
CHARはchar、WCHARはwchar_tのtypedef。
TCHARはコンパイル時条件でcharかwchar_tのどちらかに切り替わる型。

特に理由がなければ400も言っているとおりTCHAR系を使っておけばいい。

402デフォルトの名無しさん:2007/08/29(水) 07:57:02
charとwchar_tのどちらになっても問題ないようにコーディングするならTCHARを使ってもいいけど、
どちらか片方でしか正しく動かないようなコードを中途半端に書くならTCHARを使うべきではないと思うよ。
403デフォルトの名無しさん:2007/08/29(水) 20:51:28
マルチになってすみませんが

【初心者歓迎】C/C++室 Ver.41【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1186410368/815
に、VC++のFormの使い方について質問を書いています。
よければアドバイスいただけると助かります
あっちに書いてからこのスレを見つけたので、こっちに書けばよかったと後悔・・・
404デフォルトの名無しさん:2007/08/29(水) 21:12:25
あらかじめ謝ればマナー違反が許されると思ってごめんなさい。出直してきます。
405399:2007/08/30(木) 00:48:14
詳しく説明してもらってありがとうございます。
自分でもいろいろ調べたりしましたが
型はTCHARで_TかTEXTマクロを使うのがよさそうですね。

ついでですがprintf系関数は
_sをつけた関数にして_Tをつけとけばいいですか?
406デフォルトの名無しさん:2007/08/30(木) 08:41:49
printf/wprintfには_tprintf、
printf_s/wprintf_sには_tprintf_sのようにTCHAR版が存在し、
<tchar.h>で宣言されている。
(正確には_TCHARという型を使うがTCHARと同一視して問題ない)

MSDNライブラリを引けばT版の関数名も載っている。
http://msdn2.microsoft.com/ja-jp/library/wc7014hz(VS.80).aspx

C++のほうはテンプレートになっているので、
std::basic_string<TCHAR>のように難なく使えるものが多い。
407デフォルトの名無しさん:2007/08/30(木) 20:00:57
便乗して質問。

日本語版のVC++の
std::basic_stringは、
C標準ライブラリ関数のようにMBCS対応していますか?

std::basic_string<_TCHAR>とした場合、
_UNICODEを定義している場合は、std::wstringと同じで問題なさそう
_MBCSを定義している場合は、std::stringとは同じではダメそうだと思う。
408デフォルトの名無しさん:2007/08/30(木) 21:18:41
CString urlInput = "http://www.yahoo.co.jp/";
TCHAR buf[1024];
CInternetSession cSession;

CHttpFile* file= (CHttpFile*)cSession.OpenURL(urlInput);
CString htmlData;
UINT readHtml;
while(1)
{
readHtml = file->Read(buf,1024);
CString str((LPCSTR)buf, readHtml);
htmlData += str;
if(readHtml < 1024)
break;
}
delete file;
m_htmlOutputEdit.SetWindowText(htmlData);


HTMLを表示するプログラムを作ったつもりなんですが、
日本語部分が文字化けしてしまうんです。

どうすれば文字化けしないで表示できるでしょうか?
409デフォルトの名無しさん:2007/08/30(木) 21:40:46
mojiこで
410デフォルトの名無しさん:2007/08/30(木) 21:43:53
あなたが気がついていない問題が。
> CString str((LPCSTR)buf, readHtml);
>>402を読んで反省するように。
411デフォルトの名無しさん:2007/08/30(木) 22:10:39
一般に使われてるブラウザでさえ文字化けの問題は避けられないし
そのへん真面目に作ると結構めんどくさい
412デフォルトの名無しさん:2007/08/30(木) 22:42:30
CStringよりCMemFileを使った方がいいな、こういう場合。
413デフォルトの名無しさん:2007/08/31(金) 00:45:12
デバッガに出力するprintf風に拡張した
OutputDebugStringのラッパを作ってみたんですが
_vstprintf_sの第二引数に何を入れればいいのかわかりません。

わからないポイントは以下の通りです。
・文字数なのかサイズなのか
・終端文字含めるのか含めないのか
・例外が発生したときの処理

よろしくおねがいします。

void DebugPrintf(LPTSTR format, ...)

{
TCHAR buf[256];
va_list ap;
va_start(ap, format);
_vstprintf_s(buf, /*ここ*/, format, ap);
va_end(ap);
OutputDebugString(buf);
}
414デフォルトの名無しさん:2007/08/31(金) 00:54:45
>>413
> ・文字数なのかサイズなのか
文字数

> ・終端文字含めるのか含めないのか
含める

> ・例外が発生したときの処理
知らない。
415デフォルトの名無しさん:2007/08/31(金) 00:55:28
ていうか、
ttp://msdn2.microsoft.com/ja-jp/library/xa1a1a6z(VS.80).aspx
の[使用例]を見れば、わかることじゃないか。
416414:2007/08/31(金) 01:03:50
ありがとうございました
確信がもてました
でも例外のときはどうすればいいんでしょうか
417デフォルトの名無しさん:2007/08/31(金) 01:25:21
自分なら例外はハンドルせずに放置するよ。
下手に処理して隠してしまったら、デバッグにならないし。
418デフォルトの名無しさん:2007/08/31(金) 01:44:45
msdnとか見て自己解決しました
419デフォルトの名無しさん:2007/09/02(日) 09:47:26
くだ質か分からないんだけど

VC++6 (pro)にて
明示的リンク(LoadLibrary〜GetProcAddress〜FreeLibrary)で呼び出されるDLLの
プロファイルやデバッグってどうやるんでしょう?
420デフォルトの名無しさん:2007/09/02(日) 10:48:55
>>419
暗黙的リンクで呼び出されるDLLと同じ方法を試してみてダメだったの?
421419:2007/09/02(日) 11:27:38
>>420
「えっ?・・・」と思ってやってみたらできました。本当にありがとう&すいません。

exe側ではdllをフルパス指定し、かつ一定条件時でのみLoadLibraryしてるんで、
単にexe指定するだけでは無理と思ったんです。
(どうやってやっているんだろう・・・LoadLibraryごとAPIフックしてんのかな?)
何かモヤモヤしてますがひとまず結果オーライなのでこうやって使うことにします
お騒がせしました
422デフォルトの名無しさん:2007/09/02(日) 21:43:54
VC++6.0使ってます。猫でもわかるの31章ラジオボタンでボタンをグループにする場合
の「レイアウト」「タブオーダーの設定」というのはどこからすればいいのでしょうか
423デフォルトの名無しさん:2007/09/02(日) 22:05:14
探さなくても目の前にあると思うけど
424デフォルトの名無しさん:2007/09/02(日) 23:55:01
bmpファイル読み込み、90°回転、保存を行いたいです。
 Bitmap bmp( img1.bmp );//読込み
 bmp.RotateFlip( Rotate90FlipNone );//回転
bmp.Save( img2.bmp );//保存

この処理はPC性能によって制限(画像サイズ、階調値など)があるだろうと思いますが、
その値の取得、計算方法がわかりません。
教えて頂けませんか。よろしくお願いします。
425デフォルトの名無しさん:2007/09/02(日) 23:58:29
必要分のメモリ確保できたかどうか
426デフォルトの名無しさん:2007/09/03(月) 00:31:35
>>424
古いうえに正確さは不明な昔のメモから引用。

WindowsのAPIでイメージを扱うにはDIBとDDBの2つのやり方がある。
(APIによって異なる)

NT系ではDIBのサイズには制限はないが、DDBの大きさに制限があり
NT4では、1個あたり150MB、総容量250MB程度
W2kでは、1個あたり130MB、総容量180MB程度

9x系だと、DDB/DIBいずれにも制限があり、
95/98では、DDBの場合1個あたり16MB、総容量350MB程度
DIB Sectionの場合1個あたり64MB、総容量350MB程度
Meでは、DDBの場合1個あたり16MB、総容量400MB程度
DIB Sectionの場合1個あたり400MBで、総容量400MB程度

XP/VistaやGDIPlusで制限があるかは知らないが、
例えばGDIPlusのBitmapクラスが内部でDDB/DIBを使用しているのであれば
同様の制限になると思われる。
427デフォルトの名無しさん:2007/09/03(月) 01:54:35
>>422
IDEのメニューにあるぞ。
428デフォルトの名無しさん:2007/09/03(月) 02:16:23
あー、ありました・・。ありがとうございました。
429デフォルトの名無しさん:2007/09/03(月) 08:54:31
>>425,426
参考になります。環境はXPなので、この情報を元に探ってみます。
ありがとうございました。
430デフォルトの名無しさん:2007/09/03(月) 22:19:00
以前VC++ 6.0でMFCアプリケーションでのプログラム作成を通して、
簡単な文法を勉強したことがありました

最近、visual stdio2005 のスタンダードエディションを購入して同じようにMFCのアプリを作ろうと思ったのですが、
文法がかなり違う事に気づきました。

メッセージボックスでメッセージと変数の値を一緒に出すのはどうすればいいのでしょうか?
6.0では下記の記述でできました。

int num = 12;
CString str;

str.Format( "答えの結果は%mbd", num );
MessageBox( str, "確認", MB_OK);

2005では
CA2T str("答えの結果は");
CA2T ptr("確認");

MessageBox(str, ptr, MB_OK);

という方法で文字を出すことは出来たのですが、変数の値を組み込む方法がわかりません。
ご教示おねがいします。

431430:2007/09/03(月) 22:20:41
>>str.Format( "答えの結果は%mbd", num );

str.Format( "答えの結果は%d", num );
の間違えでした
432デフォルトの名無しさん:2007/09/03(月) 22:33:23
%mbdを単に%dにすれば、その6.0の記述とやらも2005で使えると思うが。
433デフォルトの名無しさん:2007/09/03(月) 22:35:24
_Tマクロ忘れていた。<tchar.h>をインクルードしてこう。
str.Format(_T("答えの結果は%d"), num);
逆にVC++ 6.0でもコレでいけると思う。

こうなったのは、VC++ 2005がUNICODE有りを初期状態にしたため。
434430:2007/09/03(月) 22:45:35
>>433
記述の通り行ったところ、エラーなく表示できました。
理由も教えて頂き、本当にありがとうございます。
435デフォルトの名無しさん:2007/09/04(火) 00:44:10
MFCのCStringはVS.NET以降で大きく変更&拡張されているので、
一通り目を通しておくことをお勧めする。
これのお陰で文字列変換マクロはほぼ用済みになった。
436デフォルトの名無しさん:2007/09/04(火) 01:56:19
マルチ文字コード対応のための_T()をつけるのがめんどいんですがなんとかならないですか?
437デフォルトの名無しさん:2007/09/04(火) 02:59:06
>>436
char決め打ちだった頃のように、Unicode決め打ちでいいんじゃね?
438デフォルトの名無しさん:2007/09/04(火) 14:15:51
GetObject(hBmp, sizeof(BITMAP), &bmp); //bmpはBITMAP

SetWindowText(label,(char*)bmp.bmWidth);


あんまりに下らない質問かも知れんが教えて。
ビットマップの長さ(横幅)を取得して(labelというスタティックコントロール(であってる?))に
表示させたいんだけど、実行してもlabelの文字が変わらんのです。
bmp.bmWidthはlongのようだからキャストしてるつもりなんですが・・・

このスレで間違ってたらすいません。
439デフォルトの名無しさん:2007/09/04(火) 15:18:29
>>438
数値をそれを意味する文字列に変換する、ってのは素のキャストではできません。
sprintfやCString::Formatを使ってください。
440デフォルトの名無しさん:2007/09/04(火) 15:19:25
>>438
それは、VCとかwindowsとかの問題ではなくc言語の基本中の基本の問題だ
SetWindowTextの第2引数は、文字列のポインタを指定する訳だが
果たして、bmp.bmWidthの値は、文字列のポインタになっているだろうか?
ヒントは、キャストしたからと言って、その値自体は変わらない
これ以上は、頼むから調べてくれ
441デフォルトの名無しさん:2007/09/04(火) 16:47:14
VC++のSDKでCreateWindowで作ったボタンが消える現象が起きた。
フォームにボタンを2,3個置き、ボタンと関係ない離れた位置にビットマップ描画。
すると(3,4回に一回)ボタンが消える。
でもその位置でクリックするとボタンが現れ、押せる。

ちなみに某のC++Builderでも同じ事が起きた。
リソース不足かと思って、IDEを閉じて実行しても同じ。
何で?
442デフォルトの名無しさん:2007/09/04(火) 16:54:47
ソースup
443441:2007/09/04(火) 16:58:29
>>442

case WM_PAINT:
return 0;

この所をコメントアウトすると起きなくなるみたいなんだが。
怪しいのはこの辺と思うんだけど。
444デフォルトの名無しさん:2007/09/04(火) 17:01:42
CLIPING
445デフォルトの名無しさん:2007/09/04(火) 17:07:11
Win32API初めて数週間の俺が思うに、
WM_PAINTではValidateRectとかBeginPaintとかしないといけないんじゃ?と思ったんだが
とりあえずそこで処理しないで、return 0; を break; にするなりして、DefWindowProcに渡せばいいんじゃね。
多分
446デフォルトの名無しさん:2007/09/04(火) 17:08:01
>>443
WM_PAINTでは更新リージョンを空にしないといけない。
更新リージョンがある限りWM_PAINTは呼ばれ続ける。
更新リージョンを空にする方法は、
BeginPaint、ValidateRect、ValidateRgnのいずれかの関数を使用すること。

DefWindowProcにWM_PAINTが渡ると、ただBeginPaintしてEndPaintしていると
AdvancedWindowsかプログラミングWindowsにも書いてあったはず。

だからWM_PAINTのcaseをコメントアウトすると、作法通りのプログラムになり、
問題が起きなくなると考えられる。
447デフォルトの名無しさん:2007/09/04(火) 19:39:29
>>441
「VC++のSDK」つーから、Visual Studio SDK かと思ったら、PlatformSDKのことかよ。

ふつうは、
VC++で、Win32APIでCreateWindowで・・・
と書くのよ。
448デフォルトの名無しさん:2007/09/04(火) 21:13:18
Visual Studio2003でWIN32プログラムを作ってるんですが、
printfみたいにコンソールにデバッグ用メッセージを表示させるにはどうすればいいんでしょうか?

凄く初歩的な質問ですいません。
449デフォルトの名無しさん:2007/09/04(火) 21:20:11
>>448
コンソールへの出力ではなく、デバッグ出力を得ることが目的なら、
CRTのデバッグルーチン、もしくはOutputDebugStringを使った自前の関数を用意する。
MFC/ATLならTRACEとかATLTRACEというのもある。
450デフォルトの名無しさん:2007/09/04(火) 21:20:31
>>448
AllocConsole

MSDNライブラリで、AllocConsoleのページを表示した状態で「同期」して、
目次の同じツリーにある他の関数群も読んでみよう。
451デフォルトの名無しさん:2007/09/04(火) 21:22:02
もっと楽な方法があるから、そんな面倒なのやるやつはいない
452デフォルトの名無しさん:2007/09/04(火) 22:05:07
>>449
>>450
ありがとうございます。
MSDNライブラリってAPIリファレンスのことですよね。
これは、WEBにあるのを見るんでしょうか、
それともVisual Studioインストールしたら一緒にインストールされてるものですか?

>>451
普通はどういうふうにデバッグするんでしょうか?
453デフォルトの名無しさん:2007/09/04(火) 22:09:26
>>452
何を言ってるんだお前は
わろた
454デフォルトの名無しさん:2007/09/04(火) 22:17:37
>>452
> MSDNライブラリってAPIリファレンスのことですよね。

そう。
開発者向けのドキュメント各種が入っていて、
その中にWin32APIリファレンスも含まれてる。

APIリファレンスだけなら、
WindowsSDK(PlatformSDK)のヘルプでも足りる。

> これは、WEBにあるのを見るんでしょうか、

最新版をチェックしたいのでなければ、
ローカルにインストールしたほうが使いやすいよ。

> それともVisual Studioインストールしたら一緒にインストールされてるものですか?

ごめん、どうだったか覚えてない。
455452:2007/09/04(火) 22:20:59
>>453
今まで携帯のアプリしか作ったことないんですが、それだと
System.out.println() とか、
DBGPRINTF() とかで、
コンソールに値を出してデバッグするんですが、
普通はブレークポイント?とかいうのを使ったりしてデバッグするのかなあと。

>>454
ありがとうございます。
WEBで見てみたらやたら重かったのでインストールしてみます。
456デフォルトの名無しさん:2007/09/04(火) 22:35:01
>>455
Windowsの場合、通常はデバッガにメッセージを出力(OutputDebugString等)する。
VisualStudio上でデバッグすると出力ウィンドウに出力されるので、後で簡単に見返せる。
無論せっかくのIDEなのだから、ブレークポイントもどんどん使うべき。
457デフォルトの名無しさん:2007/09/04(火) 22:41:35
>>455
ログを取ったほうがいい場合もあるが、
いわゆる「printfデバッグ」は考え物だぞ。

普通にデバッガでブレークポイント張って、ステップ実行しながらチェックすべし。
458452:2007/09/04(火) 22:42:34
ありがとうございます。色々と参考になります。
ブレークポイント凄く便利そうですよね。是非使ってみます。
459デフォルトの名無しさん:2007/09/04(火) 22:49:38
>>458
デバッガで止めた状態で、
マウスカーソルを変数の上にもっていくと、
その値が表示されるよ。
460デフォルトの名無しさん:2007/09/04(火) 22:59:36
自分のは表示されません。
461デフォルトの名無しさん:2007/09/05(水) 00:42:29
ビットマップハンドルから一点の色を取得するには
どうすればいいんでしょう?

hBitmapには既にビットマップが読まれていて、
そのビットマップの左上(0,0)は例えば赤だとする。

この時に赤を返すAPIが知りたいんです。
GetPixel(hBitmap,0,0) でも駄目だったし
462デフォルトの名無しさん:2007/09/05(水) 00:55:06
GetPixelの引数はHBITMAPじゃなくてHDCだから、こうかな

HDC hScreenDC = GetDC(NULL);
HDC hMemDC = CreateCompatibleDC(hScreenDC);
ReleaseDC(NULL, hScreenDC);
SelectObject(hMemDC, hBitmap);
COLORREF pixel = GetPixel(hMemDC, 0, 0);
DeleteDC(hMemDC);
463デフォルトの名無しさん:2007/09/05(水) 01:21:48
GetPixelはDCに対して、使用する関数だから
DCにhBitmapを選択してからGetPixelを使用する
どうしても、ビットマップハンドルからとなるとGetBitmapBitsで
一旦バッファにコピーして、コピーした配列からアドレスを求めて読み出す
もし、ビットマップをDIBにロードしてるなら
GetObjectでビットマップへのポインタを直接参照も可能
464461:2007/09/05(水) 02:20:58
>>462 >>463 レスどうもです。

sprintf(col2,"%x",pixel);
SetWindowText(abc,col2);

462さんのプログラムの後に上記で
(abcというラベルに)書き込むと
0と表示されてしまうんですが・・・

左上が赤だったら ff0000 と出てほしいんです。

間違いあったら指摘お願いします。
465デフォルトの名無しさん:2007/09/05(水) 03:07:55
>>464
それでは色の並びはBGRの順に表示される。
桁数を6桁固定で、RGBの順で表示したいなら、例えば以下とする。
sprintf(col2,"%02X%02X%02X", GetRValue(pixel), GetGValue(pixel), GetBValue(pixel));

ただし、これは値が0になることとは関係ない。

pixelの値が0になるのは、色の取得プログラムを間違えて入力してるか、
hBitmap自体が正しくないことなどが考えられる。
hBitmapはどうやって検証してる?
466464:2007/09/05(水) 03:31:10
こんな夜分に下らない質問に付き合って頂き恐縮です。

sprintf(col2,"%02X%02X%02X", GetRValue(pixel), GetGValue(pixel), GetBValue(pixel));

これでやっても 000000って出てしまうんですよ。
自分自身かなりの馬鹿なので変なことやってるかも。

色の取得プログラムは462さんのコードを使っています。

hBmp=LoadImage(NULL,GotFileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
ってな感じで読んでます。
BitBltで描画もできます。また、ビットマップは数種類試してますが
どのビットマップでも、やっぱり 000000 が出ます。
467デフォルトの名無しさん:2007/09/05(水) 03:38:07
SelectObjectは成功してるのか?
なんかメモリDCに最初から選択されている
モノクロ1x1のビットマップのピクセルカラーを読んでる気が
468デフォルトの名無しさん:2007/09/05(水) 03:59:20
あと戻り値やパラメタのチェック、おかしければGetLastError見るとか
自分でSetPixelして読んでみるとどうなるか、とか
Bitmap情報を調べてみるとか
469デフォルトの名無しさん:2007/09/05(水) 04:02:08
>>466
以下のプログラムは動作する?
うちの環境(WinXP pro)では、以下は正常に動作して8C6B5Aと表示された。これは正常な値。
なお、珈琲カップ.bmpはWindowsフォルダ配下にある標準のビットマップをカレントフォルダにコピーしたもの。
もしこれが動作したら次はビットマップを調査対象のものに差し替えて試してみたらどうなる?
てな感じで、もうあとはこのレベルから順番に1つずつつぶしていくしかないんじゃないの?
---a.cpp----------
#include <stdio.h>
#include <windows.h>
#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "user32.lib")
int main(int argc, char* argv[])
{
HBITMAP hBmp=(HBITMAP)LoadImage(NULL,"珈琲カップ.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
HDC hScreenDC = GetDC(NULL);
HDC hMemDC = CreateCompatibleDC(hScreenDC);
ReleaseDC(NULL, hScreenDC);
HBITMAP hBmpOrig = (HBITMAP)SelectObject(hMemDC, hBmp);
COLORREF pixel = GetPixel(hMemDC, 0, 0);
SelectObject(hMemDC, hBmpOrig);
DeleteDC(hMemDC);
DeleteObject(hBmp);
char col2[10];
sprintf(col2,"%02X%02X%02X", GetRValue(pixel), GetGValue(pixel), GetBValue(pixel));
printf("%s\n", col2);
return 0;
}
470466:2007/09/05(水) 12:14:13
>> 467 468 469
なんとか469氏のコードで出来ました。
皆さんに感謝です。
471デフォルトの名無しさん:2007/09/05(水) 12:46:44
>>464
マルチ死ね
アホは初心者スレから出てくるなカス
472デフォルトの名無しさん:2007/09/05(水) 14:36:12
C++では例外処理は自分でthrowしなきゃいけない?
try
{
int a = func();
}
catch(...)
{
エラー処理
}
とかだとfunc()にthrowを書く必要がありますか?
473デフォルトの名無しさん:2007/09/05(水) 14:39:21
>>472
何を言ってるのかわからない。
474472:2007/09/05(水) 15:16:29
>>473
お前には聞いてないので安心汁!!(`・ω・´)
475デフォルトの名無しさん:2007/09/05(水) 15:23:12
472だけど…
よく考えたらC++の質問でした。すいません。
C#とかだとException型のcatchがあればなんでも拾ってくれるんですけど
C++だとcatch(...)を書いておけば想定外のエラー時に拾ってくれるのかな?という質問です。
476デフォルトの名無しさん:2007/09/05(水) 15:23:57
例外は無いならそれに越したことは無い。
よって書く必要は無い。
477デフォルトの名無しさん:2007/09/05(水) 16:05:21
猫でもわかるSDKの第6章簡単なメニューで

myProg.hbrBackground = GetStockObject(WHITE_BRUSH);

のままだと明示的にキャストが必要と言われ HBRUSHにキャストするとOKでした。
あと、そのままだとメニューがでないので参考書をみると

myProg.lpszMenuName ="SAMPLE02";

の右辺は MAKEINTRESOURCE(SAMPLE02); とする必要がありました。私はVS6.0ですが
バージョン違いのせいでしょうか
478デフォルトの名無しさん:2007/09/05(水) 16:05:43
>>475
お前さ、自分の頭の中のことが、説明しなくても、相手に伝わると無自覚に思っているだろ。

基本的にC++では、誰かがC++例外をthrowしない限り、C++例外は発生しない。
いちいち「C++例外」というのは、C++の領分ではない例外もあるから。
Windows環境だと、言語に関係なく、「構造化例外処理」という名前のものがある。
VC++の場合、コンパイルオプションによって取り扱いが違い、
デフォルトではC++例外としては扱わず、catch(...)で捕捉できない。

詳しくは、このスレの>>135からを読め。
479デフォルトの名無しさん:2007/09/05(水) 16:08:23
>>478
文句言いながら質問に答えるなよ。

質問に答えちまったら、
エスパーが必要な質問をしても、
求める答えが得られると思って、
行動を改めないぞ。
480デフォルトの名無しさん:2007/09/05(水) 16:19:17
>>477
リソースを作るときに、IDで指定(SAMPLE02)した場合はMAKEINTRESOURCEマクロ必要
名前で指定("SAMPLE02")した場合はそのままでおk
キャストはcかcppの差じゃないか?
481デフォルトの名無しさん:2007/09/05(水) 16:30:56
すいません、リソースを作る時に指定というのはどこで指定するのでしょうか。
私はリソースエディタで作ってますがスクリプト本体を見比べても違う部分が分かりません。
482デフォルトの名無しさん:2007/09/05(水) 16:42:56
>>481
だから、SAMPLE02 と入れるか "SAMPLE02" と入れるかの違い
"" の有無だよ。リソースエディタ上でやってみな
483481:2007/09/05(水) 16:55:24
できました。ありがとうございました。
484472:2007/09/05(水) 17:28:50
なるほど、理解できました。ありがとうございます。
もう少し質問の仕方も勉強します…
485デフォルトの名無しさん:2007/09/05(水) 20:39:05
printf() 関数で " (ダブルコーテーション)の文字を出力する時は、どうすればいいでしょうか?
教えて下さい。
486デフォルトの名無しさん:2007/09/05(水) 20:40:40
\"
487485:2007/09/05(水) 20:50:54
>>486
ありがとうございます
488デフォルトの名無しさん:2007/09/05(水) 22:27:02
VC++2005でWin32APIの関数をヘルプで見てもしょぼい情報しか出てこないか情報が見つからないって出ます。
6.0の時は詳細な情報が出てきて重宝したのですが2005では軽視されてるんですか?
489デフォルトの名無しさん:2007/09/05(水) 22:29:29
MSDNライブラリはインストールしてる?
490デフォルトの名無しさん:2007/09/05(水) 22:30:50
EEだからインストールしてません(できない)
491デフォルトの名無しさん:2007/09/05(水) 22:32:14
できるよ
492デフォルトの名無しさん:2007/09/05(水) 22:34:00
493デフォルトの名無しさん:2007/09/05(水) 22:34:46
そだね
494デフォルトの名無しさん:2007/09/05(水) 22:38:07
ありゃりゃできるんですか?
さっそくしてみます。
ありがとうございました。
495デフォルトの名無しさん:2007/09/05(水) 22:43:55
VC++2005 ExpressEditionからアップグレードしてStandardEditionを入れたのですが
ExpressEditionはアンインストールしても大丈夫ですか?
496デフォルトの名無しさん:2007/09/05(水) 22:56:42
ExpressEditionは他のEditionとは独立しているので大丈夫なはず。
関連付けがうまく処理されるかどうか多少不安だけど。
497デフォルトの名無しさん:2007/09/05(水) 23:09:32
モジュールは独立かもしれないけど、
>アップグレードして
ってところが気になる。
498デフォルトの名無しさん:2007/09/06(木) 00:34:00
超初心者スレでも怒られるような質問かもしれませんが・・・
以下、概要となります。

aaa.h → VCで作られたaaa.libのヘッダ(関数のプロトタイプ)

test.cpp → プロジェクトのメインプログラム
extern"c" #include <aaa.h>
winmain
{
※test.cppについてはaaa.hの関数を使っても
リンクエラー無し
}

tes_sub.cpp → プロジェクトに存在しているクラス処理
extern"c" #include <aaa.h>
abcclass::abc_read
{
abc_readでaaa.hの関数を使おうとすると
ビルドでLNK2001エラー
}
abcclass::abc_close
{
}

tes_sub.cppでaaa.h(aaa.lib)の関数を使用する方法は
ありますでしょうか?
それとも元々このような記述は不可なのでしょうか?
499495:2007/09/06(木) 00:48:01
ExpressEditionアンインストールしても問題なく動きました
500デフォルトの名無しさん:2007/09/06(木) 00:54:27
>>498
> tes_sub.cppでaaa.h(aaa.lib)の関数を使用する方法はありますでしょうか?

ある。
501デフォルトの名無しさん:2007/09/06(木) 00:57:21
>>500
レスありがとうございます。
もう少々具体的にアドバイス願えますでしょうか<(_ _)>
502デフォルトの名無しさん:2007/09/06(木) 00:57:59
>>498
> それとも元々このような記述は不可なのでしょうか?

お前さんの書いたコード断片は論外だろ。
503デフォルトの名無しさん:2007/09/06(木) 00:58:58
>>501
何が知りたいのか正確に質問してくれ。
504デフォルトの名無しさん:2007/09/06(木) 01:03:33
どうすればいいか、より
なぜそうなるのか、を聞いたほうがためになると思うがなあ
505デフォルトの名無しさん:2007/09/06(木) 01:16:30
>>498
とりあえず、>>498の書き方ではエラーになると思うけど、
仮に以下のように2行に分けて記述してあったとしても
extern"c"
#include <aaa.h>
この場合、extern "C" はaaa.h内の先頭の1関数にしか有効ではない。
通常は extern "C" の記述自体をヘッダ内に入れ、以下のように全体を中括弧で囲む。
extern "C" {
void foo();
void bar();
void baz();
}
ソース側では、ただヘッダを取り込むだけにする。ちなみに自プロジェクトのヘッダはダブルクォーテーションで囲む。
#include "aaa.h"
506デフォルトの名無しさん:2007/09/06(木) 01:21:52
extern "C"をヘッダに記述する場合は、__cplusplusで切り分けるべき。

#ifdef __cplusplus
extern "C" {
#endif

void foo();

#ifdef __cplusplus
}
#endif
507501:2007/09/06(木) 01:28:15
>>502
あまり長々と書くのも良くないと思いまして概要だけを抜き書き
したのですが、質問としては端折り過ぎだったようで申し訳ございません

>>503,>>504
ビルド時にtest.objについてはリンクエラーが無いのに、
tes_sub.objはLNK2001になってしまう原因が何なのかが
判らずにおります。
もう少し自分でも調べてみます。
508501:2007/09/06(木) 01:32:57
>>505,>>506
レスありがとうございます。
>この場合、extern "C" はaaa.h内の先頭の1関数にしか有効ではない。
この部分の記述が良くなかったみたいですね。
ヘッダ内で__cplusplusを条件にしてextern "C"を記述するようにしてみます。
たいへんありがとうございました。
509デフォルトの名無しさん:2007/09/06(木) 01:37:56
>>507
test.objでは任意の関数が使えているってこと?

503で書いたけど、元の書き方(抜書きが正しいなら)だと、
extern "C" は最初にしかかからない。
逆にいえば、先頭の関数には有効なので、test.objで使っている関数
によってはたまたまOKだった可能性があるということを言ってるんだけど。
510デフォルトの名無しさん:2007/09/06(木) 01:39:13
>>507を自分へのレスだと勘違いした...orz
511488:2007/09/06(木) 01:50:15
遅レスですが
MSDN無事DL&インスコできました。
Win32APIもばっちりあるしローカルだから軽くて最高です。
ありがとうございました。
512デフォルトの名無しさん:2007/09/06(木) 04:04:24
C++対応してないヘッダファイルを使う場合は、

extern "C" {
#include "hoge.h"
}

これでいいじゃないか。
513デフォルトの名無しさん:2007/09/06(木) 04:06:47
>>507
肝心な情報を全て隠して質問してもわかるわけない。

自分で切り分けしてポイントを絞るか、
プロジェクトのソースコード一式を全て出すか、
どっちかにせい。
514デフォルトの名無しさん:2007/09/06(木) 04:43:00
>>502
申し訳ないと思っているのなら、端折らずに書けよ。
場合によっては、一字一句変らないようにコピペしたほうがいいぞ。
515デフォルトの名無しさん:2007/09/06(木) 09:30:29
モーダルでダイアログ表示した場合って
元のウィンドウを、(ダイアログ閉じないと)操作出来ない?

ウィンドウ上のボタンが押されると
時間のかかる処理を行うんだけど
その進捗を、モーダルで表示したダイアログ上の
プログレスバーに表したいんです。

不可能ですか?
516デフォルトの名無しさん:2007/09/06(木) 09:42:56
モーダルの意味を考えてみよう。

操作できないのはユーザーインターフェースで、
プログラムからプログレス表示するのは問題ないと思うが
517515:2007/09/06(木) 10:23:59
>>516

case ID_BUTTON:
DialogBox( hInstance,("IDD_DIALOG1"), hWnd, DlgProc );

for (i=0;i<1000;i++)
{
時間のかかる処理
}

こんな感じでやってるんですが
どうもfor文が実行されるのが、ダイアログを閉じた後なんです。
ダイアログを閉じない限り処理が始まらないんです。
518デフォルトの名無しさん:2007/09/06(木) 10:29:25
>>517
UIスレッドで重い処理をしようというのが間違いだと思う。
519デフォルトの名無しさん:2007/09/06(木) 10:50:30
>>517
まず、時間のかかる処理は別スレッドを起こすべき。

ウィンドウには毎秒何十/何百というメッセージが飛んでくるが、
そのすべてをリアルタイムで処理しなければならない。
>>517のように記述すると、ID_BUTTONのメッセージの処理を行うため、
他のすべてのメッセージの処理を阻害してしまう。

モーダルダイアログは閉じられるまで次の行に制御は移らない。
これは仕様だが、処理自体を別スレッドにしておけば平行して処理
されるので問題はなくなる。
520デフォルトの名無しさん:2007/09/06(木) 11:19:08
スレッドのない時代は、モードレスダイアログを作成して
モードレスなんだけど親子関係作って親を操作できないようにして
モーダルのように動作させることもやったし、今でもできるけど
せっかくスレッドあるんだから活用したら
521デフォルトの名無しさん:2007/09/06(木) 13:01:01
>>518,519,520
レス、サンクスです。もう一つお聞きしたいんですが、

ダイアログを閉じたいんですが、これって間違ってますか?

DialogBox(hInstance,"IDD_DIALOG1", hWnd, DlgProc );

↑ここでダイアログ表示

switch( LOWORD( wp ) ) //ダイアログプロシージャの中
{
case IDOK:
case IDC_BUTTON1:
EndDialog( hDlg, 0 );
break;

↓ここがおかしい?(ダイアログ閉じたい)

SendMessage("IDD_DIALOG1",IDOK,0,0);

ダイアログ上にあるボタン(IDC_BUTTON1)を押すとダイアログが消えます。
ちなみに、右上の閉じるボタンを押してもダイアログが消えません。
522デフォルトの名無しさん:2007/09/06(木) 13:14:03
またお前かアホすぎw
523デフォルトの名無しさん:2007/09/06(木) 13:20:17
>>521
そのSendMessageは明らかに間違い。
例えば
PostMessage(hDlg, WM_COMMAND, MAKELONG(IDOK, 0), 0);
などとする。

閉じるボタンについては、OKとキャンセルの区別がないなら、

case IDOK:
case IDCANCEL:
case IDC_BUTTON1:
EndDialog(hDlg, 0);
break;

のようにIDCANCELを併記しておけばよいと思う。
ダイアログはESCキーや閉じるボタンに対して、IDCANCELのIDを持つ
ボタンが押されたかのようなメッセージを投げてくる。

いまいち基本が理解できていないようなので、躓くたびにいちいち質問するより、
猫でもわかるとかのサイトで勉強して基本を身につけたほうがよいと思う。
524デフォルトの名無しさん:2007/09/06(木) 13:21:29
個人的にはLOWORD(wp)よりGET_WM_COMMAND_ID(wp, lp)が好き。

SendMessageの引数がめちゃくちゃ。最初は"IDD_DIALOG1"ではなく、
ウィンドウハンドル。コンパイル時に警告かエラーになるだろ。
そして送るメッセージはIDOKではなく、WM_COMMAND。
wParam、lParamの引数を組み立てるのは間違えやすいので、
FORWARD_WM_COMMANDかGET_WM_COMMAND_MPSのマクロに任せておけ。

最後、IDOKだけでなくIDCANCELでもEndDialogすれば、
閉じるボタンでも終了するようになる。
ついでに言うとボタンのIDもIDC_BUTTON1なんかではなく、
OKボタンのIDの値はIDOK (== 1)、
キャンセルボタンのIDの値はIDCANCEL (== 2)にしておくのが常套手段。
525デフォルトの名無しさん:2007/09/06(木) 13:30:49
>>524
521は言ってないが、たぶんMFC臭いぞ。
526デフォルトの名無しさん:2007/09/06(木) 14:55:37
>>525
hInstanceとか使ってるから、win32に一票
527デフォルトの名無しさん:2007/09/06(木) 15:16:29
DialogBoxなんて使ってる時点で、win32でしょ
しかし・・・自分はwin32でソフト作るのって、もう10年近くやってないかも
DirectXがまだ2位でゲーム作って以来だわ
528デフォルトの名無しさん:2007/09/06(木) 17:05:43
MFCとwin32の違いも分かってないに3000点
529デフォルトの名無しさん:2007/09/06(木) 19:34:43
VisualStudio2005に変わってから、色々と戸惑っています。
例えばこんなコードの場合、y=0から始まる文字列と、
y=20から始まるコードの内容を同じにする場合、
コメントの部分をどんな風に変えれば良いのでしょうか?

 char str[80];
 TCHAR str2[80],str3[80]=_T("[]");
 RECT rc;
 GetClientRect(hWnd,&rc);
 sprintf(str,"[X=%4d,Y=%4d]",rc.right,rc.bottom);
 swprintf(str2,_T("[X=%4d,Y=%4d]"),rc.right,rc.bottom);
 TextOut(hdc,0,0,(LPCTSTR)str2,wcslen(str2));
//strspy(str3,str);
 TextOut(hdc,0,20,(LPCTSTR)str3,wcslen(str3));
530デフォルトの名無しさん:2007/09/06(木) 19:46:44
>>529
中途半端にTCHARマクロを使うべきではない。
> swprintf(str2,_T("[X=%4d,Y=%4d]"),rc.right,rc.bottom);
swprintfはUnicode専用だから、
TCHARの配列や文字列リテラルを_T()で囲むのであれば、_stprintfを使うべき。

> TextOut(hdc,0,0,(LPCTSTR)str2,wcslen(str2));
str2はTCHARの配列なのだから、wcslenではなく、_tcslenを使うべき。

そして、charとTCHARを混在させると変換が必要になるので、
できるかぎり片方に統一して混在させるべきではない。
531デフォルトの名無しさん:2007/09/06(木) 19:50:42
どうしても変換したいなら、
_stprintf(str3, _T("%hs"), str) ;
かな。
532デフォルトの名無しさん:2007/09/06(木) 19:54:56
さらに、変換をしない、という選択肢もある。
TextOutA(hdc,0,20,str,strlen(str)) ;
533デフォルトの名無しさん:2007/09/06(木) 20:10:29
Thunx!!
テキストファイルと表示の違いに戸惑っていました。
2005ではマルチバイト文字が標準になったんですね。
534デフォルトの名無しさん:2007/09/06(木) 20:38:39
違うわ低脳
535デフォルトの名無しさん:2007/09/06(木) 20:54:01
>>533
ワイド = Unicode
マルチバイト = SJIS
536デフォルトの名無しさん:2007/09/06(木) 21:43:28
今までヘッダファイル書くとき

#ifndef _○○○_H_
#define _○○○_H_

内容

#endif


ってやってたんだけど
今は
#pragma once
使うのが流行ってるの?
537デフォルトの名無しさん:2007/09/06(木) 21:48:54
>>536
開発ターゲットがWindowsのみなら、#pragma once でいいんじゃないかな?

一部のファイルでも、他プラットフォームと共通化の可能性があったりすると、
ソース記述は全体で規約統一しておきたいために、結局従来の書き方をすることに
なったりするけど。
538デフォルトの名無しさん:2007/09/06(木) 22:05:33
.rcファイルってマイクロソフト専用のフォーマット?
これだけ妙な書式で書かれてるもんで
539デフォルトの名無しさん:2007/09/06(木) 22:14:18
Microsoft専用のフォーマットって表現が微妙だけど、
Windowsアプリケーション固有のリソース定義用のファイル。
フォーマットを決めたのはもちろんMicrosoft。
540デフォルトの名無しさん:2007/09/06(木) 22:17:07
>>538
Windowsリソーススクリプトだけど、
どこのでも大体共通の書式だと思うよ。

1つのリソーススクリプトファイルを
Borland C++のbrc32とVC++のrcの両方で
コンパイルできるように書いた覚えもある。
541デフォルトの名無しさん:2007/09/06(木) 22:18:13
>>538って初心者専用のフォーマット?
これだけ妙なレスが書かれてるもんで
542デフォルトの名無しさん:2007/09/06(木) 22:28:52
>>541
いや、超初心者用。
543デフォルトの名無しさん:2007/09/06(木) 22:55:47
gcc3だと、pragma onceに文句言ってこない
544デフォルトの名無しさん:2007/09/06(木) 22:57:02
コンパイルするだけでヒーヒーいっとりますよ。
エラーとか引っ切り無しに出てくるし
プログラムってむずかしいね。
545デフォルトの名無しさん:2007/09/06(木) 23:26:25
諦めたらええねん
546デフォルトの名無しさん:2007/09/06(木) 23:29:34
諦めきれんねん
547デフォルトの名無しさん:2007/09/06(木) 23:47:48
頑固だねぇ己の力量も弁える事ができないとは
548デフォルトの名無しさん:2007/09/06(木) 23:56:33
力量以上にほとばしるものがあるねん
549デフォルトの名無しさん:2007/09/07(金) 00:01:35
早死にするタイプだな
550デフォルトの名無しさん:2007/09/07(金) 00:04:02
死にたくないねん
551デフォルトの名無しさん:2007/09/07(金) 02:02:40
#pragmaのいろんな使い方をまとめたHPありませんか?
552デフォルトの名無しさん:2007/09/07(金) 02:11:23
>>551
リファレンスなら以下にある。
ttp://msdn2.microsoft.com/ja-jp/library/d9x1s805(VS.80).aspx
553デフォルトの名無しさん:2007/09/07(金) 02:12:06
ありますが、
554デフォルトの名無しさん:2007/09/07(金) 09:06:08
教えてください
double変数をDWORDLONG変数へビット単位でコピーできますか?
つまりdouble変数のbit0が1ならDWORDLONGのbit0も0、bit63が1なら
DWORDLONGのbit63も1にする動作です。
555デフォルトの名無しさん:2007/09/07(金) 09:46:21
できます。
556554:2007/09/07(金) 09:47:44
自己解決しました
557デフォルトの名無しさん:2007/09/07(金) 10:48:15
アドバイスもらっといて事故解決はないだろ
558デフォルトの名無しさん:2007/09/07(金) 11:05:28
できるかどうかを知りたいのか、
やり方を知りたいのか、
その区別すらできないのは、
初心者とかそういう以前の問題だな。
559デフォルトの名無しさん:2007/09/07(金) 13:46:51
初心者より以前なんてない
560デフォルトの名無しさん:2007/09/07(金) 13:50:09
ある
561デフォルトの名無しさん:2007/09/07(金) 14:01:36
ない
あると思ってるのは初心者だけ
562デフォルトの名無しさん:2007/09/07(金) 14:15:48
そもそも何もしてない無関係な人は初心者でさえない
563デフォルトの名無しさん:2007/09/07(金) 14:50:52
そもそも何もしてない無関係な人はこんな所には来ない
564デフォルトの名無しさん:2007/09/07(金) 15:05:25
つまり、こんなとこには来ない人は初心者でさえない、と
565デフォルトの名無しさん:2007/09/07(金) 15:07:00
アホすぎw相手するの疲れた
566デフォルトの名無しさん:2007/09/07(金) 15:22:12
真面目に話をしているのを見かけると、茶化して荒らさずにはいられない、頭が可哀想な人がいますが、スルーしましょう。
567デフォルトの名無しさん:2007/09/07(金) 19:39:22
マジでそういう話題もう良いから
568名前を付けて保存:2007/09/07(金) 21:51:04
Visual C++ 2005でMFCを用いたプログラムを始めたいのですが、
「Visual Studio 2005 Academic Edition」でMFCを使うことは可能でしょうか??
公式ホームページやアマゾンの商品の説明等色々調べてみたのですがそのことに関する記述が見あたらなくて困ってます。
もし、どなたか、お分かりの方がいらしたら教えて頂けないでしょうか??
569デフォルトの名無しさん:2007/09/07(金) 22:03:04
570名前を付けて保存:2007/09/07(金) 22:10:48
>>569
親切に教えて下さって有り難うございます。
これで安心して購入できます。
571デフォルトの名無しさん:2007/09/08(土) 00:06:02
>>559
そういういわゆる初心者より以前を指しているのが
スレタイにある<超初心者>だと俺は思う。
572デフォルトの名無しさん:2007/09/08(土) 00:21:12
MFCなんてもう廃れちゃってんじゃん

あえて銭払う必要もなかろう
573デフォルトの名無しさん:2007/09/08(土) 00:22:14
そう思う君が買わなければいいだけ
574デフォルトの名無しさん:2007/09/08(土) 01:06:10
>>571
初心者を超えたら初級者じゃないか。

最初の一歩が初心者なのだから、それ以前は有り得ない。
575デフォルトの名無しさん:2007/09/08(土) 09:17:46
VC++の初心者というのはいいが、
人間として初心者というのはいかがなものか。
576デフォルトの名無しさん:2007/09/08(土) 09:53:56
言うなら、

VC++の初心者はOK
質問の初心者はNG

と。
577デフォルトの名無しさん:2007/09/08(土) 10:39:57
質問するのは難しいよね。

質問文を書くために問題を切り分けて整理しているうちに、問題の原因が判明することも多々あるわけで。
578デフォルトの名無しさん:2007/09/08(土) 11:34:03
>>577
それ、良い事じゃないか

俺は、一応初心者スレの場合、変な質問がきたら、聞き返すことにしてるよ
もちろん初心者スレ以外で訳わからん質問は完無視だが
みんなも初心者のころ経験してるだろ?
質問したいんだけど質問したい内容を記述できなくて、もどかしい思いをした経験が
579デフォルトの名無しさん:2007/09/08(土) 17:10:10
とても初心者な質問なのですが…、VisualStduio2005で、C++言語での開発をしたいと考えています。

言語よりも、VCのプロジェクトの種類で戸惑っています。
MFCアプリケーションとWin32プロジェクトで窓ソフトが作れるようになっていますが、
どちらでソフトを作ったほうが良いのでしょうか。

やりたい事はDirectXを使った3Dプログラミングと、普通の窓ソフト、TCP/IPなどの通信ソフトなのですが…。
ちなみに、手元にある入門本にはMFCについてしか書かれておらず、Win32については触れられていません。
触れられていないと言う事は相当理解が難しいのでしょうか?
それともMFCで作る方が今は普通なのでしょうか?
580デフォルトの名無しさん:2007/09/08(土) 17:14:38
両方やってみて好きな方を選ぶ
581デフォルトの名無しさん:2007/09/08(土) 17:50:50
>>579
「窓ソフト」とは何か、そういうアプリの種類があるのですか?
「手元にある入門本」は具体的に何ですか?
582579:2007/09/08(土) 18:08:03
>>581
窓ソフト、GUIアプリケーションのことをそう言ってしまいました。すいません。
具体的に書名を書くと「明快入門 Visual C++2005 ビギナー編」、著者 林晴比古さんの本です。
583デフォルトの名無しさん:2007/09/08(土) 18:35:25
>>582
林晴比古か。
私の脳内の買ってはいけない著者リストに入ってるなぁ。

入門書を選ぶときに大切なポイントは、
現時点でのスタンダードを解説した本なのか、
過去に出した本を、新しいバージョンのVC++に合わせて手直ししただけで、中身は古いままの本なのか、
見極めること。

もちろん過去の延長線上に現在があるわけで、
以前から変らないことについては、古い本でも構わず、
今では絶版になってしまっている本が、必読として推奨されることもあるし、
定評のある本がアップデートされるのもいいことだとは思う。

でもね、
過去に評判が悪かった本が、
素早く最新バージョンに合わせて手直しすることで、
それなりの販売数を稼いでいるということもあるのですよ。

その本がどうなのかは言わないけどね。
584デフォルトの名無しさん:2007/09/08(土) 18:57:38
で、本題。
結論は>>580と同じになってしまうのだけど、説明すると・・・

まず、MFCとは何か。
一言で言えばWin32APIのC++ラッパー プラスαのライブラリ。
これでわかる? わからなかったら、さらに説明するよ。

どっちを使うべきかは、ケースバイケース。
MFCが便利だと思うなら使えばいいし、
MFCがやることが余計なお世話だと思うなら使わなければいい。

ただし、
MFCが常に最善だとは限らない
MFCはその基本設計が古い
MFC以外にも幾つもの選択肢がある
という理由で、MFCと心中することのないように、気をつけてほしい。

MFCは、MFCの守備範囲内とくにウィザードが対応していることをやるのには便利で素晴らしいと思う。
でも、MFCの守備範囲から外れた途端に、Win32API直叩きとのちゃんぽんになり、MFCの内部構造を
理解しないといけなくなったりする。度重なるバージョンアップがされていて、歴史的な理由や互換性の
ために歪になっている部分もある。そして、MFCは既にVisualStudioの主役ではなくなってしまっている。
585デフォルトの名無しさん:2007/09/08(土) 19:39:22
ただその後継が.NETなので、
このスレ的にはC++/CLI&WindowsFormsという
とても初心者向きとは思えない構成になってしまうのが難しいところだな。
586デフォルトの名無しさん:2007/09/08(土) 19:40:11
MFCというよりVC自体が主流じゃなくなってると考えるのが正解
587デフォルトの名無しさん:2007/09/08(土) 19:59:06
林の本だったら、さらっと1冊通してプログラム動かしてみれば感じつかめると思う。
深くやっても実用的なプログラム作れるようにはならないから時間をかけないのがコツ
588デフォルトの名無しさん:2007/09/08(土) 20:08:08
関係ないが、MFCの本というと
ハーバートシルト標準講座MFCは名著だったなぁ
win32なら同じくハーバートシルトのc/c++プログラマのためのwindows95
とりあえず、この2冊は今でも本棚に飾ってある
589579:2007/09/08(土) 20:23:06
>>583-585
詳しい説明ありがとうございます。

作りたいソフト次第でWin32かMFCのプロジェクトを作ってソフトを作るのが最適ということでしょうか。
VS2005は.net開発用に置いておいて、本格的なソフトはボーランドのC++ビルダー辺りで作った方がいいでしょうか。
C++ビルダーはVS2005で言うWin32プロジェクトになると思うのですが、Win32プログラミングに関する本が中々見つからず…。
C++ビルダーの方がRADでGUIも作りやすくコンパイルも早いと聞いたのでC++ビルダーを買ってみようと思います。
もし、よろしければWin32プログラミング、もしくはC++ビルダーでソフトを作るのに適した入門本をご紹介して頂けないでしょうか?
(C++の基本的な文法(ifやdo、例外処理など)は「やさしいC++」 著者 高橋麻奈さんの本を読んでいます。>>582の本では文法はあまり詳しく載っていなかったので…)
590デフォルトの名無しさん:2007/09/08(土) 20:24:40
一般的に、
これ一冊で総合的に入門
なんていう本は、ろくでもない。

ピンで勝負できないから、
特定の状況に特化することで、
なんとか凌ごうとしているからね。

そもそも、
高々一冊の分量で何ができるのか。

どの本だったか忘れたが、
Visual C++によるC++入門
なんていう本があって、
C++入門書としては酷い内容だし、
Visual C++に特化しているわけでもなく、
旧来のprintf/scanfで、GUIなんて片鱗もなく、
タイトルから「VisualC++による」を削っても、
何ら問題なさそうな本だった。
591デフォルトの名無しさん:2007/09/08(土) 20:57:45
>>589
猫でも分かるプログラミング
win32の本買うなら、このHPみたほうがいい
592デフォルトの名無しさん:2007/09/08(土) 21:01:15
>>589
まず、自分が作りたいソフトと似た、オープンソースのソフトを探そう。
なるべく自分が目標とするものに近く、有名なものを選ぼう。
そのソフトを作った人は、あなたよりも経験豊富で、色々知ってる。
そういう人が色々考えた上で、言語や開発環境を選んで使ってる。
だから、それと同じ言語・開発環境を真似して使うのがいいと思う。

次に、顔を合わせて指導・相談をしてくれる人を確保すべし。
周囲にいる人によって、かなり違ってきます。良くも悪くも。

> C++ビルダーはVS2005で言うWin32プロジェクトになると思うのですが

C++BuilderでもWin32APIを直に使ってプログラムを書くこともできるけど、ふつうはVCLを使う。
VCLは、Win32とMFCどちらに近いかと言えば後者だけど、MFCよりも遥かに強力で洗練されてる。
そしてVCLを使うなら、C++BuilderよりもDelphiを使ったほうが、よりベターだと思う。

> Win32プログラミングに関する本が中々見つからず…。

必要としている人が少ないということの現われでもあるよ。
PlatformSDK(最近はWindowsSDK)付属のドキュメントやサンプルで事足りたりもするし。

ちなみに、言語の文法 と 言語の使い方のコツ というのは別物だと思ってもいい。
ついでにオブジェクト指向プログラミングの基礎も、C++とは独立した話として勉強したほうがいい。
593デフォルトの名無しさん:2007/09/08(土) 21:07:07
そもそも、目的を実現する手段として C++ が最適なのかな。
594デフォルトの名無しさん:2007/09/08(土) 21:20:53
アカデミックパックと通常版の違いにはどういったことがありますでしょうか??
アカデミックパックでは制限されている事などはありますか??
595デフォルトの名無しさん:2007/09/08(土) 21:28:11
前はproがもらえたんだよな
596579:2007/09/08(土) 21:37:32
C/C++は覚えておいて損をしない言語だと思いC++を使ったソフトの作り方を学ぼうと思ったのですが…。
以前、Delphiを学ぼうと思い(SkypeやShareなどがDelphiで作られているということに驚きました)
Delphiの本(Delphi2005プログラミング Vol1 入門編 著者 日向俊二さん)を購入し、
無料のDelphi開発環境をインストールしたまでは良かったのですが、
パソコンを新たに購入したため、無料の開発環境がインストールできなくなり結局やめてしまいました。(OSがVistaで…)
有償版ならインストールできると思うのですが…。

実行速度もC++並、文法もVB.netをやっている自分には馴染みやすいところもあると思います。

もう一度Delphiをやってみようかと思います。(最近はJaneなどで活気もあり、OpenJaneのソースコードを見れば勉強になるような気もするので)

>>592
オブジェクト指向プログラミングについて今一度勉強してみます。
Win32プログラミングに関する本が少ない、ということについて必要としている人が少ないということはあまり重視する必要はないということだと思うので
それほど気にしないことにします。
とりあえず、Delphiで経験を積んでみたいと思います。
C++はDelphiに飽きた時、勉強してみようと思います。

皆さん、ありがとうございました。
597デフォルトの名無しさん:2007/09/08(土) 21:47:40
VB.NETやってるなら、VB.NETで作ればいいじゃん。
598デフォルトの名無しさん:2007/09/08(土) 22:00:08
考えてみれば、VisualStudioに例題やサンプルソース満載の
ちゃんとしたマニュアルが付いてくれば、入門書なんて(ry
599デフォルトの名無しさん:2007/09/08(土) 22:05:18
VC++6.0のStandard版は、マニュアルの代わりにASCIIの本が入ってたよ?
600デフォルトの名無しさん:2007/09/08(土) 22:18:25
>>598
サンプルソースついてるし
601デフォルトの名無しさん:2007/09/08(土) 22:28:55
>>599
VSで自分が始めて買ったのはVC4stdだったけど
なんか入ってたな
mdi,sdiの作り方の基本みたいな本、後MFCのポスター
VS2005proにもユーザーズガイドとポスターは入ってた気がする
602デフォルトの名無しさん:2007/09/08(土) 22:32:50
>>600
確かにサンプルもあるんだけど、なんつーかもうちょっと
面白みが欲しいのよw
ま、MSもその領域には手を出さないことで出版社と共存共栄
ってことなんだろうけど。

でもOSやOfficeなんかでもそうだけど、書店に並ぶ各種解説書
見てると、なんでこのレベルの本に金払わなきゃならんのよって
思うんだよな・・・
603デフォルトの名無しさん:2007/09/08(土) 22:47:20
マイクロソフト社内には、もっと豊富なサンプルコードがあって、
コンサルティングのサービスを通して個別に提供されたりする。
604デフォルトの名無しさん:2007/09/08(土) 23:03:10
C++はじめて3日目の初心者です
現在日付を表示させるのに
time_tを使って表示させようと思っているのですが
ビルド時にC3861エラーが出てしまいます

エラー
error C3861: 'time': 識別子が見つかりませんでした

コード
#include <stdio.h>
#include <time.h>
#include "stdafx.h"

void MyClass::put_time()
{
time_t current;
struct tm *local;

time(¤t); /* 現在の時刻を取得 */
local = localtime(¤t); /* 地方時の構造体に変換 */
printf("%02d時%02d分%02d秒", local->tm_hour, local->tm_min, local->tm_sec);
}

ビルドでエラーが出ないようにするにはどうしたらいいでしょうか教えてください

VS2005使用
605デフォルトの名無しさん:2007/09/08(土) 23:05:30
timeって何?
606デフォルトの名無しさん:2007/09/08(土) 23:07:20
>>604
> ビルドでエラーが出ないようにするにはどうしたらいいでしょうか

正しいコードを書く。
以上。

意地悪だが、質問は正確に。
607デフォルトの名無しさん:2007/09/08(土) 23:08:47
ちなみに、
#include <stdio.h>
#include <time.h>
#include "stdafx.h"
↑これは、良くない。

stdafx.hは、各ソースファイルの最初の行に書くこと。
608デフォルトの名無しさん:2007/09/08(土) 23:14:15
>>605
timeはコードの中にある

>>604
確かにその回答は正解だ
だが、初心者にはその正しいコードがわからんのだ

>>607
#include "stdafx.h"
これを最初の行に移動したらビルドでエラーが出なくなりました
ありがとうございます。
609デフォルトの名無しさん:2007/09/08(土) 23:19:03
あほすぎw
610デフォルトの名無しさん:2007/09/08(土) 23:20:02
初心者でも分かる。アホには分からないの間違い
611606&607:2007/09/08(土) 23:27:42
>>608
> だが、初心者にはその正しいコードがわからんのだ

そういうことではなくて、問題点をきちんと絞り込もう、ってことだよ。

まず第一に、
ビルドのエラーではなく、ビルドの1ステップのコンパイルのエラー
なのだから、コンパイルでエラーが出ると言うべき。

次に、
コンパイラが出しているエラーの内容をちゃんと見よう。
「識別子が見つかりませんでした」が何を意味しているのかわからないのなら、そういう質問をすること。
意味はわかるが、#includeしたtime.hで定義されてるはずなのに、実際には定義されていないのはどうしてなのかわからないなら、そういう質問をすること。

こうやって問題点を絞り込む習慣を付けないと、いつまでたっても力が付かないよ。
612デフォルトの名無しさん:2007/09/08(土) 23:30:22
かちゅ+Kage使いなんだが、>>604のカキコで time(¤t)の
カッコ内が文字化け?してるのは漏れだけ?
化けて出てる字はunicodeでU+00A4のように見える。
アンカーにカーソル合わせると表示されるテキストボックスだと
正しく表示されるのに・・・
613612:2007/09/08(土) 23:32:50
リロードしたら自分で書いたのも化けてる・・・orz
614デフォルトの名無しさん:2007/09/08(土) 23:35:02
2ちゃんの掲示板の仕様が変だから
古いブラウザだと化けるんじゃないの?
615612:2007/09/08(土) 23:45:49
>>614
Kageで延命してるけどかちゅ自体は古いから
そういう事なんだろうな・・・thx

ってか、IE6(エンコードはS-JIS)で見てみたら
やっぱり化けてる。
Operaだと正しく表示・・・ワケワカメw
616デフォルトの名無しさん:2007/09/08(土) 23:47:20
>>604
プリコンパイル済みヘッダファイルの使用(/Yu)について見ておくといい。
エラーが出たのはコンパイル設定の影響であり、
ソース自体は一応間違ってはいない。
617デフォルトの名無しさん:2007/09/09(日) 01:27:29
VC++2005でWin32のアプリを作るにはプラットフォームSDKってのを
入れなきゃいけないみたいなんですが
プラットフォームSDKってなんですか?
618デフォルトの名無しさん:2007/09/09(日) 01:34:26
プラットフォームとは、つまり Windows のことを指している
SDK は Software Developlement Kit (ソフトウェア開発キット)

つまり プラットフォームSDK = Windowsのソフトウェアを開発するためのキット っていうそのまんま
619デフォルトの名無しさん:2007/09/09(日) 01:41:16
>>617
最新版はPlatform SDKでは直接検索できないので、一応貼っとく
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&DisplayLang=ja
620617:2007/09/09(日) 02:03:01
Windowsアプリを作るためのライブラリとかが
まとめられたものなんですね
わかりましたありがとうございます
621デフォルトの名無しさん:2007/09/09(日) 03:03:23
time(叶)
622デフォルトの名無しさん:2007/09/09(日) 04:05:04
>>43
> >>42
> すみません、分かりづらいですねorz
> VC++6ではCやC++のファイルを放り込めば、すぐにビルドの処理に持っていけます
> VC++6ではF7がビルドへのショートカットキーです
>
> VC2005Expressでは、VC++6見たいに、C++のファイルを放り込んでもメニューバーにビルド自体がないため、
> ビルドの処理を実行できません。
> 新規プロジェクトを作成するとメニューバーにビルドが表示され、ビルドが実行できます
> ですので、VC2005では一々プロジェクトを作成しないとビルドが出来ないのかと思い、質問させて頂きました。
>

自分も疑問なのですが これは単体で出来ないのですか?
プロジェクトをいちいち作るのではなく
一つのファイルだけをコンパイルして実行したいのです
623デフォルトの名無しさん:2007/09/09(日) 04:23:06
clでええやん
624デフォルトの名無しさん:2007/09/09(日) 04:37:11
clとは何でしょうか?
625デフォルトの名無しさん:2007/09/09(日) 04:40:08
cl.exe
626デフォルトの名無しさん:2007/09/09(日) 04:46:14
塩素
627デフォルトの名無しさん:2007/09/09(日) 04:50:45
ファイル単体でのコンパイルをやる方法はないのですか?
以前のヴァージョンのものならできたのですが

ちなみに、以前のヴァージョンのものは持っていません
使ったことがあるだけです
628デフォルトの名無しさん:2007/09/09(日) 05:18:52
>>627
つ[cl]
629デフォルトの名無しさん:2007/09/09(日) 07:14:03
>>622
ビルド用に1つプロジェクトを作っておき、
そこにファイルを放り込めばいいじゃないか。
必要なくなったら、プロジェクトからファイルを削除、と。
630デフォルトの名無しさん:2007/09/09(日) 08:57:35
ひとりwikiのプラグインを作ってみようと思い
いろいろサンプル見ながら初めてDLLを作ってみたのですがデバッグ方法がわかりません
デバッグ開始を押すと、おそらくDLLを使用するプログラムを求められる?のですが
ひとりwikiで配布されているプラグインテスターを指定してデバッグを始めると
インクリメンタルリンクが出来ないのでフルリンクにした、や
デバッグ情報が無いなどの警告が出て、それを無視して始めると落ちてしまいました。
この場合デバッグを行うには、DLL関数を呼び出すテストプログラムを
自分で作らなければいけないんでしょうか?
後、DLL側で作成された文字列などのポインター変数はDLLを解放?した後に
メイン側からアクセスするとやっぱりエラーになるんでしょうか?
631デフォルトの名無しさん:2007/09/09(日) 09:07:48
ひとりwikiとやらを配布してる人に質問する
632デフォルトの名無しさん:2007/09/09(日) 09:08:23
>>630
わからないことが多すぎ。

まずはDLL開発の一般論をどこかで勉強したほうがいい。
場当たり的に個別のノウハウを身につけても、泥縄になる恐れあり。
633デフォルトの名無しさん:2007/09/09(日) 10:04:10
なんだ文字列を変換する関数を1つだけ呼び出すだけか
634デフォルトの名無しさん:2007/09/09(日) 10:13:36
>>632
DLLについてもっと調べてみます
>>633
ファイル名も引き渡してくれるので色々できそうです

ふと思ったのですがDLLからDLLを呼び出すなんてでき・・
はい、まずはDLLについてちゃんと調べてきます
635デフォルトの名無しさん:2007/09/09(日) 10:38:34
Googleとかで検索して断片的な情報を得るよりは、
まずは、
MSDNライブラリ等をあたったほうがいいよ。

けっこう美味しい解説があったりするのよ。
636デフォルトの名無しさん:2007/09/09(日) 11:42:01
HDC hDC=GetDC(hwnd);

ReleaseDC(hwnd,hDC);

if (hDC!=NULL)
{
MessageBox(hwnd,"hDC!=NULL","Error",MB_OK | MB_ICONSTOP);
}

これを実行するとメッセージが出るんだけど
どこが変なのかな?

DCハンドル得る→開放 だから
メッセージが出ないと思うんだけど。

もしかしてめちゃくちゃ変なことしてる?
637デフォルトの名無しさん:2007/09/09(日) 11:54:59
>>636
C言語から勉強しなおそう。

ReleaseDCしても、
関数に値渡ししているから、
hwndやhDCの値は変らない。
638デフォルトの名無しさん:2007/09/09(日) 16:24:27
MFCATLCOMは今後は需要はどうなりそうなんですか?
勉強しようか迷ってます。
今はWin32とJAVAとC#だけできてれば問題ないんですが今後必要になりそうなら勉強しておこうかと思ってます
639デフォルトの名無しさん:2007/09/09(日) 18:15:40
エムエフカトルコム?
Windowsが続く限り生き残るんじゃね?
.NETのCLRはCOMで実装されてるらしいし…
挫折しないように頑張ってね!
640デフォルトの名無しさん:2007/09/09(日) 18:32:17
COMをC++で使うのは面倒くせー、
かといってVBは嫌だー、
VJ++ならCOM使うの簡単なんだけど、Sunが横槍入れてあれなんだよなー
ってことで、実はC#ってのは、VJ++の後継なんだ。

JavaというとSunがウルサイから、Javaという名前を使わず、
マイクロソフトお得意の、どんどん自分達流に改造したから、
とってもJava臭い文法や、GUIライブラリになったというわけ。
641デフォルトの名無しさん:2007/09/09(日) 20:36:43
禿同
642デフォルトの名無しさん:2007/09/10(月) 08:56:27
○int main(array<System::String ^> ^args)
 の「^」って何ですか?
○[STAThreadAttribute]って何ですか?
○gcnewって何ですか?
○refって何ですか?
643デフォルトの名無しさん:2007/09/10(月) 09:00:52
C++/CLIで拡張された言語仕様だろ。C++/CLIスレで聞いて味噌。
644デフォルトの名無しさん:2007/09/10(月) 09:08:13
てか、普通に文法の話だから、まずMSDNを見ること。これは基本。
それでも分からないなら、質問するときには、何が分からないかを書くこと。
645デフォルトの名無しさん:2007/09/10(月) 11:11:29
VisualStudioの最新版の発売予定日もう発表されましたか?
646デフォルトの名無しさん:2007/09/11(火) 22:10:03
質問させてください。
VC6.0で、ダイアログA,Bをつくり、AのOKボタンを押すとBが開くようにしました。
ここでBが開いたときにAを閉じるようにしたいのですがそれができません。

ダイアログAのクラスC000、ダイアログBのクラスC001として、
C000.cpp内、
OnOK内に
C001 dlg001;
dlg001.DoModal();

としているのですが。ここに何か書くのでしょうか?もしくは違うところに。。。

かなり初歩的なことで調べれば出てくると思ったのですが、MSDNのヘルプを見ても何を書いているのかわからなくて。。。EndDialogあたりが怪しそうで、いろいろ試したのですがだめでした。
わけあって今プログラムを見ることができないのですがよろしくお願いします!
647デフォルトの名無しさん:2007/09/11(火) 22:14:58
自分が乗った枝を切り落とすの?
648デフォルトの名無しさん:2007/09/11(火) 22:25:10
>>646
OnOKでダイアログBを開くのではなく、
ダイアログAのリターンコードを見て、ダイアログBを開く。
649デフォルトの名無しさん:2007/09/11(火) 22:37:52
>>646
いくつか方法がないこともないが、一番簡単で近い方法は
ダイアログBを開く直前にダイアログAを非表示にすることだろうな。
650デフォルトの名無しさん:2007/09/12(水) 00:54:02
>>648 >>649
ありがとうございます。
リターンコードというのがよくわかりませんが、調べてみます。
651648:2007/09/12(水) 09:12:43
>>650
ちなみに、647さんが最も適切なアドバイスだと思うが、理解できないからスルーしちゃったかな。

ダイアログのリターンコードってのは、CDialog::DoModal() のリターンコードね。

試しに別のプロジェクトを新規作成して、
MFCのウィザードでダイアログベースのスケルトンを生成すると、

CほげほげDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: ダイアログが <OK> で消された時のコードを
// 記述してください。
}
else if (nResponse == IDCANCEL)
{
// TODO: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}

なんていうコードが生成されるよん。
652デフォルトの名無しさん:2007/09/12(水) 17:35:49
ポインタ変数 *a の値(ポインタのアドレス値)を
int b  へ入れて処理をしたいです。
b = (int)a; というソースを書いたところ、
warning C4311: '型キャスト' : ポインタを 'int *' から 'int' へ切り詰めます。
というワーニングになります。
ワーニングがでないキャストの方法ってありますか?
データの一部が欠落するのは承知の上です。

よろしくお願いします
653デフォルトの名無しさん:2007/09/12(水) 18:07:49
>>652
つ[pragma warning]
654デフォルトの名無しさん:2007/09/12(水) 18:10:00
#pragma warning(disable:4311)
b = (int)a;
#pragma warning(default:4311)
655デフォルトの名無しさん:2007/09/12(水) 18:20:30
>>652
Windowsヘッダ依存で良いなら、
PtrToIntというマクロも用意されている。
656652:2007/09/12(水) 18:24:06
>>653-655
どうもありがとうございます
657デフォルトの名無しさん:2007/09/12(水) 18:39:33
本当にbはintでいいのか、INT_PTR型でなくていいのか?
658デフォルトの名無しさん:2007/09/12(水) 20:24:06
どうでもいいけど
DWORD_PTR, INT_PTR, UINT_PTR, LONG_PTR, ULONG_PTRとか_PTRがつく型はいろいろあるけど、
全部32bit環境なら32bitで、64bitなら64bitなんだよね?これらの型を区別する意味が分からないが。
659デフォルトの名無しさん:2007/09/12(水) 20:28:58
みんなlong*だと、指している先の型がわかんないでしょ?
660デフォルトの名無しさん:2007/09/12(水) 20:33:04
DWORD_PTR、INT_PTR…というのは、それぞれ
もともと64bit対応してなかったころのWin32APIで

引数がDWORD(だけどポインタ値やハンドルも許容する場合がある)
引数がUINT(だけどポインタ値やハンドルも許容する場合がある)


というのを64bit対応を契機に機械的に

DWORD => DWORD_PTR
UNIT => UINT_PTR

に置き換えただけなんじゃないの?
DWORD_PTRがDWORDのポインタなわけではないし、それ自体に
意味を求めてもしょうがないんじゃ
661デフォルトの名無しさん:2007/09/12(水) 22:22:29
>>658
そうだねオブジェクトもみんな同じく型のないポインタでさせばいいね。
間違う奴はただの馬鹿だね。

お前だけやってろよw
662デフォルトの名無しさん:2007/09/12(水) 22:35:00
(; ゚д゚)ポカーン
663デフォルトの名無しさん:2007/09/12(水) 23:32:24
これは・・・
664デフォルトの名無しさん:2007/09/12(水) 23:44:03
#pragmaのよく使う機能ってどんなのがある?
665デフォルトの名無しさん:2007/09/12(水) 23:47:09
pack
666あ、スレ違いか:2007/09/12(水) 23:52:26
parallel
667デフォルトの名無しさん:2007/09/12(水) 23:54:14
>>664
comment, once, pack、warning かな

#pragma は必要に迫られて使うものなので、一般的に
使われているものかどうかを気にするのは意味がないと思うけど
668デフォルトの名無しさん:2007/09/13(木) 00:22:06
region, endregion(笑)
669デフォルトの名無しさん:2007/09/13(木) 16:36:38
スライダに目盛りが表示されません。
SendMessage(GetDlgItem(hWnd, IDC_SLD1), TBM_SETRANGE, (WPARAM)TRUE, MAKELPARAM(0,100));
SendDlgItemMessage(hWnd, IDC_SLD1, TBM_SETLINESIZE, 0, 100L );

SendDlgItemMessage(hWnd, IDC_SLD1, TBM_SETTICFREQ, (WPARAM) 10, 0 );
for(i = 2; i < 10; i++) {
  SendDlgItemMessage(hWnd, IDC_SLD1, TBM_SETTIC, 0, (LONG)((i * 10));
}

トラックバースタイルには TBS_AUTOTICKS を指定しています。がエディタ上でも
目盛りは表示されてません(メモ帳で開くとTBS_NOTICKSが指定されてたので削除しました)

670デフォルトの名無しさん:2007/09/13(木) 17:52:17
2000以降のOSで、Documents and SettingsのユーザーIDのフォルダの、
アプリケーションのフォルダを作成、又は作ったり、ファイルを作って
アクセスしたりするにはどのように行えば良いのでしょうか?
レジストリが怪しいと思っているのですが・・・
671デフォルトの名無しさん:2007/09/13(木) 18:45:45
>>670
アプリケーション用フォルダの位置の取得はSHGetSpecialFolderPathを使う
ファイルの作成、アクセスは自分でやる
672デフォルトの名無しさん:2007/09/13(木) 21:49:18
これまでC++をCUIで勉強してきてそれなりに慣れたと感じたので
VC2005を使ってGUIのプログラムを習得しようと思うのですが
フォームアプリケーションを使うのとSDKを使うのと
どちらの方がいいでしょうか?
673デフォルトの名無しさん:2007/09/13(木) 21:54:21
>>669
TBS_AUTOTICKSで自動的に付けられる目盛りが、
TBM_SETLINESIZEの値を基準にしていると予想してみる。
674デフォルトの名無しさん:2007/09/13(木) 22:01:00
>>672
SDKがお勧め。個人的にはいきなりWTLに突撃するのも面白いと思う。
フォームはC#辺りで慣れてからの方が良い。
C++/CLIも覚えないといけないし。
675デフォルトの名無しさん:2007/09/13(木) 23:10:32
Visual Studio .Net 2002 で
下の簡単なコードがコンパイルできません。
「error C2065: 'printf' : 定義されていない識別子です。」というエラーメッセージです。
コマンドラインで cl xxx.cpp ではコンパイルできます。なぜでしょうか?

----------------------
#include <stdio.h>
#include "stdafx.h"

main(){
printf("hello");
}
676デフォルトの名無しさん:2007/09/13(木) 23:12:15
>>675
そういう設定になっているからです。
環境からでも設定を変更すればコンパイルできるようになりますし、
逆にコマンドラインからでもオプションしだいではエラーになるようにできます。
677デフォルトの名無しさん:2007/09/13(木) 23:13:04
"stdafx.h"のインクルードより前に書いた記述は全て無視される仕様。
#include "stdafx.h"の後に書いてもいいが、
stdafx.hの中に書けば、コンパイル時間短縮になるので、これお薦め。
678デフォルトの名無しさん:2007/09/13(木) 23:13:36
>>675
>>607を読め
679675:2007/09/13(木) 23:20:53
>676
どのように設定を変えればいいのでしょうか?

>677
stdafx.h のファイルに
#include <stdio.h>

をいれましたが、同様のエラーです。
680デフォルトの名無しさん:2007/09/13(木) 23:33:47
>>679
#include "stdafx.h"
の前の行を削除したか?

ついでに、
main関数の引数・返り値が不正だぞ。
helloと表示するためにprintfを使うのは間違い。
昔のBASICのPRINT文を引きずっている馬鹿の書いた本を参考にするのはヤメレ。
681デフォルトの名無しさん:2007/09/13(木) 23:35:31
>>675
とりあえずプリコンパイルヘッダを使うのをやめてみたら?
682675:2007/09/13(木) 23:37:29
削除しました。

コマンドラインでは動くのが、Visual Netの環境だと動かない理由が知りたいのですが・・・
683675:2007/09/13(木) 23:38:42
>とりあえずプリコンパイルヘッダを使うのをやめてみたら?

プリコンパイルヘッダとは?
どうすれば、そのようにできますか?

教えて下さい。
684デフォルトの名無しさん:2007/09/13(木) 23:43:05
超初心者用といえど、池沼を相手にするほど優しくは無い。
685681:2007/09/13(木) 23:44:43
>>683
ごめん、言葉が違ってた。

正しくは「プリコンパイル済みヘッダー」
場所によっては「プリコンパイル済みのヘッダー」と書かれているかも。

VisualStudio.NET付属のでもいいからMSDNライブラリで検索してみるとか、
目次からVC++の使い方のところを辿って説明のページを見つけるとか、
少しは自分で探そうとしようよ。
686デフォルトの名無しさん:2007/09/13(木) 23:46:55
>>683
Wikipediaにだって出てる
ttp://en.wikipedia.org/wiki/Precompiled_header
687675:2007/09/13(木) 23:51:36
プロジェクトのプロパティで
プリコンパイル済みヘッダーを使用しない
を選択しましたが、今度は

LIBCD.lib(wincrt0.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 _WinMainCRTStartup で参照されました。
Debug/test2.exe : fatal error LNK1120: 外部参照 1 が未解決です。

というエラーになってしまいました。
688デフォルトの名無しさん:2007/09/13(木) 23:52:41
プロジェクト作り直せ。
今度はWin32コンソールアプリケーションのプロジェクトを選べ。
689デフォルトの名無しさん:2007/09/13(木) 23:53:13
>>687
プロジェクトを作るとき、ウィザードで何を選んだ?
690デフォルトの名無しさん:2007/09/13(木) 23:54:46
空のプロジェクトだとえすp
691675:2007/09/13(木) 23:56:28
新規のプロジェクトで選択できるもののなかに

Win32コンソールアプリケーション

はありません。先ほどはWin32プロジェクト
を選んだのですが、これがいけなかったのでしょうか?
692デフォルトの名無しさん:2007/09/14(金) 00:04:22
プロジェクト作らずに、
VisualStudio.NETのアイコンにソースドロップして起動しビルド。
プロジェクト作りますかには「はい」と答える。
これでどう?
693デフォルトの名無しさん:2007/09/14(金) 00:04:26
>>691
VS.NET 2002は、もうアンインストールしちゃったから確認できないけどさ、
2003には、Win32コンソールアプリケーションがあるぞ。
694669:2007/09/14(金) 17:27:49
色々試してみましたがVirtualPC上の98SEにVS6をインスコして試したら正常に目盛り
付きました。XP上では使わない方がいいということでしょうか。
695デフォルトの名無しさん:2007/09/14(金) 18:54:31
.NET Framework使わないGUIアプリ作るときどうしますか。
WinAPI使ってごりごり書きますか。
難しそうでふんぎり付かないので良い方法ありますか。
696デフォルトの名無しさん:2007/09/14(金) 19:04:04
馬鹿には無理だから
697デフォルトの名無しさん:2007/09/14(金) 19:17:29
いえあなたの答えは私の質問に間違っています。
そういう事を聞いているのではなくて。
VCでより効率的なGUIアプリケーションの開発方法が聞きたいことです。
698デフォルトの名無しさん:2007/09/14(金) 19:26:21
楽したかったらVC以外を使うのが普通
699デフォルトの名無しさん:2007/09/14(金) 19:35:00
無理なものは無理
いさぎよくあきらめよう
700デフォルトの名無しさん:2007/09/14(金) 19:54:41
VBなら2〜3行でできることがVCだと数100行だったりするし
あれこれ考えるより先に手が動くようじゃないとプログラムが完成しない。
701デフォルトの名無しさん:2007/09/14(金) 19:55:21
ATL/WTLとかオヌヌメだよ
MFCより数倍効率いいよ
他のオープンソースのライブラリも併用すれば.NET Frameworkを超えるよ
でも、全C++使いの2割程度にしか理解できないようなコードになるのが欠点だよ
702デフォルトの名無しさん:2007/09/14(金) 20:12:38
ありがとうございます。
便利なものが色々あるのですね。
考えるより手を動かすを励んでみます。
703デフォルトの名無しさん:2007/09/14(金) 20:20:44
>>701
ATL3.0の頃から、どれくらい進化して、使えるものになったの?
Windows専用ではないので同列に比較できないけど、wxWidgetsはどうですか?

マイクロソフトはDelphiの神様を引き抜いてVBチームに入れるだけでなく、
VCLのライセンスを買って、VC++に組込んで欲しいわ、ほんとに。
704デフォルトの名無しさん:2007/09/15(土) 00:28:29
VCLなんて鼻くそじゃん

あんなもの買い取るバカいねーよ

あの程度なら自作できるっちゅーねん

705デフォルトの名無しさん:2007/09/15(土) 00:50:39
自作できるといっても、自作するのには時間がかかるだろう。
706デフォルトの名無しさん:2007/09/15(土) 18:46:03
買えばソースついてくるから自作といってぱくればよいのだ
707デフォルトの名無しさん:2007/09/15(土) 19:28:00
ネットに繋いでないと
Platform SDKって
インストールできないんですか?
(´・ω・`)
708デフォルトの名無しさん:2007/09/15(土) 19:34:56
>>707
DVDのISOイメージも配布されている。
SDKダウンロードページを「ISO」で検索しる。
709デフォルトの名無しさん:2007/09/15(土) 19:35:29
そんなことはない
710デフォルトの名無しさん:2007/09/15(土) 19:47:04
途中経過のSTGのソースアップしたらいじめてくれますか。
711デフォルトの名無しさん:2007/09/15(土) 19:57:16
バッチコーイ
712デフォルトの名無しさん:2007/09/15(土) 19:58:53
>>711
ごめんC++のスレに書き込むつもりだったのにVisualがついてた
713デフォルトの名無しさん:2007/09/15(土) 20:08:30
なんだゴラ!
714デフォルトの名無しさん:2007/09/15(土) 20:10:31
さぁーせぇーん
715デフォルトの名無しさん:2007/09/16(日) 01:07:44
ってゆーか
716デフォルトの名無しさん:2007/09/16(日) 13:20:27
どのへんがVisualなのかがいまだに分からん
717デフォルトの名無しさん:2007/09/16(日) 13:26:21
ダイアログエディタ
718デフォルトの名無しさん:2007/09/16(日) 15:16:46
でもコードエディタはすばらしい。
719デフォルトの名無しさん:2007/09/16(日) 15:22:01
で、Platform SDKをWeb経由以外でインストールするには
いったいどうしたらいいの?
(´・ω・`)
720デフォルトの名無しさん:2007/09/16(日) 15:30:06
すみません、MFCで書かれたプログラムをexeに変身させたいんで
VC2005++ExpressでMFCを使えるようにする裏技教えてください。
721デフォルトの名無しさん:2007/09/16(日) 15:38:56
評価版からファイル取ってくる
722デフォルトの名無しさん:2007/09/16(日) 15:40:18
コンパイルだけならSDK入れていくつか設定すれば出来る。
IDEのサポートはないけどね。
723デフォルトの名無しさん:2007/09/16(日) 16:06:32
>>722
>いくつか設定 について詳しく解りやすく解説お願いします。
IDEサポートがないとどうやってexeを作るのですか?

>>721
評価版のどのファイルを持ってくるんですか?
724デフォルトの名無しさん:2007/09/16(日) 16:09:19
>>723
サポートはコーディングのためだろ
コンパイルだけならそのままいける
725デフォルトの名無しさん:2007/09/16(日) 16:43:56
MFCで書かれたプログラムならMFC入れないと無理
726デフォルトの名無しさん:2007/09/16(日) 16:49:06
VS2005のSTD版を買ってくるのが一番早いし面倒もない。
727デフォルトの名無しさん:2007/09/16(日) 16:53:00
>>719
MicrosoftダウンロードセンターからISOイメージを探せ
728デフォルトの名無しさん:2007/09/16(日) 16:53:30
で、どうすればいいの?
(´・ω・`)
729デフォルトの名無しさん:2007/09/16(日) 16:55:01
なにが?
730デフォルトの名無しさん:2007/09/16(日) 17:00:38
ExpressでF1押したときExpress用のヘルプが呼ばれるんだけど
Express用ヘルプじゃなくてローカルの完全版ヘルプを呼ぶ方法教えて
731デフォルトの名無しさん:2007/09/16(日) 17:13:52

VC++5.0(mfc42のヤツ)のインストールについて教えてください。

WindowsXPが出始めた頃にVC++5.0をインストールして普通に
使えていたのですが、XPのSP2を入れたらInfoViewerが表示で
きなくなってしまいました。
(HTTP 404 - ファイル未検出)とか言うエラーが表示されます

ググッったら、以下のような情報を見つけました。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_DISABLE_MK_PROTOCOL に新規キーで「MSDEV.EXE=dword:00000000」を作成

しかしそのときにはVC++5アンインストールと再インストールを
してしまっていました。
(上の情報を早くみつけていれば、レジストリの修正だけですんだのに。。)

インストールしなおしたVC++5.0では、上記のレジストリキーを
設定してもやはりinfoViewの内容を表示させるとエラーに
なります。

なにか解決方法をご存知の方がいらっしゃったらだったらご教授ください。
よろしくお願いします。
732デフォルトの名無しさん:2007/09/16(日) 17:23:15
VC++5.0使ってていまだに超初心者なの?
733デフォルトの名無しさん:2007/09/16(日) 17:25:15
他人に見せても恥ずかしくないソフトが書けないうちは超初心者では?



734デフォルトの名無しさん:2007/09/16(日) 18:14:18
公開して恥ずかしくないレベルが書けたら上級者

>>731
とりあえずVC++5.0なんざ今更使うな。
業務で必要なら、Win2000とのマルチブート環境でも用意しろ。
735デフォルトの名無しさん:2007/09/16(日) 20:00:24
>>720
教えるの面倒くさいから、代わりにビルドしてやっから、ソースupしてみ。

>>723
そんなこともわからないなら、金を出して製品版のVC++を買おう。
736デフォルトの名無しさん:2007/09/16(日) 20:02:16
>>719
初期のマイクロソフトには「泳げないやつは沈め」って言葉があったそうだよ。

>>720
Visual Studio 2005 Professional か Team Suite の評価版いれて
ビルドすればいいだけ。
ビルドしたものに制限はつかないはず(たぶん)。
737デフォルトの名無しさん:2007/09/16(日) 20:27:25
金出して買ったアカデミックが商用利用不可で、無償で配られてるEEが商用利用可ってどういうこと?
738デフォルトの名無しさん:2007/09/16(日) 20:29:37
>>737
内容が違うでしょう。

自分には違いが関係ないなら、アカデミック買わずに、Expressで十分。
739デフォルトの名無しさん:2007/09/16(日) 20:36:17
>>734
あんたどんだけ、レベル低いんですかw
740734:2007/09/16(日) 22:03:20
俺にとってはそうなんだよヽ(`Д´)ノ
オープンソースのコードを見てると、自分の力不足を痛感するんだよ……
741デフォルトの名無しさん:2007/09/16(日) 23:01:55
俺は、今までコンパイルエラーを1回も出した事が無い!
上級者とは、俺レベルの人を指す
742デフォルトの名無しさん:2007/09/16(日) 23:06:25
dt=$.split(' \n');dt[dt.length]='';for(i=0;undefined!=dt[i];i+=2){write(dt[i-i%2+1].replace('jp.','').replace('www.',''));br();write(dt[i-i%2]);br();}
743デフォルトの名無しさん:2007/09/16(日) 23:24:23
>>741
さては1回もコンパイルしたことがないという落ちだな。
744デフォルトの名無しさん:2007/09/17(月) 02:28:56
>>737-738
アカデミックでも商用利用は禁止されてませんよ。
745デフォルトの名無しさん:2007/09/17(月) 03:27:06
リソースに24bits/pxのJPGファイルを"JPG"リソースとして追加してビルドすると、
jpgファイルが8bits/pxのBitmapに変換されてしまいます。
何が原因でしょうか?それとも仕様でしょうか?

・JPGはリソースとして追加しただけで処理は行っていません
・いくつかの作成ソフト、画質、サイズのJPGについて確認しました。
・GIFはもとから8bits/pxですがこれも同様に8bits/pxのBitmapに変換されます。
・PNGは問題ありませんでした。
・リソースの画像を読み込んでGDI+使って表示させる練習をしています。

VisualStudio2005 Pro Ver.8.0.50727.762 - Visual C++ SP1
Windows XP Home SP2
746デフォルトの名無しさん:2007/09/17(月) 03:52:22
>>719
お前、OSが割れもんだからそんなこと聞きに来たクズだろ?w
747デフォルトの名無しさん:2007/09/17(月) 04:02:00
OSを金出してまで欲しいと思うヲタクではないんで割れですが、何か?
748デフォルトの名無しさん:2007/09/17(月) 04:04:11
>>747
ひろゆきに通報しますたw(マジで)

犯罪予告をするアフォな人スレにお前のレス貼るだけw
http://www.google.co.jp/search?hl=ja&q=%E7%8A%AF%E7%BD%AA%E4%BA%88%E5%91%8A%E3%82%92%E3%81%99%E3%82%8B%E3%82%A2%E3%83%95%E3%82%A9%E3%81%AA%E4%BA%BA&lr=
749デフォルトの名無しさん:2007/09/17(月) 04:10:33
買えよ
ライセンスがバッティングしたらネットワークからアップデート関連なにも落とせないし普通に不便だろ
金額分の価値あると思うぜ
750デフォルトの名無しさん:2007/09/17(月) 05:03:19
>>748
ありがとう
751デフォルトの名無しさん:2007/09/17(月) 11:44:29
この中に貧乏人、歪んだ共産主義者、ただの反社会性異常人格者が居たら私のところに来なさい、以上。
752デフォルトの名無しさん:2007/09/17(月) 12:37:19
ウラー
753720:2007/09/17(月) 14:52:19
>>736
アニキ、そんな手があったのか。やっぱアニキは頭いいな。

>>745
ど初心者、俺の基地外レス
jpgデータをバイナリリソースとして追加したら良いんじゃねー
そして、それをjpgとして扱う。
754デフォルトの名無しさん:2007/09/17(月) 15:38:00
フリーのリソースエディタ
ResEdit
ttp://www.resedit.net/

BCCForm and BCCSkelton
ttp://www.vector.co.jp/soft/win95/prog/se226181.html

XN Resource Editor
ttp://www.wilsonc.demon.co.uk/d10resourceeditor.htm
755デフォルトの名無しさん:2007/09/17(月) 18:56:42
Code ProjectにあるCXXXExitControlを使おうと思うとViewは何を継承すればいいのですか?
ダイアログベースでなきゃいけないんですかね?
756デフォルトの名無しさん:2007/09/17(月) 19:00:50
何でもいいよ
757745:2007/09/17(月) 19:19:41
>>753
>jpgデータをバイナリリソースとして追加したら良いんじゃねー
>そして、それをjpgとして扱う。
拡張子消してみろってことかな?確かにそれならできる。
resource.hとhoge.rcに手書きで追加した場合も正常に動作する。

インポートダイアログ見る限りjpgとgifはビットマップと同列になってて
VCからリソースとして追加するとビットマップになるみたい。
今のところjpgとかgifをリソースで使うことは無いから別にいいんだけどなんかすごい気になる。

>>754
ありがとう。でもダイアログも手書きで作れますので。
758デフォルトの名無しさん:2007/09/17(月) 19:26:58
>>756
CViewを選んだ場合、CXXXExitControlを表示するにはどうするんですか?
C/C++の文法はわかるレベルです、ただ、MFCのGUIの作成が全く分かりません。
C#みたく、フォームにポトペタできないんで非常に難しく感じています。
759デフォルトの名無しさん:2007/09/17(月) 19:33:57
>>757 リソースエディタからカスタムリソースで追加してrc保存しただけでこうなるね。なんだこれ?
760デフォルトの名無しさん:2007/09/17(月) 19:39:29
>758
Create
761デフォルトの名無しさん:2007/09/17(月) 19:46:41
>>759
APIレベルでサポートしている画像はbitmapだけだから、全ての画像はbitmap(DIB)に変換した
ものをリソースとして持つんじゃないと**妄想**してみる
762デフォルトの名無しさん:2007/09/17(月) 20:15:30
今日からVC++やり始めたんだけど、ずっとやりっぱなしで
気が付いたら自動生成されたところを除いても600行以上書いてた

今までに書いた一番長いプログラムでも1500行ぐらい(C言語で多分数ヶ月かけて書いた)なのに
1日でこんなに書いたの初めてだわ
めっちゃ面白い
やっぱCUIとGUIじゃ達成感とかが違いまくるな
763デフォルトの名無しさん:2007/09/17(月) 20:18:25
最高に頭の悪いレスを見た
764デフォルトの名無しさん:2007/09/17(月) 21:30:42
バイナリ見た感じリソースエディタでインポートした時点でビットマップ変換されている予感。
765デフォルトの名無しさん:2007/09/17(月) 23:19:28
ソリューションエクスプローラというか
プロパティウィンドウというか
とにかく、そこのフォントを変えたいんですけど
設定の表示欄的にはあれは何て名前なんですか?
(´・ω・`)
766デフォルトの名無しさん:2007/09/17(月) 23:29:32
ワークスペース?
767デフォルトの名無しさん:2007/09/18(火) 00:18:39
項目に無ーい‥
(´・ω・`)
768デフォルトの名無しさん:2007/09/18(火) 00:32:31
2003だけど、「ダイアログおよびツールウィンドウ」。
しかしこれ色んなところが変わるな。
769デフォルトの名無しさん:2007/09/18(火) 00:53:10
CCustomEdit m_CEdit;

CHogeView::CHogeView内で

RECT rect;
GetClientRect(&rect);
m_CEdit.Create(WS_CHILD | WS_VISIBLE,rect,this,9999);

を実行するとCreateの個所でAssertダイアログが表示されます。

やりたいことは、CCustomEdit というCEditから派生されたコントロールをViewとして使いたいです
770デフォルトの名無しさん:2007/09/18(火) 08:40:52
>>769
OnCreateで作成する
OnSizeでサイズを再調整するのを忘れないように
OnCreateの前にもOnSizeが呼ばれるので注意
771デフォルトの名無しさん:2007/09/18(火) 23:09:05
>>770
OnCreate?

Createをオーバーライドしました。

RECT ClientRect;
GetClientRect(&ClientRect);
m_CEdit.Create(WS_CHILD | WS_VISIBLE,ClientRect,this,9999);

で実行しましたが、エディットコントロールがViewに配置されているようには見えません。

いや〜VC++ってホントに難しいですね
けど、ネイティブへの憧れがあるからがんばりますのでご助言願います。
772デフォルトの名無しさん:2007/09/19(水) 00:27:40
猫でも分かるSDK18章のソースをコピペしてリソースも画面を参考に作ったのですが
コンボボックスがドロップダウンしません。あれはコードを書かなくてもドロップダウンする
のでしょうか。

773デフォルトの名無しさん:2007/09/19(水) 00:32:46
だからOnSizeで再調整って書いておいたのに(´・ω・`)
その作り方だとサイズは0,0になるけど、
コントロール自体はきちんと作成されているからSpy++で確認してみて。
774デフォルトの名無しさん:2007/09/19(水) 00:48:05
あと
  wc.hbrBackground = (HBRUSH)(WHITE_BRUSH);
だとクライアント領域が透けて下がみえるので本を参考に
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
に直しましたが本がなかったらお手上げでした。
775デフォルトの名無しさん:2007/09/19(水) 01:10:27
WHITE_BRUSHはGetStockObjectと組み合わせるための値だな。

>>772
コモンコントロール6.0より前では、リスト内容が無くてもドロップダウンされていた。
XP+テーマ適用の6.0以降ではリスト内容に依存するようになるため、そういう動作になる。
アイテムさえ追加されればドロップダウンされるので、慌てる必要はない。
776デフォルトの名無しさん:2007/09/19(水) 01:45:55
単にコンボボックスの高さがデフォルトのままのせいでした。失礼しました。
777デフォルトの名無しさん:2007/09/19(水) 15:38:00
今さっきまで普通にいじることができた、リソースが
「!読み込めませんでした」
となって、操作できなくなってしまったんですが、どうしたら直りますか?

初歩的な質問かもしれませんが、よろしくお願いします。
778デフォルトの名無しさん:2007/09/19(水) 17:21:20
リソースビューで?
rcファイル自体を別の形式(テキストとか)で開いている、
ファイルの記述にエラーがある、とかかなあ?
779デフォルトの名無しさん:2007/09/23(日) 07:30:19
時計の文字盤(まだ時間の目盛りだけ)をウインドウに書こうとしているのですが
うまくいきません。WM_PAINTが来たらDrawTicks(hWnd, 50)を呼び出してますが
0°の位置(3時)の目盛りしか表示されません。ソースは次に示します。
780デフォルトの名無しさん:2007/09/23(日) 07:31:03
void DrawTicks(HWND hWnd, int r)
{
double s;
hWnd = hWnd;
for(s = 0.0; s < 360.0; s += 30.0) {
DrawTick(hWnd, s, r);
}
return;
}

void DrawTick(HWND hWnd, double s, int r)
{
HDC hDC;
PAINTSTRUCT ps;
int x, y;

hDC = BeginPaint(hWnd, &ps);
x = (int)((r - 5) * cos(DegToRad(s)));
y = (int)((r - 5) * sin(DegToRad(s)));
MoveToEx(hDC, x + 50, y + 50, NULL);

x = (int)(r * cos(DegToRad(s)));
y = (int)(r * sin(DegToRad(s)));
LineTo(hDC, x + 50, y + 50);

EndPaint(hWnd, &ps);

return;
}
781デフォルトの名無しさん:2007/09/23(日) 07:31:51
よろしくお願いします。
782デフォルトの名無しさん:2007/09/23(日) 08:26:07
BeginPaint EndPaintしたら前に書いたやつ消えるような気がするけど
783デフォルトの名無しさん:2007/09/23(日) 08:29:39
>>780
DegToRad()は?
784デフォルトの名無しさん:2007/09/23(日) 09:04:47
>>779
BeginPaintは更新領域をクリッピング領域に変換、
EndPaintは更新領域を全てクリアする。
よって、二回目以降のDrawTickは全てクリップされて実際には描画されない。

BeginPaintとEndPaintは、
本来WM_PAINTハンドラの最初と最後に一回ずつ呼び出して使う。
785デフォルトの名無しさん:2007/09/23(日) 12:28:53
DirectShowフィルタを作製しているんですが、この間までできていたビルドができなくなって
しまいました。
以下のようなエラーがでてしまいます。

c:\program files\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(76) :
error C2504: 'IReferenceClockTimerControl' : 定義されていない基本クラスが宣言されています。

最後に成功したときから、プロジェクトの内容、設定ともに変更していないはずなのですが・・・。
こういう場合、原因としてどこを疑えばイイんでしょうか?
786779:2007/09/23(日) 13:19:22
ご指摘の点修正しましたら目盛り表示されました。ありがとうございます。
787デフォルトの名無しさん:2007/09/24(月) 00:19:06
とりあえずリビルド
788785:2007/09/25(火) 07:38:23
解決しました。
Dshow.hファイルが複数あり、オプションでWindowsSDKのインクルードフォルダの
優先順位を上げてやればビルドできるようになりました。
それまではDirectX9.0のDShow.hがビルド時に参照されてしまっていたのが問題
だったようです。
789デフォルトの名無しさん:2007/09/25(火) 16:47:11
WPARAM型の比較って↓こんな感じであってますか?

if ( a == 5 ) {
 iroiro();
}

aがWPARAM型変数、環境はWin32です。
790デフォルトの名無しさん:2007/09/25(火) 20:02:05
>>789
メッセージの種類による。
値を切り出すのにマクロが用意されている場合は、それの使用を推奨。
特に無い場合は、普通に比較なりすればいいと思う。
791デフォルトの名無しさん:2007/09/25(火) 20:24:13
>>790
なるへそ。
ありがとうございました!
792デフォルトの名無しさん:2007/09/30(日) 10:19:08
TCHARをSJISコードに変換する方法は無いでしょうか?
TCHARをそのままファイルにテキスト出力しようとすると、
アルファベットの部分は変換されずに出力されますが、
日本語の部分は???に変換されます。
793デフォルトの名無しさん:2007/09/30(日) 10:27:47
TCHARは漢字コードを規定していません。
794デフォルトの名無しさん:2007/09/30(日) 10:40:36
>>792
そのまま出力したら、コンパイル時の設定に従って
UTF-16LEかShift_JIS(日本語なら)になるはずだが。
795792:2007/09/30(日) 11:22:28
ちなみに、ファイル出力に使用した命令は_ftprintfです。
コンパイルの設定はVisual Stdio2005のデフォルトなので、UTF-16LEかと思われます。
OSはWindows2000のSP4を用いています。
796デフォルトの名無しさん:2007/09/30(日) 12:27:19
>>792
_tsetlocale(LC_ALL, _T(""));

プログラム開始時はCロケールなので、
Unicode->ANSI変換の際、日本語等は全て変換不可文字として扱われる。
797デフォルトの名無しさん:2007/09/30(日) 12:54:39
コメントアウトする場所によってコンパイルできたりできな
かったりするんですが、これって仕様なんですか?
↓こんな感じ
http://www.uploda.org/uporg1044659.jpg.html

※行全体
http://www.uploda.org/uporg1044661.jpg.html
VC++2005使ってます。
798デフォルトの名無しさん:2007/09/30(日) 13:27:22
全角空白がコメント前に紛れ込んでいたというおち
テキストでなく画像なところが怪しい
799デフォルトの名無しさん:2007/09/30(日) 15:28:07
>>798
ウホッ。。ホントだ。間隔入れ直したらあっさりコンパイルできますた。
ありがとうございました。
800デフォルトの名無しさん:2007/10/04(木) 19:32:20
Visual C++ 2005 で開発しています。
作成したプログラムを配布する際に
どのようなランタイムライブラリが必要かについて悩んでいます。

1)/clr で作成したアプリ 
→ .NET Framework Version 2.0 再頒布可能パッケージ (x86)?
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=ja

2)/MD で作成したアプリ 
→ Visual C++ 2005 SP1 再頒布可能パッケージ (x86)?
http://www.microsoft.com/downloads/details.aspx?FamilyID=200b2fd9-ae1a-4a14-984d-389c36f85647&displaylang=ja

3)/MT で作成したアプリ → 不要?

3つのケースについて、教えていただけないでしょうか?
801デフォルトの名無しさん:2007/10/04(木) 21:38:30
それであっている。
なお、(3)では別途ランタイムが要らない代わりに、
実行ファイルの大きさが膨れやすいことに注意。
許容範囲かどうかは自分で試すこと。
802デフォルトの名無しさん:2007/10/04(木) 21:46:27
warning C4996: 'strcat' が古い形式として宣言されました(ry
のwarningはどうやったら抑制できるでしょうか?
ぐぐって、#define _CRT_SECURE_NO_DEPRECATE
を先頭でやってみましたがダメでした。
ちなみに自分で書いたソースではなく、本のCDに入ってたdxutil.cppで出ます。
無視してもいいのですが、あまりに大量に出るので…。
803デフォルトの名無しさん:2007/10/04(木) 21:50:55
>>802
先頭ってどのファイルの先頭?
もし、プロジェクトを作っていてstdafx.hがあったら、
stdafx.hの先頭でないと駄目だよ。
804デフォルトの名無しさん:2007/10/04(木) 22:22:31
いろいろやってみて、warningが出る全てのcppの先頭に書いたら出なくなりました。
#includeよりも前に書かないとダメなのね。
805デフォルトの名無しさん:2007/10/04(木) 23:21:56
プロジェクトプロパティでプリプロセッサ定義しちゃいなYO
806デフォルトの名無しさん:2007/10/05(金) 14:31:29
Visual C++ 6.0でMFC ActiveXコントロールを作成しています。
テキストボックスを拡張したタイプです。
WM_DROPFILESイベントでOnDropFilesメソッドを作ったのですが
IEでこのコンポーネントを使った場合に、このイベントが発生してくれません。
VB6.0のフォームに貼り付けると問題ありません。
IEでもファイルのドロップイベントが発生するようにするためには
どうしたらよいでしょうか?
申し訳ありませんがよろしくお願いいたします。
807デフォルトの名無しさん:2007/10/05(金) 23:05:20
>>806
DragAcceptFiles();
とか?
808デフォルトの名無しさん:2007/10/06(土) 07:57:15
>>807
ありがとうございます。
そのコードは記述しております。VBのフォームに貼り付けた場合は
イベントが発生しているので問題ないかと思います。
どうやらいくつかのイベントはIE(コンテナ?)が処理してしまって
ActiveXコントロールのほうには来てくれないようです。

http://www.hi-ho.ne.jp/babaq/bfup.html
やりたいのは↑みたいなことなのですが
これはリストボックスにドラッグできますので
できないということはないはずなのですが・・・
809デフォルトの名無しさん:2007/10/06(土) 16:35:19
>>801
しかし、VC++2005SP1のランタイムを入れてるやつなんて
ほとんどいないという罠
810デフォルトの名無しさん:2007/10/06(土) 17:03:57
>>809
自分の環境では Visual Studio 2005 Professional を
入れてしまってるから検証しようがないんですが、
.NET Framework 2.0 の再配布可能パッケージに、
Visual C++ 2005 SP1 の再配布可能パッケージに含まれる
DLLの一部が含まれてるなんてことはないんですかねぇ。
さすがに両方入れておいてなんてなかなか言えないなぁ。
自分は C++ でも C++/CLI でもプログラム書くもんで。
811デフォルトの名無しさん:2007/10/06(土) 17:33:40
なんだそれ
調べりゃわかることをくどくど質問するな
812デフォルトの名無しさん:2007/10/06(土) 17:41:04
なんだそれ
質問すりゃわかることをくどくど調べるな
813デフォルトの名無しさん:2007/10/06(土) 18:05:38
くだすれなんだから、
くだくだ質問してもいいじゃない。

おーい、やまだくん、ざぶとん1まい
814デフォルトの名無しさん:2007/10/06(土) 20:09:20
すいませんホントにくだらない質問なので申し訳ないのですが
マクロについて聞かせてください。

#define GET_FRAGMENT_PARAM(name) \
myCgFragmentParam_##name = \
cgGetNamedParameter(myCgFragmentProgram, #name); \
checkForCgError("could not get " #name " parameter");

このようなマクロがあったときに \ で複数行にすることはわかったのですが
その後の##nameと#nameの違いと意味について教えてください。
815デフォルトの名無しさん:2007/10/06(土) 20:13:30
すいません…814に加えて

#define MAT(m,r,c) (m)[(r)*4+(c)]

これは1次元配列の(r)*4+(c)を参照する、ということなのでしょうか・・・
こういう表現の仕方に今まで触れていなかったので混乱してしまって
816デフォルトの名無しさん:2007/10/06(土) 20:17:26
>>815
ブレークポイントで確認して値見て見ればいいじゃん
817デフォルトの名無しさん:2007/10/06(土) 20:28:16
おっしゃるとおりです
そういうことまで聴いてしまってすいませんでした

あと、ここはVCスレだったのですね…他で伺うことにします。
818デフォルトの名無しさん:2007/10/06(土) 21:14:48
猫でもわかるに
当ホーム・ページの一部または全部を無断で複写、複製、転載あるいはコンピュータ等のファイルに保存することを禁じます。
って記載されたんだけどどういうこと?本文にソースを入力して保存しましょうって書いてる
ところもあるんだけど。
819デフォルトの名無しさん:2007/10/06(土) 21:29:27
猫なんか見るのやめて本買えば?
820デフォルトの名無しさん:2007/10/06(土) 22:51:50
>>818
「無断で・・・することを禁じます。」って書いてあるんでしょ?
「本文にソースを入力して保存しましょうって書いてる」のならば、
それは「無断」ではなく、許可を得てやってることになるから問題ないのでは?
821デフォルトの名無しさん:2007/10/06(土) 23:07:15
>>819 まだ始めたばっかりだしモノになるかわからないから最初は猫に限らず無料の解説サイト
のがいいかと思いまして。といっても、本は何冊か持ってますけどね。
>>820 なるほど、そう考えれば矛盾はないことになるのかな。
822名無しさん(新規):2007/10/07(日) 10:58:15
すいません質問以前のVisual Studioインストールについての質問なんですが、
WindowsMeへのインストール出来るVisual Studio(Visual C)ってあるんでしょうか?
色々調べたけどWindows2000なら対応しているものもあるのですが、
Meだと色々制限あるようでよくわかりません。
そんなに機能は求めなくて、C言語が実行できる環境が欲しいだけなのですが、どなたか回答お願いします。
823デフォルトの名無しさん:2007/10/07(日) 11:03:38
>>822
ボーランドC++
BCC developerがいいよ
無料
824デフォルトの名無しさん:2007/10/07(日) 12:53:35
cygwin + gcc
はだめだろうか。
825デフォルトの名無しさん:2007/10/07(日) 23:36:18
VCで拡張子が違うファイルを
Cと同じように編集したいんだけど

そういう設定ってどこかにないかな?

たとえば .dx とか拡張子があったら
それをCと同じように色つけたりさせていじくりたいの
826デフォルトの名無しさん:2007/10/08(月) 02:58:58
>>814
トークン連結演算子と文字列化演算子でググれ。
827デフォルトの名無しさん:2007/10/08(月) 09:01:31
>>825
ツール - オプション - テキストエディタ - ファイル拡張子
828デフォルトの名無しさん:2007/10/09(火) 13:18:33
>>810
VirtualPCかVMwareくらい使って、簡単に検証する環境を用意したほうがいい。

>>814
マニュアルを見るか、プリプロセッサの出力を見ろ。

>>815
マクロはマクロでしかなく、そのマクロを使って初めて、コードに化ける。
マクロの引数に何が渡されるのか分からない状態では、何とも言えぬ。

>>821
無料の解説サイトは、しょせんは無料。
プロのインストラクターは、ただで教えたりはしない。
一部の人達が市販本を書いてくれているので、
それを読むべし。
829デフォルトの名無しさん:2007/10/09(火) 13:19:35
>>822
WindowsMeに固執する理由がなければ、Windows2000もしくはXPの環境を用意すべき。
830デフォルトの名無しさん:2007/10/09(火) 20:19:37
とても初歩的な質問で申し訳ないです。
オープンソースのプログラムがあってそれを少し改変して使いたいのですがコンパイルの方法がわかりません・・・。
このソースの中のソリューションファイル(?)を開いて全体をビルドしたのですが.dllファイルがでてきません。
やり方を間違えているのだと思いますが・・・。

ちなみにソースはこれです。
http://jaist.dl.sourceforge.net/sourceforge/okai/n02.client.v0.5r1.p2p.v0r6.sept15.zip
831デフォルトの名無しさん:2007/10/09(火) 20:37:56
>>830
手順を手取り足取り教えろってか? 逝ってよし。
しかも、Warez関連だな。逝ってよし。

自分で1からコードを書いてDLLを作って、
基本的なノウハウを身につけてから出直したほうがいい。
832デフォルトの名無しさん:2007/10/09(火) 20:45:12
使ってる開発環境も分からんのでは何とも言えまへんなぁ。
833830:2007/10/09(火) 20:46:55
>>831
超初心者質問スレと聞いてきたのですがさすがにレベルが低すぎましたか。
わかりました。自力でがんばってみます。

後、Peer to Peer=Warezと言う考えは改めたほうがいいです^^;
834デフォルトの名無しさん:2007/10/09(火) 20:56:53
>>830
へ?何も考えずに Visual C++ 2005 でビルドできるけど?
ソリューションのあるディレクトリの一つ上の階層に
dll ができるし、インポートライブラリは release 以下にできる。
そのへんはプロジェクトのプロパティ見ればわかる。
835デフォルトの名無しさん:2007/10/09(火) 21:04:05
>>834
最初からあったので生成されていないと勘違いしていました。
ありがとうございました。
836デフォルトの名無しさん:2007/10/09(火) 21:40:21
>>833
> 超初心者質問スレと聞いてきたのですがさすがにレベルが低すぎましたか。

そういう問題じゃぁない。
VC++の超初心者はOKだが、
質問の超初心者はNGなんだよ。

> 後、Peer to Peer=Warezと言う考えは改めたほうがいいです^^;

なんだその口の利き方は。気をつけろ。
そのDLLはwarezと関係ないのか?
不正に入手したゲームをネット対戦するためのDLLじゃないか?
837デフォルトの名無しさん:2007/10/09(火) 21:40:57
ボタンを押して画像をPictureBoxに表示させたいのですが、
C++にはC#のように、
this.pictureBox1.Image = Image.FromFile(@"C:\sample.bmp");
といったふうに簡単にはできないのでしょうか?
838デフォルトの名無しさん:2007/10/09(火) 21:46:52
馬鹿でも使えるようなライブラリがあったと思う
839デフォルトの名無しさん:2007/10/09(火) 21:51:57
this->Image1->Picture->LoadFromFile("hage.bmp");
840デフォルトの名無しさん:2007/10/09(火) 22:01:41
WinInet.dllを使ってHTTPでファイルをアップロードする
サンプルをください!
841デフォルトの名無しさん:2007/10/09(火) 22:01:43
>>839
それはBuilderの書き方ではないでしょうか?
842デフォルトの名無しさん:2007/10/09(火) 22:10:19
> そのDLLはwarezと関係ないのか?
> 不正に入手したゲームをネット対戦するためのDLLじゃないか?

少なくともここはそれ専用の質問スレではないのでよそで質問してください。
ソフ板かム板のスレ立てるまでもない〜で誘導してもらっても良いかもしれません。
それと言葉使いには気をつけましょう。
気に入らない質問・言葉使いの悪い質問の場合、回答者によっては回答を控えることも考えられます。
より良い回答をもらうためにも言葉使いには気をつけた方が無難です。
どこの質問スレでもそうですが回答側が絶対、と思われてる人もいるのでなおさらです。
もちろん質問者を主と考える回答者もいますが全部が全部そうとは限らないので気をつけてください。
質問者に一方的な敬語を要求し、回答者は威圧的な口語で構わないという雰囲気があるスレでは特に気をつけてください。
843デフォルトの名無しさん:2007/10/09(火) 22:20:06
>>840
おまいみたいな面倒臭がりには、System.Net.WebClient.UploadFileで十分だ。
wininetに拘るなら、HTTP絡みのRFCを一通り読め。
844デフォルトの名無しさん:2007/10/09(火) 22:27:52
845デフォルトの名無しさん:2007/10/09(火) 22:28:56
自己解決しました
pictureBox1->image=System::Drawing::Image::FromFile("C:\\Sample.jpg");
でよかったんですね
なんかすごくめんどくさいです
846デフォルトの名無しさん:2007/10/09(火) 22:55:49
>>842
お前みたいな馬鹿は消えろ。
847デフォルトの名無しさん:2007/10/09(火) 23:17:16
>>845
最初の質問時にC++/CLIと書いておくこと。これ非常に重要。
848デフォルトの名無しさん:2007/10/10(水) 00:02:37
>>846
そんなこと言ったらだめだよ
>>836さんに「なんだその口の利き方は。気をつけろ。」って怒られちゃうよ
849デフォルトの名無しさん:2007/10/10(水) 00:03:47
なんか殺伐としてて、(・∀・)イイ!!
850デフォルトの名無しさん:2007/10/10(水) 07:13:32
とりあえず割れみたいだから通報はしておいたよ
851デフォルトの名無しさん:2007/10/10(水) 07:35:11
そういう問題じゃぁない。
852デフォルトの名無しさん:2007/10/11(木) 15:13:38
>>836
明らかに質問者の口の利き方はいい(VC++にはありえないほど初心者みたいだが)
最近じゃお礼も言わないでいくやつや、質問に答えてくれないから死ねとかいうやつもいるしな。
逆に回答者のほうが口の聞き方から小学生みたいに見えるぞ。

DLLみたかぎり割れとはまったく関係ないようだしな。
P2Pはすばらしい通信方式だからすぐ割れと決め付けるのはよくない。
最近一部で人気のスカイプもP2Pを使ってるおかげだ。
853デフォルトの名無しさん:2007/10/11(木) 15:22:02
sourceforgeだったら作って配布してる人に直接聞けばいいじゃない
ファイルだけもらって別の掲示板で質問するんじゃ配布してる人に失礼だし、
ここはサポートセンターじゃないよ
854デフォルトの名無しさん:2007/10/11(木) 15:46:16
一番の癌は逆切れる質問者と余裕のない回答者である。
                            〜ニーチェ〜
855デフォルトの名無しさん:2007/10/11(木) 16:18:09
>>852
> DLLみたかぎり割れとはまったく関係ないようだしな。
ゲーム機エミュレータで通信対戦をするのに特化したDLLだよ。

> P2Pはすばらしい通信方式だからすぐ割れと決め付けるのはよくない。

TCP/IPが産まれたときから、ピア-to-ピア で通信するのが当たり前なのだが。
いまさらP2Pなんて言う連中は、数十年も昔の考え方のままだね。
856デフォルトの名無しさん:2007/10/11(木) 16:38:31
> TCP/IPが産まれたときから、ピア-to-ピア で通信するのが当たり前なのだが。
> いまさらP2Pなんて言う連中は、数十年も昔の考え方のままだね。

なるほど、ということはやっぱり「Peer to Peer=Warezと言う考えは改めたほうがいいです」
てのは間違ってなかったんだな。
857デフォルトの名無しさん:2007/10/11(木) 16:57:46
質問者は簡潔に言うと
無料配布されているソースを(VC++で)コンパイルするにはどうすればいいのか?
で、試したことは書いてあるし結局ただの勘違いだったんだから>>834のような回答すればいいんじゃないか。
URLはただの参考だし

くだ質スレで回答者だからって偉そうにしてるやつはおかしい。
858デフォルトの名無しさん:2007/10/11(木) 17:03:31
>>856
誰もP2P=Warezだなんて言ってないな。
ゲーム機エミュレータだからwarez関連なんだろ。

>>857
回答者だからではなく、キツい口調で言わないと分からない人が相手だから、キツい口調にしてる。
859デフォルトの名無しさん:2007/10/11(木) 17:33:23
> 回答者だからではなく、キツい口調で言わないと分からない人が相手だから、キツい口調にしてる。
860:2007/10/11(木) 17:34:11
なんだその口の利き方は。気をつけろ。
861デフォルトの名無しさん:2007/10/11(木) 17:48:25
甘えきった質問者にはビシーッと言ってやらにゃぁな。
862デフォルトの名無しさん:2007/10/11(木) 18:06:06
>そういう問題じゃぁない。
>VC++の超初心者はOKだが、
>質問の超初心者はNGなんだよ。

>そのDLLはwarezと関係ないのか?
>不正に入手したゲームをネット対戦するためのDLLじゃないか?
これは問題ないと思うが

>なんだその口の利き方は。気をつけろ。
これはキツい口調とかそれ以前に自分が偉いと思ってる小学生みたいじゃねw
863デフォルトの名無しさん:2007/10/11(木) 18:07:12
そういう問題じゃぁない。
VC++の超初心者・質問の初心者はOKだが、
逆切れする超初心者はNGなんだよ。
864デフォルトの名無しさん:2007/10/11(木) 18:07:56
うあああああああああああああああああああああああ!!!!!!!
ぎゃあああああああああああああああああ!!!!!!!!1
865デフォルトの名無しさん:2007/10/11(木) 18:09:22
おまえらなんかprintf関数で挫折しろ
866デフォルトの名無しさん:2007/10/11(木) 18:19:45
> >なんだその口の利き方は。気をつけろ。
> これはキツい口調とかそれ以前に自分が偉いと思ってる小学生みたいじゃねw

確かにね。
エスパー何とかって質問スレのテンプレの意図を汲むと
余裕のない回答者も嫌われる質問者と同じくらいうざいね。
867デフォルトの名無しさん:2007/10/11(木) 18:58:03
安易に答えを教えて甘やかさないのは、
真に余裕があって優しい先輩なのだが。
868デフォルトの名無しさん:2007/10/11(木) 19:19:01
そういう人がいるとすれば少なくとも2種類あるね。
ググれっていう人と答えは教えないけど調べ方を教える人。
869デフォルトの名無しさん:2007/10/11(木) 19:23:32
ググれは調べ方だろう・・・。常識的に考えて・・・。
870デフォルトの名無しさん:2007/10/11(木) 22:40:21
今回の消防は割れ野郎だって確定してるんだし引っ張る理由はなんなの?>ALL
871デフォルトの名無しさん:2007/10/12(金) 03:36:19
ググれ
872デフォルトの名無しさん:2007/10/12(金) 07:59:24
ヤフーでググりました
873デフォルトの名無しさん:2007/10/12(金) 22:00:00
なぜに検索のことをググるというんですか?
yahooでもinfoでもどこで検索しても同じですよ
874デフォルトの名無しさん:2007/10/12(金) 22:02:32
>>873
書き込み時間に敬意を評したい
875デフォルトの名無しさん:2007/10/12(金) 22:03:52
俺は真に余裕があって優しい先輩だから教えてやるよ

ググれ
876デフォルトの名無しさん:2007/10/12(金) 22:22:40
ググればいいってわけでもないぞ。
基礎はマニュアルや参考書を読んで勉強すべき。

ググったけど、わかりませんでした
という相談を受けて、
たりめーだ、マニュアルのすぐわかるところに書いてあるぞ。
だから誰もWebで解説したりブログに書いたりしねーんだよ。
と怒鳴ることも多々。
877デフォルトの名無しさん:2007/10/12(金) 22:29:35
>>873
油性フェルトペンのことを「マジック」
ステープラーのことを「ホッチキス」
セロハンテープのことを「セロテープ」
コピーのことを「ゼロックス」

商標の一般名詞化ってやつ。
878デフォルトの名無しさん:2007/10/12(金) 22:48:33
だからなぜ、商標を指定するのかと聞いているのです
879デフォルトの名無しさん:2007/10/12(金) 23:03:32
>>878
代名詞だからさ。

そんくらい、わかれよ。
880デフォルトの名無しさん:2007/10/13(土) 00:13:21
mimeのboundary文字列を生成したいのですが
どうやって生成するのがお勧めでしょうか?
881デフォルトの名無しさん:2007/10/13(土) 01:52:25
VC++でGUIの作り方がさっぱりわかりません。
テキストエディタを作る場合はやはりCEditViewを選択するんでしょうか?
882デフォルトの名無しさん:2007/10/13(土) 09:52:48
>>881
しっかりしたものを作りたいならCEditでは使い物にならない。
試しに「こんなもんか」程度のものを作りたいならご自由に。
883デフォルトの名無しさん:2007/10/13(土) 10:01:12
エディットコントロールすら使えないやつは問題外
884デフォルトの名無しさん:2007/10/13(土) 11:11:10
CComPtr<IWebBrowser2>
でエラーが出ます。何かインクルードしないといけないようですが
何をインクルードすればよいでしょうか?
885デフォルトの名無しさん:2007/10/13(土) 11:15:10
MSDNに書いてあるし
直接インクルードファイル検索してもいいし
ネットで検索してもいいし
886デフォルトの名無しさん:2007/10/13(土) 11:19:05
少なくとも<atlbase.h>が必要。
http://msdn2.microsoft.com/ja-jp/library/ezzw7k98(VS.80).aspx
もしかしたら<exdisp.h>も必要かもしれない。
(<windows.h>の中でインクルードされているはずだが)
http://msdn2.microsoft.com/en-us/library/aa752127.aspx
887デフォルトの名無しさん:2007/10/13(土) 11:49:45
>>885, 886
早速ありがとうございます。できました。

実は
http://blogs.yahoo.co.jp/jyouga/folder/315904.html
のソースをコピペして動かしてみたいのですが
今度は
SetBrowserEvents
が定義されていないというコンパイルエラーになります。
ググって見ても引っかからないので独自関数だと思うのですが
ここはどう実装すればいいでしょうか?
888デフォルトの名無しさん:2007/10/13(土) 12:20:23
>>887
自分が何をやっているのか理解せずにコピペするなよ。

だいたい、部分的に要点だけ書いたブログ記事を見て、
それで自分でプログラムが書けないのなら、前提知識が
なさすぎるってことだよ。いまは諦めな。
889デフォルトの名無しさん:2007/10/13(土) 12:22:58
>>887
あんたアフォですか?
どう実装すればって、そんなのはどういう動作を期待しているかわかるおまえしか
わからんだろ?
890デフォルトの名無しさん:2007/10/13(土) 13:27:38
>>888, 889
すみません。
頭を使うのは苦手でして・・・
891デフォルトの名無しさん:2007/10/13(土) 13:37:39
>>890
プログラミング無理
892デフォルトの名無しさん:2007/10/13(土) 13:55:48
またほかからコピペしてみたら
イベントが発生したっぽいです。
m_pWebBrowser = GetIeBrowser(hWnd);
com_event_sink<CIESink> sink;
HRESULT hr;
hr = sink.create();
hr = sink->DispEventAdvise(m_pWebBrowser);

でも例外エラーっぽく落ちます。
なぜでしょう?
893デフォルトの名無しさん:2007/10/13(土) 14:10:57
>>888
894デフォルトの名無しさん:2007/10/13(土) 14:13:02
うひょー
できました。
m_pWebBrowser = GetIeBrowser(hWnd);
com_event_sink<CIESink> sink;
HRESULT hr;
hr = sink.create();
hr = sink->AdviseToIE((CComPtr<IUnknown>)m_pWebBrowser, this->m_hWnd);

意味はさっぱりわかりませんがw
895デフォルトの名無しさん:2007/10/13(土) 18:10:56
トークンのはじめに _ があったり、トークンの中に __ があるとC++の規格上アウトらしいんですが、
なんでコンパイルエラーにならないんだよおおおおおおおおおお
896デフォルトの名無しさん:2007/10/13(土) 18:23:04
ユーザのコードかそうでないか判断するの('A`)マンドクセ
897デフォルトの名無しさん:2007/10/13(土) 18:33:15
>>895
予約されてるってだけだからな。
898デフォルトの名無しさん:2007/10/13(土) 21:37:43
質問('A`)ヴァー

環境 : VC++2005Express、VCS2005Express、WinXPHome
やりたいこと : C++でクラスライブラリ作成、CSで利用

詰まってるとこ : クラスライブラリの関数の型を自由に宣言出来ない

VC++側
 namespace hoge_dll{
  public ref class Choge_dll{
  public :
   void hage(void){}
  }
 }

VCS側
using hoge_dll;
(ry
 Choge_dll poge = new Choge_dll();
 poge.hage();

DLL関数hageの引数・返り値がvoidだと上手く行くんだが、型をstringなど複雑なものに変えると使えなくなる。
ポインタの引渡しや関数ポインタの引渡しとか色々やりたいけど、これでは出来そうも無くて困ってる('A`)
誰かやり方教えてくだしあ
899デフォルトの名無しさん:2007/10/13(土) 22:40:32
std::stringはStringに変更、
ポインタ・関数ポインタはIntPtrで渡せばいいんじゃね?
900デフォルトの名無しさん:2007/10/13(土) 22:54:20
MFCでViewクラスのメンバ変数・関数をつかうにはどうすればいいんですか?
Viewのヘッダーをインクルードするとコンパイルエラーでるんですが
901デフォルトの名無しさん:2007/10/13(土) 23:43:23
エラー内容わかんね。
902デフォルトの名無しさん:2007/10/14(日) 00:11:39
MFC(VC8)で、IMEを一時的にOFFにしたいのですが、どうすべきでしょうか?
エディットボックスで入力制限が行いたくて、困っています。
全角入力を不可にしたいんです。ImmDisableIMEを使うと無効にはなりますが、
このエディットボックスでは無効、このエディットボックスでは有効、という
ようにしたいんです。
903デフォルトの名無しさん:2007/10/14(日) 00:17:27
>>902
EditBox毎にImmDisableIMEを使えばいいじゃん。
904デフォルトの名無しさん:2007/10/14(日) 01:34:00
>>899
Stringでいけたぜ(`・ω・´)サンキュー
IntPtrはまだ試してないけどググったら文献出てきたからいける予感
905デフォルトの名無しさん:2007/10/14(日) 01:38:36
いまのVC++って、そんな芸当ができるんだ。

昔はC++のクラスをVBから使うためには、COMを使わないといけなかったんだよ・・・。
906デフォルトの名無しさん:2007/10/14(日) 08:57:20
>>899>>904
関数ポインタよりもデリゲート使ったほうがいいんじゃね?

その他のポインタも、C#でいうref/out引数で十分なことが多い気がする。
配列なら当然C++/CLIではarrayね。
907デフォルトの名無しさん:2007/10/14(日) 09:56:34
VC2005を使っています。
ifstreamとstd::getlineでファイルから一行ずつ読んでいるのですが、空行を読ませた場合に
eofbitを立てていなくても例外が送出されて困っています。

具体的には、ヘッダー string の 585 行目でeofを検出するとeofbitのフラグを立てて、
611行目で例外を創出するはずなのですが、空行の場合 _Changed フラグがfalseのままなので、
勝手にfailbitフラグを立ててしまっているようです。

コードは以下の通りで、

f.exceptions(std::ios_base::badbit | std::ios_base::failbit);
if (!eof())
 {
  do {
   std::getline(f, line);
 } while (line[0] == '#' && !eof());
}

こんな感じです。

abc↓
def↓
[EOF]

このようなファイルを読み込ませると、最後の行で必ず例外が発生します。
908907:2007/10/14(日) 09:57:46
何か良い解決方法はないでしょうか?
909デフォルトの名無しさん:2007/10/14(日) 10:47:58
それ以前におかしくないか?
910デフォルトの名無しさん:2007/10/14(日) 12:55:16
>>907
少なくとも超初心者ならば、
プロが作ったライブラリの間違いを探す前に、
自分の書いたコードの間違いを探そうぜ。

VCのマニュアルには、
> 要素を何も抽出しない場合、この関数は setstate(failbit) を呼び出します。
なんて書いてあるぞ。

つまり、あなたがgetlineを選択したこと、もしくは、使い方が悪い。
911デフォルトの名無しさん:2007/10/14(日) 13:47:24
MFCを使ってメール送受信させたい場合、どういうクラスを使って実現するわけですか?
912デフォルトの名無しさん:2007/10/14(日) 13:53:34
ソケットw
913デフォルトの名無しさん:2007/10/14(日) 13:55:39
3年B組クラス
914デフォルトの名無しさん:2007/10/14(日) 14:39:37
>>911
MFCしか使えないという縛りがないのであれば、
別途、メール送受信のライブラリを使えばいい。
915デフォルトの名無しさん:2007/10/14(日) 15:38:19
VS2005でUNICODEでコンパイルしてるんですが
日本語の表示に若干苦戦しています。

setlocale( LC_ALL, "japanese" ) ;
としてからwprintfは正常に実行できるんですが
wcoutは動作しなくなります。

std::wcout.imbue(std::locale("japanese"));
としてからwcoutは正常に実行できるんですが
wprintfは動作しなくなります。

上記の2つを同時にセットすると、
wcoutは失敗、wprintfは成功 します。

cout、printfのようにwcout、wprintfを同時に使えるようにするにはどうすればいいのでしょうか?
916デフォルトの名無しさん:2007/10/14(日) 15:58:50
>>915
よくわからんけどそれぞの関数使う直前で設定しちゃ駄目なの?w
(ホントによく知らんw)
917デフォルトの名無しさん:2007/10/14(日) 16:04:04
>>915
C++の入門書に、
Cの入出力ライブラリと、C++のストリームライブラリは、混ぜて使ってはいけない
というようなことが書いてあるから、試したこともないなぁ。
918デフォルトの名無しさん:2007/10/14(日) 16:23:39
>>915
その問題を最小のコードで書いてみてよ。

自分がVC7.1で試したら、↓は、正常に動作したよ。

int main(int argc, char* argv[])
{
setlocale(LC_ALL, "japanese") ;
std::wcout.imbue(std::locale("japanese")) ;
wprintf(L"Hoge1日本語") ;
std::wcout << L"Hoge2日本語" ;

return 0 ;
}

919デフォルトの名無しさん:2007/10/14(日) 16:26:48
>>912
どこか参考になるサイトはご存知でしょうか?
探しているのですが、なかなか見つけられません。

>>914
別途ライブラリというのはフリーのライブラリでしょうか?
それならば知っていますが、ATLやなんかで簡単にできる
やつはないのでしょうか?
920915:2007/10/14(日) 16:29:22
前に調査したときに出来なかったんで、wprintfは捨てて
wcoutを取ったんですが、ファイル操作の段階で
また問題が出たので、質問してみました。

で、また調べた結果、ファイルの場合は別途回避方法を見つけました。
_setmode( _fileno( pFile ), _O_WTEXT ) ;

オープンしたファイルポインタをsetmodeでUTF16を指定してやると
いままで失敗していたfputwsが正常に動作するようになりました。


結局、wcout、wprintfの同居出来ませんでしたが・・・
レスありがとうございます。
921915:2007/10/14(日) 16:31:39
>>918

VS2003.NETでは、そのコードでこちらでも動作していました。
ただ、VS2005では動作が違うようです・・・
922デフォルトの名無しさん:2007/10/14(日) 16:35:26
>>919
> どこか参考になるサイトはご存知でしょうか?

Webでタダで見れるものだけで、済まそうとするな。
下手に自前で作るな。とくに他所様に迷惑をかける可能性のあるものは、な。

> 別途ライブラリというのはフリーのライブラリでしょうか?

フリーかどうかは、関係ない。
品質が確かなものを選んで使うべし。
923デフォルトの名無しさん:2007/10/14(日) 16:44:38
>>920
ちょ、話が違うじゃないか。
924915:2007/10/14(日) 16:53:06
>>923
質問したときには、wprintfがうまく行けばfputwsもうまく行く
と思っていたんですが、たしかにvswprintf_sや他のコンソールに
出力しない文字列操作関数は動作していました。

コンソールの出力の問題だけだったかもしれません。
ちなみに
_setmode( _fileno( stdout ), _O_WTEXT )
をやったらimbueをすると落ちてしまいました。
謎です・・・。
925デフォルトの名無しさん:2007/10/14(日) 16:58:09
「メール送受信なんて」ばくぜんとしたイメージしか持ってないのにプログラム作る気?
926デフォルトの名無しさん:2007/10/14(日) 17:27:39
>>922
そういうサイトは知らないってことですね。わかりました。
>品質が確かなものを選んで使うべし。
確かにそう思います。今となってはフリーだとシェアだの
ライセンスだの、関係ないと思ってます。

>925
勉強したかったので。参考書とか手に入ればいいんですが、
近くの本屋じゃ「できる〜」しか売ってないし、
ネットだと中身が見れなから嫌だし・・・。
で、漠然としてるので、こう、なんていうんでしょう、クラスとか
でMFCが提供してたり、こんな感じで作るわけですよ、的な
ことが書いてあるサイトがあったらいいなと。
927デフォルトの名無しさん:2007/10/14(日) 17:31:26
>>924
既に理解していると思うけど、

Cの入出力ストリームのワイド版は、引数などでやりとりするのはワイド文字列だけど、ファイルに書くのはマルチバイト文字列。
C++のiostreamのワイド版は、引数とファイルの両方がワイド文字列。

だから混在させると、マルチバイト文字列とワイド文字列が混在したファイルを出力したり、
マルチバイト文字列をワイド文字列として読込もうとして、バッファをオーバーランしたりするの。
928デフォルトの名無しさん:2007/10/14(日) 17:43:03
>>926
> そういうサイトは知らないってことですね。わかりました。

正しい道を示して、方向転換を促す人よりも、
間違った道へ進もうとしていても、そのまま具体的な手順を教えて、奈落の底に突き落とす人のほうが、
あなたにとっては、好ましいアドバイスのようだな。

OK。ならば悪魔の入れ知恵をしてやろう。

sourceforge.netへ行って、
自分が作ろうとしているプログラムに近いものを見つけて、
ソースコードをパクれ。
929926:2007/10/14(日) 18:06:22
>>928
悪の入れ知恵ありがとうございます。
928さんの示していただいた道が正しいかどうか、それを判断するのは
私です。お気を使ってくださり922のような発言をしていただいたのに
は感謝します。ただ、手詰まり困った挙句「何か手がかりになるもの」
を求めここにきたわけです。方向性を変えてくださるつもりでの922の
発言だったようですが、僕的に、そこで道が閉ざされてしまったわけ
です。
それに、僕はソースをパクるのはあまり好きじゃありません。もちろん
いいな、と思ったものは流用させていただいたりすることもありますが
基本はいろいろなサイトやソースを参考にし、納得した後に自分なりに
作ったりしています。今回の場合、最終的には928さんの示した道に進む
ことにならざるを得ないだろうとも思っています。
930デフォルトの名無しさん:2007/10/14(日) 18:21:50
メール送信なんて簡単だお
簡易メール転送プロトコルって言うぐらいだからね
931デフォルトの名無しさん:2007/10/14(日) 18:31:26
ところでこのえらそうなばかはなぜねこでもわかるをみないのかなあああああああ
932デフォルトの名無しさん:2007/10/14(日) 18:32:25
メールの送受信のプロトコルを、自分でスクラッチで書くなんて、どーかしてるよ。
簡単なようだけど、相互運用性とかセキュリティとか考えると、すごく大変。
933デフォルトの名無しさん:2007/10/14(日) 18:35:07
>>932
メールの送受信はネットワークプログラムの基礎だと思うが?

つないでリスト取って本文取るだけ。
934デフォルトの名無しさん:2007/10/14(日) 18:39:48
>>898その後

C++DLL側のChoge_dllにSTLを使ったメンバ変数を使ったら「マネージドじゃありません」って言われた('A`)
>>898の状況下でSTL使いまくる方法を誰か教えて下さい('A`)
935デフォルトの名無しさん:2007/10/14(日) 18:42:34
>>934
VS2005買え
936926:2007/10/14(日) 18:52:25
えらそうなばかで申し訳ありません。
ほんともうみなさん、ご迷惑をおかけしてすみません。
甚だしい奴でごめんなさい。
>>931
猫は見ました。というか、猫しか詳しそうなところがなくて。
他のところはどうなんだろうと、見てみたかったんです。
「え、つーかこういうやり方が普通なのか?なんか他に
便利君とか揃ってないのか?つーか他のやり方は??」
とか、そんな感じだったんです。
937デフォルトの名無しさん:2007/10/14(日) 18:54:48
最初から楽したかったらVB
VCは楽しないできっちり作りこむためにある
938デフォルトの名無しさん:2007/10/14(日) 18:57:59
あとのせさくさくですか?
939デフォルトの名無しさん:2007/10/15(月) 00:29:35
ドットネットを一度経験すると、C+WIN32APIで1からシコシコ作るのがアホ臭くなるな
画面周りはポトペタでサクッと作るのがいい
940デフォルトの名無しさん:2007/10/15(月) 01:20:13
>>915
同じ症状の事例ではないがここに書いてある対処法も試してみたらどう?
ttp://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=250724&SiteID=7
ttp://d.hatena.ne.jp/y-hamigaki/comment?date=20070211
941デフォルトの名無しさん:2007/10/15(月) 01:36:32
>>939
もさっりが酷いもっさりがもっさりが我慢ならないもっさりが
できるだけ起動したくねーし
942デフォルトの名無しさん:2007/10/15(月) 07:58:33
↓「お前のPCがしょぼい」から煽りあい勃発
943デフォルトの名無しさん:2007/10/15(月) 08:18:54
今時.NETって・・・
944デフォルトの名無しさん:2007/10/15(月) 11:27:49
VCに関連付けられてる(?)コンパイラって
ほかのものに変ることってできるんでしょうか
VS2005を使っていて 使いたいのコンパイラはDMCです
945デフォルトの名無しさん:2007/10/15(月) 13:17:13
>>944
自分のやりたいことくらい的確に説明しようぜ。
946デフォルトの名無しさん:2007/10/16(火) 21:23:17
セックル
947デフォルトの名無しさん:2007/10/16(火) 21:35:56
俺も
948デフォルトの名無しさん:2007/10/17(水) 09:42:06
私も
949デフォルトの名無しさん:2007/10/17(水) 13:49:21
あちきも
950デフォルトの名無しさん:2007/10/17(水) 16:56:38
俺童貞だけどお前らセクロスに夢見すぎ
951デフォルトの名無しさん:2007/10/17(水) 22:10:49
俺セクロスだけどお前ら童貞に夢中すぎ
952デフォルトの名無しさん:2007/10/19(金) 23:33:26
|ω^) <408とか410とか
953デフォルトの名無しさん:2007/10/24(水) 16:34:24
6.0で、MFCのSDIアプリを作ってたのですが、タイトルバーが「無題-(アプリ名)」となっていたのが、知らないうちに「無題-」だけになってしまってました。
どこを変更すれば直りますかね?
954デフォルトの名無しさん:2007/10/27(土) 09:18:15
スイカバー
955デフォルトの名無しさん:2007/10/28(日) 01:04:10
超初心者です、ちょっと質問させてください。

Visual Studio 2005とPlatform SDK をインストール後、いくつかのサイトに載っているように、設定を行っていました。

で、corewin_express.vspropsを書き換えているときに(MSのサイトでは手順4)、
誤って、CoreWin.vspropsの方を書き換えてしまいました。

CoreWin.vsprops内の
AdditionalDependencies=
以降の内容を教えていただけませんか?
結構長かった気がするんですが。
956デフォルトの名無しさん:2007/10/28(日) 01:09:57
>>955
インストールやり直せばいいじゃん。
957デフォルトの名無しさん:2007/10/28(日) 01:43:57
VC++6でC#のDataGridViewのようなグリッドコントロールを
フリーで公開している日本人の方はいませんかね?

CPにたくさんあるが全て外国人・・・

>>957
何故日本人でないといけないの?
理由如何によっては知り合いがシンプルなのを作っているから紹介しようか?
959デフォルトの名無しさん:2007/10/29(月) 14:51:25
>>958
レスタイの通りじゃない?
せめて専門英語だけでも読めないと年くったとき苦しむんじゃね?
960デフォルトの名無しさん:2007/10/29(月) 15:00:55
>>959
えーとすみません、どこのレスにタイトルが?
961デフォルトの名無しさん:2007/10/29(月) 16:22:36
にちゃんではレスにタイトルはつけられない
962デフォルトの名無しさん:2007/10/29(月) 16:33:32
レスタイって>>958の名前欄に書いてる内容の事?
963デフォルトの名無しさん:2007/10/31(水) 18:52:12
文字列を2次元配列に収めたいんですが、どうすればいいのでしょうか?
てっきり、char[N][M]でいいのかと思ってたら、これは1次元配列みたいで…
char[N][M][P]というふうにすればいいのでしょうか?
964デフォルトの名無しさん:2007/10/31(水) 19:08:53
そうなんだ
長年やってるけど知らんかった
965デフォルトの名無しさん:2007/10/31(水) 19:11:33
勉強になるなあ
966デフォルトの名無しさん:2007/10/31(水) 21:14:02
>>964>>965
ちょwwwwおまいらwwwwww
967デフォルトの名無しさん:2007/11/01(木) 00:03:02
Active Xを使用する際はCFormViewをつかうか、ダイアログベースにしないといけないんですか?
Cviewで使用することはできませんか?
968デフォルトの名無しさん:2007/11/01(木) 00:12:00
つ CWnd::CreateControl
969デフォルトの名無しさん:2007/11/01(木) 05:56:47
>>963
charは文字であって、文字列ではないから。
970デフォルトの名無しさん:2007/11/01(木) 17:08:27
Visual C++ 2005 Express EditionのWindowsフォームアプリケーションの作りかたなどが載ってる本ってなにかありませんか?
どうにもC++の参考書は、コンソール作成のものが多くて
971デフォルトの名無しさん:2007/11/01(木) 18:34:49
C++にフォームなんてない
972デフォルトの名無しさん:2007/11/01(木) 18:43:49
あるわけがない
973デフォルトの名無しさん:2007/11/01(木) 18:48:25
コンソールならあるの?
974デフォルトの名無しさん:2007/11/01(木) 18:57:52
cin cout は何の略だっけ?
975デフォルトの名無しさん:2007/11/01(木) 19:16:25
>>970
まず、C++を勉強する。
次に、C#を勉強し、更にC#でのフォームアプリケーション作成を勉強する (a)。
そして、C++/CLIを勉強する (b)。WWWでググったり、MSDNライブラリを読み漁ったりすれば十分。
そうすれば、(a)と(b)の知識の応用で、C++フォームアプリケーションが作れるようになる。
976デフォルトの名無しさん:2007/11/02(金) 00:34:36
VC6のプロファイルを使いたい。
EXEなら問題なく仕えたんだけどDLLでやろうとするとうまくいかない。
EXE+DLLの両方を対象にするとEXE内の内容は正しくでる。
DLL内の処理はなぜか初めの呼び出し(初期化処理)のみが表示され、
その後の処理に対するプロファイル結果が出てこない。

MSDNとかネットで調べる限りDLLも問題なくできるように思ったんだけど
これは俺が何かを間違ってるから?
977デフォルトの名無しさん:2007/11/02(金) 00:46:06
はい
978デフォルトの名無しさん:2007/11/02(金) 22:12:58
windowsでGUIのアプリケーションを作るなら、
VC++でMFCAppで作るのが一番楽ですよね?
GCCやBCCだと大変ですよね?
979デフォルトの名無しさん:2007/11/02(金) 22:25:55
GUIアプリケーション作成ならBorland C++ Builderとかもあった。
C++でなくても良ければ、VB、Delphi、C#などRAD搭載の開発環境なんてありふれたもの。

どれが一番か俺に判断できることではないが。
980デフォルトの名無しさん:2007/11/02(金) 22:30:41
>>978
そんなのライブラリの使いこなしによるよ。
俺はGCCでGUIアプリを作る気にはならないけど、Cygwin環境なら作る人もいるわな。

ちなみに俺のやり方
GUI→VB
裏方→VC++でDLLとかActiveXとか
981デフォルトの名無しさん:2007/11/03(土) 00:10:25
めんどくせ
それなら全部VC++でやったほうがよくねか?
982デフォルトの名無しさん:2007/11/03(土) 00:12:32
>>979
BCBもあった…って。なんで過去形
983デフォルトの名無しさん:2007/11/03(土) 00:27:58
>>981
俺はダイアログベースをよく使ってたが、届かないメッセージが結構あって。
それならVBも一緒だーっつーて、こういうスタイルにした。
最近はC#が出てきたが、客寄せパンダ程度で終わるのを危惧してまだ手をだしてない。
984デフォルトの名無しさん:2007/11/04(日) 00:44:32
vectorや窓の杜などの公開されているシェアウェアはどの開発環境が多いんですか

やはり、VC++MFCですかね

VC++は本当に難しく感じます、ダイアログベースでも本当に基本的なコントロールしかないし、
Doc/Viewにするとなにをどうすればいいのかさっぱりわかりません。

どこか、いい勉強サイトありませんか?
985デフォルトの名無しさん:2007/11/04(日) 01:33:20
Delphiにしとけ NETとかいらないしJANE styleとか作れる
986デフォルトの名無しさん:2007/11/04(日) 02:32:31
include/sys/socket.hがないんですが、
インストール時失敗したんでしょうか?
vc++2003
987デフォルトの名無しさん:2007/11/04(日) 02:41:37
>>986
WindowsのPOSIXサポートは、別途インストールが必要。
988デフォルトの名無しさん:2007/11/04(日) 02:54:46
>>987
ありがとうございました
989デフォルトの名無しさん:2007/11/04(日) 07:38:00
JANE styleなんか作りたくありません
990デフォルトの名無しさん:2007/11/04(日) 08:47:03
>>988
ソケット使いたいだけなら、とりあえず<winsock2.h>。
もちろんPOSIX系のとは若干、感触が違うので、気を付けろ。
991986:2007/11/04(日) 23:32:08
すいません、POSIXサポートはどっから何をインストールすればいいのでしょか?

992デフォルトの名無しさん:2007/11/04(日) 23:45:32
993デフォルトの名無しさん:2007/11/05(月) 00:45:50
C++/CLIにて、Threadクラスを使ってマルチスレッドに挑戦中です。

ttp://www.atmarkit.co.jp/fdotnet/mthread/mthread03/mthread03_01.html
↑のList1を参考に、MSDN見ながら自分でC++/CLI用に書き換えていったのですが、
「error C3364: 'System::Threading::ThreadStart' : delegate コンストラクタの引数が無効です。
デリゲート ターゲットはメンバ関数のポインタである必要があります。」
と、コンパイラ様に怒られてしまいます。

だ、誰か助けてください・・・。
(アンマネージクラスだと、もしかしてこういう使い方は不可能!?)

-----------------以下、ソース抜粋
(外からstart()メソッドが呼ばれた際に、mainLoop()を別スレッドにて開始する)

class monoEye
{
public:
int mainLoop()
{
/* ループ処理が入る */
}

void start()
{
ThreadStart^ threadDelegate_EyeL = gcnew ThreadStart(this,&monoEye::mainLoop);
Thread^ Thread_EyeL = gcnew Thread( threadDelegate_EyeL );
Thread_EyeL->Start();
}
};
994デフォルトの名無しさん:2007/11/05(月) 01:21:20
うん、アンマネージクラスの非静的メンバはデリゲートに出来ない。
995デフォルトの名無しさん:2007/11/05(月) 01:26:24
>>994
マネージドクラスだと動くので、もしかしたらと思ったら・・・。


こういう時って皆さんどうしてるんでしょうね?
Threadクラス以外ということになるんだとは思うんですが
996デフォルトの名無しさん:2007/11/05(月) 08:48:15
monoEyeをマネージクラスにするのが嫌なら、マネージクラスで包むしかない。たとえばこんな感じ。
#pragma unmanaged
#include <boost/function.hpp>
#include <boost/bind.hpp>
#pragma managed
ref class NetiveWrapper
{
public:
template<typename T>
[System::CLSCompliant(false)]
NetiveWrapper(T fn) : pfn(new boost::function<void ()>(fn)) {}
void Do() {(*pfn)();}
~NetiveWrapper() {this->!NetiveWrapper();}
!NetiveWrapper() {delete pfn;}
private:
boost::function<void ()>* pfn;
};
class monoEye
{
public:
void mainLoop() {}
void start()
{
using namespace System::Threading;
NetiveWrapper^ wrapper = gcnew NetiveWrapper(boost::bind(&monoEye::mainLoop, this));
ThreadStart^ threadDelegate_EyeL = gcnew ThreadStart(wrapper, &NetiveWrapper::Do);
Thread^ Thread_EyeL = gcnew Thread( threadDelegate_EyeL );
Thread_EyeL->Start();
}
};
997デフォルトの名無しさん:2007/11/05(月) 12:59:49
>>996
ぅ・・・なんかすごいことになってますね・・・。

マルチスレッドにするだけでスレッドセーフだのInvokeだのいろいろ出てきて飽和気味なので、
とりあえずはStaticで行こうかと思います。

皆様、ありがとうございました。
998デフォルトの名無しさん :2007/11/05(月) 15:52:02
http://tserve01.aid.design.kyushu-u.ac.jp/~fujiki/vc_lecture/c_6.htm
のお絵かきソフトを作るページを参考にしてるんですが
「ToolBar」の「IDR_MAINFRAME」のボタンとIDを書き換えても
ページに書かれているようなIDに対応するような関数が作られず
ボタンも描いたように表示されず灰色の使用不可のような状態
になってしまいます。
VS2005stdです。
どなたか、わかるかた、VS2005ではどうしたらよいか教えていただけないでしょうか。
お願いします。
999デフォルトの名無しさん:2007/11/05(月) 16:33:03
本人に聞いたらどうだい?
1000998:2007/11/05(月) 16:42:23
本人さんのページにメアドとか掲示板とかがないのでわからないです。
初心者にVisualC++を教えるスレで聞いてみます。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。