トップページ⇒tech
1001コメント339KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2007/06/07(木) 11:01:05
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を愛と勇気を持って書き込むスレッドです。
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/
0002デフォルトの名無しさん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⌒) ./| _ノ  __ノ
0003デフォルトの名無しさん2007/06/09(土) 07:28:01
SSE3には対応していますか?
0004デフォルトの名無しさん2007/06/13(水) 01:55:17
MoveWindow()を使うとウィンドウの大きさや位置を変えることができますが、
大きさを変えるときにはウィンドウの左上が始点になっていますよね?

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


この、右や下の半分だけを表示させるいい方法はないものでしょうか?
0005デフォルトの名無しさん2007/06/13(水) 02:03:48
何したいのか分からんけど、オーナードローしたら?
裏画面とか使って画像ロードして、一部切り出して描画。
0006デフォルトの名無しさん2007/06/13(水) 02:08:10
>>5 それってダイアログ相手でもできたっけ??
0007デフォルトの名無しさん2007/06/13(水) 02:23:07
あー、ダイアログか。
ボタンとかその辺の話?
空のダイアログに今のダイアログ貼り付けて、
子ダイアログの位置をマイナスにしてみたら?
0008デフォルトの名無しさん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個くらいでるのですが、どうしたら直りますか?
お願いします
0009デフォルトの名無しさん2007/06/13(水) 13:13:16
再インストールしたらなおりました
原因を一応言っておくと、ライブラリーファイルを書き換えたのが原因ですか?
この間違えを防ぐために間違って書き換えないように書込み禁止にするほう方があれば教えてください
0010デフォルトの名無しさん2007/06/13(水) 13:16:06
Visual C++2005 を使い始めました。 プロジェクトの種類はCLR
テンプレートはWindowsフォームアプリケーション
を使っています。

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

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

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

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

ttp://www.lovehoney.co.uk/product.cfm?p=11481
0016デフォルトの名無しさん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に埋め込みたいのですが、
どの様な手順でやってけば良いのか全く分かりません。
検索ワードがダメなのか全く情報が出てこず…宜しくお願いします
0017デフォルトの名無しさん2007/06/14(木) 19:01:48
WinMainの引数が間違っている
俺が試したらレベル1でも警告出たんだが

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

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

MessageBox関数を使う為user32.libを入れたのですが
このコマンドをもっと綺麗な順番や、不必要な所をカットして頂きたいのです…
0019デフォルトの名無しさん2007/06/14(木) 20:18:56
>>18
コマンドラインにこだわるならMakefile作って
nmake実行するのがいいけど、
とりあえずcl.exeにファイル全部指定してみ
それでできないやつだけ別に実行すればいいかな
0020デフォルトの名無しさん2007/06/14(木) 20:21:27
>>18
あ、あとコマンドは、、、帰宅してからまた書くわ
0021デフォルトの名無しさん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あたりを指定しておくのがいい
0022デフォルトの名無しさん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
でもいいな
0023102007/06/14(木) 21:36:23
>>11、12
お返事が遅くなってしまい申し訳ございません。
スレッドを使う方法も検討したのですが、
初心者には敷居が高すぎて、挫折してしまいました。
でも、DoEventを使う方法で、希望通りの動作を得ることができました。
どうも、ありがとうございました。
0024デフォルトの名無しさん2007/06/14(木) 21:44:50
VisualStudio2005を手に入れました。
for文をやってるんですが、
空のコンソールプロジェクトでやってるんですが、
Studio.hがありません。><
どうすればいいですか。あ、自分で創れという破天荒な答えは間違いではないが却下しますよ。
0025デフォルトの名無しさん2007/06/14(木) 21:47:25
>Studio.hがありません。
無いのはどうやって確かめたの?
無いはず無いんだけどな
0026242007/06/14(木) 22:03:34
>>25
ソリューションエクスプローラーでは、

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

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

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

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

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

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

VC2005Expressでは、VC++6見たいに、C++のファイルを放り込んでもメニューバーにビルド自体がないため、
ビルドの処理を実行できません。
新規プロジェクトを作成するとメニューバーにビルドが表示され、ビルドが実行できます
ですので、VC2005では一々プロジェクトを作成しないとビルドが出来ないのかと思い、質問させて頂きました。
0044デフォルトの名無しさん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

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

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

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

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

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

本当にありがとうございました。
0053デフォルトの名無しさん2007/06/26(火) 10:36:11
VisualC++.NETって無料ですか?
0054デフォルトの名無しさん2007/06/26(火) 11:09:01
むりよう
0055デフォルトの名無しさん2007/06/26(火) 11:49:22
どっちやねんw
0056デフォルトの名無しさん2007/07/05(木) 13:37:10
Visual C++でスロットゲームを作成しようと思っているのですが、
リール表示の制御(上から下へ流れる感じ。)部分が思いつきません。
どなたか教えていただけませんでしょうか?
0057デフォルトの名無しさん2007/07/05(木) 13:49:38
流れてる絵も作って切り替えたら
0058デフォルトの名無しさん2007/07/05(木) 13:53:18
みためだけでよかったらIEのロゴみたいにアニメーションで
目を合わせるんなら落ち物ゲームみたいに実際に動かす
0059デフォルトの名無しさん2007/07/05(木) 14:35:26
y = 0〜399で回す
◇ <-- y = 0
★ <-- y = 100
☆ <-- y = 200
■ <-- y = 300
◇
0060562007/07/05(木) 14:40:01
ロジックがまったく思い付きません・・・orz
0061デフォルトの名無しさん2007/07/05(木) 14:43:32
アニメーション カウンターみたいなもんだろ
0062562007/07/05(木) 15:06:40
PictureBoxコントロールにビットマップを読み込んで
スクロールさせるにはどうしたら良いでしょうか?
サンプルコードがあると助かるのですが・・・。
0063デフォルトの名無しさん2007/07/05(木) 18:37:25
はあ?
お前人の言ってること聞いてないのか?
0064デフォルトの名無しさん2007/07/05(木) 19:31:32
いくつか出てるのにそれが理解できないなら
自分がどこまで出来るのか書いたほうがいいぞ
0065デフォルトの名無しさん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
です。
よろしくお願いします。
0066デフォルトの名無しさん2007/07/13(金) 12:44:31
製品版買ってATLかMFCを使ってください。
0067デフォルトの名無しさん2007/07/21(土) 14:11:44
char *ptr = char[10];
で、10バイト(以上)確保されている事をプログラム内で確認できるAPIってありますか?

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

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

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

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

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

if(ptr != NULL)
{
// 10byte確保されている
}
0077デフォルトの名無しさん2007/07/22(日) 10:04:50
ptr = new char[10]だったら、
メモリ確保できるか、さもなくば例外を投げるのだから意味がない。
もちろんVC6なんかは別だけど。
0078デフォルトの名無しさん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には正常にインストールされています。
よろしくお願いします。
0079デフォルトの名無しさん2007/07/22(日) 19:05:37
さあ
0080デフォルトの名無しさん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;
}

