くだすれ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:010004デフォルトの名無しさん
2007/06/13(水) 01:55:17大きさを変えるときにはウィンドウの左上が始点になっていますよね?
つまり、MoveWindow()だと左半分や上半分の表示はできても
右半分や下半分の表示はできないですよね?
この、右や下の半分だけを表示させるいい方法はないものでしょうか?
0005デフォルトの名無しさん
2007/06/13(水) 02:03:48裏画面とか使って画像ロードして、一部切り出して描画。
0006デフォルトの名無しさん
2007/06/13(水) 02:08:100007デフォルトの名無しさん
2007/06/13(水) 02:23:07ボタンとかその辺の話?
空のダイアログに今のダイアログ貼り付けて、
子ダイアログの位置をマイナスにしてみたら?
0008デフォルトの名無しさん
2007/06/13(水) 12:25:11のようなエラーが100個くらいでるのですが、どうしたら直りますか?
お願いします
0009デフォルトの名無しさん
2007/06/13(水) 13:13:16原因を一応言っておくと、ライブラリーファイルを書き換えたのが原因ですか?
この間違えを防ぐために間違って書き換えないように書込み禁止にするほう方があれば教えてください
0010デフォルトの名無しさん
2007/06/13(水) 13:16:06テンプレートはWindowsフォームアプリケーション
を使っています。
フォームにピクチャーボックス1つとボタンを2つ配置しました。
1つ目のボタン(開始)をクリックすると、
ピクチャーボックスにグラフのようなものを書くようなプログラム
をつくりました。
ここまでは上手く動作しています。
次に、2つめのボタン(停止)で、
グラフの描写(For文で繰り返しているため時間がかかります)
を途中で一時停止させたいのですが、
グラフをすべて書き終えるまで、ボタンが押せる状態になりません。
どのような方法を使えばいいのか教えてください。
よろしくお願いします。
分かりにくくてすみません。
0011デフォルトの名無しさん
2007/06/13(水) 15:05:45どっかでスッドレとか言われてなかったっけ?
0012デフォルトの名無しさん
2007/06/13(水) 17:35:26Thread
0013デフォルトの名無しさん
2007/06/13(水) 17:53:45エクスプローラからファイルシステムの読み取り専用属性でも付けておけば?
0014デフォルトの名無しさん
2007/06/13(水) 23:29:44質問何ですがコントロールの配列化ってどうやるのでしょうか?
例えばボタンが2つあるとして
button1 と button2 を
button[0]とbutton[1]としたいのですが
よろしくお願いします。
0015デフォルトの名無しさん
2007/06/14(木) 00:02:07ttp://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俺が試したらレベル1でも警告出たんだが
リソースは、rc.exeでrcファイルをresへコンパイルした後、
(後からexeファイルに埋め込むBCCと違って)objをリンクするときに渡す
001816
2007/06/14(木) 19:26:33ありがとうございます。
色々自分でやってみたのですが、こんなんになりました
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コマンドラインにこだわるならMakefile作って
nmake実行するのがいいけど、
とりあえずcl.exeにファイル全部指定してみ
それでできないやつだけ別に実行すればいいかな
0020デフォルトの名無しさん
2007/06/14(木) 20:21:27あ、あとコマンドは、、、帰宅してからまた書くわ
0021デフォルトの名無しさん
2007/06/14(木) 20:35:55リンカ (link.exe)は、環境変数LINKの値も入力として読み込む。
http://msdn2.microsoft.com/ja-jp/library/6y6t9esh(VS.80).aspx
同様に、コンパイラは環境変数CLの値を読み込むので、
/W4 /Wp64あたりを指定しておくのがいい
0022デフォルトの名無しさん
2007/06/14(木) 21:18:07rc app.rc → res ができる
link app.obj app.res user32.lib →exeができる
cl はリンクもできるから
rc app.rc
cl app.c app.res user32.lib
でもいいな
002310
2007/06/14(木) 21:36:23お返事が遅くなってしまい申し訳ございません。
スレッドを使う方法も検討したのですが、
初心者には敷居が高すぎて、挫折してしまいました。
でも、DoEventを使う方法で、希望通りの動作を得ることができました。
どうも、ありがとうございました。
0024デフォルトの名無しさん
2007/06/14(木) 21:44:50for文をやってるんですが、
空のコンソールプロジェクトでやってるんですが、
Studio.hがありません。><
どうすればいいですか。あ、自分で創れという破天荒な答えは間違いではないが却下しますよ。
0025デフォルトの名無しさん
2007/06/14(木) 21:47:25無いのはどうやって確かめたの?
無いはず無いんだけどな
002624
2007/06/14(木) 22:03:34ソリューションエクスプローラーでは、
+ソースファイル
+ヘッダーファイル
+リソースファイル
の3つのフォルダがあります。
ヘッダーファイルのフォルダには、Studio.h が無かったからです。
Studio.hだけでなく、何もないからです。
0027デフォルトの名無しさん
2007/06/14(木) 22:04:41#include <stdio.h>
0028デフォルトの名無しさん
2007/06/14(木) 22:08:55たぶんここにあるだろうけど
ソリューションエクスプローラーのヘッダは
自分が作ったファイルを置くとこだから、stdio.hはここには出ないよ
002924
2007/06/15(金) 08:35:55ユーザーが作ったものだけが
ソリューションエクスプローラーのヘッダファイルフォルダに
表示されるのですね。
003016
2007/06/15(金) 09:09:51ありがとうございます!
「Visual Studio 2005 コマンド プロンプト」
からやってるのに %LINK% に何も入ってないのは仕様なのでしょうか…
どこのコマンドプロンプトからも利用出来る様にしたいのですが、
どの環境変数を設定すれば良いみたいなのを解説したサイトはないんでしょうか…
0031デフォルトの名無しさん
2007/06/15(金) 11:59:05必ず 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その環境変数設定バッチを作って切り替えるのがいいかもな
複数台PC使ってたり、人とやり取りするとき困るけど。
makefileをキチっと書くかIDE使うのがいいのでは
0035デフォルトの名無しさん
2007/06/17(日) 19:18:52CBitmapクラスのメンバ変数にLoadBitmapしてリソースからビットマップを読み込んでいます。
この読み込んだビットマップのピクセルサイズを変更したいのですが
なにかいい方法はありますか?
よろしくお願いします。
0036デフォルトの名無しさん
2007/06/17(日) 20:19:190037デフォルトの名無しさん
2007/06/21(木) 09:56:18<summary> や <remarks> タグによってドキュメントをコードの中に
明示的に埋め込むことができます。
このような規格(?)は Visual C++ では定められていないのでしょうか?
0038デフォルトの名無しさん
2007/06/24(日) 13:51:02abc.lib がデバッグ版のランタイムとリリース版のランタイムの
いずれともリンク可能にするような方法はあるのでしょうか?
それとも abc-debug.lib と abc-release.lib のように別々に
用意する必要があるのでしょうか?
たとえば abc.lib をリリース版としてビルドしてしまうと、
他のプログラム P から利用するに当たって、P を
デバッグ版としてビルドできません。abc.lib 内の
いくつかのシンボルは libcmt.lib を要求し、
P 内のいくつかのシンボルは libcmtd.lib を要求します。
0039デフォルトの名無しさん
2007/06/24(日) 15:43:540040デフォルトの名無しさん
2007/06/24(日) 16:22:48/Zl
msdn2.microsoft.com/ja-jp/library/f1tbxcxh(VS.80).aspx
0041デフォルトの名無しさん
2007/06/24(日) 16:41:54これって、新規作成したプロジェクトのみしかビルド出来ないのでしょうか?
VC++6では、組んだプログラム単体をD&Dで、F7ビルドという使い方をしてたため
これが出来なくなったとなるとかなり痛いorz
0042デフォルトの名無しさん
2007/06/24(日) 17:00:07いみがわかんねぇ〜
F7 はソリューション全体のビルドだよね。
関係ないと思うけど、 F5 でビルド&実行されるのは
スタートアッププロジェクトに指定されているプロジェクト。
0043デフォルトの名無しさん
2007/06/24(日) 17:17:21すみません、分かりづらいですね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それでちゃんと開放はされている。
メモリリークはしていない。
ただ、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:59Macで簡単にフォーム作成したいんですけど、無理かなあ
0050デフォルトの名無しさん
2007/06/25(月) 12:33:590051デフォルトの名無しさん
2007/06/25(月) 13:49:52CLR で実行されるものならなんでも .NET 言語って呼べるんだろうけど、
Managed C++ はさすがにもう死滅しているんじゃないかな?
授業でやるというなら C++/CLI もしくは C# じゃないかなぁ。
0052デフォルトの名無しさん
2007/06/25(月) 21:52:18c++って、奥が深いんですね。
おっしゃるように実際にデストラクタの存在するクラスの配列をnewして、
deleteしたら、ちゃんとエラーが出ました。
疑問が解決し、スッキリしました。
本当にありがとうございました。
0053デフォルトの名無しさん
2007/06/26(火) 10:36:110054デフォルトの名無しさん
2007/06/26(火) 11:09:010055デフォルトの名無しさん
2007/06/26(火) 11:49:220056デフォルトの名無しさん
2007/07/05(木) 13:37:10リール表示の制御(上から下へ流れる感じ。)部分が思いつきません。
どなたか教えていただけませんでしょうか?
0057デフォルトの名無しさん
2007/07/05(木) 13:49:380058デフォルトの名無しさん
2007/07/05(木) 13:53:18目を合わせるんなら落ち物ゲームみたいに実際に動かす
0059デフォルトの名無しさん
2007/07/05(木) 14:35:26◇ <-- y = 0
★ <-- y = 100
☆ <-- y = 200
■ <-- y = 300
◇
006056
2007/07/05(木) 14:40:010061デフォルトの名無しさん
2007/07/05(木) 14:43:32006256
2007/07/05(木) 15:06:40スクロールさせるにはどうしたら良いでしょうか?
サンプルコードがあると助かるのですが・・・。
0063デフォルトの名無しさん
2007/07/05(木) 18:37:25お前人の言ってること聞いてないのか?
0064デフォルトの名無しさん
2007/07/05(木) 19:31:32自分がどこまで出来るのか書いたほうがいいぞ
0065デフォルトの名無しさん
2007/07/12(木) 23:17:57VC++を使って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:310067デフォルトの名無しさん
2007/07/21(土) 14:11:44で、10バイト(以上)確保されている事をプログラム内で確認できるAPIってありますか?
WinXP pro
VC++ Express Edition
です。
0068デフォルトの名無しさん
2007/07/21(土) 15:44:29確保されている領域知りたいならstd::vector<char>でも使えば?
0069デフォルトの名無しさん
2007/07/21(土) 18:20:11>char *ptr = char[10];
>char *ptr = char[10];
???
0070デフォルトの名無しさん
2007/07/22(日) 03:02:590071デフォルトの名無しさん
2007/07/22(日) 03:15:53それってプログラム的にわかるっけ?
わかったら不便だからわかりやすいように隠蔽されるんじゃね?
マジで確保される領域は4バイトごととかあるんだっけ?
つまり10なら12確保される?とか?w
よくわからないのにテキトウなこと言う俺マジ外道w
0072デフォルトの名無しさん
2007/07/22(日) 04:15:10後からサイズを取得できるか、という質問なのか?
non-POD 型なら配列の直前に配列の要素数を保存する処理系も多いが、
POD 型の char でもそうする処理系は知らないし、
そもそもそういう手段なら vector<char> 使え。
0073デフォルトの名無しさん
2007/07/22(日) 04:28:270074デフォルトの名無しさん
2007/07/22(日) 05:48:37ttp://sund1.sakura.ne.jp/uploader/source/up8618.txt
0075デフォルトの名無しさん
2007/07/22(日) 06:02:06十分使い物になるとおもうけどそんなことするなら結局ただのスマートポインタベクターになるだけか…
0076デフォルトの名無しさん
2007/07/22(日) 09:58:05これでは駄目?
if(ptr != NULL)
{
// 10byte確保されている
}
0077デフォルトの名無しさん
2007/07/22(日) 10:04:50メモリ確保できるか、さもなくば例外を投げるのだから意味がない。
もちろんVC6なんかは別だけど。
0078デフォルトの名無しさん
2007/07/22(日) 18:50:05開発機では問題ないのですが、それ以外の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:370080デフォルトの名無しさん
2007/07/23(月) 00:12:51VC++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{
return x * y;
}
int main(){
int (*myf)(int, int);
myf = func; // この行でエラー。関数呼び出しには引数がありません、という
// エラーになる
return 0;
}
0082デフォルトの名無しさん
2007/07/23(月) 02:03:220083デフォルトの名無しさん
2007/07/23(月) 03:10:38>81はプロトタイプ宣言を(定義そのものによって)省略できるケース。
008584
2007/07/23(月) 09:18:140086デフォルトの名無しさん
2007/07/24(火) 10:55:56買おうか迷っています。
0087デフォルトの名無しさん
2007/07/24(火) 10:59:15試用版の制限が大きすぎること。
他にもっといいものが無料で手に入るようになったこと。
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:300091デフォルトの名無しさん
2007/07/24(火) 13:08:27供養の意味でも思い出してやってはくれませんか。
0092デフォルトの名無しさん
2007/07/24(火) 13:17:130093デフォルトの名無しさん
2007/07/24(火) 13:23:17009488
2007/07/24(火) 13:25:30ってことで、私ゃ>92じゃないよ。
尤も、TurboCも使ってたけど。
#そっちはそっちで、やっぱりバグ報告してたけど。
0095デフォルトの名無しさん
2007/07/24(火) 13:28:32でも、CodeView使ったらやめられんかった
その流れでVC++に至る
0096デフォルトの名無しさん
2007/07/24(火) 21:21:15必要なDLLが足らないんじゃないの?regsvr32で登録できた?
0097名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:32:44アレは初心者にとっつきやすくて勉強にもなった。
0098デフォルトの名無しさん
2007/08/04(土) 18:04:45VC++って、一つのファイルをコンパイルするごとに、
いちいちプロジェクトつくらないといけないんですか?
例えば、Cygwinだと、cファイルが一つのフォルダにいくつあっても、
個別にコンパイルできるけど、
VC++の場合は、一つだけcファイルをコンパイルするのに、
一つのフォルダをプロジェクトで用意する必要があるんですか?
C言語の学習中なので、そんなに長いプログラムは書かないかつ沢山ファイルをつくるんですが……。
0099デフォルトの名無しさん
2007/08/04(土) 18:19:32cygwinでもmakeコマンドだけで済まそうと思ったら個別にmakefileが要る。
VSでもプロジェクトを省略したいのなら、同じようにコマンドラインから直接コンパイラを起動すればいい。
0100デフォルトの名無しさん
2007/08/04(土) 18:38:27メニュー→ビルド→バッチビルド
からも一気にできる
前の御馬鹿な担当者がモジュールを全部別プロジェクトにしてやがったときに重宝した
0101デフォルトの名無しさん
2007/08/04(土) 18:53:360102デフォルトの名無しさん
2007/08/04(土) 20:00:46要らないソースはプロジェクトから外す、
って感じでやればいいんじゃね?
ソース単位でコンパイルしない設定もあるけど面倒だし。
010398
2007/08/04(土) 21:11:21>>102の方法でやってみたいと思います。
もうひとつだけ質問を……。
エディタのように、TABや空白したことを表示させるのは、どうすればいいんでしょうか?
設定をいじろうとしましたが、みつかりませんでしたorz
0104デフォルトの名無しさん
2007/08/04(土) 21:24:120105デフォルトの名無しさん
2007/08/04(土) 21:58:10この機能、MSDNだとメモでしか説明されていないように見える。
まあ、メニュー色々弄ってれば、すぐに見つかるのだろうけど。
0106デフォルトの名無しさん
2007/08/04(土) 23:23:42MSDNじゃないんだけどね
0107デフォルトの名無しさん
2007/08/05(日) 00:17:14ありがとうございました。
編集メニューにあったとは……。
0108デフォルトの名無しさん
2007/08/05(日) 01:46:40と俺メモw
0109デフォルトの名無しさん
2007/08/05(日) 14:46:15Windowsのシャットダウンに数分かかるようになりました。
いまは2002はアンインストールして2003をインストールしていますが、
症状は変らずです。
以前に、
デバッグのための機能が云々で設定がどうこう
というような話を聞いたような気がするのですが、思い出せません。
VS.NETの設定の問題なのでしょうか。
0110デフォルトの名無しさん
2007/08/05(日) 14:48:170111デフォルトの名無しさん
2007/08/05(日) 15:28:01これ入れてみろ
http://www.microsoft.com/downloads/details.aspx?FamilyId=1B286E6D-8912-4E18-B570-42470E2F3582&displaylang=en
0112109
2007/08/05(日) 19:45:25設定のどこが問題なのですか。
>>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特にエラーも警告もでてないのに……。
0114デフォルトの名無しさん
2007/08/07(火) 23:51:000115デフォルトの名無しさん
2007/08/07(火) 23:54:33いえ、違います。
全くでない時と、一瞬だけパッとでて、消えるときもある。
ブレークポイント設定しても、なぜかでないorz
でるときは、普通に出る。
0116デフォルトの名無しさん
2007/08/07(火) 23:59:450117デフォルトの名無しさん
2007/08/08(水) 00:01:590118デフォルトの名無しさん
2007/08/08(水) 00:09:50試しに、ちゃんとウィンドウがでて、問題のなかったプログラムをデバッグしてみたら、
でなくなってしまってた。
設定なにもいじってないのに何故だorz
Escキー押してるとかそういうオチじゃないんだぜ……。
0119デフォルトの名無しさん
2007/08/08(水) 00:14:06VC6++ で新規プロジェクトを複数作成したいのですが、
msdev.comのコマンドやVSのマクロなどで以下を自動化は可能でしょうか?
プロジェクトの新規作成 → ビルド設定
お願いします。。。
0120デフォルトの名無しさん
2007/08/08(水) 00:19:29そしてまたでなくなった。
なんか出たり、出なくなったりする……PC自体は安定してるんだが。
このファジーな不具合……MEを使ってたときを思いだす。
0121デフォルトの名無しさん
2007/08/08(水) 00:28:22ソースは晒せないの?
0122デフォルトの名無しさん
2007/08/08(水) 00:37:26ほい。番兵法の勉強してたんだぜ。
http://www.vipper.net/vip299920.c
0123デフォルトの名無しさん
2007/08/08(水) 00:40:54http://www.vipper.net/vip299926.c
0124デフォルトの名無しさん
2007/08/08(水) 01:01:11そして、コマンドプロント消しても大丈夫だった。
�d。
0125デフォルトの名無しさん
2007/08/09(木) 00:49:32自己解決しました。スレ汚し失礼しましたー(^^;;
0126デフォルトの名無しさん
2007/08/10(金) 01:36:28のプリントスクリーンボタンを作りたいのですが
何かいい方法ってありますか?やさしく教えてください。
0127デフォルトの名無しさん
2007/08/10(金) 08:19:41ボタンをクリックした際にボタンのキャプションを書き換えたいのですが、
その際に&を含む文字列を表示させたい場合は渡す文字列を
&&と表記するしかないのでしょうか?
SS_NOPREFIXのような指定はできないのでしょうか?
0128デフォルトの名無しさん
2007/08/10(金) 08:41:05http://www.codeproject.com/cpp/sendkeys_cpp_Article.asp
これでAlt+PrtScを再現すればアクティブウィンドウのプリントスクリーンをクリップボードにコピーする
あとはクリップボードから読み出してファイルに保存するなり何なりすればいい
0129デフォルトの名無しさん
2007/08/10(金) 09:07:51何が問題なのか明確に書いてほしい。
特定のウィンドウの見た目のビットマップを取得したいということであれば、
そのウィンドウのデバイス・コンテキストからBitBltなどでコピーすればいいと思う。
0130デフォルトの名無しさん
2007/08/14(火) 09:21:03スレッドも動かなくなるけど、こういうスレッドの非正規終了(?)が直接の原因でメモリリーク起こしたりとかしない?
0131デフォルトの名無しさん
2007/08/14(火) 10:26:30プロセス終了時にはすべてのハンドルは自動的に解放されるので、
メモリリークを起こしたとしてもたいした問題になることはないと思う。
もちろん、スレッド内でファイルを書き込みオープンのままフラッシュしてなかったり、
通信してたりすれば話は別なので、基本は後処理をしっかりやるべき。
0132デフォルトの名無しさん
2007/08/14(火) 10:39:58そこにバグがある可能性もあるので、
リソースの後片づけは頑張ってすべし。
プロセスのメインスレッドが終了する前に、
他のスレッドに終了しろと指示を出して、
他のスレッドが終わるのを待つとかしてさ。
COMのアウトプロセスサーバを使っていて、
循環参照になっている場合には、
どうもヤバそうな気がするよ。
0133デフォルトの名無しさん
2007/08/14(火) 11:20:00#それはそれで別の問題が発生するわけだが。
0134デフォルトの名無しさん
2007/08/14(火) 15:07:010135デフォルトの名無しさん
2007/08/16(木) 22:03:36非同期よりも同期のほうが処理が軽いがメモリリークを伴う
という解釈でいいのでしょうか。
0136デフォルトの名無しさん
2007/08/16(木) 22:29:46余分に例外を処理をしている方がその分遅くなる。
逆に例外を処理しないほうは例外が処理されないわけなので、たぶん落ちる。
リークってのは単なる副作用の1つでは。
Microsoftが何故あえて同期/非同期って言い方をしてるかよく分からないけど、
少なくともマルチスレッドとかそういうのとは全然関係ないので、
この言葉に変にとらわれないほうがいいと思う。
0137デフォルトの名無しさん
2007/08/16(木) 22:47:37非同期例外はそれ以外でも発生しうる例外、ってことらしい。
アクセス違反とかは、もろにこの部類だな。
0138デフォルトの名無しさん
2007/08/16(木) 22:50:47だとすると構造化例外は確かにすべて非同期ってことで納得。
0139135
2007/08/16(木) 23:02:19試しに
*(int*)NULL = 0 ;
したとき、
/EHsではcatchできず、
/EHaではcatchできました。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclang/html/_core_Exception_handling.3a_.default_synchronous_exception_model.asp
には、
> Catching hardware exceptions is still possible with the synchronous model.
と書かれていたんだけどなぁ・・・
メモリリークを伴うと思ったのは、
> Catching hardware exceptions is still possible with the synchronous model.
> However, some of the unwindable objects in the function where the exception occurs may not get unwound, if the compiler judges their lifetime tracking mechanics to be unnecessary for the synchronous model.
と書かれていたからなんですけど、catchできないならメモリリークどころではないですよね。
0140デフォルトの名無しさん
2007/08/16(木) 23:31:240141135
2007/08/17(金) 00:01:50すみませんVC7.1を使っていることを書くべきでした。
/EHsの場合
最適化を切っている場合には例外のためのコードが生成されるのでcatchできる。
最適化している場合には例外のためのコードが生成されないのでcatchできない。
む〜。
0142デフォルトの名無しさん
2007/08/17(金) 00:31:30この話だな
0143デフォルトの名無しさん
2007/08/17(金) 15:20:23素晴らしい。
> According to the C++ standard, both programs produce undefined behaviour.
C++標準化委員会の連中のセンスって、よくわからんなぁ。
ハードウェアの仕様には口出ししないという綺麗事なのか、
議論がまとまらないので先送りしているのか、
わからないけどさ。
0144デフォルトの名無しさん
2007/08/17(金) 15:29:23IDEの設定の選択肢には/EHscの有無しかない。
/EHaを手で設定してやればいいというが、
選択肢に/EHaも用意してほしかった。
0145デフォルトの名無しさん
2007/08/17(金) 15:38:15よって、メモリアクセス違反が発生するのは明らかにバグであり、バグのあるプログラムを騙し騙し動かすべきではない。
ということなんだろうなぁ・・・
0146デフォルトの名無しさん
2007/08/17(金) 22:44:56どういうわけだか、/EHscをデフォルトにするマイクロソフトってステキ。
0147デフォルトの名無しさん
2007/08/18(土) 00:47:23さっさと自爆しろとか思うのは俺だけ?
0148デフォルトの名無しさん
2007/08/18(土) 01:22:230149デフォルトの名無しさん
2007/08/18(土) 02:33:25Libとかプロジェクト同士でコンパイラオプションが一致してないとエラーでるっしょ?w
これ知らんでLibだけひょいって渡されるとすげー困るよね
外観でデバッグ情報の有無とかごちゃごちゃしたの一致させるのすげームズイしね
0150デフォルトの名無しさん
2007/08/18(土) 05:05:25::
ってなんて読むの?
0151デフォルトの名無しさん
2007/08/18(土) 05:09:120152デフォルトの名無しさん
2007/08/18(土) 05:11:590153デフォルトの名無しさん
2007/08/18(土) 05:26:43守備範囲を広げるため使える言語を増やしたいです。
Java
C#
C++/CLI
VB
次にやるとしたらどれがいいですかね?
0154デフォルトの名無しさん
2007/08/18(土) 11:42:13>C++/CLI
でなければどれでもいいよ。
0155デフォルトの名無しさん
2007/08/18(土) 12:12:080156デフォルトの名無しさん
2007/08/18(土) 16:49:410157デフォルトの名無しさん
2007/08/18(土) 17:09:38アニメーション作ってるんだけど、各フレームで色を変えるときに一々DeleteしてからまたCreateするの?
あとageておく。
0158デフォルトの名無しさん
2007/08/18(土) 17:18:23単色ブラシなら、GetStockObject(DC_BRUSH) と
SetDCBrushColor の組み合わせでできる
0159デフォルトの名無しさん
2007/08/19(日) 03:27:27ちなみに今はMFCは多少はできます。
自分的には肌が合わない気がします。
WIN32APIそのままの方がずっとわかりやすいです。
ATLはまったくやったことないです。
0160デフォルトの名無しさん
2007/08/19(日) 03:39:43MFCとATLの比較なら、ATLがまし。
今からやる価値があるかどうかは人による。
ネイティブC++の世界でもう少し頑張るつもりならATL覚えてみても
損はしないと思う。
0161デフォルトの名無しさん
2007/08/19(日) 09:29:360162デフォルトの名無しさん
2007/08/19(日) 10:57:320163デフォルトの名無しさん
2007/08/19(日) 11:15:24WordやExelみたいにブツが1つじゃない上に
初回閉じたらどこに保存したかわからなくなるからなw
ちゃんとプロジェクト作成時にフォルダのパスを確認しておいて
フォルダまるごとセットで扱う必要があるぜ
0165デフォルトの名無しさん
2007/08/19(日) 12:36:12かつてそう聞いたのですが、使えるところまで進化したのですか。
WTLはどーなったんですか?
wxWidgetsはどーですか。
0166デフォルトの名無しさん
2007/08/19(日) 12:46:06遅くなったけど、ありがとう。
0167デフォルトの名無しさん
2007/08/19(日) 17:55:45ATL/WTL Part5
http://pc11.2ch.net/test/read.cgi/tech/1155951708/
つい最近、数年ぶりのWTL8.0が出た。
Vistaで追加された機能にも対応し始めていて、割と面白そうだ。
0168デフォルトの名無しさん
2007/08/19(日) 21:01:020169デフォルトの名無しさん
2007/08/19(日) 21:04:350170デフォルトの名無しさん
2007/08/19(日) 21:06:40理解できない脳味噌の奴を除いて
0171デフォルトの名無しさん
2007/08/19(日) 21:18:17お勧めのWTL、WTLでございます。
0172デフォルトの名無しさん
2007/08/19(日) 21:23:47まぁ使える奴が増えることはWTL使ってる俺としてはうれしいけどね
MFCのソースを全部読むよりは簡単だし
テンプレートの使い方も覚えるし
でも、ATLを使って製品になるようなActiveXコントロールを作ってるかと
問われるともう3年くらい作ってないのも事実
俺自身は、今でも簡単なツール作るときにお世話になってるが
0173デフォルトの名無しさん
2007/08/20(月) 08:50:560174デフォルトの名無しさん
2007/08/20(月) 09:52:46WinMainはマルチバイト(ANSI)専用、wWinMainはUNICODE専用。
_tWinMainにしておけばコンパイル時のオプションに従って、いずれかを適切に選択してくれる。
0175デフォルトの名無しさん
2007/08/20(月) 13:34:48なるほど。でも新しい仕様っぽいから、古いVC++だと認識しなさそうですね。
0176デフォルトの名無しさん
2007/08/20(月) 13:43:590177デフォルトの名無しさん
2007/08/20(月) 15:50:23それでもなければ、自分で#defineすればいい。
でもさ、古いVCなんて相手にするだけ無駄だと思うけどなぁ。
既存のVC6で作られたソフトの保守なら仕方ないけれども、
新規に作るものをVC6で作るのは、どうかと。
VC6付属のSTLはバグが多数見つかっているし、
コンパイラの標準への準拠度は低いし。
0178デフォルトの名無しさん
2007/08/20(月) 17:21:26VC++6.0(IDE) + VC++Toolkit2003 のコンビネーションは
結構イケてる組み合わせと思う。
0179デフォルトの名無しさん
2007/08/20(月) 17:55:45どーせVC7.1のコンパイラは遅いので、VC6のIDEを使う意味は薄いのだが。
0180デフォルトの名無しさん
2007/08/20(月) 22:46:27そのプログラムはいくつかのモジュールからなり、それぞれEXEだったり
DLLだったりサービスだったりISAPIだったりします。
で、各モジュールまたがって処理を追いたいと思い、標準出力に出すコードとか
ファイルに出すコードとかを挟んで、そこを通ったことを確認しようとしても、
出力されていませんでした。
出力されてないのが、実行ファイルのパスか何か間違ってて通っていないだけなのか、
サービスとかISAPIとかいう特殊な実装が原因なのかがわからない状態です。
そこでお聞きしたいのですが、どんな実装だろうとこれを呼べばダイアログか何か出て、
通ったか通ってないかが間違いなくわかるものって無いでしょうか?
assert.hのassertかなぁと思って書いてもみたのですが、走らせてみてもうんともすんとも言わず
よくわからない状態です。
ラインデバッグもISAPIとかの場合どうすればいいのかよくわからず、とりあえず上記のような
ことをして、そこを通っているかどうかが知りたいです。
よろしくお願いします。
0181デフォルトの名無しさん
2007/08/20(月) 23:02:22口ぶりからして、お前さん、プロだね?
手に負えない仕事を請けた時点でアウト。
正直に自分のスキルでは無理だと言って断れ。
さもなくば辞表出して逃げ出すか。
その程度のスキルで、そういったものに手を出すと、大変なことになる。
0182デフォルトの名無しさん
2007/08/20(月) 23:08:25181に賛成
派遣だったら即逃げ、正社だったら上司に相談
個人だったらPG辞めるべき
一つ教えておいてやるが、ソースを引き継いでメンテできる奴は
長い経験と、広い知識と、才能が必要
0183デフォルトの名無しさん
2007/08/20(月) 23:23:04どーやってデバッグしてたの? と。
聞けない状況にあるなら、
他にも多数の問題が発生すると思われ。
0184デフォルトの名無しさん
2007/08/21(火) 00:19:11とりあえず、ごちゃごちゃになってるプロジェクトの整理からはじめるかな?
EXEやDLLがごっちゃになってるのも変な感じだし、そいつらも一緒に
デバッグトレースしなきゃいけないなら同じワークスペースに入れちゃえばいいし・・・
そういったことが出来ない、難しい環境であれば外部モジュールの呼び出し箇所を
限定、まとめるような作業をしたりすればいいのかな?
0185デフォルトの名無しさん
2007/08/21(火) 00:25:51十分に理解していない人間が、
コードをいじくり回すことが、
いかに危険なのか、
わかっていないな。
あんた、プロはプロでも、詐欺のプロか?
0186デフォルトの名無しさん
2007/08/21(火) 00:31:05標準出力に出そうとするからわかんねーんだ。
Win32APIの
MessageBox()
とか
CreateFile()でファイル出力してみる。
俺だったら、勤め人だろうが個人経営だろうが
仕事が来た時点で「それいくら(で請け負ったの)?」
と、聞き返すけどな。
改修だったら、最低でも解析料込みで月150万、実費もらうけど。
一から作り直すなら月100万(設計+PGをMIX)。何ヶ月かかるかわからんけど。
0187デフォルトの名無しさん
2007/08/21(火) 00:36:51無責任なことするなよ。
中途半端に教えるのは罪だよ。
0188デフォルトの名無しさん
2007/08/21(火) 00:47:48理解していない人間から見て、ごちゃごちゃになってるだけで、
それなりに理由のある構成だという可能性も残っているぞ。
なぜ、その案件を断らない。
まったくやったことのないことをやるのは、やたらと時間がかかるから儲からないぞ。
0189デフォルトの名無しさん
2007/08/21(火) 01:06:41サービスとかISAPI(これもサービスだけど)の場合、コンソールやデスクトップは有効でない
場合が普通なので、コンソール出力やメッセージボックスは不可。
有効なのはファイルやイベントログで、安直なのはファイル。
しかし、ファイルに出すコードを挟んで試してダメというのはいただけない。
本当に想定のルートが通っているかを確認するのが先決。
まず、そもそもプロセスが正しく起動していること、次にプロセス毎の処理の
先頭でファイル出力を行ってファイルが書き出せること、の2点を確かめることを
お勧めする。あとはそれからの話。
前提としてどのファイルがどのプロセスに関連付けられて、どのように起動されるかってのは
理解できてるんだよね。
0190デフォルトの名無しさん
2007/08/21(火) 01:07:40やめろって。
最後まで責任持って教えるのか? 尻ぬぐいもしてやるのか?
0191デフォルトの名無しさん
2007/08/21(火) 01:12:340192デフォルトの名無しさん
2007/08/21(火) 01:18:040193デフォルトの名無しさん
2007/08/21(火) 01:55:21開発を続けることであって、現状で十分な知識がない作業が上から降ってくるのは
珍しくもないと思うけどなあ。
もっとも調査の時間が十分にとれないのも珍しくなくて、だから厳しいわけだけど。
てか、仕事を受けるとき、自分に断る権限があるなんて、みんなすごい恵まれた
環境にいるんじゃないの?
0194デフォルトの名無しさん
2007/08/21(火) 02:10:15> いつまでも理解しようとしないまま
これが間違い。
理解しようとする
のではなく、
理解する
ことが必要。
> 現状で十分な知識がない作業が上から降ってくるのは珍しくもないと思うけどなあ。
2chに助けを求めている時点で、不十分っていうレベルではないと思う。
> てか、仕事を受けるとき、自分に断る権限があるなんて、みんなすごい恵まれた
> 環境にいるんじゃないの?
上の責任だって言うのなら、まぁ、いいんじゃない?
受けるかどうか判断する人が、判断の責任を負うのだから。
0195デフォルトの名無しさん
2007/08/21(火) 05:50:12dllとか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前任の担当者がいないなんて普通だし(いれば作業なんて回ってこない)、
サービスIなんかだと普通のデバッグとは異なるので、最初やり方が
分からないのもしょうがない。
だいたい、構造が致命的に分かりにくいとかバグがあるってのと、
デバッガで追えないとかブレークポイントで止められないってのは別問題だろ。
くだすれなんだから、質問者のレベルが低いのは当たり前だし、
デバッガで追いかける方法が分からないからって質問するくらいいいじゃないか。
0198デフォルトの名無しさん
2007/08/21(火) 11:59:53> ブレークポイントも全く止まらないし誰からどう呼び出されてるかもわからないし
そりゃぁ195が知らない世界に無理に足を突っ込んだからだろう。
EXEとDLLとISAPIとサービスに分割するのは、ありがちな形態。
>>196
2・3年目くらいに詳細なドキュメントなしでデバッグを担当したものを、
協力会社の人に引き継いだが、彼らは目を白黒させていたなぁ。
あるインプロセスのCOMコンポーネントについて、
main関数どこですか?
誰から呼ばれるんですか?
なんて聞かれて、びくーりしたよ。
クラスとか無視して強引にC風にフローチャート書いてきて、確認を求められた時には、
そんな無駄なことをする前に了解を取ってくれ、そのフローチャートに金は払わないぞ!と
ブチ切れそうになりましたよ。
0199デフォルトの名無しさん
2007/08/21(火) 13:34:29多分、みんな同様の経験をしてきてるからじゃない?そして地獄を味わった
でも、乗り越えられれば確かに糧にはなるけどな
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:370203デフォルトの名無しさん
2007/08/21(火) 22:21:48そんな時間がある会社なら前の担当者がいないなんて話にはならないだろw
0204デフォルトの名無しさん
2007/08/21(火) 22:27:30俺も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知らないのに、できます! と言うのに比べれば、
知らなくて、できません! と言うのは悪くない。
0207デフォルトの名無しさん
2007/08/21(火) 22:41:02http://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おお、すげーな
COMとOLEについて書いてあるページなんてはじめて見たw(実は結構ある?)
1年前ぐらいに調べたときはホント1ページもなかった(俺が探した限りでは)
ってか、検索するワードすらよくわからなかったし
0209デフォルトの名無しさん
2007/08/21(火) 22:48:26operator->が定義されてる。
0210デフォルトの名無しさん
2007/08/21(火) 22:49:31スキルのある人はみんなそういう。
でも、スキルのない人にはまた別の意見がある。
0211デフォルトの名無しさん
2007/08/21(火) 22:51:29スキルを身につける気がないなら、プログラマやめたら?
0212デフォルトの名無しさん
2007/08/21(火) 22:52:10しかし、あいかわらず意味不明だなw
サンプルソース読んでもなにをやってるのかさっぱりわからんw
こりゃCOM入門やらなきゃ手がでないね
っつってもその情報がどこにあるか全く知らんけどw
1年前に探したときは、自分なりに必死に調べてみたけど
手がかりすらつかめなかったなw
0213デフォルトの名無しさん
2007/08/21(火) 22:53:23やりたいのはやまやまだけどCOMとOLEって情報がないじゃん
なんか順にステップアップする道ってないの?
0214デフォルトの名無しさん
2007/08/21(火) 23:00:43inside ole
atl com
とりあえずこの2冊読んだだけだが、COM使うレベルだったら十分だったよ
果たして、まだ売ってるのかどうかもわからんが
しかも、今から勉強しても役に立つかどうかはわからない
0215デフォルトの名無しさん
2007/08/21(火) 23:06:07訂正、その2冊を読んで、あとはネットなどで調べればって事ね
0216207
2007/08/21(火) 23:09:27"operator->" で検索したところ、おぼろげに分かりました。
メンバ変数として持っているオブジェクトのポインタを返して、
あたかも自分自身のメンバ関数のように見せる手法といったところでしょうか。
この路線で少し調べてみます。
どうもありがとう。
0217デフォルトの名無しさん
2007/08/21(火) 23:12:04片方絶版でしょ?
http://www.amazon.co.jp/o/ASIN/4881356992/249-8768613-0303516?SubscriptionId=1PGV4GGGAXZ1AMXAKKG2
こっちはもってるけど、
当時のお客様のご要望であるエクセルダイアログを作るまではいかなんだw・・・orz
期間も短かったし、あせってたから理解できなかっただけかもなw
用語にサーバーとかでてくるけど通信がやりたいわけでもないのに
なんでこんな言葉が出てくるのかヒタスラ謎だったw
0218デフォルトの名無しさん
2007/08/21(火) 23:17:21必死に調べないと手がかりすら掴めないなら、プログラマに向いてない。
ましてや、必死に調べてもダメっていうのなら・・・。
>>213
いったいどこを探したのか、と。
0219デフォルトの名無しさん
2007/08/21(火) 23:20:26マジか
今のところ>>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=
って調べてもろくなページでてこないじゃん
0221207
2007/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なんか心配だなぁ。
_ApplicationPtrが何者なのかわかっていれば、そういう質問は出て来ないと思う。
よく見てないけど、たぶん_com_ptr_tでしょう。COMのイロハを先に勉強しよう。
0223デフォルトの名無しさん
2007/08/21(火) 23:34:24> とりあえず英語読め無いから海外は勘弁してくれ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:57OLE ServerとOLE Container。
むっちゃくちゃ基本的な話なのに。
0228デフォルトの名無しさん
2007/08/21(火) 23:40:33Excelを使うみたいな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
0229207
2007/08/21(火) 23:41:48私の場合、学習の順序がむちゃくちゃですね。
Excelのファイルを作りたくて色々調べて、とりあえず近々やりたいことは出来るようになりました。
でも、基本が無いからちょっと詰まるとカットアンドトライで切り抜けている状況です。
COMというものを勉強すれば、その辺の基礎中の基礎が分かるようになると今知りました。
今後、その辺含めて勉強していきます。お手数おかけしました。
0230デフォルトの名無しさん
2007/08/21(火) 23:42:56一番上懐かしいなw
10年位前に読んだ気がする
0231デフォルトの名無しさん
2007/08/21(火) 23:49:58http://msdn2.microsoft.com/en-us/library/417w8b3b(VS.80).aspx
0232デフォルトの名無しさん
2007/08/21(火) 23:52:42一応、設定してみたけど
beext1.tlhの中でCommandBarsがどうたらこうたらってエラーが18個ぐらいでるw
まあ、いいです、色々ありがとう
これが動かせたからどうって問題でも多分ないと思うし
根本的に基本的なところの理解が足りて無い状況なわけでw
0233デフォルトの名無しさん
2007/08/21(火) 23:57:08_com_ptr_tならMSDNライブラリで日本語訳されてるぞ?
0234デフォルトの名無しさん
2007/08/21(火) 23:57:34俺が1年前探したときにはなんも見つからなかったのに・・・
0235デフォルトの名無しさん
2007/08/22(水) 00:06:47正直、excel動かしたいだけだったらVB使えばいい
もしくはMFCでタイプライブラリからクラス作ればわずらわしい部分はほとんど無くなる
COMの勉強というが、もし仕事でやってるなら今後、どうなるかわからない技術だから
必要に迫られて無い限り深く知る必要は無いとも思う
ただ、俺個人としてはどんなことでも勉強する人間は嫌いじゃないけどね
仮に、自分の部下だったらCOMを勉強すると言うなら、アセンブラと電気勉強させるがw
0236デフォルトの名無しさん
2007/08/22(水) 00:12:43Windowsプログラマには当たり前のことだと思うが。
DirectXでゲーム作ってる厨房だってCOM使ってるぞ。(DirectXローカルに変更されたものだが)
0237デフォルトの名無しさん
2007/08/22(水) 00:18:31COMを使うだけだったら、勉強なんてほとんどイラン
COMサーバを作るんだったら、それなりに勉強しないと出来ない
勉強するといのは=COMサーバを作るってことだと思っているが違ったかな
0238デフォルトの名無しさん
2007/08/22(水) 00:19:21一口にCOMといってもいろいろあるし、
自分でもアパートとかスレッドなんてキーワードがでてくるとかなりあやしい。
0239デフォルトの名無しさん
2007/08/22(水) 00:21:14俺、ゲーPGだったからDirectXはバリバリ使えるけどCOMはさっぱりだぞ
エクセルダイアログ作って上げたかったよ・・・orz
0240デフォルトの名無しさん
2007/08/22(水) 00:28:44ゲーPGだったのか
俺もゲーPGだったよ10年以上前は
0241デフォルトの名無しさん
2007/08/22(水) 01:05:56必要ならVC++では、MFCか#importでちょいちょいだろ。
0242デフォルトの名無しさん
2007/08/22(水) 01:13:58なぜVC++を使うん?
0243デフォルトの名無しさん
2007/08/22(水) 01:21:580244デフォルトの名無しさん
2007/08/22(水) 07:46:59やっぱり客の要望的にVCのが小回りが効く
COM/OLEの部分はどっちかっていうとプラスアルファ的要素
基本はVCのスッキリした動作と細かいサポートが必要
って状況だからVCで使えないとあんまり意味がない
0245デフォルトの名無しさん
2007/08/22(水) 12:31:520246デフォルトの名無しさん
2007/08/24(金) 10:17:390247デフォルトの名無しさん
2007/08/24(金) 10:29:080248デフォルトの名無しさん
2007/08/24(金) 10:33:060249デフォルトの名無しさん
2007/08/24(金) 10:33:460250デフォルトの名無しさん
2007/08/24(金) 10:34:55キ
ス
プ
レ
ス
エ
デ
ィ
チ
ョ
ン
0251デフォルトの名無しさん
2007/08/24(金) 10:36:060252エキスプレスエディチョン
2007/08/24(金) 10:36:500253という理屈も成り立つよね
2007/08/24(金) 11:48:31鮮人のことを指したからといって、差別語ではない。親しみを込めていっているだけだ。
0254デフォルトの名無しさん
2007/08/24(金) 11:49:200255デフォルトの名無しさん
2007/08/24(金) 11:51:430256デフォルトの名無しさん
2007/08/24(金) 12:35:560257デフォルトの名無しさん
2007/08/24(金) 15:09:330258デフォルトの名無しさん
2007/08/24(金) 15:17:580259デフォルトの名無しさん
2007/08/24(金) 21:21:32違うな
俺にはわかる
>>254は女子小学生だからだ
0260デフォルトの名無しさん
2007/08/24(金) 21:58:070261デフォルトの名無しさん
2007/08/25(土) 00:11:41俺にも分かった。腕の細いところときめ細かい肌の日焼けが特徴だ
0262デフォルトの名無しさん
2007/08/25(土) 01:25:36OnInitialUpdate()で別ダイアログを表示させ、そのダイアログの戻り値によって
アプリを起動させずに終了させたいと思っています。
OnInitialUpdate()でどのような命令を実行させればよいですか?
そもそもOnInitialUpdate()で設定する内容ではないのでしょうか??
0263デフォルトの名無しさん
2007/08/25(土) 01:31:110264デフォルトの名無しさん
2007/08/25(土) 01:43:13CFormViewでなく、アプリのInitInstanceにしとけば?
InitInstance( )内で直接ダイアログを表示して判定、
起動しない場合はそのまま復帰値FALSEでInitInstanceを抜ける。
0265デフォルトの名無しさん
2007/08/25(土) 16:51:58デバッグするときに止めたい場所にブレークポイントを設定しますが、
プログラムをある程度進めた段階で(例えばブレークポイントを1000回通過した時点で)
止めるということは出来るのでしょうか?
方法があれば教えてください。
0266デフォルトの名無しさん
2007/08/25(土) 16:56:02i++
if(i > 4000){
int a = 0;
}
0267デフォルトの名無しさん
2007/08/25(土) 16:58:42ヒットカウントを指定する
0268デフォルトの名無しさん
2007/08/25(土) 17:01:401)ブレークポイントを作成
2)ブレークポイント行を右クリック
「ブレークポイント」-「ヒットカウント
0269デフォルトの名無しさん
2007/08/25(土) 17:14:11ありがと。できました。
0270デフォルトの名無しさん
2007/08/25(土) 17:20:430271デフォルトの名無しさん
2007/08/25(土) 17:42:45ヒントでも欲しいって場合もあるし、
他に明確な回答があるなら他の人が答えるだけでしょ。
0273デフォルトの名無しさん
2007/08/25(土) 19:59:12/ ⌒ ⌒ ::: \
| (●), 、(●)、 |
| ,,ノ(、_, )ヽ、,, | < VS2005 コマンドラインでコンパイルすると
| ト‐=‐ァ' .::::| "public列挙子(クラス***)にアクセスできません"とか
\ `ニニ´ .:::/ "純粋仮想関数の宣言は'=0'でなければなりません"とか
/`ー‐--‐‐―´´\
/\___/\
/ ::\
| ─ ─ |
| (●), 、 (●)、 |
| ,,ノ(、_, )ヽ、,, .::::| < IDEでは問題なくビルドできるのに・・・・
\ r‐=‐、 .:::/
/`ー `ニニ´一''´ \
/\___/\
/ ::\
| :|
| ノ ヽ、 :|
| (●), 、 (●)、.:::| < なんでコマンドラインからだと
\ ,,ノ(、_, )ヽ、,, ::/ どうしようもないエラーが沢山出るの・・・?
/`ー `ニニ´一''´ \
0274デフォルトの名無しさん
2007/08/25(土) 20:19:400275デフォルトの名無しさん
2007/08/25(土) 20:35:09IDE上で、コンパイラに与えるコマンドラインスイッチ見れるだろ?
それと同じものを与えてみ。
0276デフォルトの名無しさん
2007/08/25(土) 21:02:28色々条件指定できるみたいだけど面倒臭くて使えないよな
俺もソースに書き込むことのが多い
0277デフォルトの名無しさん
2007/08/25(土) 21:19:000278デフォルトの名無しさん
2007/08/25(土) 21:20:25そんときその場だけの情報がほしいことが多いから
すぐに消しちゃうよ
int a=0;
とかありえないコード書いておけば後で検索も効くし
0279デフォルトの名無しさん
2007/08/25(土) 22:03:08人間はミスをするものだから。
0280デフォルトの名無しさん
2007/08/25(土) 22:04:30は?int aとかa=0;で検索掛けるだけだってのに頭思いっきり悪いなお前
0281デフォルトの名無しさん
2007/08/25(土) 22:06:10if(i > 4000){
int a=0;
}
このソースはプログラムに影響なんて与えないんだよ
0282デフォルトの名無しさん
2007/08/25(土) 22:11:000283デフォルトの名無しさん
2007/08/25(土) 22:15:21>>281のコードがわからんようなプログラマはなにやらせても駄目だろw
0284デフォルトの名無しさん
2007/08/25(土) 22:16:110285デフォルトの名無しさん
2007/08/25(土) 22:19:07ブレイクポイント用にこんなコードを書くPGなんて君だけだから、普通のPGには意図が汲めません。
0286デフォルトの名無しさん
2007/08/25(土) 22:20:37え?こんなのわかんないの?w
さすがに反論する気にもなれない
0287デフォルトの名無しさん
2007/08/25(土) 22:24:18出荷時まで残るなんてことはないと思う。
0288デフォルトの名無しさん
2007/08/25(土) 22:24:590289デフォルトの名無しさん
2007/08/25(土) 22:25:07俺も281みたいなことをやるが、他人に見せる前には消すぞ。
0290デフォルトの名無しさん
2007/08/25(土) 22:26:03残ってても問題ないらしいし。
0291デフォルトの名無しさん
2007/08/25(土) 22:28:570292デフォルトの名無しさん
2007/08/25(土) 22:29:35苦しい決め付け乙w
0293デフォルトの名無しさん
2007/08/25(土) 22:30:15周囲に迷惑かけまくっているに1票。
でも、きっと本人はそれに気づいていない。
0294デフォルトの名無しさん
2007/08/25(土) 22:30:390295デフォルトの名無しさん
2007/08/25(土) 22:31:31>>281のほうが見苦しい屁理屈に見えるぞ。
0296デフォルトの名無しさん
2007/08/25(土) 22:45:49マクロを使って自動的にリリース版から除去するのが、許されない何か理由でもあるの?
0297デフォルトの名無しさん
2007/08/25(土) 23:12:14ぷw
明らかに孤立してるからって自演すんなよw
>>296
マクロは定義をみないと動作がわからない上に
VSのインテリジェンス機能が使えなくなるときがある
さらにマクロを定義したヘッダをソース中にインクルードする必要があるところも嫌だな
このやり方が便利だと思うってことはお前のソースには
総合ヘッダみたいなグローバルに影響を与える仕組みが存在するってことなんかな?
0298デフォルトの名無しさん
2007/08/25(土) 23:14:270299デフォルトの名無しさん
2007/08/25(土) 23:19:33ぶっちゃけ効率悪い
0300デフォルトの名無しさん
2007/08/25(土) 23:25:08>>296は、たぶんこういうマクロを指しているものとおもわれ。
#if !NDEBUG
//デバッグ用コード
#endif
0301デフォルトの名無しさん
2007/08/25(土) 23:25:29> マクロは定義をみないと動作がわからない
動作がわかる名前を付ければいいだけのこと
> VSのインテリジェンス機能が使えなくなるときがある
当該のマクロに対して使えなくたって構わないだろう。
> お前のソースには総合ヘッダみたいなグローバルに影響を与える仕組みが存在するってことなんかな?
Yes。
stdafx.hがそうだよ。
0302デフォルトの名無しさん
2007/08/25(土) 23:25:39マクロはインクルードファイルに書かなければいけないわけではないことはご存知?
どうも今日は、インクルードファイルを特別視している意見をあちらこちらのスレで見かける気がするが。
0303デフォルトの名無しさん
2007/08/25(土) 23:28:16普通にリリースモードのときに使えない
0304デフォルトの名無しさん
2007/08/25(土) 23:30:22それでなにが変わるの?
だってその機能を汎用で使うってことは定義したファイルを
全ソースにインクルードしなきゃ使えないことには変わりないじゃん
なくていいバグをソース中にばらまいてるだけだな
非常にコーディングレベルが低い
0305デフォルトの名無しさん
2007/08/25(土) 23:34:03で、そんなことするくらいならマクロを使えって流れなんだから
インクルードファイルは関係ないわけだけど。
で、リリースモードでデバッグする馬鹿は論外だと思う。
0306デフォルトの名無しさん
2007/08/25(土) 23:34:10ふつーに使う分には問題ないんじゃないの?
0307デフォルトの名無しさん
2007/08/25(土) 23:36:22>で、リリースモードでデバッグする馬鹿は論外だと思う
デバッグモードでは起きないけどリリースモードでは起きるって初期値バグって結構あるから
考慮に入れてもいいと思うけどな
0308デフォルトの名無しさん
2007/08/25(土) 23:43:47ログ出力処理にレベルを付加して、リリース時のデフォルトは低くしておくけど、
設定変更すればたくさんのログが取れるように仕込むというなら、よくあること。
でも、
if(i > 4000){
int a=0;
}
こんなレベルのコードをリリース時のソースに残すってのはありえない。
0309デフォルトの名無しさん
2007/08/25(土) 23:44:380310デフォルトの名無しさん
2007/08/25(土) 23:56:26該当箇所のデバッグが済んだら、すぐにさよならで、
そんな恒久的に残すわけないだろ。
結論:リリース時まで残す281はあほ。
0311デフォルトの名無しさん
2007/08/26(日) 00:01:48は?誰もリリースのときまで残すなんて発言してないけど
どこを見てそんな発言でてくるのか教えてくれよ
ちょっと電波入ってね?
0312デフォルトの名無しさん
2007/08/26(日) 00:06:30残ってしまうという事故は、
人間がやるかぎりある。
だからこそ、
自動的に削除されるようにすべき。
たとえそれが、すぐ消すものであっても。
0313デフォルトの名無しさん
2007/08/26(日) 00:07:02「そのまま出荷しても」と書いているのだから、
281はそのまま出荷することがあるかのように思われても仕方がない。
0314デフォルトの名無しさん
2007/08/26(日) 00:08:460315デフォルトの名無しさん
2007/08/26(日) 00:11:53なんか荒れてるなぁ
281みたいなコードは普通に使うけどね
自分の場合もppで、ON/OFFさせて
配布時にスクリプトで一掃させるかな
0316デフォルトの名無しさん
2007/08/26(日) 00:12:39万に一つに備えるのがプロのプログラマだと思いますが。
0317315
2007/08/26(日) 00:14:070318デフォルトの名無しさん
2007/08/26(日) 00:20:560319デフォルトの名無しさん
2007/08/26(日) 00:21:49曲解してまで自分が正しいことにしたいの?w
0320デフォルトの名無しさん
2007/08/26(日) 00:24:17おまえが思いつきで屁理屈言ってるようにしか見えないよ。
0321デフォルトの名無しさん
2007/08/26(日) 00:27:28え?曲解なんかではなく、俺は>>281がそのまま出荷するんだと感じたんだけども。
でもそう言われてみれば、281は誤って残した場合でも影響を与えないと言いたかったとも取れるな。
そうだとしたら、俺みたいな読解力ない人間のためにもきちんとそう書けという話になるが。
0322デフォルトの名無しさん
2007/08/26(日) 00:31:18>>281のようなコードはリリースビルドでは最適化されて、
ブレークポイントを張れないと思うんだけど、どうよ。
0323デフォルトの名無しさん
2007/08/26(日) 00:35:020324デフォルトの名無しさん
2007/08/26(日) 00:36:57ハイハイw
>>322
もちろん値はprintfやoutputDebugStringでひっかけるよ
int aは検索用にのこして置くけどね
それでもうっかり出荷しても問題は起こらないけどねw
0325デフォルトの名無しさん
2007/08/26(日) 00:37:58○もちろん値はprintfやoutputDebugStringで出力してifはひっかけるだけだよ
0326デフォルトの名無しさん
2007/08/26(日) 00:47:31もとが「曲解してる」とか言いがかりだし。
0327デフォルトの名無しさん
2007/08/26(日) 00:54:51if(i>4000){
int a=0;
}
は俺も使うし、出荷時にうっかり残っても問題にならないしで
いいデバッグコードということでFA?
0328デフォルトの名無しさん
2007/08/26(日) 00:55:48なんでマクロ使わないの
DEBUG_BREAK_EACH_X_TIMES(4000)
これでいいじゃない。
0329デフォルトの名無しさん
2007/08/26(日) 00:59:44だよね
読解力が無いだけなのにひどいよね
0330デフォルトの名無しさん
2007/08/26(日) 01:02:59VSのインテリ効かなくなる・・・って既出か
0331デフォルトの名無しさん
2007/08/26(日) 01:03:48レッテル貼りしないでまともに反論しろって言う割には、自分はそれか。
0332デフォルトの名無しさん
2007/08/26(日) 01:04:45こんなコードが残ってる製品っていやだよね。
0333デフォルトの名無しさん
2007/08/26(日) 01:08:03まじで?
0334デフォルトの名無しさん
2007/08/26(日) 01:09:44やってみやってみ(っていっても会社のVC6だからってのもあるかもw)
てか、インテリはマクロの類は全部駄目だなぁ・・・w
0335デフォルトの名無しさん
2007/08/26(日) 01:11:02VC6を暗黙の前提にしてたのかよ。
0336デフォルトの名無しさん
2007/08/26(日) 01:17:30さっきやってみたら.Netでもインテリ消えるな
2003とか2005とかどうだろ?
0337デフォルトの名無しさん
2007/08/26(日) 01:39:46ダメだった?
0338デフォルトの名無しさん
2007/08/26(日) 01:44:36どういう法則で消えてるのかわからない
なんかマクロはさまるだけで駄目って気もするし
そうで無い気もするし
0339デフォルトの名無しさん
2007/08/27(月) 10:51:45ビルドした静的ライブラリ(.lib)のシンボルの一覧を確認したいのですが、
何か方法はありませんでしょうか。
Dependency Walkerで試してみたのですが、.dllでないとダメなようです・・・。
0340デフォルトの名無しさん
2007/08/27(月) 11:12:30dumpbin /symbols *.lib
0341デフォルトの名無しさん
2007/08/27(月) 15:16:42起動されたときに、自分自身をデバッガにアタッチするプロセスの作り方を教えて。
VC7.1、CRT使用、ほかのプロセスから起動されるプログラムを作ってます。
0342デフォルトの名無しさん
2007/08/27(月) 16:18:23プログラムの経験は、はるか昔にN88日本語BASICとCOBOLをやったくらいしかない
適当なテキスト見ながらやってみた
なるほど、こういう便利なライブラリがあるのか
一通り簡単な事なら出来るようになった
でも、なんかスッキリしない
ライブラリを拝借して使ってるだけで、ちっともゲームを自分で作ってる気がしないw
これは違うんじゃないか俺?
ちょっと心配になってきたこの頃です
ここの住人とかはライブラリを自作したり出来るんでしょ?
すけーな・・・道は険しそうだ・・・
0343デフォルトの名無しさん
2007/08/27(月) 16:31:02どんなライブラリつかってオセロを作ろうがオセロはオセロだろ?
そんなにライブラリから作りたいなら、
Cのライブラリから自作するよなもちろん?
0344デフォルトの名無しさん
2007/08/27(月) 16:36:17そのOSから自作だろ。
0345デフォルトの名無しさん
2007/08/27(月) 16:37:29「起動されたとき」というのを詳しく。
0346デフォルトの名無しさん
2007/08/27(月) 16:38:24ゲームを作りたいならゲームを作ればいい。
ゲーム用のライブラリが作りたいのならそうすればいい。
自分の目的にあわせて手段をどう取るべきかよく考えろ。
フルスクラッチで作成しなければ達成感が得られないのなら仕方ないが、
ゲームを作るという目的のために既存のライブラリを使ってもズルでも何でもない。
何でも最初から、とか言い始めたら、ゲームのための筐体作りから始めなきゃならんぞ。
0347デフォルトの名無しさん
2007/08/27(月) 16:43:04スニペットとかの入力補完とかフルに使った上でもrubyの数倍のタイプ量がC++には必要だから安心していいよ^^
0348デフォルトの名無しさん
2007/08/27(月) 16:47:040349デフォルトの名無しさん
2007/08/27(月) 17:02:59ほかのプロセスから起動されるプログラムを作っているので、
このプログラムがプロセスとして生成された時点で自動的に
デバッガヘアタッチしたい。
0350デフォルトの名無しさん
2007/08/27(月) 17:09:21便利なライブラリってのが何のこと言ってるのかわからなが
例えばゲームという事で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プロセスとして生成された時点というのは、
EXEのエントリポイントが呼ばれるよりも前? それとも後?
0352デフォルトの名無しさん
2007/08/27(月) 17:10:52任意の時点でint 3を発行すれば、その時点でそれを
OSが捕まえて、デバッガにアタッチしてくれる。
いまは確認できないけど、VCだとint 3をラップする
DbgBreak(?)とかのマクロが用意されてたはずなので
それを呼べばよい。
0353デフォルトの名無しさん
2007/08/27(月) 17:11:32エントリポイントに入った後というか、main()が呼ばれた後くらいで
止まっててくれると非常に助かる。
0354デフォルトの名無しさん
2007/08/27(月) 17:16:28int main()
{
DbgBreak();
...
とするだけ。
0355デフォルトの名無しさん
2007/08/27(月) 17:17:02それだったら、DebugBreak というAPIを使えばOK
0356デフォルトの名無しさん
2007/08/27(月) 17:19:08それなら、プロセスが生成された時点でもなければ、起動された時点でもないな。
メイン関数に入った後でよければ、それは、任意の時点だ。
Win32APIだと
DebugBreak()
がある。
ただし構造化例外をキャッチしているとダメよん。
0357デフォルトの名無しさん
2007/08/27(月) 17:19:22orz
0358デフォルトの名無しさん
2007/08/27(月) 17:28:27>>354
>>355
>>356
ありがとう!
#include <windows.h>
...main()...
::DebugBreak();
で無事にできた。
ヘッダー:winbase.h 内で宣言...ということになってるが、エラー
windows.hでできた。
win32コンソールプロジェクトでビルド。
重ねてさんくす!
0359デフォルトの名無しさん
2007/08/27(月) 18:07:09> ヘッダー:winbase.h 内で宣言
MSDNライブラリならそのすぐ下にwindows.hをインクルードと書いてあるだろうに。
0360デフォルトの名無しさん
2007/08/27(月) 18:16:190362デフォルトの名無しさん
2007/08/27(月) 19:12:382chに書き込みできるのに、MSDNオンラインを参照できないなんて。
0363デフォルトの名無しさん
2007/08/27(月) 19:32:090364デフォルトの名無しさん
2007/08/27(月) 23:11:30VC++MFCで書き直すことになりました。
VC#ではDataGridViewなんて便利なものがあったのですが
VC++では見つかりません。
yahooで調べてみたらMSFlexGridを使うらしいのですがいまいち柔軟性がない
おそらく一から作っていくと思いますが、いいサイトしりませんか?
0365デフォルトの名無しさん
2007/08/27(月) 23:21:430366デフォルトの名無しさん
2007/08/27(月) 23:26:13MSFlexGridはVSFlexGridのサブセットということになっているんだが、
そっちは試してみたか?トライアル版もあるぞ。
http://www.grapecity.com/japan/support/database/P1_223.htm
0367デフォルトの名無しさん
2007/08/27(月) 23:42:37つーか、ドトネトのDataGridViewが遅いのは有名な話で、
ひょっとしてそこだけ有料コンポーネントで置き換える手が
あるんじゃねーの
0368デフォルトの名無しさん
2007/08/27(月) 23:47:12速度に拘るなら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:420373デフォルトの名無しさん
2007/08/28(火) 02:39:59ガッ!
0374デフォルトの名無しさん
2007/08/28(火) 12:58:560375デフォルトの名無しさん
2007/08/28(火) 16:44:15templeteを用いた関数を、宣言と実態とで別ファイルに書くと
コンパイルエラーが出ます。
↓↓↓↓↓↓動く↓↓↓↓↓↓
(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ちなみにVC++ 6.0です。
0377デフォルトの名無しさん
2007/08/28(火) 17:10:500378デフォルトの名無しさん
2007/08/28(火) 17:29:10どうすればいいでしょうか?
0379デフォルトの名無しさん
2007/08/28(火) 17:46:03明示的実体化(あるいは明示的インスタンス化とも)を行えばよい。
0380デフォルトの名無しさん
2007/08/28(火) 18:04:380381デフォルトの名無しさん
2007/08/28(火) 18:12:12GetDlgCtrlIDでIDに変換。
そこからさらに"ID_XXXX"という文字列が
欲しいなら逆変換テーブルの御用意を
0382デフォルトの名無しさん
2007/08/28(火) 18:37:46それとも日本語しか表示できないのでしょうか
0383デフォルトの名無しさん
2007/08/28(火) 18:42:53EnumChildWindowsは要らないの?
0384デフォルトの名無しさん
2007/08/28(火) 19:01:130385デフォルトの名無しさん
2007/08/28(火) 19:07:34「そのタイミング」って何かな。
最近、自分のやりたいことを正確に書けない質問者が多いよ。
スレッドを停止状態で作るということであれば、CREATE_SUSPENDED。
0386デフォルトの名無しさん
2007/08/28(火) 19:16:11すみません。うんこ我慢しつつ脂汗かきながら書いていたので変になってました。
_beginthreadした側が、スレッドを作った側の好きなタイミングで停止させられるかどうか、という事です。
ハンドルで何とかなるかなと思って調べているんですが、中々答えまでたどり着けません。
ちなみにまだうんこ我慢してます。
0387デフォルトの名無しさん
2007/08/28(火) 19:19:44あと_beginthreadより_beginthreadexな。理由はここに。
http://msdn2.microsoft.com/ja-jp/library/kdzttdcb(VS.80).aspx
0388デフォルトの名無しさん
2007/08/28(火) 19:44:06ああ、ありがとうございました
0390デフォルトの名無しさん
2007/08/28(火) 22:27:09int *kaisu;
kaisu = (int *) calloc(10, sizeof(int));
とすると
error C2440: '=' : 'bool' から 'int *' に変換することはできません。(新しい動作 ; ヘルプを参照)
と言われてしまいます。ヘルプの例でもこうなってるのですがなんででしょうか
0391デフォルトの名無しさん
2007/08/28(火) 22:50:380392デフォルトの名無しさん
2007/08/28(火) 22:52:10malloc.hを#includeしてる?
0393390
2007/08/28(火) 23:12:060394デフォルトの名無しさん
2007/08/29(水) 01:00:22このCXXXViewにどうやってコントロールを置くのですか?
例えば、Excelみたいなスプレッドシートを作る際
ここから自前でグリッド、カーソルを描画するのですか?
0395デフォルトの名無しさん
2007/08/29(水) 01:21:370396デフォルトの名無しさん
2007/08/29(水) 01:24:510397デフォルトの名無しさん
2007/08/29(水) 01:35:450398デフォルトの名無しさん
2007/08/29(水) 01:54:49・.NETワークフレーム使う
・他の言語でコンポーネント作る
などなど。
好きな方法使えよ。
0399デフォルトの名無しさん
2007/08/29(水) 03:31:27.NETではなくネイティブAPIです。
文字列定義するときはどの型で作るのがベターですか?
charとかLPSTRとかこいつらに似たような型やらがいっぱいあって
どれを使えばいいのかわかりません。
0400デフォルトの名無しさん
2007/08/29(水) 03:35:480401デフォルトの名無しさん
2007/08/29(水) 07:45:29LPCxSTRと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どちらか片方でしか正しく動かないようなコードを中途半端に書くなら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:250405399
2007/08/30(木) 00:48:14自分でもいろいろ調べたりしましたが
型はTCHARで_TかTEXTマクロを使うのがよさそうですね。
ついでですがprintf系関数は
_sをつけた関数にして_Tをつけとけばいいですか?
0406デフォルトの名無しさん
2007/08/30(木) 08:41:49printf_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:41TCHAR 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:460410デフォルトの名無しさん
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:300413デフォルトの名無しさん
2007/08/31(金) 00:45:12OutputDebugStringのラッパを作ってみたんですが
_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> ・文字数なのかサイズなのか
文字数
> ・終端文字含めるのか含めないのか
含める
> ・例外が発生したときの処理
知らない。
0415デフォルトの名無しさん
2007/08/31(金) 00:55:28ttp://msdn2.microsoft.com/ja-jp/library/xa1a1a6z(VS.80).aspx
の[使用例]を見れば、わかることじゃないか。
0416414
2007/08/31(金) 01:03:50確信がもてました
でも例外のときはどうすればいいんでしょうか
0417デフォルトの名無しさん
2007/08/31(金) 01:25:21下手に処理して隠してしまったら、デバッグにならないし。
0418デフォルトの名無しさん
2007/08/31(金) 01:44:450419デフォルトの名無しさん
2007/09/02(日) 09:47:26VC++6 (pro)にて
明示的リンク(LoadLibrary〜GetProcAddress〜FreeLibrary)で呼び出されるDLLの
プロファイルやデバッグってどうやるんでしょう?
0420デフォルトの名無しさん
2007/09/02(日) 10:48:55暗黙的リンクで呼び出されるDLLと同じ方法を試してみてダメだったの?
0421419
2007/09/02(日) 11:27:38「えっ?・・・」と思ってやってみたらできました。本当にありがとう&すいません。
exe側ではdllをフルパス指定し、かつ一定条件時でのみLoadLibraryしてるんで、
単にexe指定するだけでは無理と思ったんです。
(どうやってやっているんだろう・・・LoadLibraryごとAPIフックしてんのかな?)
何かモヤモヤしてますがひとまず結果オーライなのでこうやって使うことにします
お騒がせしました
0422デフォルトの名無しさん
2007/09/02(日) 21:43:54の「レイアウト」「タブオーダーの設定」というのはどこからすればいいのでしょうか
0423デフォルトの名無しさん
2007/09/02(日) 22:05:140424デフォルトの名無しさん
2007/09/02(日) 23:55:01Bitmap bmp( img1.bmp );//読込み
bmp.RotateFlip( Rotate90FlipNone );//回転
bmp.Save( img2.bmp );//保存
この処理はPC性能によって制限(画像サイズ、階調値など)があるだろうと思いますが、
その値の取得、計算方法がわかりません。
教えて頂けませんか。よろしくお願いします。
0425デフォルトの名無しさん
2007/09/02(日) 23:58:290426デフォルトの名無しさん
2007/09/03(月) 00:31:35古いうえに正確さは不明な昔のメモから引用。
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:35IDEのメニューにあるぞ。
0428デフォルトの名無しさん
2007/09/03(月) 02:16:230429デフォルトの名無しさん
2007/09/03(月) 08:54:31参考になります。環境はXPなので、この情報を元に探ってみます。
ありがとうございました。
0430デフォルトの名無しさん
2007/09/03(月) 22:19:00簡単な文法を勉強したことがありました
最近、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);
という方法で文字を出すことは出来たのですが、変数の値を組み込む方法がわかりません。
ご教示おねがいします。
0431430
2007/09/03(月) 22:20:41str.Format( "答えの結果は%d", num );
の間違えでした
0432デフォルトの名無しさん
2007/09/03(月) 22:33:230433デフォルトの名無しさん
2007/09/03(月) 22:35:24str.Format(_T("答えの結果は%d"), num);
逆にVC++ 6.0でもコレでいけると思う。
こうなったのは、VC++ 2005がUNICODE有りを初期状態にしたため。
0435デフォルトの名無しさん
2007/09/04(火) 00:44:10一通り目を通しておくことをお勧めする。
これのお陰で文字列変換マクロはほぼ用済みになった。
0436デフォルトの名無しさん
2007/09/04(火) 01:56:190437デフォルトの名無しさん
2007/09/04(火) 02:59:06char決め打ちだった頃のように、Unicode決め打ちでいいんじゃね?
0438デフォルトの名無しさん
2007/09/04(火) 14:15:51SetWindowText(label,(char*)bmp.bmWidth);
あんまりに下らない質問かも知れんが教えて。
ビットマップの長さ(横幅)を取得して(labelというスタティックコントロール(であってる?))に
表示させたいんだけど、実行してもlabelの文字が変わらんのです。
bmp.bmWidthはlongのようだからキャストしてるつもりなんですが・・・
このスレで間違ってたらすいません。
0439デフォルトの名無しさん
2007/09/04(火) 15:18:29数値をそれを意味する文字列に変換する、ってのは素のキャストではできません。
sprintfやCString::Formatを使ってください。
0440デフォルトの名無しさん
2007/09/04(火) 15:19:25それは、VCとかwindowsとかの問題ではなくc言語の基本中の基本の問題だ
SetWindowTextの第2引数は、文字列のポインタを指定する訳だが
果たして、bmp.bmWidthの値は、文字列のポインタになっているだろうか?
ヒントは、キャストしたからと言って、その値自体は変わらない
これ以上は、頼むから調べてくれ
0441デフォルトの名無しさん
2007/09/04(火) 16:47:14フォームにボタンを2,3個置き、ボタンと関係ない離れた位置にビットマップ描画。
すると(3,4回に一回)ボタンが消える。
でもその位置でクリックするとボタンが現れ、押せる。
ちなみに某のC++Builderでも同じ事が起きた。
リソース不足かと思って、IDEを閉じて実行しても同じ。
何で?
0442デフォルトの名無しさん
2007/09/04(火) 16:54:470443441
2007/09/04(火) 16:58:29case WM_PAINT:
return 0;
この所をコメントアウトすると起きなくなるみたいなんだが。
怪しいのはこの辺と思うんだけど。
0444デフォルトの名無しさん
2007/09/04(火) 17:01:420445デフォルトの名無しさん
2007/09/04(火) 17:07:11WM_PAINTではValidateRectとかBeginPaintとかしないといけないんじゃ?と思ったんだが
とりあえずそこで処理しないで、return 0; を break; にするなりして、DefWindowProcに渡せばいいんじゃね。
多分
0446デフォルトの名無しさん
2007/09/04(火) 17:08:01WM_PAINTでは更新リージョンを空にしないといけない。
更新リージョンがある限りWM_PAINTは呼ばれ続ける。
更新リージョンを空にする方法は、
BeginPaint、ValidateRect、ValidateRgnのいずれかの関数を使用すること。
DefWindowProcにWM_PAINTが渡ると、ただBeginPaintしてEndPaintしていると
AdvancedWindowsかプログラミングWindowsにも書いてあったはず。
だからWM_PAINTのcaseをコメントアウトすると、作法通りのプログラムになり、
問題が起きなくなると考えられる。
0447デフォルトの名無しさん
2007/09/04(火) 19:39:29「VC++のSDK」つーから、Visual Studio SDK かと思ったら、PlatformSDKのことかよ。
ふつうは、
VC++で、Win32APIでCreateWindowで・・・
と書くのよ。
0448デフォルトの名無しさん
2007/09/04(火) 21:13:18printfみたいにコンソールにデバッグ用メッセージを表示させるにはどうすればいいんでしょうか?
凄く初歩的な質問ですいません。
0449デフォルトの名無しさん
2007/09/04(火) 21:20:11コンソールへの出力ではなく、デバッグ出力を得ることが目的なら、
CRTのデバッグルーチン、もしくはOutputDebugStringを使った自前の関数を用意する。
MFC/ATLならTRACEとかATLTRACEというのもある。
0450デフォルトの名無しさん
2007/09/04(火) 21:20:31AllocConsole
MSDNライブラリで、AllocConsoleのページを表示した状態で「同期」して、
目次の同じツリーにある他の関数群も読んでみよう。
0451デフォルトの名無しさん
2007/09/04(火) 21:22:020452デフォルトの名無しさん
2007/09/04(火) 22:05:07>>450
ありがとうございます。
MSDNライブラリってAPIリファレンスのことですよね。
これは、WEBにあるのを見るんでしょうか、
それともVisual Studioインストールしたら一緒にインストールされてるものですか?
>>451
普通はどういうふうにデバッグするんでしょうか?
0453デフォルトの名無しさん
2007/09/04(火) 22:09:26何を言ってるんだお前は
わろた
0454デフォルトの名無しさん
2007/09/04(火) 22:17:37> MSDNライブラリってAPIリファレンスのことですよね。
そう。
開発者向けのドキュメント各種が入っていて、
その中にWin32APIリファレンスも含まれてる。
APIリファレンスだけなら、
WindowsSDK(PlatformSDK)のヘルプでも足りる。
> これは、WEBにあるのを見るんでしょうか、
最新版をチェックしたいのでなければ、
ローカルにインストールしたほうが使いやすいよ。
> それともVisual Studioインストールしたら一緒にインストールされてるものですか?
ごめん、どうだったか覚えてない。
0455452
2007/09/04(火) 22:20:59今まで携帯のアプリしか作ったことないんですが、それだと
System.out.println() とか、
DBGPRINTF() とかで、
コンソールに値を出してデバッグするんですが、
普通はブレークポイント?とかいうのを使ったりしてデバッグするのかなあと。
>>454
ありがとうございます。
WEBで見てみたらやたら重かったのでインストールしてみます。
0456デフォルトの名無しさん
2007/09/04(火) 22:35:01Windowsの場合、通常はデバッガにメッセージを出力(OutputDebugString等)する。
VisualStudio上でデバッグすると出力ウィンドウに出力されるので、後で簡単に見返せる。
無論せっかくのIDEなのだから、ブレークポイントもどんどん使うべき。
0457デフォルトの名無しさん
2007/09/04(火) 22:41:35ログを取ったほうがいい場合もあるが、
いわゆる「printfデバッグ」は考え物だぞ。
普通にデバッガでブレークポイント張って、ステップ実行しながらチェックすべし。
0458452
2007/09/04(火) 22:42:34ブレークポイント凄く便利そうですよね。是非使ってみます。
0459デフォルトの名無しさん
2007/09/04(火) 22:49:38デバッガで止めた状態で、
マウスカーソルを変数の上にもっていくと、
その値が表示されるよ。
0460デフォルトの名無しさん
2007/09/04(火) 22:59:360461デフォルトの名無しさん
2007/09/05(水) 00:42:29どうすればいいんでしょう?
hBitmapには既にビットマップが読まれていて、
そのビットマップの左上(0,0)は例えば赤だとする。
この時に赤を返すAPIが知りたいんです。
GetPixel(hBitmap,0,0) でも駄目だったし
0462デフォルトの名無しさん
2007/09/05(水) 00:55:06HDC 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:48DCにhBitmapを選択してからGetPixelを使用する
どうしても、ビットマップハンドルからとなるとGetBitmapBitsで
一旦バッファにコピーして、コピーした配列からアドレスを求めて読み出す
もし、ビットマップをDIBにロードしてるなら
GetObjectでビットマップへのポインタを直接参照も可能
0464461
2007/09/05(水) 02:20:58sprintf(col2,"%x",pixel);
SetWindowText(abc,col2);
462さんのプログラムの後に上記で
(abcというラベルに)書き込むと
0と表示されてしまうんですが・・・
左上が赤だったら ff0000 と出てほしいんです。
間違いあったら指摘お願いします。
0465デフォルトの名無しさん
2007/09/05(水) 03:07:55それでは色の並びはBGRの順に表示される。
桁数を6桁固定で、RGBの順で表示したいなら、例えば以下とする。
sprintf(col2,"%02X%02X%02X", GetRValue(pixel), GetGValue(pixel), GetBValue(pixel));
ただし、これは値が0になることとは関係ない。
pixelの値が0になるのは、色の取得プログラムを間違えて入力してるか、
hBitmap自体が正しくないことなどが考えられる。
hBitmapはどうやって検証してる?
0466464
2007/09/05(水) 03:31:10sprintf(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なんかメモリDCに最初から選択されている
モノクロ1x1のビットマップのピクセルカラーを読んでる気が
0468デフォルトの名無しさん
2007/09/05(水) 03:59:20自分でSetPixelして読んでみるとどうなるか、とか
Bitmap情報を調べてみるとか
0469デフォルトの名無しさん
2007/09/05(水) 04:02:08以下のプログラムは動作する?
うちの環境(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;
}
0470466
2007/09/05(水) 12:14:13なんとか469氏のコードで出来ました。
皆さんに感謝です。
0471デフォルトの名無しさん
2007/09/05(水) 12:46:44マルチ死ね
アホは初心者スレから出てくるなカス
0472デフォルトの名無しさん
2007/09/05(水) 14:36:12try
{
int a = func();
}
catch(...)
{
エラー処理
}
とかだとfunc()にthrowを書く必要がありますか?
0473デフォルトの名無しさん
2007/09/05(水) 14:39:21何を言ってるのかわからない。
0475デフォルトの名無しさん
2007/09/05(水) 15:23:12よく考えたらC++の質問でした。すいません。
C#とかだとException型のcatchがあればなんでも拾ってくれるんですけど
C++だとcatch(...)を書いておけば想定外のエラー時に拾ってくれるのかな?という質問です。
0476デフォルトの名無しさん
2007/09/05(水) 15:23:57よって書く必要は無い。
0477デフォルトの名無しさん
2007/09/05(水) 16:05:21myProg.hbrBackground = GetStockObject(WHITE_BRUSH);
のままだと明示的にキャストが必要と言われ HBRUSHにキャストするとOKでした。
あと、そのままだとメニューがでないので参考書をみると
myProg.lpszMenuName ="SAMPLE02";
の右辺は MAKEINTRESOURCE(SAMPLE02); とする必要がありました。私はVS6.0ですが
バージョン違いのせいでしょうか
0478デフォルトの名無しさん
2007/09/05(水) 16:05:43お前さ、自分の頭の中のことが、説明しなくても、相手に伝わると無自覚に思っているだろ。
基本的にC++では、誰かがC++例外をthrowしない限り、C++例外は発生しない。
いちいち「C++例外」というのは、C++の領分ではない例外もあるから。
Windows環境だと、言語に関係なく、「構造化例外処理」という名前のものがある。
VC++の場合、コンパイルオプションによって取り扱いが違い、
デフォルトではC++例外としては扱わず、catch(...)で捕捉できない。
詳しくは、このスレの>>135からを読め。
0479デフォルトの名無しさん
2007/09/05(水) 16:08:23文句言いながら質問に答えるなよ。
質問に答えちまったら、
エスパーが必要な質問をしても、
求める答えが得られると思って、
行動を改めないぞ。
0480デフォルトの名無しさん
2007/09/05(水) 16:19:17リソースを作るときに、IDで指定(SAMPLE02)した場合はMAKEINTRESOURCEマクロ必要
名前で指定("SAMPLE02")した場合はそのままでおk
キャストはcかcppの差じゃないか?
0481デフォルトの名無しさん
2007/09/05(水) 16:30:56私はリソースエディタで作ってますがスクリプト本体を見比べても違う部分が分かりません。
0482デフォルトの名無しさん
2007/09/05(水) 16:42:56だから、SAMPLE02 と入れるか "SAMPLE02" と入れるかの違い
"" の有無だよ。リソースエディタ上でやってみな
0483481
2007/09/05(水) 16:55:240484472
2007/09/05(水) 17:28:50もう少し質問の仕方も勉強します…
0485デフォルトの名無しさん
2007/09/05(水) 20:39:05教えて下さい。
0486デフォルトの名無しさん
2007/09/05(水) 20:40:400488デフォルトの名無しさん
2007/09/05(水) 22:27:026.0の時は詳細な情報が出てきて重宝したのですが2005では軽視されてるんですか?
0489デフォルトの名無しさん
2007/09/05(水) 22:29:290490デフォルトの名無しさん
2007/09/05(水) 22:30:500491デフォルトの名無しさん
2007/09/05(水) 22:32:140492デフォルトの名無しさん
2007/09/05(水) 22:34:00http://www.microsoft.com/downloads/details.aspx?FamilyID=b8704100-0127-4d88-9b5d-896b9b388313&DisplayLang=ja
0493デフォルトの名無しさん
2007/09/05(水) 22:34:460494デフォルトの名無しさん
2007/09/05(水) 22:38:07さっそくしてみます。
ありがとうございました。
0495デフォルトの名無しさん
2007/09/05(水) 22:43:55ExpressEditionはアンインストールしても大丈夫ですか?
0496デフォルトの名無しさん
2007/09/05(水) 22:56:42関連付けがうまく処理されるかどうか多少不安だけど。
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)の関数を使用する方法は
ありますでしょうか?
それとも元々このような記述は不可なのでしょうか?
0499495
2007/09/06(木) 00:48:010500デフォルトの名無しさん
2007/09/06(木) 00:54:27> tes_sub.cppでaaa.h(aaa.lib)の関数を使用する方法はありますでしょうか?
ある。
0501デフォルトの名無しさん
2007/09/06(木) 00:57:21レスありがとうございます。
もう少々具体的にアドバイス願えますでしょうか<(_ _)>
0502デフォルトの名無しさん
2007/09/06(木) 00:57:59> それとも元々このような記述は不可なのでしょうか?
お前さんの書いたコード断片は論外だろ。
0503デフォルトの名無しさん
2007/09/06(木) 00:58:58何が知りたいのか正確に質問してくれ。
0504デフォルトの名無しさん
2007/09/06(木) 01:03:33なぜそうなるのか、を聞いたほうがためになると思うがなあ
0505デフォルトの名無しさん
2007/09/06(木) 01:16:30とりあえず、>>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#ifdef __cplusplus
extern "C" {
#endif
void foo();
#ifdef __cplusplus
}
#endif
0507501
2007/09/06(木) 01:28:15あまり長々と書くのも良くないと思いまして概要だけを抜き書き
したのですが、質問としては端折り過ぎだったようで申し訳ございません
>>503,>>504
ビルド時にtest.objについてはリンクエラーが無いのに、
tes_sub.objはLNK2001になってしまう原因が何なのかが
判らずにおります。
もう少し自分でも調べてみます。
0508501
2007/09/06(木) 01:32:57レスありがとうございます。
>この場合、extern "C" はaaa.h内の先頭の1関数にしか有効ではない。
この部分の記述が良くなかったみたいですね。
ヘッダ内で__cplusplusを条件にしてextern "C"を記述するようにしてみます。
たいへんありがとうございました。
0509デフォルトの名無しさん
2007/09/06(木) 01:37:56test.objでは任意の関数が使えているってこと?
503で書いたけど、元の書き方(抜書きが正しいなら)だと、
extern "C" は最初にしかかからない。
逆にいえば、先頭の関数には有効なので、test.objで使っている関数
によってはたまたまOKだった可能性があるということを言ってるんだけど。
0510デフォルトの名無しさん
2007/09/06(木) 01:39:130511488
2007/09/06(木) 01:50:15MSDN無事DL&インスコできました。
Win32APIもばっちりあるしローカルだから軽くて最高です。
ありがとうございました。
0512デフォルトの名無しさん
2007/09/06(木) 04:04:24extern "C" {
#include "hoge.h"
}
これでいいじゃないか。
0513デフォルトの名無しさん
2007/09/06(木) 04:06:47肝心な情報を全て隠して質問してもわかるわけない。
自分で切り分けしてポイントを絞るか、
プロジェクトのソースコード一式を全て出すか、
どっちかにせい。
0514デフォルトの名無しさん
2007/09/06(木) 04:43:00申し訳ないと思っているのなら、端折らずに書けよ。
場合によっては、一字一句変らないようにコピペしたほうがいいぞ。
0515デフォルトの名無しさん
2007/09/06(木) 09:30:29元のウィンドウを、(ダイアログ閉じないと)操作出来ない?
ウィンドウ上のボタンが押されると
時間のかかる処理を行うんだけど
その進捗を、モーダルで表示したダイアログ上の
プログレスバーに表したいんです。
不可能ですか?
0516デフォルトの名無しさん
2007/09/06(木) 09:42:56操作できないのはユーザーインターフェースで、
プログラムからプログレス表示するのは問題ないと思うが
0517515
2007/09/06(木) 10:23:59case ID_BUTTON:
DialogBox( hInstance,("IDD_DIALOG1"), hWnd, DlgProc );
for (i=0;i<1000;i++)
{
時間のかかる処理
}
こんな感じでやってるんですが
どうもfor文が実行されるのが、ダイアログを閉じた後なんです。
ダイアログを閉じない限り処理が始まらないんです。
0518デフォルトの名無しさん
2007/09/06(木) 10:29:25UIスレッドで重い処理をしようというのが間違いだと思う。
0519デフォルトの名無しさん
2007/09/06(木) 10:50:30まず、時間のかかる処理は別スレッドを起こすべき。
ウィンドウには毎秒何十/何百というメッセージが飛んでくるが、
そのすべてをリアルタイムで処理しなければならない。
>>517のように記述すると、ID_BUTTONのメッセージの処理を行うため、
他のすべてのメッセージの処理を阻害してしまう。
モーダルダイアログは閉じられるまで次の行に制御は移らない。
これは仕様だが、処理自体を別スレッドにしておけば平行して処理
されるので問題はなくなる。
0520デフォルトの名無しさん
2007/09/06(木) 11:19:08モードレスなんだけど親子関係作って親を操作できないようにして
モーダルのように動作させることもやったし、今でもできるけど
せっかくスレッドあるんだから活用したら
0521デフォルトの名無しさん
2007/09/06(木) 13:01:01レス、サンクスです。もう一つお聞きしたいんですが、
ダイアログを閉じたいんですが、これって間違ってますか?
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:030523デフォルトの名無しさん
2007/09/06(木) 13:20:17その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:29SendMessageの引数がめちゃくちゃ。最初は"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:49521は言ってないが、たぶんMFC臭いぞ。
0526デフォルトの名無しさん
2007/09/06(木) 14:55:37hInstanceとか使ってるから、win32に一票
0527デフォルトの名無しさん
2007/09/06(木) 15:16:29しかし・・・自分はwin32でソフト作るのって、もう10年近くやってないかも
DirectXがまだ2位でゲーム作って以来だわ
0528デフォルトの名無しさん
2007/09/06(木) 17:05:430529デフォルトの名無しさん
2007/09/06(木) 19:34:43例えばこんなコードの場合、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中途半端に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:56TextOutA(hdc,0,20,str,strlen(str)) ;
0533デフォルトの名無しさん
2007/09/06(木) 20:10:29テキストファイルと表示の違いに戸惑っていました。
2005ではマルチバイト文字が標準になったんですね。
0534デフォルトの名無しさん
2007/09/06(木) 20:38:390535デフォルトの名無しさん
2007/09/06(木) 20:54:01ワイド = Unicode
マルチバイト = SJIS
0536デフォルトの名無しさん
2007/09/06(木) 21:43:28#ifndef _○○○_H_
#define _○○○_H_
内容
#endif
ってやってたんだけど
今は
#pragma once
使うのが流行ってるの?
0537デフォルトの名無しさん
2007/09/06(木) 21:48:54開発ターゲットがWindowsのみなら、#pragma once でいいんじゃないかな?
一部のファイルでも、他プラットフォームと共通化の可能性があったりすると、
ソース記述は全体で規約統一しておきたいために、結局従来の書き方をすることに
なったりするけど。
0538デフォルトの名無しさん
2007/09/06(木) 22:05:33これだけ妙な書式で書かれてるもんで
0539デフォルトの名無しさん
2007/09/06(木) 22:14:18Windowsアプリケーション固有のリソース定義用のファイル。
フォーマットを決めたのはもちろんMicrosoft。
0540デフォルトの名無しさん
2007/09/06(木) 22:17:07Windowsリソーススクリプトだけど、
どこのでも大体共通の書式だと思うよ。
1つのリソーススクリプトファイルを
Borland C++のbrc32とVC++のrcの両方で
コンパイルできるように書いた覚えもある。
0541デフォルトの名無しさん
2007/09/06(木) 22:18:13これだけ妙なレスが書かれてるもんで
0542デフォルトの名無しさん
2007/09/06(木) 22:28:52いや、超初心者用。
0543デフォルトの名無しさん
2007/09/06(木) 22:55:470544デフォルトの名無しさん
2007/09/06(木) 22:57:02エラーとか引っ切り無しに出てくるし
プログラムってむずかしいね。
0545デフォルトの名無しさん
2007/09/06(木) 23:26:250546デフォルトの名無しさん
2007/09/06(木) 23:29:340547デフォルトの名無しさん
2007/09/06(木) 23:47:480548デフォルトの名無しさん
2007/09/06(木) 23:56:330549デフォルトの名無しさん
2007/09/07(金) 00:01:350550デフォルトの名無しさん
2007/09/07(金) 00:04:020551デフォルトの名無しさん
2007/09/07(金) 02:02:400552デフォルトの名無しさん
2007/09/07(金) 02:11:23リファレンスなら以下にある。
ttp://msdn2.microsoft.com/ja-jp/library/d9x1s805(VS.80).aspx
0553デフォルトの名無しさん
2007/09/07(金) 02:12:060554デフォルトの名無しさん
2007/09/07(金) 09:06:08double変数をDWORDLONG変数へビット単位でコピーできますか?
つまりdouble変数のbit0が1ならDWORDLONGのbit0も0、bit63が1なら
DWORDLONGのbit63も1にする動作です。
0555デフォルトの名無しさん
2007/09/07(金) 09:46:210556554
2007/09/07(金) 09:47:440557デフォルトの名無しさん
2007/09/07(金) 10:48:150558デフォルトの名無しさん
2007/09/07(金) 11:05:28やり方を知りたいのか、
その区別すらできないのは、
初心者とかそういう以前の問題だな。
0559デフォルトの名無しさん
2007/09/07(金) 13:46:510560デフォルトの名無しさん
2007/09/07(金) 13:50:090561デフォルトの名無しさん
2007/09/07(金) 14:01:36あると思ってるのは初心者だけ
0562デフォルトの名無しさん
2007/09/07(金) 14:15:480563デフォルトの名無しさん
2007/09/07(金) 14:50:520564デフォルトの名無しさん
2007/09/07(金) 15:05:250565デフォルトの名無しさん
2007/09/07(金) 15:07:000566デフォルトの名無しさん
2007/09/07(金) 15:22:120567デフォルトの名無しさん
2007/09/07(金) 19:39:220568名前を付けて保存
2007/09/07(金) 21:51:04「Visual Studio 2005 Academic Edition」でMFCを使うことは可能でしょうか??
公式ホームページやアマゾンの商品の説明等色々調べてみたのですがそのことに関する記述が見あたらなくて困ってます。
もし、どなたか、お分かりの方がいらしたら教えて頂けないでしょうか??
0569デフォルトの名無しさん
2007/09/07(金) 22:03:04Academicの中身は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親切に教えて下さって有り難うございます。
これで安心して購入できます。
0571デフォルトの名無しさん
2007/09/08(土) 00:06:02そういういわゆる初心者より以前を指しているのが
スレタイにある<超初心者>だと俺は思う。
0572デフォルトの名無しさん
2007/09/08(土) 00:21:12あえて銭払う必要もなかろう
0573デフォルトの名無しさん
2007/09/08(土) 00:22:140574デフォルトの名無しさん
2007/09/08(土) 01:06:10初心者を超えたら初級者じゃないか。
最初の一歩が初心者なのだから、それ以前は有り得ない。
0575デフォルトの名無しさん
2007/09/08(土) 09:17:46人間として初心者というのはいかがなものか。
0576デフォルトの名無しさん
2007/09/08(土) 09:53:56VC++の初心者はOK
質問の初心者はNG
と。
0577デフォルトの名無しさん
2007/09/08(土) 10:39:57質問文を書くために問題を切り分けて整理しているうちに、問題の原因が判明することも多々あるわけで。
0578デフォルトの名無しさん
2007/09/08(土) 11:34:03それ、良い事じゃないか
俺は、一応初心者スレの場合、変な質問がきたら、聞き返すことにしてるよ
もちろん初心者スレ以外で訳わからん質問は完無視だが
みんなも初心者のころ経験してるだろ?
質問したいんだけど質問したい内容を記述できなくて、もどかしい思いをした経験が
0579デフォルトの名無しさん
2007/09/08(土) 17:10:10言語よりも、VCのプロジェクトの種類で戸惑っています。
MFCアプリケーションとWin32プロジェクトで窓ソフトが作れるようになっていますが、
どちらでソフトを作ったほうが良いのでしょうか。
やりたい事はDirectXを使った3Dプログラミングと、普通の窓ソフト、TCP/IPなどの通信ソフトなのですが…。
ちなみに、手元にある入門本にはMFCについてしか書かれておらず、Win32については触れられていません。
触れられていないと言う事は相当理解が難しいのでしょうか?
それともMFCで作る方が今は普通なのでしょうか?
0580デフォルトの名無しさん
2007/09/08(土) 17:14:380581デフォルトの名無しさん
2007/09/08(土) 17:50:50「窓ソフト」とは何か、そういうアプリの種類があるのですか?
「手元にある入門本」は具体的に何ですか?
0582579
2007/09/08(土) 18:08:03窓ソフト、GUIアプリケーションのことをそう言ってしまいました。すいません。
具体的に書名を書くと「明快入門 Visual C++2005 ビギナー編」、著者 林晴比古さんの本です。
0583デフォルトの名無しさん
2007/09/08(土) 18:35:25林晴比古か。
私の脳内の買ってはいけない著者リストに入ってるなぁ。
入門書を選ぶときに大切なポイントは、
現時点でのスタンダードを解説した本なのか、
過去に出した本を、新しいバージョンの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このスレ的にはC++/CLI&WindowsFormsという
とても初心者向きとは思えない構成になってしまうのが難しいところだな。
0586デフォルトの名無しさん
2007/09/08(土) 19:40:110587デフォルトの名無しさん
2007/09/08(土) 19:59:06深くやっても実用的なプログラム作れるようにはならないから時間をかけないのがコツ
0588デフォルトの名無しさん
2007/09/08(土) 20:08:08ハーバートシルト標準講座MFCは名著だったなぁ
win32なら同じくハーバートシルトのc/c++プログラマのためのwindows95
とりあえず、この2冊は今でも本棚に飾ってある
0589579
2007/09/08(土) 20:23:06詳しい説明ありがとうございます。
作りたいソフト次第で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猫でも分かるプログラミング
win32の本買うなら、このHPみたほうがいい
0592デフォルトの名無しさん
2007/09/08(土) 21:01:15まず、自分が作りたいソフトと似た、オープンソースのソフトを探そう。
なるべく自分が目標とするものに近く、有名なものを選ぼう。
そのソフトを作った人は、あなたよりも経験豊富で、色々知ってる。
そういう人が色々考えた上で、言語や開発環境を選んで使ってる。
だから、それと同じ言語・開発環境を真似して使うのがいいと思う。
次に、顔を合わせて指導・相談をしてくれる人を確保すべし。
周囲にいる人によって、かなり違ってきます。良くも悪くも。
> 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:070594デフォルトの名無しさん
2007/09/08(土) 21:20:53アカデミックパックでは制限されている事などはありますか??
0595デフォルトの名無しさん
2007/09/08(土) 21:28:110596579
2007/09/08(土) 21:37:32以前、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:400598デフォルトの名無しさん
2007/09/08(土) 22:00:08ちゃんとしたマニュアルが付いてくれば、入門書なんて(ry
0599デフォルトの名無しさん
2007/09/08(土) 22:05:180600デフォルトの名無しさん
2007/09/08(土) 22:18:25サンプルソースついてるし
0601デフォルトの名無しさん
2007/09/08(土) 22:28:55VSで自分が始めて買ったのはVC4stdだったけど
なんか入ってたな
mdi,sdiの作り方の基本みたいな本、後MFCのポスター
VS2005proにもユーザーズガイドとポスターは入ってた気がする
0602デフォルトの名無しさん
2007/09/08(土) 22:32:50確かにサンプルもあるんだけど、なんつーかもうちょっと
面白みが欲しいのよw
ま、MSもその領域には手を出さないことで出版社と共存共栄
ってことなんだろうけど。
でもOSやOfficeなんかでもそうだけど、書店に並ぶ各種解説書
見てると、なんでこのレベルの本に金払わなきゃならんのよって
思うんだよな・・・
0603デフォルトの名無しさん
2007/09/08(土) 22:47:20コンサルティングのサービスを通して個別に提供されたりする。
0604デフォルトの名無しさん
2007/09/08(土) 23:03:10現在日付を表示させるのに
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:300606デフォルトの名無しさん
2007/09/08(土) 23:07:20> ビルドでエラーが出ないようにするにはどうしたらいいでしょうか
正しいコードを書く。
以上。
意地悪だが、質問は正確に。
0607デフォルトの名無しさん
2007/09/08(土) 23:08:47#include <stdio.h>
#include <time.h>
#include "stdafx.h"
↑これは、良くない。
stdafx.hは、各ソースファイルの最初の行に書くこと。
0608デフォルトの名無しさん
2007/09/08(土) 23:14:15timeはコードの中にある
>>604
確かにその回答は正解だ
だが、初心者にはその正しいコードがわからんのだ
>>607
#include "stdafx.h"
これを最初の行に移動したらビルドでエラーが出なくなりました
ありがとうございます。
0609デフォルトの名無しさん
2007/09/08(土) 23:19:030610デフォルトの名無しさん
2007/09/08(土) 23:20:020611606&607
2007/09/08(土) 23:27:42> だが、初心者にはその正しいコードがわからんのだ
そういうことではなくて、問題点をきちんと絞り込もう、ってことだよ。
まず第一に、
ビルドのエラーではなく、ビルドの1ステップのコンパイルのエラー
なのだから、コンパイルでエラーが出ると言うべき。
次に、
コンパイラが出しているエラーの内容をちゃんと見よう。
「識別子が見つかりませんでした」が何を意味しているのかわからないのなら、そういう質問をすること。
意味はわかるが、#includeしたtime.hで定義されてるはずなのに、実際には定義されていないのはどうしてなのかわからないなら、そういう質問をすること。
こうやって問題点を絞り込む習慣を付けないと、いつまでたっても力が付かないよ。
0612デフォルトの名無しさん
2007/09/08(土) 23:30:22カッコ内が文字化け?してるのは漏れだけ?
化けて出てる字はunicodeでU+00A4のように見える。
アンカーにカーソル合わせると表示されるテキストボックスだと
正しく表示されるのに・・・
0613612
2007/09/08(土) 23:32:500614デフォルトの名無しさん
2007/09/08(土) 23:35:02古いブラウザだと化けるんじゃないの?
0615612
2007/09/08(土) 23:45:49Kageで延命してるけどかちゅ自体は古いから
そういう事なんだろうな・・・thx
ってか、IE6(エンコードはS-JIS)で見てみたら
やっぱり化けてる。
Operaだと正しく表示・・・ワケワカメw
0616デフォルトの名無しさん
2007/09/08(土) 23:47:20プリコンパイル済みヘッダファイルの使用(/Yu)について見ておくといい。
エラーが出たのはコンパイル設定の影響であり、
ソース自体は一応間違ってはいない。
0617デフォルトの名無しさん
2007/09/09(日) 01:27:29入れなきゃいけないみたいなんですが
プラットフォームSDKってなんですか?
0618デフォルトの名無しさん
2007/09/09(日) 01:34:26SDK は Software Developlement Kit (ソフトウェア開発キット)
つまり プラットフォームSDK = Windowsのソフトウェアを開発するためのキット っていうそのまんま
0619デフォルトの名無しさん
2007/09/09(日) 01:41:16最新版はPlatform SDKでは直接検索できないので、一応貼っとく
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&DisplayLang=ja
0620617
2007/09/09(日) 02:03:01まとめられたものなんですね
わかりましたありがとうございます
0621デフォルトの名無しさん
2007/09/09(日) 03:03:230622デフォルトの名無しさん
2007/09/09(日) 04:05:04> >>42
> すみません、分かりづらいですねorz
> VC++6ではCやC++のファイルを放り込めば、すぐにビルドの処理に持っていけます
> VC++6ではF7がビルドへのショートカットキーです
>
> VC2005Expressでは、VC++6見たいに、C++のファイルを放り込んでもメニューバーにビルド自体がないため、
> ビルドの処理を実行できません。
> 新規プロジェクトを作成するとメニューバーにビルドが表示され、ビルドが実行できます
> ですので、VC2005では一々プロジェクトを作成しないとビルドが出来ないのかと思い、質問させて頂きました。
>
自分も疑問なのですが これは単体で出来ないのですか?
プロジェクトをいちいち作るのではなく
一つのファイルだけをコンパイルして実行したいのです
0623デフォルトの名無しさん
2007/09/09(日) 04:23:060624デフォルトの名無しさん
2007/09/09(日) 04:37:110625デフォルトの名無しさん
2007/09/09(日) 04:40:080626デフォルトの名無しさん
2007/09/09(日) 04:46:140627デフォルトの名無しさん
2007/09/09(日) 04:50:45以前のヴァージョンのものならできたのですが
ちなみに、以前のヴァージョンのものは持っていません
使ったことがあるだけです
0628デフォルトの名無しさん
2007/09/09(日) 05:18:52つ[cl]
0629デフォルトの名無しさん
2007/09/09(日) 07:14:03ビルド用に1つプロジェクトを作っておき、
そこにファイルを放り込めばいいじゃないか。
必要なくなったら、プロジェクトからファイルを削除、と。
0630デフォルトの名無しさん
2007/09/09(日) 08:57:35いろいろサンプル見ながら初めてDLLを作ってみたのですがデバッグ方法がわかりません
デバッグ開始を押すと、おそらくDLLを使用するプログラムを求められる?のですが
ひとりwikiで配布されているプラグインテスターを指定してデバッグを始めると
インクリメンタルリンクが出来ないのでフルリンクにした、や
デバッグ情報が無いなどの警告が出て、それを無視して始めると落ちてしまいました。
この場合デバッグを行うには、DLL関数を呼び出すテストプログラムを
自分で作らなければいけないんでしょうか?
後、DLL側で作成された文字列などのポインター変数はDLLを解放?した後に
メイン側からアクセスするとやっぱりエラーになるんでしょうか?
0631デフォルトの名無しさん
2007/09/09(日) 09:07:480632デフォルトの名無しさん
2007/09/09(日) 09:08:23わからないことが多すぎ。
まずはDLL開発の一般論をどこかで勉強したほうがいい。
場当たり的に個別のノウハウを身につけても、泥縄になる恐れあり。
0633デフォルトの名無しさん
2007/09/09(日) 10:04:100634デフォルトの名無しさん
2007/09/09(日) 10:13:36DLLについてもっと調べてみます
>>633
ファイル名も引き渡してくれるので色々できそうです
ふと思ったのですがDLLからDLLを呼び出すなんてでき・・
はい、まずはDLLについてちゃんと調べてきます
0635デフォルトの名無しさん
2007/09/09(日) 10:38:34まずは、
MSDNライブラリ等をあたったほうがいいよ。
けっこう美味しい解説があったりするのよ。
0636デフォルトの名無しさん
2007/09/09(日) 11:42:01ReleaseDC(hwnd,hDC);
if (hDC!=NULL)
{
MessageBox(hwnd,"hDC!=NULL","Error",MB_OK | MB_ICONSTOP);
}
これを実行するとメッセージが出るんだけど
どこが変なのかな?
DCハンドル得る→開放 だから
メッセージが出ないと思うんだけど。
もしかしてめちゃくちゃ変なことしてる?
0637デフォルトの名無しさん
2007/09/09(日) 11:54:59C言語から勉強しなおそう。
ReleaseDCしても、
関数に値渡ししているから、
hwndやhDCの値は変らない。
0638デフォルトの名無しさん
2007/09/09(日) 16:24:27勉強しようか迷ってます。
今はWin32とJAVAとC#だけできてれば問題ないんですが今後必要になりそうなら勉強しておこうかと思ってます
0639デフォルトの名無しさん
2007/09/09(日) 18:15:40Windowsが続く限り生き残るんじゃね?
.NETのCLRはCOMで実装されてるらしいし…
挫折しないように頑張ってね!
0640デフォルトの名無しさん
2007/09/09(日) 18:32:17かといってVBは嫌だー、
VJ++ならCOM使うの簡単なんだけど、Sunが横槍入れてあれなんだよなー
ってことで、実はC#ってのは、VJ++の後継なんだ。
JavaというとSunがウルサイから、Javaという名前を使わず、
マイクロソフトお得意の、どんどん自分達流に改造したから、
とってもJava臭い文法や、GUIライブラリになったというわけ。
0641デフォルトの名無しさん
2007/09/09(日) 20:36:430642デフォルトの名無しさん
2007/09/10(月) 08:56:27の「^」って何ですか?
○[STAThreadAttribute]って何ですか?
○gcnewって何ですか?
○refって何ですか?
0643デフォルトの名無しさん
2007/09/10(月) 09:00:520644デフォルトの名無しさん
2007/09/10(月) 09:08:13それでも分からないなら、質問するときには、何が分からないかを書くこと。
0645デフォルトの名無しさん
2007/09/10(月) 11:11:290646デフォルトの名無しさん
2007/09/11(火) 22:10:03VC6.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:580648デフォルトの名無しさん
2007/09/11(火) 22:25:10OnOKでダイアログBを開くのではなく、
ダイアログAのリターンコードを見て、ダイアログBを開く。
0649デフォルトの名無しさん
2007/09/11(火) 22:37:52いくつか方法がないこともないが、一番簡単で近い方法は
ダイアログBを開く直前にダイアログAを非表示にすることだろうな。
0650デフォルトの名無しさん
2007/09/12(水) 00:54:02ありがとうございます。
リターンコードというのがよくわかりませんが、調べてみます。
0651648
2007/09/12(水) 09:12:43ちなみに、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:49int b へ入れて処理をしたいです。
b = (int)a; というソースを書いたところ、
warning C4311: '型キャスト' : ポインタを 'int *' から 'int' へ切り詰めます。
というワーニングになります。
ワーニングがでないキャストの方法ってありますか?
データの一部が欠落するのは承知の上です。
よろしくお願いします
0653デフォルトの名無しさん
2007/09/12(水) 18:07:49つ[pragma warning]
0654デフォルトの名無しさん
2007/09/12(水) 18:10:00b = (int)a;
#pragma warning(default:4311)
0655デフォルトの名無しさん
2007/09/12(水) 18:20:30Windowsヘッダ依存で良いなら、
PtrToIntというマクロも用意されている。
0657デフォルトの名無しさん
2007/09/12(水) 18:39:330658デフォルトの名無しさん
2007/09/12(水) 20:24:06DWORD_PTR, INT_PTR, UINT_PTR, LONG_PTR, ULONG_PTRとか_PTRがつく型はいろいろあるけど、
全部32bit環境なら32bitで、64bitなら64bitなんだよね?これらの型を区別する意味が分からないが。
0659デフォルトの名無しさん
2007/09/12(水) 20:28:580660デフォルトの名無しさん
2007/09/12(水) 20:33:04もともと64bit対応してなかったころのWin32APIで
引数がDWORD(だけどポインタ値やハンドルも許容する場合がある)
引数がUINT(だけどポインタ値やハンドルも許容する場合がある)
…
というのを64bit対応を契機に機械的に
DWORD => DWORD_PTR
UNIT => UINT_PTR
に置き換えただけなんじゃないの?
DWORD_PTRがDWORDのポインタなわけではないし、それ自体に
意味を求めてもしょうがないんじゃ
0661デフォルトの名無しさん
2007/09/12(水) 22:22:29そうだねオブジェクトもみんな同じく型のないポインタでさせばいいね。
間違う奴はただの馬鹿だね。
お前だけやってろよw
0662デフォルトの名無しさん
2007/09/12(水) 22:35:000663デフォルトの名無しさん
2007/09/12(水) 23:32:240664デフォルトの名無しさん
2007/09/12(水) 23:44:030665デフォルトの名無しさん
2007/09/12(水) 23:47:090666あ、スレ違いか
2007/09/12(水) 23:52:260667デフォルトの名無しさん
2007/09/12(水) 23:54:14comment, once, pack、warning かな
#pragma は必要に迫られて使うものなので、一般的に
使われているものかどうかを気にするのは意味がないと思うけど
0668デフォルトの名無しさん
2007/09/13(木) 00:22:060669デフォルトの名無しさん
2007/09/13(木) 16:36:38SendMessage(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アプリケーションのフォルダを作成、又は作ったり、ファイルを作って
アクセスしたりするにはどのように行えば良いのでしょうか?
レジストリが怪しいと思っているのですが・・・
0671デフォルトの名無しさん
2007/09/13(木) 18:45:45アプリケーション用フォルダの位置の取得はSHGetSpecialFolderPathを使う
ファイルの作成、アクセスは自分でやる
0672デフォルトの名無しさん
2007/09/13(木) 21:49:18VC2005を使ってGUIのプログラムを習得しようと思うのですが
フォームアプリケーションを使うのとSDKを使うのと
どちらの方がいいでしょうか?
0673デフォルトの名無しさん
2007/09/13(木) 21:54:21TBS_AUTOTICKSで自動的に付けられる目盛りが、
TBM_SETLINESIZEの値を基準にしていると予想してみる。
0674デフォルトの名無しさん
2007/09/13(木) 22:01:00SDKがお勧め。個人的にはいきなりWTLに突撃するのも面白いと思う。
フォームはC#辺りで慣れてからの方が良い。
C++/CLIも覚えないといけないし。
0675デフォルトの名無しさん
2007/09/13(木) 23:10:32下の簡単なコードがコンパイルできません。
「error C2065: 'printf' : 定義されていない識別子です。」というエラーメッセージです。
コマンドラインで cl xxx.cpp ではコンパイルできます。なぜでしょうか?
----------------------
#include <stdio.h>
#include "stdafx.h"
main(){
printf("hello");
}
0676デフォルトの名無しさん
2007/09/13(木) 23:12:15そういう設定になっているからです。
環境からでも設定を変更すればコンパイルできるようになりますし、
逆にコマンドラインからでもオプションしだいではエラーになるようにできます。
0677デフォルトの名無しさん
2007/09/13(木) 23:13:04#include "stdafx.h"の後に書いてもいいが、
stdafx.hの中に書けば、コンパイル時間短縮になるので、これお薦め。
0678デフォルトの名無しさん
2007/09/13(木) 23:13:36>>607を読め
0679675
2007/09/13(木) 23:20:53どのように設定を変えればいいのでしょうか?
>677
stdafx.h のファイルに
#include <stdio.h>
をいれましたが、同様のエラーです。
0680デフォルトの名無しさん
2007/09/13(木) 23:33:47#include "stdafx.h"
の前の行を削除したか?
ついでに、
main関数の引数・返り値が不正だぞ。
helloと表示するためにprintfを使うのは間違い。
昔のBASICのPRINT文を引きずっている馬鹿の書いた本を参考にするのはヤメレ。
0681デフォルトの名無しさん
2007/09/13(木) 23:35:31とりあえずプリコンパイルヘッダを使うのをやめてみたら?
0682675
2007/09/13(木) 23:37:29コマンドラインでは動くのが、Visual Netの環境だと動かない理由が知りたいのですが・・・
0683675
2007/09/13(木) 23:38:42プリコンパイルヘッダとは?
どうすれば、そのようにできますか?
教えて下さい。
0684デフォルトの名無しさん
2007/09/13(木) 23:43:050685681
2007/09/13(木) 23:44:43ごめん、言葉が違ってた。
正しくは「プリコンパイル済みヘッダー」
場所によっては「プリコンパイル済みのヘッダー」と書かれているかも。
VisualStudio.NET付属のでもいいからMSDNライブラリで検索してみるとか、
目次からVC++の使い方のところを辿って説明のページを見つけるとか、
少しは自分で探そうとしようよ。
0686デフォルトの名無しさん
2007/09/13(木) 23:46:55Wikipediaにだって出てる
ttp://en.wikipedia.org/wiki/Precompiled_header
0687675
2007/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プロジェクトを作るとき、ウィザードで何を選んだ?
0690デフォルトの名無しさん
2007/09/13(木) 23:54:460691675
2007/09/13(木) 23:56:28Win32コンソールアプリケーション
はありません。先ほどはWin32プロジェクト
を選んだのですが、これがいけなかったのでしょうか?
0692デフォルトの名無しさん
2007/09/14(金) 00:04:22VisualStudio.NETのアイコンにソースドロップして起動しビルド。
プロジェクト作りますかには「はい」と答える。
これでどう?
0693デフォルトの名無しさん
2007/09/14(金) 00:04:26VS.NET 2002は、もうアンインストールしちゃったから確認できないけどさ、
2003には、Win32コンソールアプリケーションがあるぞ。
0694669
2007/09/14(金) 17:27:49付きました。XP上では使わない方がいいということでしょうか。
0695デフォルトの名無しさん
2007/09/14(金) 18:54:31WinAPI使ってごりごり書きますか。
難しそうでふんぎり付かないので良い方法ありますか。
0696デフォルトの名無しさん
2007/09/14(金) 19:04:040697デフォルトの名無しさん
2007/09/14(金) 19:17:29そういう事を聞いているのではなくて。
VCでより効率的なGUIアプリケーションの開発方法が聞きたいことです。
0698デフォルトの名無しさん
2007/09/14(金) 19:26:210699デフォルトの名無しさん
2007/09/14(金) 19:35:00いさぎよくあきらめよう
0700デフォルトの名無しさん
2007/09/14(金) 19:54:41あれこれ考えるより先に手が動くようじゃないとプログラムが完成しない。
0701デフォルトの名無しさん
2007/09/14(金) 19:55:21MFCより数倍効率いいよ
他のオープンソースのライブラリも併用すれば.NET Frameworkを超えるよ
でも、全C++使いの2割程度にしか理解できないようなコードになるのが欠点だよ
0702デフォルトの名無しさん
2007/09/14(金) 20:12:38便利なものが色々あるのですね。
考えるより手を動かすを励んでみます。
0703デフォルトの名無しさん
2007/09/14(金) 20:20:44ATL3.0の頃から、どれくらい進化して、使えるものになったの?
Windows専用ではないので同列に比較できないけど、wxWidgetsはどうですか?
マイクロソフトはDelphiの神様を引き抜いてVBチームに入れるだけでなく、
VCLのライセンスを買って、VC++に組込んで欲しいわ、ほんとに。
0704デフォルトの名無しさん
2007/09/15(土) 00:28:29あんなもの買い取るバカいねーよ
あの程度なら自作できるっちゅーねん
0705デフォルトの名無しさん
2007/09/15(土) 00:50:390706デフォルトの名無しさん
2007/09/15(土) 18:46:030707デフォルトの名無しさん
2007/09/15(土) 19:28:00Platform SDKって
インストールできないんですか?
(´・ω・`)
0708デフォルトの名無しさん
2007/09/15(土) 19:34:56DVDのISOイメージも配布されている。
SDKダウンロードページを「ISO」で検索しる。
0709デフォルトの名無しさん
2007/09/15(土) 19:35:290710デフォルトの名無しさん
2007/09/15(土) 19:47:040711デフォルトの名無しさん
2007/09/15(土) 19:57:160712デフォルトの名無しさん
2007/09/15(土) 19:58:53ごめんC++のスレに書き込むつもりだったのにVisualがついてた
0713デフォルトの名無しさん
2007/09/15(土) 20:08:300714デフォルトの名無しさん
2007/09/15(土) 20:10:310715デフォルトの名無しさん
2007/09/16(日) 01:07:440716デフォルトの名無しさん
2007/09/16(日) 13:20:270717デフォルトの名無しさん
2007/09/16(日) 13:26:210718デフォルトの名無しさん
2007/09/16(日) 15:16:460719デフォルトの名無しさん
2007/09/16(日) 15:22:01いったいどうしたらいいの?
(´・ω・`)
0720デフォルトの名無しさん
2007/09/16(日) 15:30:06VC2005++ExpressでMFCを使えるようにする裏技教えてください。
0721デフォルトの名無しさん
2007/09/16(日) 15:38:560722デフォルトの名無しさん
2007/09/16(日) 15:40:18IDEのサポートはないけどね。
0723デフォルトの名無しさん
2007/09/16(日) 16:06:32>いくつか設定 について詳しく解りやすく解説お願いします。
IDEサポートがないとどうやってexeを作るのですか?
>>721
評価版のどのファイルを持ってくるんですか?
0724デフォルトの名無しさん
2007/09/16(日) 16:09:19サポートはコーディングのためだろ
コンパイルだけならそのままいける
0725デフォルトの名無しさん
2007/09/16(日) 16:43:560726デフォルトの名無しさん
2007/09/16(日) 16:49:060727デフォルトの名無しさん
2007/09/16(日) 16:53:00MicrosoftダウンロードセンターからISOイメージを探せ
0728デフォルトの名無しさん
2007/09/16(日) 16:53:30(´・ω・`)
0729デフォルトの名無しさん
2007/09/16(日) 16:55:010730デフォルトの名無しさん
2007/09/16(日) 17:00:38Express用ヘルプじゃなくてローカルの完全版ヘルプを呼ぶ方法教えて
0731デフォルトの名無しさん
2007/09/16(日) 17:13:52VC++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:150733デフォルトの名無しさん
2007/09/16(日) 17:25:150734デフォルトの名無しさん
2007/09/16(日) 18:14:18>>731
とりあえずVC++5.0なんざ今更使うな。
業務で必要なら、Win2000とのマルチブート環境でも用意しろ。
0735デフォルトの名無しさん
2007/09/16(日) 20:00:24教えるの面倒くさいから、代わりにビルドしてやっから、ソースupしてみ。
>>723
そんなこともわからないなら、金を出して製品版のVC++を買おう。
0736デフォルトの名無しさん
2007/09/16(日) 20:02:16初期のマイクロソフトには「泳げないやつは沈め」って言葉があったそうだよ。
>>720
Visual Studio 2005 Professional か Team Suite の評価版いれて
ビルドすればいいだけ。
ビルドしたものに制限はつかないはず(たぶん)。
0737デフォルトの名無しさん
2007/09/16(日) 20:27:250738デフォルトの名無しさん
2007/09/16(日) 20:29:37内容が違うでしょう。
自分には違いが関係ないなら、アカデミック買わずに、Expressで十分。
0739デフォルトの名無しさん
2007/09/16(日) 20:36:17あんたどんだけ、レベル低いんですかw
0740734
2007/09/16(日) 22:03:20オープンソースのコードを見てると、自分の力不足を痛感するんだよ……
0741デフォルトの名無しさん
2007/09/16(日) 23:01:55上級者とは、俺レベルの人を指す
0742デフォルトの名無しさん
2007/09/16(日) 23:06:250743デフォルトの名無しさん
2007/09/16(日) 23:24:23さては1回もコンパイルしたことがないという落ちだな。
0744デフォルトの名無しさん
2007/09/17(月) 02:28:56アカデミックでも商用利用は禁止されてませんよ。
0745デフォルトの名無しさん
2007/09/17(月) 03:27:06jpgファイルが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お前、OSが割れもんだからそんなこと聞きに来たクズだろ?w
0747デフォルトの名無しさん
2007/09/17(月) 04:02:000748デフォルトの名無しさん
2007/09/17(月) 04:04:11ひろゆきに通報しますた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ありがとう
0751デフォルトの名無しさん
2007/09/17(月) 11:44:290752デフォルトの名無しさん
2007/09/17(月) 12:37:190753720
2007/09/17(月) 14:52:19アニキ、そんな手があったのか。やっぱアニキは頭いいな。
>>745
ど初心者、俺の基地外レス
jpgデータをバイナリリソースとして追加したら良いんじゃねー
そして、それをjpgとして扱う。
0754デフォルトの名無しさん
2007/09/17(月) 15:38:00ResEdit
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ダイアログベースでなきゃいけないんですかね?
0756デフォルトの名無しさん
2007/09/17(月) 19:00:500757745
2007/09/17(月) 19:19:41>jpgデータをバイナリリソースとして追加したら良いんじゃねー
>そして、それをjpgとして扱う。
拡張子消してみろってことかな?確かにそれならできる。
resource.hとhoge.rcに手書きで追加した場合も正常に動作する。
インポートダイアログ見る限りjpgとgifはビットマップと同列になってて
VCからリソースとして追加するとビットマップになるみたい。
今のところjpgとかgifをリソースで使うことは無いから別にいいんだけどなんかすごい気になる。
>>754
ありがとう。でもダイアログも手書きで作れますので。
0758デフォルトの名無しさん
2007/09/17(月) 19:26:58CViewを選んだ場合、CXXXExitControlを表示するにはどうするんですか?
C/C++の文法はわかるレベルです、ただ、MFCのGUIの作成が全く分かりません。
C#みたく、フォームにポトペタできないんで非常に難しく感じています。
0759デフォルトの名無しさん
2007/09/17(月) 19:33:570760デフォルトの名無しさん
2007/09/17(月) 19:39:29Create
0761デフォルトの名無しさん
2007/09/17(月) 19:46:41APIレベルでサポートしている画像はbitmapだけだから、全ての画像はbitmap(DIB)に変換した
ものをリソースとして持つんじゃないと**妄想**してみる
0762デフォルトの名無しさん
2007/09/17(月) 20:15:30気が付いたら自動生成されたところを除いても600行以上書いてた
今までに書いた一番長いプログラムでも1500行ぐらい(C言語で多分数ヶ月かけて書いた)なのに
1日でこんなに書いたの初めてだわ
めっちゃ面白い
やっぱCUIとGUIじゃ達成感とかが違いまくるな
0763デフォルトの名無しさん
2007/09/17(月) 20:18:250764デフォルトの名無しさん
2007/09/17(月) 21:30:420765デフォルトの名無しさん
2007/09/17(月) 23:19:28プロパティウィンドウというか
とにかく、そこのフォントを変えたいんですけど
設定の表示欄的にはあれは何て名前なんですか?
(´・ω・`)
0766デフォルトの名無しさん
2007/09/17(月) 23:29:320767デフォルトの名無しさん
2007/09/18(火) 00:18:39(´・ω・`)
0768デフォルトの名無しさん
2007/09/18(火) 00:32:31しかしこれ色んなところが変わるな。
0769デフォルトの名無しさん
2007/09/18(火) 00:53:10CHogeView::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:52OnCreateで作成する
OnSizeでサイズを再調整するのを忘れないように
OnCreateの前にもOnSizeが呼ばれるので注意
0771デフォルトの名無しさん
2007/09/18(火) 23:09:05OnCreate?
Createをオーバーライドしました。
RECT ClientRect;
GetClientRect(&ClientRect);
m_CEdit.Create(WS_CHILD | WS_VISIBLE,ClientRect,this,9999);
で実行しましたが、エディットコントロールがViewに配置されているようには見えません。
いや〜VC++ってホントに難しいですね
けど、ネイティブへの憧れがあるからがんばりますのでご助言願います。
0772デフォルトの名無しさん
2007/09/19(水) 00:27:40コンボボックスがドロップダウンしません。あれはコードを書かなくてもドロップダウンする
のでしょうか。
0773デフォルトの名無しさん
2007/09/19(水) 00:32:46その作り方だとサイズは0,0になるけど、
コントロール自体はきちんと作成されているからSpy++で確認してみて。
0774デフォルトの名無しさん
2007/09/19(水) 00:48:05wc.hbrBackground = (HBRUSH)(WHITE_BRUSH);
だとクライアント領域が透けて下がみえるので本を参考に
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
に直しましたが本がなかったらお手上げでした。
0775デフォルトの名無しさん
2007/09/19(水) 01:10:27>>772
コモンコントロール6.0より前では、リスト内容が無くてもドロップダウンされていた。
XP+テーマ適用の6.0以降ではリスト内容に依存するようになるため、そういう動作になる。
アイテムさえ追加されればドロップダウンされるので、慌てる必要はない。
0776デフォルトの名無しさん
2007/09/19(水) 01:45:550777デフォルトの名無しさん
2007/09/19(水) 15:38:00「!読み込めませんでした」
となって、操作できなくなってしまったんですが、どうしたら直りますか?
初歩的な質問かもしれませんが、よろしくお願いします。
0778デフォルトの名無しさん
2007/09/19(水) 17:21:20rcファイル自体を別の形式(テキストとか)で開いている、
ファイルの記述にエラーがある、とかかなあ?
0779デフォルトの名無しさん
2007/09/23(日) 07:30:19うまくいきません。WM_PAINTが来たらDrawTicks(hWnd, 50)を呼び出してますが
0°の位置(3時)の目盛りしか表示されません。ソースは次に示します。
0780デフォルトの名無しさん
2007/09/23(日) 07:31:03{
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:510782デフォルトの名無しさん
2007/09/23(日) 08:26:070783デフォルトの名無しさん
2007/09/23(日) 08:29:39DegToRad()は?
0784デフォルトの名無しさん
2007/09/23(日) 09:04:47BeginPaintは更新領域をクリッピング領域に変換、
EndPaintは更新領域を全てクリアする。
よって、二回目以降のDrawTickは全てクリップされて実際には描画されない。
BeginPaintとEndPaintは、
本来WM_PAINTハンドラの最初と最後に一回ずつ呼び出して使う。
0785デフォルトの名無しさん
2007/09/23(日) 12:28:53しまいました。
以下のようなエラーがでてしまいます。
c:\program files\microsoft sdks\windows\v6.0\samples\multimedia\directshow\baseclasses\refclock.h(76) :
error C2504: 'IReferenceClockTimerControl' : 定義されていない基本クラスが宣言されています。
最後に成功したときから、プロジェクトの内容、設定ともに変更していないはずなのですが・・・。
こういう場合、原因としてどこを疑えばイイんでしょうか?
0786779
2007/09/23(日) 13:19:220787デフォルトの名無しさん
2007/09/24(月) 00:19:060788785
2007/09/25(火) 07:38:23Dshow.hファイルが複数あり、オプションでWindowsSDKのインクルードフォルダの
優先順位を上げてやればビルドできるようになりました。
それまではDirectX9.0のDShow.hがビルド時に参照されてしまっていたのが問題
だったようです。
0789デフォルトの名無しさん
2007/09/25(火) 16:47:11if ( a == 5 ) {
iroiro();
}
aがWPARAM型変数、環境はWin32です。
0790デフォルトの名無しさん
2007/09/25(火) 20:02:05メッセージの種類による。
値を切り出すのにマクロが用意されている場合は、それの使用を推奨。
特に無い場合は、普通に比較なりすればいいと思う。
0791デフォルトの名無しさん
2007/09/25(火) 20:24:13なるへそ。
ありがとうございました!
0792デフォルトの名無しさん
2007/09/30(日) 10:19:08TCHARをそのままファイルにテキスト出力しようとすると、
アルファベットの部分は変換されずに出力されますが、
日本語の部分は???に変換されます。
0793デフォルトの名無しさん
2007/09/30(日) 10:27:470794デフォルトの名無しさん
2007/09/30(日) 10:40:36そのまま出力したら、コンパイル時の設定に従って
UTF-16LEかShift_JIS(日本語なら)になるはずだが。
0795792
2007/09/30(日) 11:22:28コンパイルの設定はVisual Stdio2005のデフォルトなので、UTF-16LEかと思われます。
OSはWindows2000のSP4を用いています。
0796デフォルトの名無しさん
2007/09/30(日) 12:27:19_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ウホッ。。ホントだ。間隔入れ直したらあっさりコンパイルできますた。
ありがとうございました。
0800デフォルトの名無しさん
2007/10/04(木) 19:32:20作成したプログラムを配布する際に
どのようなランタイムライブラリが必要かについて悩んでいます。
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はどうやったら抑制できるでしょうか?
ぐぐって、#define _CRT_SECURE_NO_DEPRECATE
を先頭でやってみましたがダメでした。
ちなみに自分で書いたソースではなく、本のCDに入ってたdxutil.cppで出ます。
無視してもいいのですが、あまりに大量に出るので…。
0803デフォルトの名無しさん
2007/10/04(木) 21:50:55先頭ってどのファイルの先頭?
もし、プロジェクトを作っていてstdafx.hがあったら、
stdafx.hの先頭でないと駄目だよ。
0804デフォルトの名無しさん
2007/10/04(木) 22:22:31#includeよりも前に書かないとダメなのね。
0805デフォルトの名無しさん
2007/10/04(木) 23:21:560806デフォルトの名無しさん
2007/10/05(金) 14:31:29テキストボックスを拡張したタイプです。
WM_DROPFILESイベントでOnDropFilesメソッドを作ったのですが
IEでこのコンポーネントを使った場合に、このイベントが発生してくれません。
VB6.0のフォームに貼り付けると問題ありません。
IEでもファイルのドロップイベントが発生するようにするためには
どうしたらよいでしょうか?
申し訳ありませんがよろしくお願いいたします。
0807デフォルトの名無しさん
2007/10/05(金) 23:05:20DragAcceptFiles();
とか?
0808デフォルトの名無しさん
2007/10/06(土) 07:57:15ありがとうございます。
そのコードは記述しております。VBのフォームに貼り付けた場合は
イベントが発生しているので問題ないかと思います。
どうやらいくつかのイベントはIE(コンテナ?)が処理してしまって
ActiveXコントロールのほうには来てくれないようです。
http://www.hi-ho.ne.jp/babaq/bfup.html
やりたいのは↑みたいなことなのですが
これはリストボックスにドラッグできますので
できないということはないはずなのですが・・・
0809デフォルトの名無しさん
2007/10/06(土) 16:35:19しかし、VC++2005SP1のランタイムを入れてるやつなんて
ほとんどいないという罠
0810デフォルトの名無しさん
2007/10/06(土) 17:03:57自分の環境では 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#define MAT(m,r,c) (m)[(r)*4+(c)]
これは1次元配列の(r)*4+(c)を参照する、ということなのでしょうか・・・
こういう表現の仕方に今まで触れていなかったので混乱してしまって
0816デフォルトの名無しさん
2007/10/06(土) 20:17:26ブレークポイントで確認して値見て見ればいいじゃん
0817デフォルトの名無しさん
2007/10/06(土) 20:28:16そういうことまで聴いてしまってすいませんでした
あと、ここはVCスレだったのですね…他で伺うことにします。
0818デフォルトの名無しさん
2007/10/06(土) 21:14:48当ホーム・ページの一部または全部を無断で複写、複製、転載あるいはコンピュータ等のファイルに保存することを禁じます。
って記載されたんだけどどういうこと?本文にソースを入力して保存しましょうって書いてる
ところもあるんだけど。
0819デフォルトの名無しさん
2007/10/06(土) 21:29:270820デフォルトの名無しさん
2007/10/06(土) 22:51:50「無断で・・・することを禁じます。」って書いてあるんでしょ?
「本文にソースを入力して保存しましょうって書いてる」のならば、
それは「無断」ではなく、許可を得てやってることになるから問題ないのでは?
0821デフォルトの名無しさん
2007/10/06(土) 23:07:15のがいいかと思いまして。といっても、本は何冊か持ってますけどね。
>>820 なるほど、そう考えれば矛盾はないことになるのかな。
0822名無しさん(新規)
2007/10/07(日) 10:58:15WindowsMeへのインストール出来るVisual Studio(Visual C)ってあるんでしょうか?
色々調べたけどWindows2000なら対応しているものもあるのですが、
Meだと色々制限あるようでよくわかりません。
そんなに機能は求めなくて、C言語が実行できる環境が欲しいだけなのですが、どなたか回答お願いします。
0823デフォルトの名無しさん
2007/10/07(日) 11:03:38ボーランドC++
BCC developerがいいよ
無料
0824デフォルトの名無しさん
2007/10/07(日) 12:53:35はだめだろうか。
0825デフォルトの名無しさん
2007/10/07(日) 23:36:18Cと同じように編集したいんだけど
そういう設定ってどこかにないかな?
たとえば .dx とか拡張子があったら
それをCと同じように色つけたりさせていじくりたいの
0826デフォルトの名無しさん
2007/10/08(月) 02:58:58トークン連結演算子と文字列化演算子でググれ。
0827デフォルトの名無しさん
2007/10/08(月) 09:01:31ツール - オプション - テキストエディタ - ファイル拡張子
0828デフォルトの名無しさん
2007/10/09(火) 13:18:33VirtualPCかVMwareくらい使って、簡単に検証する環境を用意したほうがいい。
>>814
マニュアルを見るか、プリプロセッサの出力を見ろ。
>>815
マクロはマクロでしかなく、そのマクロを使って初めて、コードに化ける。
マクロの引数に何が渡されるのか分からない状態では、何とも言えぬ。
>>821
無料の解説サイトは、しょせんは無料。
プロのインストラクターは、ただで教えたりはしない。
一部の人達が市販本を書いてくれているので、
それを読むべし。
0829デフォルトの名無しさん
2007/10/09(火) 13:19:35WindowsMeに固執する理由がなければ、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手順を手取り足取り教えろってか? 逝ってよし。
しかも、Warez関連だな。逝ってよし。
自分で1からコードを書いてDLLを作って、
基本的なノウハウを身につけてから出直したほうがいい。
0832デフォルトの名無しさん
2007/10/09(火) 20:45:120833830
2007/10/09(火) 20:46:55超初心者質問スレと聞いてきたのですがさすがにレベルが低すぎましたか。
わかりました。自力でがんばってみます。
後、Peer to Peer=Warezと言う考えは改めたほうがいいです^^;
0834デフォルトの名無しさん
2007/10/09(火) 20:56:53へ?何も考えずに Visual C++ 2005 でビルドできるけど?
ソリューションのあるディレクトリの一つ上の階層に
dll ができるし、インポートライブラリは release 以下にできる。
そのへんはプロジェクトのプロパティ見ればわかる。
0835デフォルトの名無しさん
2007/10/09(火) 21:04:05最初からあったので生成されていないと勘違いしていました。
ありがとうございました。
0836デフォルトの名無しさん
2007/10/09(火) 21:40:21> 超初心者質問スレと聞いてきたのですがさすがにレベルが低すぎましたか。
そういう問題じゃぁない。
VC++の超初心者はOKだが、
質問の超初心者はNGなんだよ。
> 後、Peer to Peer=Warezと言う考えは改めたほうがいいです^^;
なんだその口の利き方は。気をつけろ。
そのDLLはwarezと関係ないのか?
不正に入手したゲームをネット対戦するためのDLLじゃないか?
0837デフォルトの名無しさん
2007/10/09(火) 21:40:57C++にはC#のように、
this.pictureBox1.Image = Image.FromFile(@"C:\sample.bmp");
といったふうに簡単にはできないのでしょうか?
0838デフォルトの名無しさん
2007/10/09(火) 21:46:520839デフォルトの名無しさん
2007/10/09(火) 21:51:570840デフォルトの名無しさん
2007/10/09(火) 22:01:41サンプルをください!
0841デフォルトの名無しさん
2007/10/09(火) 22:01:43それはBuilderの書き方ではないでしょうか?
0842デフォルトの名無しさん
2007/10/09(火) 22:10:19> 不正に入手したゲームをネット対戦するためのDLLじゃないか?
少なくともここはそれ専用の質問スレではないのでよそで質問してください。
ソフ板かム板のスレ立てるまでもない〜で誘導してもらっても良いかもしれません。
それと言葉使いには気をつけましょう。
気に入らない質問・言葉使いの悪い質問の場合、回答者によっては回答を控えることも考えられます。
より良い回答をもらうためにも言葉使いには気をつけた方が無難です。
どこの質問スレでもそうですが回答側が絶対、と思われてる人もいるのでなおさらです。
もちろん質問者を主と考える回答者もいますが全部が全部そうとは限らないので気をつけてください。
質問者に一方的な敬語を要求し、回答者は威圧的な口語で構わないという雰囲気があるスレでは特に気をつけてください。
0843デフォルトの名無しさん
2007/10/09(火) 22:20:06おまいみたいな面倒臭がりには、System.Net.WebClient.UploadFileで十分だ。
wininetに拘るなら、HTTP絡みのRFCを一通り読め。
0844デフォルトの名無しさん
2007/10/09(火) 22:27:52http://homepage2.nifty.com/igat/igapyon/diary/2002/ig021205.html
0845デフォルトの名無しさん
2007/10/09(火) 22:28:56pictureBox1->image=System::Drawing::Image::FromFile("C:\\Sample.jpg");
でよかったんですね
なんかすごくめんどくさいです
0846デフォルトの名無しさん
2007/10/09(火) 22:55:49お前みたいな馬鹿は消えろ。
0847デフォルトの名無しさん
2007/10/09(火) 23:17:16最初の質問時にC++/CLIと書いておくこと。これ非常に重要。
0848デフォルトの名無しさん
2007/10/10(水) 00:02:37そんなこと言ったらだめだよ
>>836さんに「なんだその口の利き方は。気をつけろ。」って怒られちゃうよ
0849デフォルトの名無しさん
2007/10/10(水) 00:03:470850デフォルトの名無しさん
2007/10/10(水) 07:13:320851デフォルトの名無しさん
2007/10/10(水) 07:35:110852デフォルトの名無しさん
2007/10/11(木) 15:13:38明らかに質問者の口の利き方はいい(VC++にはありえないほど初心者みたいだが)
最近じゃお礼も言わないでいくやつや、質問に答えてくれないから死ねとかいうやつもいるしな。
逆に回答者のほうが口の聞き方から小学生みたいに見えるぞ。
DLLみたかぎり割れとはまったく関係ないようだしな。
P2Pはすばらしい通信方式だからすぐ割れと決め付けるのはよくない。
最近一部で人気のスカイプもP2Pを使ってるおかげだ。
0853デフォルトの名無しさん
2007/10/11(木) 15:22:02ファイルだけもらって別の掲示板で質問するんじゃ配布してる人に失礼だし、
ここはサポートセンターじゃないよ
0854デフォルトの名無しさん
2007/10/11(木) 15:46:16〜ニーチェ〜
0855デフォルトの名無しさん
2007/10/11(木) 16:18:09> DLLみたかぎり割れとはまったく関係ないようだしな。
ゲーム機エミュレータで通信対戦をするのに特化したDLLだよ。
> P2Pはすばらしい通信方式だからすぐ割れと決め付けるのはよくない。
TCP/IPが産まれたときから、ピア-to-ピア で通信するのが当たり前なのだが。
いまさらP2Pなんて言う連中は、数十年も昔の考え方のままだね。
0856デフォルトの名無しさん
2007/10/11(木) 16:38:31> いまさらP2Pなんて言う連中は、数十年も昔の考え方のままだね。
なるほど、ということはやっぱり「Peer to Peer=Warezと言う考えは改めたほうがいいです」
てのは間違ってなかったんだな。
0857デフォルトの名無しさん
2007/10/11(木) 16:57:46無料配布されているソースを(VC++で)コンパイルするにはどうすればいいのか?
で、試したことは書いてあるし結局ただの勘違いだったんだから>>834のような回答すればいいんじゃないか。
URLはただの参考だし
くだ質スレで回答者だからって偉そうにしてるやつはおかしい。
0858デフォルトの名無しさん
2007/10/11(木) 17:03:31誰もP2P=Warezだなんて言ってないな。
ゲーム機エミュレータだからwarez関連なんだろ。
>>857
回答者だからではなく、キツい口調で言わないと分からない人が相手だから、キツい口調にしてる。
0859デフォルトの名無しさん
2007/10/11(木) 17:33:230860↑
2007/10/11(木) 17:34:110861デフォルトの名無しさん
2007/10/11(木) 17:48:250862デフォルトの名無しさん
2007/10/11(木) 18:06:06>VC++の超初心者はOKだが、
>質問の超初心者はNGなんだよ。
>
>そのDLLはwarezと関係ないのか?
>不正に入手したゲームをネット対戦するためのDLLじゃないか?
これは問題ないと思うが
>なんだその口の利き方は。気をつけろ。
これはキツい口調とかそれ以前に自分が偉いと思ってる小学生みたいじゃねw
0863デフォルトの名無しさん
2007/10/11(木) 18:07:12VC++の超初心者・質問の初心者はOKだが、
逆切れする超初心者はNGなんだよ。
0864デフォルトの名無しさん
2007/10/11(木) 18:07:56ぎゃあああああああああああああああああ!!!!!!!!1
0865デフォルトの名無しさん
2007/10/11(木) 18:09:220866デフォルトの名無しさん
2007/10/11(木) 18:19:45> これはキツい口調とかそれ以前に自分が偉いと思ってる小学生みたいじゃねw
確かにね。
エスパー何とかって質問スレのテンプレの意図を汲むと
余裕のない回答者も嫌われる質問者と同じくらいうざいね。
0867デフォルトの名無しさん
2007/10/11(木) 18:58:03真に余裕があって優しい先輩なのだが。
0868デフォルトの名無しさん
2007/10/11(木) 19:19:01ググれっていう人と答えは教えないけど調べ方を教える人。
0869デフォルトの名無しさん
2007/10/11(木) 19:23:320870デフォルトの名無しさん
2007/10/11(木) 22:40:210871デフォルトの名無しさん
2007/10/12(金) 03:36:190872デフォルトの名無しさん
2007/10/12(金) 07:59:240873デフォルトの名無しさん
2007/10/12(金) 22:00:00yahooでもinfoでもどこで検索しても同じですよ
0874デフォルトの名無しさん
2007/10/12(金) 22:02:32書き込み時間に敬意を評したい
0875デフォルトの名無しさん
2007/10/12(金) 22:03:52ググれ
0876デフォルトの名無しさん
2007/10/12(金) 22:22:40基礎はマニュアルや参考書を読んで勉強すべき。
ググったけど、わかりませんでした
という相談を受けて、
たりめーだ、マニュアルのすぐわかるところに書いてあるぞ。
だから誰もWebで解説したりブログに書いたりしねーんだよ。
と怒鳴ることも多々。
0877デフォルトの名無しさん
2007/10/12(金) 22:29:35油性フェルトペンのことを「マジック」
ステープラーのことを「ホッチキス」
セロハンテープのことを「セロテープ」
コピーのことを「ゼロックス」
商標の一般名詞化ってやつ。
0878デフォルトの名無しさん
2007/10/12(金) 22:48:330879デフォルトの名無しさん
2007/10/12(金) 23:03:32代名詞だからさ。
そんくらい、わかれよ。
0880デフォルトの名無しさん
2007/10/13(土) 00:13:21どうやって生成するのがお勧めでしょうか?
0881デフォルトの名無しさん
2007/10/13(土) 01:52:25テキストエディタを作る場合はやはりCEditViewを選択するんでしょうか?
0882デフォルトの名無しさん
2007/10/13(土) 09:52:48しっかりしたものを作りたいならCEditでは使い物にならない。
試しに「こんなもんか」程度のものを作りたいならご自由に。
0883デフォルトの名無しさん
2007/10/13(土) 10:01:120884デフォルトの名無しさん
2007/10/13(土) 11:11:10でエラーが出ます。何かインクルードしないといけないようですが
何をインクルードすればよいでしょうか?
0885デフォルトの名無しさん
2007/10/13(土) 11:15:10直接インクルードファイル検索してもいいし
ネットで検索してもいいし
0886デフォルトの名無しさん
2007/10/13(土) 11:19:05http://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早速ありがとうございます。できました。
実は
http://blogs.yahoo.co.jp/jyouga/folder/315904.html
のソースをコピペして動かしてみたいのですが
今度は
SetBrowserEvents
が定義されていないというコンパイルエラーになります。
ググって見ても引っかからないので独自関数だと思うのですが
ここはどう実装すればいいでしょうか?
0888デフォルトの名無しさん
2007/10/13(土) 12:20:23自分が何をやっているのか理解せずにコピペするなよ。
だいたい、部分的に要点だけ書いたブログ記事を見て、
それで自分でプログラムが書けないのなら、前提知識が
なさすぎるってことだよ。いまは諦めな。
0889デフォルトの名無しさん
2007/10/13(土) 12:22:58あんたアフォですか?
どう実装すればって、そんなのはどういう動作を期待しているかわかるおまえしか
わからんだろ?
0890デフォルトの名無しさん
2007/10/13(土) 13:27:38すみません。
頭を使うのは苦手でして・・・
0891デフォルトの名無しさん
2007/10/13(土) 13:37:39プログラミング無理
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:570894デフォルトの名無しさん
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なんでコンパイルエラーにならないんだよおおおおおおおおおお
0896デフォルトの名無しさん
2007/10/13(土) 18:23:040897デフォルトの名無しさん
2007/10/13(土) 18:33:15予約されてるってだけだからな。
0898デフォルトの名無しさん
2007/10/13(土) 21:37:43環境 : 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ポインタ・関数ポインタはIntPtrで渡せばいいんじゃね?
0900デフォルトの名無しさん
2007/10/13(土) 22:54:20Viewのヘッダーをインクルードするとコンパイルエラーでるんですが
0901デフォルトの名無しさん
2007/10/13(土) 23:43:230902デフォルトの名無しさん
2007/10/14(日) 00:11:39エディットボックスで入力制限が行いたくて、困っています。
全角入力を不可にしたいんです。ImmDisableIMEを使うと無効にはなりますが、
このエディットボックスでは無効、このエディットボックスでは有効、という
ようにしたいんです。
0903デフォルトの名無しさん
2007/10/14(日) 00:17:27EditBox毎にImmDisableIMEを使えばいいじゃん。
0904デフォルトの名無しさん
2007/10/14(日) 01:34:00Stringでいけたぜ(`・ω・´)サンキュー
IntPtrはまだ試してないけどググったら文献出てきたからいける予感
0905デフォルトの名無しさん
2007/10/14(日) 01:38:36昔はC++のクラスをVBから使うためには、COMを使わないといけなかったんだよ・・・。
0906デフォルトの名無しさん
2007/10/14(日) 08:57:20関数ポインタよりもデリゲート使ったほうがいいんじゃね?
その他のポインタも、C#でいうref/out引数で十分なことが多い気がする。
配列なら当然C++/CLIではarrayね。
0907デフォルトの名無しさん
2007/10/14(日) 09:56:34ifstreamと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]
このようなファイルを読み込ませると、最後の行で必ず例外が発生します。
0908907
2007/10/14(日) 09:57:460909デフォルトの名無しさん
2007/10/14(日) 10:47:580910デフォルトの名無しさん
2007/10/14(日) 12:55:16少なくとも超初心者ならば、
プロが作ったライブラリの間違いを探す前に、
自分の書いたコードの間違いを探そうぜ。
VCのマニュアルには、
> 要素を何も抽出しない場合、この関数は setstate(failbit) を呼び出します。
なんて書いてあるぞ。
つまり、あなたがgetlineを選択したこと、もしくは、使い方が悪い。
0911デフォルトの名無しさん
2007/10/14(日) 13:47:240912デフォルトの名無しさん
2007/10/14(日) 13:53:340913デフォルトの名無しさん
2007/10/14(日) 13:55:390914デフォルトの名無しさん
2007/10/14(日) 14:39:37MFCしか使えないという縛りがないのであれば、
別途、メール送受信のライブラリを使えばいい。
0915デフォルトの名無しさん
2007/10/14(日) 15:38:19日本語の表示に若干苦戦しています。
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よくわからんけどそれぞの関数使う直前で設定しちゃ駄目なの?w
(ホントによく知らんw)
0917デフォルトの名無しさん
2007/10/14(日) 16:04:04C++の入門書に、
Cの入出力ライブラリと、C++のストリームライブラリは、混ぜて使ってはいけない
というようなことが書いてあるから、試したこともないなぁ。
0918デフォルトの名無しさん
2007/10/14(日) 16:23:39その問題を最小のコードで書いてみてよ。
自分が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どこか参考になるサイトはご存知でしょうか?
探しているのですが、なかなか見つけられません。
>>914
別途ライブラリというのはフリーのライブラリでしょうか?
それならば知っていますが、ATLやなんかで簡単にできる
やつはないのでしょうか?
0920915
2007/10/14(日) 16:29:22wcoutを取ったんですが、ファイル操作の段階で
また問題が出たので、質問してみました。
で、また調べた結果、ファイルの場合は別途回避方法を見つけました。
_setmode( _fileno( pFile ), _O_WTEXT ) ;
オープンしたファイルポインタをsetmodeでUTF16を指定してやると
いままで失敗していたfputwsが正常に動作するようになりました。
結局、wcout、wprintfの同居出来ませんでしたが・・・
レスありがとうございます。
0922デフォルトの名無しさん
2007/10/14(日) 16:35:26> どこか参考になるサイトはご存知でしょうか?
Webでタダで見れるものだけで、済まそうとするな。
下手に自前で作るな。とくに他所様に迷惑をかける可能性のあるものは、な。
> 別途ライブラリというのはフリーのライブラリでしょうか?
フリーかどうかは、関係ない。
品質が確かなものを選んで使うべし。
0923デフォルトの名無しさん
2007/10/14(日) 16:44:38ちょ、話が違うじゃないか。
0924915
2007/10/14(日) 16:53:06質問したときには、wprintfがうまく行けばfputwsもうまく行く
と思っていたんですが、たしかにvswprintf_sや他のコンソールに
出力しない文字列操作関数は動作していました。
コンソールの出力の問題だけだったかもしれません。
ちなみに
_setmode( _fileno( stdout ), _O_WTEXT )
をやったらimbueをすると落ちてしまいました。
謎です・・・。
0925デフォルトの名無しさん
2007/10/14(日) 16:58:090926デフォルトの名無しさん
2007/10/14(日) 17:27:39そういうサイトは知らないってことですね。わかりました。
>品質が確かなものを選んで使うべし。
確かにそう思います。今となってはフリーだとシェアだの
ライセンスだの、関係ないと思ってます。
>925
勉強したかったので。参考書とか手に入ればいいんですが、
近くの本屋じゃ「できる〜」しか売ってないし、
ネットだと中身が見れなから嫌だし・・・。
で、漠然としてるので、こう、なんていうんでしょう、クラスとか
でMFCが提供してたり、こんな感じで作るわけですよ、的な
ことが書いてあるサイトがあったらいいなと。
0927デフォルトの名無しさん
2007/10/14(日) 17:31:26既に理解していると思うけど、
Cの入出力ストリームのワイド版は、引数などでやりとりするのはワイド文字列だけど、ファイルに書くのはマルチバイト文字列。
C++のiostreamのワイド版は、引数とファイルの両方がワイド文字列。
だから混在させると、マルチバイト文字列とワイド文字列が混在したファイルを出力したり、
マルチバイト文字列をワイド文字列として読込もうとして、バッファをオーバーランしたりするの。
0928デフォルトの名無しさん
2007/10/14(日) 17:43:03> そういうサイトは知らないってことですね。わかりました。
正しい道を示して、方向転換を促す人よりも、
間違った道へ進もうとしていても、そのまま具体的な手順を教えて、奈落の底に突き落とす人のほうが、
あなたにとっては、好ましいアドバイスのようだな。
OK。ならば悪魔の入れ知恵をしてやろう。
sourceforge.netへ行って、
自分が作ろうとしているプログラムに近いものを見つけて、
ソースコードをパクれ。
0929926
2007/10/14(日) 18:06:22悪の入れ知恵ありがとうございます。
928さんの示していただいた道が正しいかどうか、それを判断するのは
私です。お気を使ってくださり922のような発言をしていただいたのに
は感謝します。ただ、手詰まり困った挙句「何か手がかりになるもの」
を求めここにきたわけです。方向性を変えてくださるつもりでの922の
発言だったようですが、僕的に、そこで道が閉ざされてしまったわけ
です。
それに、僕はソースをパクるのはあまり好きじゃありません。もちろん
いいな、と思ったものは流用させていただいたりすることもありますが
基本はいろいろなサイトやソースを参考にし、納得した後に自分なりに
作ったりしています。今回の場合、最終的には928さんの示した道に進む
ことにならざるを得ないだろうとも思っています。
0930デフォルトの名無しさん
2007/10/14(日) 18:21:50簡易メール転送プロトコルって言うぐらいだからね
0931デフォルトの名無しさん
2007/10/14(日) 18:31:260932デフォルトの名無しさん
2007/10/14(日) 18:32:25簡単なようだけど、相互運用性とかセキュリティとか考えると、すごく大変。
0933デフォルトの名無しさん
2007/10/14(日) 18:35:07メールの送受信はネットワークプログラムの基礎だと思うが?
つないでリスト取って本文取るだけ。
0934デフォルトの名無しさん
2007/10/14(日) 18:39:48C++DLL側のChoge_dllにSTLを使ったメンバ変数を使ったら「マネージドじゃありません」って言われた('A`)
>>898の状況下でSTL使いまくる方法を誰か教えて下さい('A`)
0935デフォルトの名無しさん
2007/10/14(日) 18:42:34VS2005買え
0936926
2007/10/14(日) 18:52:25ほんともうみなさん、ご迷惑をおかけしてすみません。
甚だしい奴でごめんなさい。
>>931
猫は見ました。というか、猫しか詳しそうなところがなくて。
他のところはどうなんだろうと、見てみたかったんです。
「え、つーかこういうやり方が普通なのか?なんか他に
便利君とか揃ってないのか?つーか他のやり方は??」
とか、そんな感じだったんです。
0937デフォルトの名無しさん
2007/10/14(日) 18:54:48VCは楽しないできっちり作りこむためにある
0938デフォルトの名無しさん
2007/10/14(日) 18:57:590939デフォルトの名無しさん
2007/10/15(月) 00:29:35画面周りはポトペタでサクッと作るのがいい
0940デフォルトの名無しさん
2007/10/15(月) 01:20:13同じ症状の事例ではないがここに書いてある対処法も試してみたらどう?
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もさっりが酷いもっさりがもっさりが我慢ならないもっさりが
できるだけ起動したくねーし
0942デフォルトの名無しさん
2007/10/15(月) 07:58:330943デフォルトの名無しさん
2007/10/15(月) 08:18:540944デフォルトの名無しさん
2007/10/15(月) 11:27:49ほかのものに変ることってできるんでしょうか
VS2005を使っていて 使いたいのコンパイラはDMCです
0945デフォルトの名無しさん
2007/10/15(月) 13:17:13自分のやりたいことくらい的確に説明しようぜ。
0946デフォルトの名無しさん
2007/10/16(火) 21:23:170947デフォルトの名無しさん
2007/10/16(火) 21:35:560948デフォルトの名無しさん
2007/10/17(水) 09:42:060949デフォルトの名無しさん
2007/10/17(水) 13:49:210950デフォルトの名無しさん
2007/10/17(水) 16:56:380951デフォルトの名無しさん
2007/10/17(水) 22:10:490952デフォルトの名無しさん
2007/10/19(金) 23:33:260953デフォルトの名無しさん
2007/10/24(水) 16:34:24どこを変更すれば直りますかね?
0954デフォルトの名無しさん
2007/10/27(土) 09:18:150955デフォルトの名無しさん
2007/10/28(日) 01:04:10Visual Studio 2005とPlatform SDK をインストール後、いくつかのサイトに載っているように、設定を行っていました。
で、corewin_express.vspropsを書き換えているときに(MSのサイトでは手順4)、
誤って、CoreWin.vspropsの方を書き換えてしまいました。
CoreWin.vsprops内の
AdditionalDependencies=
以降の内容を教えていただけませんか?
結構長かった気がするんですが。
0956デフォルトの名無しさん
2007/10/28(日) 01:09:57インストールやり直せばいいじゃん。
0957デフォルトの名無しさん
2007/10/28(日) 01:43:57フリーで公開している日本人の方はいませんかね?
CPにたくさんあるが全て外国人・・・
0958まさか日本語の説明がないと使えないなんて言わないよなw
2007/10/29(月) 12:26:54何故日本人でないといけないの?
理由如何によっては知り合いがシンプルなのを作っているから紹介しようか?
0959デフォルトの名無しさん
2007/10/29(月) 14:51:25レスタイの通りじゃない?
せめて専門英語だけでも読めないと年くったとき苦しむんじゃね?
0960デフォルトの名無しさん
2007/10/29(月) 15:00:55えーとすみません、どこのレスにタイトルが?
0961デフォルトの名無しさん
2007/10/29(月) 16:22:360962デフォルトの名無しさん
2007/10/29(月) 16:33:320963デフォルトの名無しさん
2007/10/31(水) 18:52:12てっきり、char[N][M]でいいのかと思ってたら、これは1次元配列みたいで…
char[N][M][P]というふうにすればいいのでしょうか?
0964デフォルトの名無しさん
2007/10/31(水) 19:08:53長年やってるけど知らんかった
0965デフォルトの名無しさん
2007/10/31(水) 19:11:330966デフォルトの名無しさん
2007/10/31(水) 21:14:02ちょwwwwおまいらwwwwww
0967デフォルトの名無しさん
2007/11/01(木) 00:03:02Cviewで使用することはできませんか?
0968デフォルトの名無しさん
2007/11/01(木) 00:12:000969デフォルトの名無しさん
2007/11/01(木) 05:56:47charは文字であって、文字列ではないから。
0970デフォルトの名無しさん
2007/11/01(木) 17:08:27どうにもC++の参考書は、コンソール作成のものが多くて
0971デフォルトの名無しさん
2007/11/01(木) 18:34:490972デフォルトの名無しさん
2007/11/01(木) 18:43:490973デフォルトの名無しさん
2007/11/01(木) 18:48:250974デフォルトの名無しさん
2007/11/01(木) 18:57:520975デフォルトの名無しさん
2007/11/01(木) 19:16:25まず、C++を勉強する。
次に、C#を勉強し、更にC#でのフォームアプリケーション作成を勉強する (a)。
そして、C++/CLIを勉強する (b)。WWWでググったり、MSDNライブラリを読み漁ったりすれば十分。
そうすれば、(a)と(b)の知識の応用で、C++フォームアプリケーションが作れるようになる。
0976デフォルトの名無しさん
2007/11/02(金) 00:34:36EXEなら問題なく仕えたんだけどDLLでやろうとするとうまくいかない。
EXE+DLLの両方を対象にするとEXE内の内容は正しくでる。
DLL内の処理はなぜか初めの呼び出し(初期化処理)のみが表示され、
その後の処理に対するプロファイル結果が出てこない。
MSDNとかネットで調べる限りDLLも問題なくできるように思ったんだけど
これは俺が何かを間違ってるから?
0977デフォルトの名無しさん
2007/11/02(金) 00:46:060978デフォルトの名無しさん
2007/11/02(金) 22:12:58VC++でMFCAppで作るのが一番楽ですよね?
GCCやBCCだと大変ですよね?
0979デフォルトの名無しさん
2007/11/02(金) 22:25:55C++でなくても良ければ、VB、Delphi、C#などRAD搭載の開発環境なんてありふれたもの。
どれが一番か俺に判断できることではないが。
0980デフォルトの名無しさん
2007/11/02(金) 22:30:41そんなのライブラリの使いこなしによるよ。
俺はGCCでGUIアプリを作る気にはならないけど、Cygwin環境なら作る人もいるわな。
ちなみに俺のやり方
GUI→VB
裏方→VC++でDLLとかActiveXとか
0981デフォルトの名無しさん
2007/11/03(土) 00:10:25それなら全部VC++でやったほうがよくねか?
0982デフォルトの名無しさん
2007/11/03(土) 00:12:32BCBもあった…って。なんで過去形
0983デフォルトの名無しさん
2007/11/03(土) 00:27:58俺はダイアログベースをよく使ってたが、届かないメッセージが結構あって。
それならVBも一緒だーっつーて、こういうスタイルにした。
最近はC#が出てきたが、客寄せパンダ程度で終わるのを危惧してまだ手をだしてない。
0984デフォルトの名無しさん
2007/11/04(日) 00:44:32やはり、VC++MFCですかね
VC++は本当に難しく感じます、ダイアログベースでも本当に基本的なコントロールしかないし、
Doc/Viewにするとなにをどうすればいいのかさっぱりわかりません。
どこか、いい勉強サイトありませんか?
0985デフォルトの名無しさん
2007/11/04(日) 01:33:200986デフォルトの名無しさん
2007/11/04(日) 02:32:31インストール時失敗したんでしょうか?
vc++2003
0987デフォルトの名無しさん
2007/11/04(日) 02:41:37WindowsのPOSIXサポートは、別途インストールが必要。
0988デフォルトの名無しさん
2007/11/04(日) 02:54:46ありがとうございました
0989デフォルトの名無しさん
2007/11/04(日) 07:38:000990デフォルトの名無しさん
2007/11/04(日) 08:47:03ソケット使いたいだけなら、とりあえず<winsock2.h>。
もちろんPOSIX系のとは若干、感触が違うので、気を付けろ。
0991986
2007/11/04(日) 23:32:080992デフォルトの名無しさん
2007/11/04(日) 23:45:32たぶんこれ。
http://technet2.microsoft.com/WindowsServer/ja/library/cd0e7ee9-05f0-4504-8caa-acc95c8c964b1041.mspx?mfr=true
0993デフォルトの名無しさん
2007/11/05(月) 00:45:50ttp://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:200995デフォルトの名無しさん
2007/11/05(月) 01:26:24マネージドクラスだと動くので、もしかしたらと思ったら・・・。
こういう時って皆さんどうしてるんでしょうね?
Threadクラス以外ということになるんだとは思うんですが
0996デフォルトの名無しさん
2007/11/05(月) 08:48:15#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ぅ・・・なんかすごいことになってますね・・・。
マルチスレッドにするだけでスレッドセーフだのInvokeだのいろいろ出てきて飽和気味なので、
とりあえずはStaticで行こうかと思います。
皆様、ありがとうございました。
0998デフォルトの名無しさん
2007/11/05(月) 15:52:02のお絵かきソフトを作るページを参考にしてるんですが
「ToolBar」の「IDR_MAINFRAME」のボタンとIDを書き換えても
ページに書かれているようなIDに対応するような関数が作られず
ボタンも描いたように表示されず灰色の使用不可のような状態
になってしまいます。
VS2005stdです。
どなたか、わかるかた、VS2005ではどうしたらよいか教えていただけないでしょうか。
お願いします。
0999デフォルトの名無しさん
2007/11/05(月) 16:33:031000998
2007/11/05(月) 16:42:23初心者にVisualC++を教えるスレで聞いてみます。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。