どのように修正すればよいでしょうか?
0081デフォルトの名無しさん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;
}

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

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

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

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

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

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

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

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

VS.NETの設定の問題なのでしょうか。
0110デフォルトの名無しさん2007/08/05(日) 14:48:17
VS.NETの設定の問題
0111デフォルトの名無しさん2007/08/05(日) 15:28:01
>>109
これ入れてみろ
http://www.microsoft.com/downloads/details.aspx?FamilyId=1B286E6D-8912-4E18-B570-42470E2F3582&displaylang=en
01121092007/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サービスを停止してからシャットダウンすると遅くなりませんでした。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Microsoftが何故あえて同期/非同期って言い方をしてるかよく分からないけど、
少なくともマルチスレッドとかそういうのとは全然関係ないので、
この言葉に変にとらわれないほうがいいと思う。
0137デフォルトの名無しさん2007/08/16(木) 22:47:37
同期例外は、throw句もしくは関数呼び出し先で発生すると決まっているが、
非同期例外はそれ以外でも発生しうる例外、ってことらしい。
アクセス違反とかは、もろにこの部類だな。
0138デフォルトの名無しさん2007/08/16(木) 22:50:47
なるほどそういう意味か。
だとすると構造化例外は確かにすべて非同期ってことで納得。
01391352007/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できないならメモリリークどころではないですよね。
0140デフォルトの名無しさん2007/08/16(木) 23:31:24
というか、それ、解説に/GXって書いてある時点で古い・・・
01411352007/08/17(金) 00:01:50
>>140
すみませんVC7.1を使っていることを書くべきでした。

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

む〜。
0142デフォルトの名無しさん2007/08/17(金) 00:31:30
http://www.thunderguy.com/semicolon/2002/08/15/visual-c-exception-handling/
この話だな
0143デフォルトの名無しさん2007/08/17(金) 15:20:23
>>142
素晴らしい。

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

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

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

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

Java
C#
C++/CLI
VB

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

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

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

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

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

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

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

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

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

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

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

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

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

MessageBox()
とか

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

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

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

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

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

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

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

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

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

これが間違い。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

テキストウィンドウと変なIEが混ざってるようなのも駄目だった・・・
Win32APIでプログラムが組めますって言って仕事もらったのになにもできなくて申しわけないwって感じw
0205デフォルトの名無しさん2007/08/21(火) 22:31:27
前提知識が抜けたまま闇雲にトレースして、
そこから前提知識を推理するよりかは、
よっぽど短時間で済むと思うが。
0206デフォルトの名無しさん2007/08/21(火) 22:40:46
>>204
知らないのに、できます! と言うのに比べれば、
知らなくて、できません! と言うのは悪くない。
0207デフォルトの名無しさん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 が実体(?)であれば ドット
を使うと考えていました。
例に挙げたような -> と ドット が混在するようなケースは、
どのように理解すればよいのでしょうか?
参考になるサイト等紹介いただけるとありがたいです。
(検索キーワードでもいいです)
0208デフォルトの名無しさん2007/08/21(火) 22:47:20
>>207
おお、すげーな
COMとOLEについて書いてあるページなんてはじめて見たw(実は結構ある?)
1年前ぐらいに調べたときはホント1ページもなかった(俺が探した限りでは)
ってか、検索するワードすらよくわからなかったし
0209デフォルトの名無しさん2007/08/21(火) 22:48:26
>>207
operator->が定義されてる。
0210デフォルトの名無しさん2007/08/21(火) 22:49:31
>>205
スキルのある人はみんなそういう。
でも、スキルのない人にはまた別の意見がある。
0211デフォルトの名無しさん2007/08/21(火) 22:51:29
>>210
スキルを身につける気がないなら、プログラマやめたら?
0212デフォルトの名無しさん2007/08/21(火) 22:52:10
>>207
しかし、あいかわらず意味不明だなw
サンプルソース読んでもなにをやってるのかさっぱりわからんw

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

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

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

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

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

ああ、もう、いつもどおり手係りねぇよw
0220デフォルトの名無しさん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=
って調べてもろくなページでてこないじゃん
02212072007/08/21(火) 23:26:35

質問した手前。

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

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

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

大半のプログラマが、
英語で書かれた資料を読んで、
それで事足りているから。
0225デフォルトの名無しさん2007/08/21(火) 23:36:15
>用語にサーバーとかでてくるけど通信がやりたいわけでもないのに
なまじ日本語だと勘違いする罠。
Websterで調べるとやっとそれっぽい意味が出てくるのは4番目で、
ネットワーク云々が出てくるのは最後の6番目だ。
# 1番目は勿論、日本でもケーキサーバと言えば通じるあれのことだ。
0226デフォルトの名無しさん2007/08/21(火) 23:38:14
英語読めないってのは致命的だよ
しかも技術英語なんて、文法簡単だし
単語は技術英語辞典あればいい
0227デフォルトの名無しさん2007/08/21(火) 23:38:57
>>217
OLE ServerとOLE Container。
むっちゃくちゃ基本的な話なのに。
0228デフォルトの名無しさん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
02292072007/08/21(火) 23:41:48
>>222
私の場合、学習の順序がむちゃくちゃですね。
Excelのファイルを作りたくて色々調べて、とりあえず近々やりたいことは出来るようになりました。
でも、基本が無いからちょっと詰まるとカットアンドトライで切り抜けている状況です。
COMというものを勉強すれば、その辺の基礎中の基礎が分かるようになると今知りました。
今後、その辺含めて勉強していきます。お手数おかけしました。
0230デフォルトの名無しさん2007/08/21(火) 23:42:56
>>228
一番上懐かしいなw
10年位前に読んだ気がする
0231デフォルトの名無しさん2007/08/21(火) 23:49:58
英語は嫌といっているが、C++コードで書かれた宣言だけ見ても手がかりにはなると思うぞ。
http://msdn2.microsoft.com/en-us/library/417w8b3b(VS.80).aspx
0232デフォルトの名無しさん2007/08/21(火) 23:52:42
>>221
一応、設定してみたけど
beext1.tlhの中でCommandBarsがどうたらこうたらってエラーが18個ぐらいでるw

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

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

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

って状況だからVCで使えないとあんまり意味がない
0245デフォルトの名無しさん2007/08/22(水) 12:31:52
超初心者スレなのにプロの巣窟。
0246デフォルトの名無しさん2007/08/24(金) 10:17:39
エキスプレスエディチョンで、複数のソースファイルで、呼び出し元とか、宣言、定義に移動できるのはいいが、そっから巻き戻して元の文に戻る方法はないのか?
0247デフォルトの名無しさん2007/08/24(金) 10:29:08
ある
0248デフォルトの名無しさん2007/08/24(金) 10:33:06
エキスプレスエディチョンなんてない
0249デフォルトの名無しさん2007/08/24(金) 10:33:46
エキスプレスエディチョン
0250デフォルトの名無しさん2007/08/24(金) 10:34:55
エ
キ
ス
プ
レ
ス
エ
デ
ィ
チ
ョ
ン
0251デフォルトの名無しさん2007/08/24(金) 10:36:06
「チョン」は朝鮮人の事を指す言葉ではなく、一般的に頭の悪い人を指す言葉なので差別用語ではない。
0252エキスプレスエディチョン2007/08/24(金) 10:36:50

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DEBUG_BREAK_EACH_X_TIMES(4000)

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

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

そんなにライブラリから作りたいなら、
Cのライブラリから自作するよなもちろん?
0344デフォルトの名無しさん2007/08/27(月) 16:36:17
いやいや、Cのライブラリを実装するのにOSを呼び出すんだから、
そのOSから自作だろ。
0345デフォルトの名無しさん2007/08/27(月) 16:37:29
>>341
「起動されたとき」というのを詳しく。
0346デフォルトの名無しさん2007/08/27(月) 16:38:24
ライブラリを作りたいならライブラリを作ればいいし、
ゲームを作りたいならゲームを作ればいい。
ゲーム用のライブラリが作りたいのならそうすればいい。
自分の目的にあわせて手段をどう取るべきかよく考えろ。
フルスクラッチで作成しなければ達成感が得られないのなら仕方ないが、
ゲームを作るという目的のために既存のライブラリを使ってもズルでも何でもない。
何でも最初から、とか言い始めたら、ゲームのための筐体作りから始めなきゃならんぞ。
0347デフォルトの名無しさん2007/08/27(月) 16:43:04
むしろ自分で組む量をできるだけ減らすように努力した上で
スニペットとかの入力補完とかフルに使った上でもrubyの数倍のタイプ量がC++には必要だから安心していいよ^^
0348デフォルトの名無しさん2007/08/27(月) 16:47:04
Ruby厨乙
0349デフォルトの名無しさん2007/08/27(月) 17:02:59
>>345
ほかのプロセスから起動されるプログラムを作っているので、
このプログラムがプロセスとして生成された時点で自動的に
デバッガヘアタッチしたい。
0350デフォルトの名無しさん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の上で
すべて自分で作ってるような人間は居ないから安心していいよ
もちろん、そういうものを作っている人間がいるのは間違い無いわけだから、そういうのに興味を持っていくことを
否定しないし、そういうのを作りたいというなら賞賛するよ
0351デフォルトの名無しさん2007/08/27(月) 17:10:02
>>349
プロセスとして生成された時点というのは、
EXEのエントリポイントが呼ばれるよりも前? それとも後?
0352デフォルトの名無しさん2007/08/27(月) 17:10:52
>>341
任意の時点でint 3を発行すれば、その時点でそれを
OSが捕まえて、デバッガにアタッチしてくれる。
いまは確認できないけど、VCだとint 3をラップする
DbgBreak(?)とかのマクロが用意されてたはずなので
それを呼べばよい。
0353デフォルトの名無しさん2007/08/27(月) 17:11:32
>>351
エントリポイントに入った後というか、main()が呼ばれた後くらいで
止まっててくれると非常に助かる。
0354デフォルトの名無しさん2007/08/27(月) 17:16:28
>>353
int main()
{
DbgBreak();
...
とするだけ。
0355デフォルトの名無しさん2007/08/27(月) 17:17:02
>>353
それだったら、DebugBreak というAPIを使えばOK
0356デフォルトの名無しさん2007/08/27(月) 17:19:08
>>353
それなら、プロセスが生成された時点でもなければ、起動された時点でもないな。
メイン関数に入った後でよければ、それは、任意の時点だ。

Win32APIだと
DebugBreak()
がある。

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

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

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

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

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

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

0370デフォルトの名無しさん2007/08/28(火) 01:51:38
↑
アフォ発見
0371デフォルトの名無しさん2007/08/28(火) 01:54:09
↑
馬鹿発見
0372デフォルトの名無しさん2007/08/28(火) 01:58:42
ぬるぽ発見
0373デフォルトの名無しさん2007/08/28(火) 02:39:59
ム板でぬるぽに反応する奴なんていねーよ







ガッ!
0374デフォルトの名無しさん2007/08/28(火) 12:58:56
あいかわらずキモい流れ
0375デフォルトの名無しさん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);
}
0376デフォルトの名無しさん2007/08/28(火) 16:45:13
エラーとしてはswap<int>が未解決になります。
ちなみにVC++ 6.0です。
0377デフォルトの名無しさん2007/08/28(火) 17:10:50
ttp://hp.vector.co.jp/authors/VA023506/type2t.html
0378デフォルトの名無しさん2007/08/28(火) 17:29:10
あるダイアログ内にある全コントロールのID(IDC_xxx)を取得するには
どうすればいいでしょうか?
0379デフォルトの名無しさん2007/08/28(火) 17:46:03
どうしてもcppファイルに定義を書きたければ、
明示的実体化(あるいは明示的インスタンス化とも)を行えばよい。
0380デフォルトの名無しさん2007/08/28(火) 18:04:38
あらかじめ想定した型でしか使えないなら、テンプレートの威力半減だと思う。
0381デフォルトの名無しさん2007/08/28(火) 18:12:12
FindWindowExでHWNDをとって、
GetDlgCtrlIDでIDに変換。

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

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

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

  int *kaisu;

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

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

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

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

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

ついでですがprintf系関数は
_sをつけた関数にして_Tをつけとけばいいですか?
0406デフォルトの名無しさん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>のように難なく使えるものが多い。
0407デフォルトの名無しさん2007/08/30(木) 20:00:57
便乗して質問。

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

std::basic_string<_TCHAR>とした場合、
_UNICODEを定義している場合は、std::wstringと同じで問題なさそう
_MBCSを定義している場合は、std::stringとは同じではダメそうだと思う。
0408デフォルトの名無しさん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を表示するプログラムを作ったつもりなんですが、
日本語部分が文字化けしてしまうんです。

どうすれば文字化けしないで表示できるでしょうか?
0409デフォルトの名無しさん2007/08/30(木) 21:40:46
mojiこで
0410デフォルトの名無しさん2007/08/30(木) 21:43:53
あなたが気がついていない問題が。
> CString str((LPCSTR)buf, readHtml);
>>402を読んで反省するように。
0411デフォルトの名無しさん2007/08/30(木) 22:10:39
一般に使われてるブラウザでさえ文字化けの問題は避けられないし
そのへん真面目に作ると結構めんどくさい
0412デフォルトの名無しさん2007/08/30(木) 22:42:30
CStringよりCMemFileを使った方がいいな、こういう場合。
0413デフォルトの名無しさん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);
}
0414デフォルトの名無しさん2007/08/31(金) 00:54:45
>>413
> ・文字数なのかサイズなのか
文字数

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

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

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

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

この処理はPC性能によって制限(画像サイズ、階調値など)があるだろうと思いますが、
その値の取得、計算方法がわかりません。
教えて頂けませんか。よろしくお願いします。
0425デフォルトの名無しさん2007/09/02(日) 23:58:29
必要分のメモリ確保できたかどうか
0426デフォルトの名無しさん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を使用しているのであれば
同様の制限になると思われる。
0427デフォルトの名無しさん2007/09/03(月) 01:54:35
>>422
IDEのメニューにあるぞ。
0428デフォルトの名無しさん2007/09/03(月) 02:16:23
あー、ありました・・。ありがとうございました。
0429デフォルトの名無しさん2007/09/03(月) 08:54:31
>>425,426
参考になります。環境はXPなので、この情報を元に探ってみます。
ありがとうございました。
0430デフォルトの名無しさん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);

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

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

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

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

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


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

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

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

case WM_PAINT:
return 0;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

この時に赤を返すAPIが知りたいんです。
GetPixel(hBitmap,0,0) でも駄目だったし
0462デフォルトの名無しさん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);
0463デフォルトの名無しさん2007/09/05(水) 01:21:48
GetPixelはDCに対して、使用する関数だから
DCにhBitmapを選択してからGetPixelを使用する
どうしても、ビットマップハンドルからとなるとGetBitmapBitsで
一旦バッファにコピーして、コピーした配列からアドレスを求めて読み出す
もし、ビットマップをDIBにロードしてるなら
GetObjectでビットマップへのポインタを直接参照も可能
04644612007/09/05(水) 02:20:58
>>462 >>463 レスどうもです。

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

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

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

間違いあったら指摘お願いします。
0465デフォルトの名無しさん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はどうやって検証してる?
04664642007/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 が出ます。
0467デフォルトの名無しさん2007/09/05(水) 03:38:07
SelectObjectは成功してるのか?
なんかメモリDCに最初から選択されている
モノクロ1x1のビットマップのピクセルカラーを読んでる気が
0468デフォルトの名無しさん2007/09/05(水) 03:59:20
あと戻り値やパラメタのチェック、おかしければGetLastError見るとか
自分でSetPixelして読んでみるとどうなるか、とか
Bitmap情報を調べてみるとか
0469デフォルトの名無しさん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;
}
04704662007/09/05(水) 12:14:13
>> 467 468 469
なんとか469氏のコードで出来ました。
皆さんに感謝です。
0471デフォルトの名無しさん2007/09/05(水) 12:46:44
>>464
マルチ死ね
アホは初心者スレから出てくるなカス
0472デフォルトの名無しさん2007/09/05(水) 14:36:12
C++では例外処理は自分でthrowしなきゃいけない?
try
{
int a = func();
}
catch(...)
{
エラー処理
}
とかだとfunc()にthrowを書く必要がありますか?
0473デフォルトの名無しさん2007/09/05(水) 14:39:21
>>472
何を言ってるのかわからない。
04744722007/09/05(水) 15:16:29
>>473
お前には聞いてないので安心汁!!(`・ω・´)
0475デフォルトの名無しさん2007/09/05(水) 15:23:12
472だけど…
よく考えたらC++の質問でした。すいません。
C#とかだとException型のcatchがあればなんでも拾ってくれるんですけど
C++だとcatch(...)を書いておけば想定外のエラー時に拾ってくれるのかな?という質問です。
0476デフォルトの名無しさん2007/09/05(水) 15:23:57
例外は無いならそれに越したことは無い。
よって書く必要は無い。
0477デフォルトの名無しさん2007/09/05(水) 16:05:21
猫でもわかるSDKの第6章簡単なメニューで

myProg.hbrBackground = GetStockObject(WHITE_BRUSH);

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

myProg.lpszMenuName ="SAMPLE02";

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

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

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

質問に答えちまったら、
エスパーが必要な質問をしても、
求める答えが得られると思って、
行動を改めないぞ。
0480デフォルトの名無しさん2007/09/05(水) 16:19:17
>>477
リソースを作るときに、IDで指定(SAMPLE02)した場合はMAKEINTRESOURCEマクロ必要
名前で指定("SAMPLE02")した場合はそのままでおk
キャストはcかcppの差じゃないか?
0481デフォルトの名無しさん2007/09/05(水) 16:30:56
すいません、リソースを作る時に指定というのはどこで指定するのでしょうか。
私はリソースエディタで作ってますがスクリプト本体を見比べても違う部分が分かりません。
0482デフォルトの名無しさん2007/09/05(水) 16:42:56
>>481
だから、SAMPLE02 と入れるか "SAMPLE02" と入れるかの違い
"" の有無だよ。リソースエディタ上でやってみな
04834812007/09/05(水) 16:55:24
できました。ありがとうございました。
04844722007/09/05(水) 17:28:50
なるほど、理解できました。ありがとうございます。
もう少し質問の仕方も勉強します…
0485デフォルトの名無しさん2007/09/05(水) 20:39:05
printf() 関数で " (ダブルコーテーション)の文字を出力する時は、どうすればいいでしょうか?
教えて下さい。
0486デフォルトの名無しさん2007/09/05(水) 20:40:40
\"
04874852007/09/05(水) 20:50:54
>>486
ありがとうございます
0488デフォルトの名無しさん2007/09/05(水) 22:27:02
VC++2005でWin32APIの関数をヘルプで見てもしょぼい情報しか出てこないか情報が見つからないって出ます。
6.0の時は詳細な情報が出てきて重宝したのですが2005では軽視されてるんですか?
0489デフォルトの名無しさん2007/09/05(水) 22:29:29
MSDNライブラリはインストールしてる?
0490デフォルトの名無しさん2007/09/05(水) 22:30:50
EEだからインストールしてません(できない)
0491デフォルトの名無しさん2007/09/05(水) 22:32:14
できるよ
0492デフォルトの名無しさん2007/09/05(水) 22:34:00
今の最新版はこれかな?
http://www.microsoft.com/downloads/details.aspx?FamilyID=b8704100-0127-4d88-9b5d-896b9b388313&DisplayLang=ja
0493デフォルトの名無しさん2007/09/05(水) 22:34:46
そだね
0494デフォルトの名無しさん2007/09/05(水) 22:38:07
ありゃりゃできるんですか?
さっそくしてみます。
ありがとうございました。
0495デフォルトの名無しさん2007/09/05(水) 22:43:55
VC++2005 ExpressEditionからアップグレードしてStandardEditionを入れたのですが
ExpressEditionはアンインストールしても大丈夫ですか?
0496デフォルトの名無しさん2007/09/05(水) 22:56:42
ExpressEditionは他のEditionとは独立しているので大丈夫なはず。
関連付けがうまく処理されるかどうか多少不安だけど。
0497デフォルトの名無しさん2007/09/05(水) 23:09:32
モジュールは独立かもしれないけど、
>アップグレードして
ってところが気になる。
0498デフォルトの名無しさん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)の関数を使用する方法は
ありますでしょうか?
それとも元々このような記述は不可なのでしょうか?
04994952007/09/06(木) 00:48:01
ExpressEditionアンインストールしても問題なく動きました
0500デフォルトの名無しさん2007/09/06(木) 00:54:27
>>498
> tes_sub.cppでaaa.h(aaa.lib)の関数を使用する方法はありますでしょうか?

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

お前さんの書いたコード断片は論外だろ。
0503デフォルトの名無しさん2007/09/06(木) 00:58:58
>>501
何が知りたいのか正確に質問してくれ。
0504デフォルトの名無しさん2007/09/06(木) 01:03:33
どうすればいいか、より
なぜそうなるのか、を聞いたほうがためになると思うがなあ
0505デフォルトの名無しさん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"
0506デフォルトの名無しさん2007/09/06(木) 01:21:52
extern "C"をヘッダに記述する場合は、__cplusplusで切り分けるべき。

#ifdef __cplusplus
extern "C" {
#endif

void foo();

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

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

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

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

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

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

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

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

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

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

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

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

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

モーダルダイアログは閉じられるまで次の行に制御は移らない。
これは仕様だが、処理自体を別スレッドにしておけば平行して処理
されるので問題はなくなる。
0520デフォルトの名無しさん2007/09/06(木) 11:19:08
スレッドのない時代は、モードレスダイアログを作成して
モードレスなんだけど親子関係作って親を操作できないようにして
モーダルのように動作させることもやったし、今でもできるけど
せっかくスレッドあるんだから活用したら
0521デフォルトの名無しさん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)を押すとダイアログが消えます。
ちなみに、右上の閉じるボタンを押してもダイアログが消えません。
0522デフォルトの名無しさん2007/09/06(木) 13:14:03
またお前かアホすぎw
0523デフォルトの名無しさん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を持つ
ボタンが押されたかのようなメッセージを投げてくる。

いまいち基本が理解できていないようなので、躓くたびにいちいち質問するより、
猫でもわかるとかのサイトで勉強して基本を身につけたほうがよいと思う。
0524デフォルトの名無しさん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)にしておくのが常套手段。
0525デフォルトの名無しさん2007/09/06(木) 13:30:49
>>524
521は言ってないが、たぶんMFC臭いぞ。
0526デフォルトの名無しさん2007/09/06(木) 14:55:37
>>525
hInstanceとか使ってるから、win32に一票
0527デフォルトの名無しさん2007/09/06(木) 15:16:29
DialogBoxなんて使ってる時点で、win32でしょ
しかし・・・自分はwin32でソフト作るのって、もう10年近くやってないかも
DirectXがまだ2位でゲーム作って以来だわ
0528デフォルトの名無しさん2007/09/06(木) 17:05:43
MFCとwin32の違いも分かってないに3000点
0529デフォルトの名無しさん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));
0530デフォルトの名無しさん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を混在させると変換が必要になるので、
できるかぎり片方に統一して混在させるべきではない。
0531デフォルトの名無しさん2007/09/06(木) 19:50:42
どうしても変換したいなら、
_stprintf(str3, _T("%hs"), str) ;
かな。
0532デフォルトの名無しさん2007/09/06(木) 19:54:56
さらに、変換をしない、という選択肢もある。
TextOutA(hdc,0,20,str,strlen(str)) ;
0533デフォルトの名無しさん2007/09/06(木) 20:10:29
Thunx!!
テキストファイルと表示の違いに戸惑っていました。
2005ではマルチバイト文字が標準になったんですね。
0534デフォルトの名無しさん2007/09/06(木) 20:38:39
違うわ低脳
0535デフォルトの名無しさん2007/09/06(木) 20:54:01
>>533
ワイド = Unicode
マルチバイト = SJIS
0536デフォルトの名無しさん2007/09/06(木) 21:43:28
今までヘッダファイル書くとき

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

内容

#endif


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

どの本だったか忘れたが、
Visual C++によるC++入門
なんていう本があって、
C++入門書としては酷い内容だし、
Visual C++に特化しているわけでもなく、
旧来のprintf/scanfで、GUIなんて片鱗もなく、
タイトルから「VisualC++による」を削っても、
何ら問題なさそうな本だった。
0591デフォルトの名無しさん2007/09/08(土) 20:57:45
>>589
猫でも分かるプログラミング
win32の本買うなら、このHPみたほうがいい
0592デフォルトの名無しさん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++とは独立した話として勉強したほうがいい。
0593デフォルトの名無しさん2007/09/08(土) 21:07:07
そもそも、目的を実現する手段として C++ が最適なのかな。
0594デフォルトの名無しさん2007/09/08(土) 21:20:53
アカデミックパックと通常版の違いにはどういったことがありますでしょうか??
アカデミックパックでは制限されている事などはありますか??
0595デフォルトの名無しさん2007/09/08(土) 21:28:11
前はproがもらえたんだよな
05965792007/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に飽きた時、勉強してみようと思います。

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

でもOSやOfficeなんかでもそうだけど、書店に並ぶ各種解説書
見てると、なんでこのレベルの本に金払わなきゃならんのよって
思うんだよな・・・
0603デフォルトの名無しさん2007/09/08(土) 22:47:20
マイクロソフト社内には、もっと豊富なサンプルコードがあって、
コンサルティングのサービスを通して個別に提供されたりする。
0604デフォルトの名無しさん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使用
0605デフォルトの名無しさん2007/09/08(土) 23:05:30
timeって何?
0606デフォルトの名無しさん2007/09/08(土) 23:07:20
>>604
> ビルドでエラーが出ないようにするにはどうしたらいいでしょうか

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

けっこう美味しい解説があったりするのよ。
0636デフォルトの名無しさん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ハンドル得る→開放 だから
メッセージが出ないと思うんだけど。

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

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

JavaというとSunがウルサイから、Javaという名前を使わず、
マイクロソフトお得意の、どんどん自分達流に改造したから、
とってもJava臭い文法や、GUIライブラリになったというわけ。
0641デフォルトの名無しさん2007/09/09(日) 20:36:43
禿同
0642デフォルトの名無しさん2007/09/10(月) 08:56:27
○int main(array<System::String ^> ^args)
 の「^」って何ですか?
○[STAThreadAttribute]って何ですか?
○gcnewって何ですか?
○refって何ですか?
0643デフォルトの名無しさん2007/09/10(月) 09:00:52
C++/CLIで拡張された言語仕様だろ。C++/CLIスレで聞いて味噌。
0644デフォルトの名無しさん2007/09/10(月) 09:08:13
てか、普通に文法の話だから、まずMSDNを見ること。これは基本。
それでも分からないなら、質問するときには、何が分からないかを書くこと。
0645デフォルトの名無しさん2007/09/10(月) 11:11:29
VisualStudioの最新版の発売予定日もう発表されましたか?
0646デフォルトの名無しさん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あたりが怪しそうで、いろいろ試したのですがだめでした。
わけあって今プログラムを見ることができないのですがよろしくお願いします!
0647デフォルトの名無しさん2007/09/11(火) 22:14:58
自分が乗った枝を切り落とすの?
0648デフォルトの名無しさん2007/09/11(火) 22:25:10
>>646
OnOKでダイアログBを開くのではなく、
ダイアログAのリターンコードを見て、ダイアログBを開く。
0649デフォルトの名無しさん2007/09/11(火) 22:37:52
>>646
いくつか方法がないこともないが、一番簡単で近い方法は
ダイアログBを開く直前にダイアログAを非表示にすることだろうな。
0650デフォルトの名無しさん2007/09/12(水) 00:54:02
>>648 >>649
ありがとうございます。
リターンコードというのがよくわかりませんが、調べてみます。
06516482007/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: ダイアログが <キャンセル> で消された時のコードを
// 記述してください。
}

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

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

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

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

DWORD => DWORD_PTR
UNIT => UINT_PTR

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

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

#pragma は必要に迫られて使うものなので、一般的に
使われているものかどうかを気にするのは意味がないと思うけど
0668デフォルトの名無しさん2007/09/13(木) 00:22:06
region, endregion(笑)
0669デフォルトの名無しさん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が指定されてたので削除しました)

0670デフォルトの名無しさん2007/09/13(木) 17:52:17
2000以降のOSで、Documents and SettingsのユーザーIDのフォルダの、
アプリケーションのフォルダを作成、又は作ったり、ファイルを作って
アクセスしたりするにはどのように行えば良いのでしょうか?
レジストリが怪しいと思っているのですが・・・
0671デフォルトの名無しさん2007/09/13(木) 18:45:45
>>670
アプリケーション用フォルダの位置の取得はSHGetSpecialFolderPathを使う
ファイルの作成、アクセスは自分でやる
0672デフォルトの名無しさん2007/09/13(木) 21:49:18
これまでC++をCUIで勉強してきてそれなりに慣れたと感じたので
VC2005を使ってGUIのプログラムを習得しようと思うのですが
フォームアプリケーションを使うのとSDKを使うのと
どちらの方がいいでしょうか?
0673デフォルトの名無しさん2007/09/13(木) 21:54:21
>>669
TBS_AUTOTICKSで自動的に付けられる目盛りが、
TBM_SETLINESIZEの値を基準にしていると予想してみる。
0674デフォルトの名無しさん2007/09/13(木) 22:01:00
>>672
SDKがお勧め。個人的にはいきなりWTLに突撃するのも面白いと思う。
フォームはC#辺りで慣れてからの方が良い。
C++/CLIも覚えないといけないし。
0675デフォルトの名無しさん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");
}
0676デフォルトの名無しさん2007/09/13(木) 23:12:15
>>675
そういう設定になっているからです。
環境からでも設定を変更すればコンパイルできるようになりますし、
逆にコマンドラインからでもオプションしだいではエラーになるようにできます。
0677デフォルトの名無しさん2007/09/13(木) 23:13:04
"stdafx.h"のインクルードより前に書いた記述は全て無視される仕様。
#include "stdafx.h"の後に書いてもいいが、
stdafx.hの中に書けば、コンパイル時間短縮になるので、これお薦め。
0678デフォルトの名無しさん2007/09/13(木) 23:13:36
>>675
>>607を読め
06796752007/09/13(木) 23:20:53
>676
どのように設定を変えればいいのでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

自分には違いが関係ないなら、アカデミック買わずに、Expressで十分。
0739デフォルトの名無しさん2007/09/16(日) 20:36:17
>>734
あんたどんだけ、レベル低いんですかw
07407342007/09/16(日) 22:03:20
俺にとってはそうなんだよヽ(`Д´)ノ
オープンソースのコードを見てると、自分の力不足を痛感するんだよ……
0741デフォルトの名無しさん2007/09/16(日) 23:01:55
俺は、今までコンパイルエラーを1回も出した事が無い!
上級者とは、俺レベルの人を指す
0742デフォルトの名無しさん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();}
0743デフォルトの名無しさん2007/09/16(日) 23:24:23
>>741
さては1回もコンパイルしたことがないという落ちだな。
0744デフォルトの名無しさん2007/09/17(月) 02:28:56
>>737-738
アカデミックでも商用利用は禁止されてませんよ。
0745デフォルトの名無しさん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
0746デフォルトの名無しさん2007/09/17(月) 03:52:22
>>719
お前、OSが割れもんだからそんなこと聞きに来たクズだろ?w
0747デフォルトの名無しさん2007/09/17(月) 04:02:00
OSを金出してまで欲しいと思うヲタクではないんで割れですが、何か?
0748デフォルトの名無しさん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=
0749デフォルトの名無しさん2007/09/17(月) 04:10:33
買えよ
ライセンスがバッティングしたらネットワークからアップデート関連なにも落とせないし普通に不便だろ
金額分の価値あると思うぜ
0750デフォルトの名無しさん2007/09/17(月) 05:03:19
>>748
ありがとう
0751デフォルトの名無しさん2007/09/17(月) 11:44:29
この中に貧乏人、歪んだ共産主義者、ただの反社会性異常人格者が居たら私のところに来なさい、以上。
0752デフォルトの名無しさん2007/09/17(月) 12:37:19
ウラー
07537202007/09/17(月) 14:52:19
>>736
アニキ、そんな手があったのか。やっぱアニキは頭いいな。

>>745
ど初心者、俺の基地外レス
jpgデータをバイナリリソースとして追加したら良いんじゃねー
そして、それをjpgとして扱う。
0754デフォルトの名無しさん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
0755デフォルトの名無しさん2007/09/17(月) 18:56:42
Code ProjectにあるCXXXExitControlを使おうと思うとViewは何を継承すればいいのですか?
ダイアログベースでなきゃいけないんですかね?
0756デフォルトの名無しさん2007/09/17(月) 19:00:50
何でもいいよ
07577452007/09/17(月) 19:19:41
>>753
>jpgデータをバイナリリソースとして追加したら良いんじゃねー
>そして、それをjpgとして扱う。
拡張子消してみろってことかな?確かにそれならできる。
resource.hとhoge.rcに手書きで追加した場合も正常に動作する。

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

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

今までに書いた一番長いプログラムでも1500行ぐらい(C言語で多分数ヶ月かけて書いた)なのに
1日でこんなに書いたの初めてだわ
めっちゃ面白い
やっぱCUIとGUIじゃ達成感とかが違いまくるな
0763デフォルトの名無しさん2007/09/17(月) 20:18:25
最高に頭の悪いレスを見た
0764デフォルトの名無しさん2007/09/17(月) 21:30:42
バイナリ見た感じリソースエディタでインポートした時点でビットマップ変換されている予感。
0765デフォルトの名無しさん2007/09/17(月) 23:19:28
ソリューションエクスプローラというか
プロパティウィンドウというか
とにかく、そこのフォントを変えたいんですけど
設定の表示欄的にはあれは何て名前なんですか?
(´・ω・`)
0766デフォルトの名無しさん2007/09/17(月) 23:29:32
ワークスペース?
0767デフォルトの名無しさん2007/09/18(火) 00:18:39
項目に無ーい‥
(´・ω・`)
0768デフォルトの名無しさん2007/09/18(火) 00:32:31
2003だけど、「ダイアログおよびツールウィンドウ」。
しかしこれ色んなところが変わるな。
0769デフォルトの名無しさん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として使いたいです
0770デフォルトの名無しさん2007/09/18(火) 08:40:52
>>769
OnCreateで作成する
OnSizeでサイズを再調整するのを忘れないように
OnCreateの前にもOnSizeが呼ばれるので注意
0771デフォルトの名無しさん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++ってホントに難しいですね
けど、ネイティブへの憧れがあるからがんばりますのでご助言願います。
0772デフォルトの名無しさん2007/09/19(水) 00:27:40
猫でも分かるSDK18章のソースをコピペしてリソースも画面を参考に作ったのですが
コンボボックスがドロップダウンしません。あれはコードを書かなくてもドロップダウンする
のでしょうか。

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

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

初歩的な質問かもしれませんが、よろしくお願いします。
0778デフォルトの名無しさん2007/09/19(水) 17:21:20
リソースビューで?
rcファイル自体を別の形式(テキストとか)で開いている、
ファイルの記述にエラーがある、とかかなあ?
0779デフォルトの名無しさん2007/09/23(日) 07:30:19
時計の文字盤(まだ時間の目盛りだけ)をウインドウに書こうとしているのですが
うまくいきません。WM_PAINTが来たらDrawTicks(hWnd, 50)を呼び出してますが
0°の位置(3時)の目盛りしか表示されません。ソースは次に示します。
0780デフォルトの名無しさん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;
}
0781デフォルトの名無しさん2007/09/23(日) 07:31:51
よろしくお願いします。
0782デフォルトの名無しさん2007/09/23(日) 08:26:07
BeginPaint EndPaintしたら前に書いたやつ消えるような気がするけど
0783デフォルトの名無しさん2007/09/23(日) 08:29:39
>>780
DegToRad()は?
0784デフォルトの名無しさん2007/09/23(日) 09:04:47
>>779
BeginPaintは更新領域をクリッピング領域に変換、
EndPaintは更新領域を全てクリアする。
よって、二回目以降のDrawTickは全てクリップされて実際には描画されない。

BeginPaintとEndPaintは、
本来WM_PAINTハンドラの最初と最後に一回ずつ呼び出して使う。
0785デフォルトの名無しさん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' : 定義されていない基本クラスが宣言されています。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>857
回答者だからではなく、キツい口調で言わないと分からない人が相手だから、キツい口調にしてる。
0859デフォルトの名無しさん2007/10/11(木) 17:33:23
> 回答者だからではなく、キツい口調で言わないと分からない人が相手だから、キツい口調にしてる。
0860↑2007/10/11(木) 17:34:11
なんだその口の利き方は。気をつけろ。
0861デフォルトの名無しさん2007/10/11(木) 17:48:25
甘えきった質問者にはビシーッと言ってやらにゃぁな。
0862デフォルトの名無しさん2007/10/11(木) 18:06:06
>そういう問題じゃぁない。
>VC++の超初心者はOKだが、
>質問の超初心者はNGなんだよ。
>
>そのDLLはwarezと関係ないのか?
>不正に入手したゲームをネット対戦するためのDLLじゃないか?
これは問題ないと思うが

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

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

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

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

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

そんくらい、わかれよ。
0880デフォルトの名無しさん2007/10/13(土) 00:13:21
mimeのboundary文字列を生成したいのですが
どうやって生成するのがお勧めでしょうか?
0881デフォルトの名無しさん2007/10/13(土) 01:52:25
VC++でGUIの作り方がさっぱりわかりません。
テキストエディタを作る場合はやはりCEditViewを選択するんでしょうか?
0882デフォルトの名無しさん2007/10/13(土) 09:52:48
>>881
しっかりしたものを作りたいならCEditでは使い物にならない。
試しに「こんなもんか」程度のものを作りたいならご自由に。
0883デフォルトの名無しさん2007/10/13(土) 10:01:12
エディットコントロールすら使えないやつは問題外
0884デフォルトの名無しさん2007/10/13(土) 11:11:10
CComPtr<IWebBrowser2>
でエラーが出ます。何かインクルードしないといけないようですが
何をインクルードすればよいでしょうか?
0885デフォルトの名無しさん2007/10/13(土) 11:15:10
MSDNに書いてあるし
直接インクルードファイル検索してもいいし
ネットで検索してもいいし
0886デフォルトの名無しさん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
0887デフォルトの名無しさん2007/10/13(土) 11:49:45
>>885, 886
早速ありがとうございます。できました。

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

だいたい、部分的に要点だけ書いたブログ記事を見て、
それで自分でプログラムが書けないのなら、前提知識が
なさすぎるってことだよ。いまは諦めな。
0889デフォルトの名無しさん2007/10/13(土) 12:22:58
>>887
あんたアフォですか?
どう実装すればって、そんなのはどういう動作を期待しているかわかるおまえしか
わからんだろ?
0890デフォルトの名無しさん2007/10/13(土) 13:27:38
>>888, 889
すみません。
頭を使うのは苦手でして・・・
0891デフォルトの名無しさん2007/10/13(土) 13:37:39
>>890
プログラミング無理
0892デフォルトの名無しさん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);

でも例外エラーっぽく落ちます。
なぜでしょう?
0893デフォルトの名無しさん2007/10/13(土) 14:10:57
>>888嫁
0894デフォルトの名無しさん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
0895デフォルトの名無しさん2007/10/13(土) 18:10:56
トークンのはじめに _ があったり、トークンの中に __ があるとC++の規格上アウトらしいんですが、
なんでコンパイルエラーにならないんだよおおおおおおおおおお
0896デフォルトの名無しさん2007/10/13(土) 18:23:04
ユーザのコードかそうでないか判断するの('A`)マンドクセ
0897デフォルトの名無しさん2007/10/13(土) 18:33:15
>>895
予約されてるってだけだからな。
0898デフォルトの名無しさん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`)
誰かやり方教えてくだしあ
0899デフォルトの名無しさん2007/10/13(土) 22:40:32
std::stringはStringに変更、
ポインタ・関数ポインタはIntPtrで渡せばいいんじゃね?
0900デフォルトの名無しさん2007/10/13(土) 22:54:20
MFCでViewクラスのメンバ変数・関数をつかうにはどうすればいいんですか?
Viewのヘッダーをインクルードするとコンパイルエラーでるんですが
0901デフォルトの名無しさん2007/10/13(土) 23:43:23
エラー内容わかんね。
0902デフォルトの名無しさん2007/10/14(日) 00:11:39
MFC(VC8)で、IMEを一時的にOFFにしたいのですが、どうすべきでしょうか?
エディットボックスで入力制限が行いたくて、困っています。
全角入力を不可にしたいんです。ImmDisableIMEを使うと無効にはなりますが、
このエディットボックスでは無効、このエディットボックスでは有効、という
ようにしたいんです。
0903デフォルトの名無しさん2007/10/14(日) 00:17:27
>>902
EditBox毎にImmDisableIMEを使えばいいじゃん。
0904デフォルトの名無しさん2007/10/14(日) 01:34:00
>>899
Stringでいけたぜ(`・ω・´)サンキュー
IntPtrはまだ試してないけどググったら文献出てきたからいける予感
0905デフォルトの名無しさん2007/10/14(日) 01:38:36
いまのVC++って、そんな芸当ができるんだ。

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

その他のポインタも、C#でいうref/out引数で十分なことが多い気がする。
配列なら当然C++/CLIではarrayね。
0907デフォルトの名無しさん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]

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

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

つまり、あなたがgetlineを選択したこと、もしくは、使い方が悪い。
0911デフォルトの名無しさん2007/10/14(日) 13:47:24
MFCを使ってメール送受信させたい場合、どういうクラスを使って実現するわけですか?
0912デフォルトの名無しさん2007/10/14(日) 13:53:34
ソケットw
0913デフォルトの名無しさん2007/10/14(日) 13:55:39
3年B組クラス
0914デフォルトの名無しさん2007/10/14(日) 14:39:37
>>911
MFCしか使えないという縛りがないのであれば、
別途、メール送受信のライブラリを使えばいい。
0915デフォルトの名無しさん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を同時に使えるようにするにはどうすればいいのでしょうか?
0916デフォルトの名無しさん2007/10/14(日) 15:58:50
>>915
よくわからんけどそれぞの関数使う直前で設定しちゃ駄目なの?w
(ホントによく知らんw)
0917デフォルトの名無しさん2007/10/14(日) 16:04:04
>>915
C++の入門書に、
Cの入出力ライブラリと、C++のストリームライブラリは、混ぜて使ってはいけない
というようなことが書いてあるから、試したこともないなぁ。
0918デフォルトの名無しさん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 ;
}

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

C++DLL側のChoge_dllにSTLを使ったメンバ変数を使ったら「マネージドじゃありません」って言われた('A`)
>>898の状況下でSTL使いまくる方法を誰か教えて下さい('A`)
0935デフォルトの名無しさん2007/10/14(日) 18:42:34
>>934
VS2005買え
09369262007/10/14(日) 18:52:25
えらそうなばかで申し訳ありません。
ほんともうみなさん、ご迷惑をおかけしてすみません。
甚だしい奴でごめんなさい。
>>931
猫は見ました。というか、猫しか詳しそうなところがなくて。
他のところはどうなんだろうと、見てみたかったんです。
「え、つーかこういうやり方が普通なのか?なんか他に
便利君とか揃ってないのか?つーか他のやり方は??」
とか、そんな感じだったんです。
0937デフォルトの名無しさん2007/10/14(日) 18:54:48
最初から楽したかったらVB
VCは楽しないできっちり作りこむためにある
0938デフォルトの名無しさん2007/10/14(日) 18:57:59
あとのせさくさくですか?
0939デフォルトの名無しさん2007/10/15(月) 00:29:35
ドットネットを一度経験すると、C+WIN32APIで1からシコシコ作るのがアホ臭くなるな
画面周りはポトペタでサクッと作るのがいい
0940デフォルトの名無しさん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
0941デフォルトの名無しさん2007/10/15(月) 01:36:32
>>939
もさっりが酷いもっさりがもっさりが我慢ならないもっさりが
できるだけ起動したくねーし
0942デフォルトの名無しさん2007/10/15(月) 07:58:33
↓「お前のPCがしょぼい」から煽りあい勃発
0943デフォルトの名無しさん2007/10/15(月) 08:18:54
今時.NETって・・・
0944デフォルトの名無しさん2007/10/15(月) 11:27:49
VCに関連付けられてる(?)コンパイラって
ほかのものに変ることってできるんでしょうか
VS2005を使っていて 使いたいのコンパイラはDMCです
0945デフォルトの名無しさん2007/10/15(月) 13:17:13
>>944
自分のやりたいことくらい的確に説明しようぜ。
0946デフォルトの名無しさん2007/10/16(火) 21:23:17
セックル
0947デフォルトの名無しさん2007/10/16(火) 21:35:56
俺も
0948デフォルトの名無しさん2007/10/17(水) 09:42:06
私も
0949デフォルトの名無しさん2007/10/17(水) 13:49:21
あちきも
0950デフォルトの名無しさん2007/10/17(水) 16:56:38
俺童貞だけどお前らセクロスに夢見すぎ
0951デフォルトの名無しさん2007/10/17(水) 22:10:49
俺セクロスだけどお前ら童貞に夢中すぎ
0952デフォルトの名無しさん2007/10/19(金) 23:33:26
|ω^) <408とか410とか
0953デフォルトの名無しさん2007/10/24(水) 16:34:24
6.0で、MFCのSDIアプリを作ってたのですが、タイトルバーが「無題-(アプリ名)」となっていたのが、知らないうちに「無題-」だけになってしまってました。
どこを変更すれば直りますかね?
0954デフォルトの名無しさん2007/10/27(土) 09:18:15
スイカバー
0955デフォルトの名無しさん2007/10/28(日) 01:04:10
超初心者です、ちょっと質問させてください。

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

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

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

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

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

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

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

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

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

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

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

0992デフォルトの名無しさん2007/11/04(日) 23:45:32
>>991
たぶんこれ。
http://technet2.microsoft.com/WindowsServer/ja/library/cd0e7ee9-05f0-4504-8caa-acc95c8c964b1041.mspx?mfr=true
0993デフォルトの名無しさん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();
}
};
0994デフォルトの名無しさん2007/11/05(月) 01:21:20
うん、アンマネージクラスの非静的メンバはデリゲートに出来ない。
0995デフォルトの名無しさん2007/11/05(月) 01:26:24
>>994
マネージドクラスだと動くので、もしかしたらと思ったら・・・。


こういう時って皆さんどうしてるんでしょうね?
Threadクラス以外ということになるんだとは思うんですが
0996デフォルトの名無しさん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();
}
};
0997デフォルトの名無しさん2007/11/05(月) 12:59:49
>>996
ぅ・・・なんかすごいことになってますね・・・。

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

皆様、ありがとうございました。
0998デフォルトの名無しさん 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ではどうしたらよいか教えていただけないでしょうか。
お願いします。
0999デフォルトの名無しさん2007/11/05(月) 16:33:03
本人に聞いたらどうだい?
10009982007/11/05(月) 16:42:23
本人さんのページにメアドとか掲示板とかがないのでわからないです。
初心者にVisualC++を教えるスレで聞いてみます。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。