■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

★初心者にVisual C++を教えるスレ★ Part17
751 名前:デフォルトの名無しさん :2005/04/05(火) 23:07:25
>>748
ありがとうございました。
それでは、MFCを使おうと思います。
入門にお勧めの書籍はないでしょうか?

752 名前:デフォルトの名無しさん :2005/04/05(火) 23:14:11
.NETのアプリ作るならC#のほうが適していると聞くが。
C++は過去の資産を生かすためにあるだけで、本来はC++で作るには少し無理があると聞くが。

753 名前:デフォルトの名無しさん :2005/04/05(火) 23:19:29
__gc とかキモイのでC#のほうが好き。

754 名前:デフォルトの名無しさん :2005/04/06(水) 01:44:04
そこでC++/CLI

755 名前:デフォルトの名無しさん :2005/04/06(水) 02:36:38
すいません、質問なのですが
vc++2005ベータのプロジェクトで、拡張子が.icoというファイルができたのですが
これは、このツールを使って絵を描けという意味ですか??

あと、MFCがないとWin32プログラミングは難しいのでしょうか?

756 名前:デフォルトの名無しさん :2005/04/06(水) 02:40:13
基本のCは覚えたので、今度はVC++を勉強しようと思ってるんですけど。。

757 名前:デフォルトの名無しさん :2005/04/06(水) 05:12:19
.icoはアイコンファイルです。アプリケーションで使うアイコンです。
VSでアイコンを編集することが出来ます。
MFCはWindowsのAPIをまとめてクラスライブラリにしたものです。
ですからMFCで出来ることはAPIだけでも出来ますが、MFCも全部のAPIを
網羅して作られているわけでもないので、MFCと言えど結局APIも使う時が
しばしばあります。GUI関連のコードを書く時はMFCだと面倒な所が隠蔽
されているので楽に書けて便利ですが、スピード重視のコードとか書く時は
MFCよりもAPIを直に使った方が良いことがあります。ゲームとかだとMFCより
API、つまりSDKスタイルの方が好まれるようです。VS6.0の開発環境はMFCを
使って書かれています。
つまり、目的に応じて使い分ければ良いということです。


758 名前:デフォルトの名無しさん :2005/04/06(水) 05:58:54
>>757
わかりやすい説明をありがとう。

759 名前:デフォルトの名無しさん :2005/04/06(水) 10:36:37
>>750
http://www.kumei.ne.jp/c_lang/index_sdk.html

760 名前:デフォルトの名無しさん :2005/04/06(水) 16:32:17
>>750
苦労は買ってでもする、その若さに乾杯。
.rc をテキストエディタで編集汁。

761 名前:デフォルトの名無しさん :2005/04/06(水) 20:53:34
>>760
それだとリソースエディタを使ってるのと本質的に変わらんだろう。
>>750 が言ってるのは CreateWindow 呼びまくって
ダイアログにコントロール貼り付けたいって意味だと思う。

762 名前:デフォルトの名無しさん :2005/04/06(水) 21:29:30
プロジェクトのプロパティでキャラクタセットをUNICODEにした場合、
TRACEで日本語が出力できないのですが、これは回避策はあるのでしょうか?
TRACE(TEXT("日本語表示"));
みたいな感じでコードを実行してもなにも表示されません。

763 名前:デフォルトの名無しさん :2005/04/06(水) 21:36:07
ダイアログのメンバ関数をスレッドで動かそうと思い、staticにしたんですが、
そしたら、その関数の中でメンバ変数にアクセスできなくなってしまいました。
変数もstaticにしてみたら「スタティック メンバ関数内の不正なデータ メンバへの参照です」
となってコンパイルできません。

スレッドからメンバ変数を使うことは不可能なのでしょうか?

764 名前:デフォルトの名無しさん :2005/04/06(水) 21:38:29
>>763
スレッド以前にstaticがなんなのかわかってないからそうなる。

765 名前:デフォルトの名無しさん :2005/04/06(水) 21:45:07
>>764
わかってるけどそうしないとCreateThreadで
error C2440: 'type cast' : 'オーバーロードされた関数タイプ' から 'unsigned long (__stdcall *)(void *)' に変換することはできません。
となる。

766 名前:デフォルトの名無しさん :2005/04/06(水) 22:07:25
>>765
CreateThreadのパラメータにthisを渡し、スレッド関数ではそのthisを使って操作する。

767 名前:デフォルトの名無しさん :2005/04/06(水) 22:09:02
出来るよ。まず、ダイアログへのポインタ変数dlgを作る。スレッドだから
グローバル変数にでもしとけばアクセスしやすいだろう。これを
InitDialog()の中とかで初期化する。dlg=thisみたいにして。
ダイアログのコンストラクタの中でも良いが。
するとdlgはダイアログを指すグローバル変数となるから、
スレッドの中でこのポインタを使ってメンバ関数なり、
メンバ変数にアクセスできる。
dlg->m_static.SetWindowText("orz");
dlg->Func();

768 名前:デフォルトの名無しさん :2005/04/06(水) 23:10:31
>>766
>>767
ありがとうございます。
なんか出来たっぽいです。
↓こんな感じでやりました。
hThread1=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)Thread_1,(LPVOID)this,0,&id);

void Thread_1(LPVOID pParam)
{
  CDFGDlg *dlg = (CDFGDlg *) pParam;
  CString ss = dlg->ss;

769 名前:デフォルトの名無しさん :2005/04/07(木) 00:25:41
>>765
ちなみに言うとstaticメンバ(関数も変数も)はクラスで共有と言う扱い。
だからstaticメンバ関数ではthisポインタが使えない。(staticメンバ変数やstaticメンバ関数は使える)

非staticメンバ関数は実のところthisポインタを引数として受け取っているからCreateThreadに渡せない。

770 名前:デフォルトの名無しさん :2005/04/07(木) 11:33:06
>>765
>わかってるけどそうしないと
解ってないからそうなる。

771 名前:デフォルトの名無しさん :2005/04/07(木) 12:07:34
>>762
デバッガの設定でUnicode文字の表示、ってのがあるけど、チェック入れてる?

772 名前:デフォルトの名無しさん :2005/04/07(木) 12:28:40
スレッド以前にstaticがなんなのかわかってないからそうなる。

773 名前:デフォルトの名無しさん :2005/04/07(木) 12:43:48
>>768
staticすら理解していないお前は、マルチスレッドに手を出す資格はない。
おとなしく、シングルスレッドで我慢してたほうがいい。
なんとなくできたっぽいとかいってるようじゃ、痛い目にあうぞ。

staticうんぬん、排他制御云々、なんていうこと以前に、2つもダメな点がある。

1.
無理にLPTHREAD_START_ROUTINEへのキャストをするな。
LPTHREAD_START_ROUTINEの定義をヘッダファイルで確認するか、
Win32 APIのマニュアルでThreadProcを見ろ。

2.
見た感じからMFCを使っているようだけど、
スレッド内でMFCを使う場合はWin32 APIの::CreateThreadは使用禁止。
もいっかいMFCのマニュアル見れ。

774 名前:デフォルトの名無しさん :2005/04/07(木) 13:34:34
SolidBrush myBrush = new SolidBrush(Color::Argb(100,0,0,255));

とやったところ、
  error C2064: 3 引数を取り込む関数には評価されません。
というエラーが出てきました。
このエラーはどういう意味なのでしょうか。
また、対処法を教えてください。

775 名前:デフォルトの名無しさん :2005/04/07(木) 16:35:11
関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。

関数のポインタとして評価されない式を使って、関数の呼び出しが行われました。

このエラーは通常、関数でないものを呼び出そうとしたときに発生します。

次にこのエラーの例を示します。

int i, j;
char* p;
void func()
{
j = i(); // エラー, i は関数ではありません
p(); // エラー, p は関数へのポインタではありません
}



776 名前:デフォルトの名無しさん :2005/04/07(木) 17:05:38
そういう意味だったのですね。
どうもありがとうございました。

777 名前:デフォルトの名無しさん :2005/04/07(木) 19:30:18
>>774
>SolidBrush myBrush = new SolidBrush(Color::Argb(100,0,0,255));

何使ってるのかよく分かんないけど、こんな構文大丈夫なのん?
SolidBrush *myBrush = new ・・・ こんな感じになりそうな気がするけど。
GDI+ってよく分かんないんですが。

778 名前:デフォルトの名無しさん :2005/04/07(木) 19:40:42
SolidBrush *pmyBrush = new SolidBrush(Color(100, 0, 0, 255));
SolidBrush myBrush(Color(100, 0, 0, 255));
このどっちかだな。

779 名前:762 :2005/04/07(木) 19:44:14
>>771

それってどこですか?
オプションの中のデバッグの設定の箇所見ましたが、それらしい設定項目はありませんでした。
VS.NET2003です。

780 名前:デフォルトの名無しさん :2005/04/07(木) 20:39:16
>>779
AtlTraceVUのバグっぽい。
わざわざUNICODE版を作っておいて、結局呼び出してるのは_CrtDbgReport。
なんでやねん。


781 名前:デフォルトの名無しさん :2005/04/07(木) 21:31:47
Visual C++を手取り足取り教えてくれているサイトありませんか?
プログラムについて何も知りません

あるいはこれさえあればvisualC++をほどほどに使いこなせるという良書を教えてください

782 名前:デフォルトの名無しさん :2005/04/07(木) 22:01:20
>>781
http://www.google.co.jp/search?lr=lang_ja&q=%56%43%20%e4%bd%bf%e3%81%84%e6%96%b9
http://www.nitoyon.com/vc/
ここが良いらしい。

783 名前:デフォルトの名無しさん :2005/04/07(木) 22:17:37
>>773
うるせぇよカス

784 名前:771 :2005/04/07(木) 23:08:23
>>779
頭が固くなった爺なんで、今だにVC6と決め付けて書いてしまいました。

785 名前:デフォルトの名無しさん :2005/04/07(木) 23:11:54
>>783
はいはい。

何だかわからないけど、うまく動きません
何だかわからないけど、例外が出ます

とか言うなよな。
つーか、教えてもらう気がないなら、質問するなガキが。

786 名前:デフォルトの名無しさん :2005/04/07(木) 23:26:54
>>785
うるせぇよカス

787 名前:デフォルトの名無しさん :2005/04/07(木) 23:48:28
>>785 じゃないが、

    なんか出来たっぽいです。

とか

    何だかわからないけど、とりあえず動きました。

とかも言って欲しくない。

788 名前:デフォルトの名無しさん :2005/04/08(金) 00:32:43
>>782
ありがとうございました

789 名前:762 :2005/04/08(金) 00:42:10
>>780

なるほど。そうでしたか。
WideCharToMultiByteしてからTRACEするしかないのかな。

790 名前:デフォルトの名無しさん :2005/04/08(金) 02:57:16
if(GetKeyState(VK_F1) & 0x8000)
{
while( GetKeyState(VK_F1) & 0x8000 ) ;
}
これでプログラムが無限ループで制御不可能になるんですけど
GetKeyStateをGetAsyncKeyStateにすればおそらく直ると思うのですが、
何故なんでしょう?
MSDNにハードウェア割り込みとか何とか書いてあるけど分かりません...。

791 名前:デフォルトの名無しさん :2005/04/08(金) 03:25:41
ifの中身とwhileの中身が同じだぞ。
ifでtrueと評価されたからすぐ次のwhileに入った時、
同じ条件をtrueと評価して無限ループになるんでわ?


792 名前:デフォルトの名無しさん :2005/04/08(金) 03:36:49
>>791
GetKeyState(VK_F1) の値がいつまでも変わらないと思っているのですか?

793 名前:デフォルトの名無しさん :2005/04/08(金) 03:53:33
>>790
MSDNによると↓だから、そこでループしてるとメッセージが送られてこないからじゃないのかね。
GetKeyStateは割り込みを使ってないって書いてある。

>スレッドがメッセージキューからキーメッセージを読み出すたびに、
>この関数が返すキーの状態は変化します

それからそういう感じのwhileの使い方はしない方がいいぞい。CPU使用がMAXになっちゃうべ。

794 名前:793 :2005/04/08(金) 03:58:15
793をちょっと訂正。

>そこでループしてるとメッセージが送られてこないから

そこでループしてるとWM_KEYUPのメッセージキューを処理できなくて、その結果、
キー状態変化してないように見えるから

795 名前:790 :2005/04/08(金) 04:25:45
レスありがとうございます。
なるほど。つまり、メッセージを送りすぎて処理が追いつかないと...。
GetKeyStateの場合、メッセージ送信でキーの状態を得るということですね。
キーボードの状態を直接I/Oから読み取るものだと無意識で思ってて、
こういうことになったと。
割り込みの意味が少し分かったような気がします。
CPU100%はSleep(10);で解決...。(本当は別なやり方が正攻法なんでしょうが)

796 名前:デフォルトの名無しさん :2005/04/08(金) 04:56:55
一番外しているのが792だな

797 名前:デフォルトの名無しさん :2005/04/08(金) 08:18:56
いつまでも変わらないんですね

798 名前:デフォルトの名無しさん :2005/04/08(金) 10:30:21
>>789
ATLはソースがあるんだから、ソースを直してしまうのも手よ。

マイクロソフトのサポート情報を探すと、ATLのバグ情報がゴロゴロでてきますよ。
中には、一度もテストしないで出しただろ、と突っ込みたくなるような酷いバグも・・・。

799 名前:デフォルトの名無しさん :2005/04/08(金) 10:43:14
>>795
ちがう。

おそらく・・・
ウィンドウのメッセージキューに届いたメッセージを処理してすぐに帰るべきところに、
状態の変更を待つような内容のコードを書いてしまっているのではないかと。

基本的に、メッセージの処理は、速やかにreturnしなくてはいけない。
returnするまでは、次のメッセージが処理されない。

キーボードからの入力も、マウスのクリックも、
対象となったウィンドウのメッセージキューに、メッセージとして届けられる。
なので、ループしたりして、メッセージの処理を止めてはいけない。

「イベントドリブン」
「メッセージポンプ」
「ウィンドウプロシージャ」
などについて、基本的なところを勉強することをオススメします。



800 名前:デフォルトの名無しさん :2005/04/08(金) 11:12:36
スレッドとCRTについて質問です。

EXE側から関数アドレスをもらって、その関数を呼び出しながら処理するDLLがあります。
EXE側はCRTをスタティックリンクしており、DLLに渡す関数はCRTを使って処理をします。
DLL側がCreateThreadやDLL側CRTの_beginthread(ex)を使ってスレッドを作成し
そのスレッドからEXE側の関数を呼び出した場合、EXE側のCRTは初期化されてないので問題が起きる。

という解釈はあってますか?

801 名前:デフォルトの名無しさん :2005/04/08(金) 14:59:00
4月から環境が変わったので.NETを.NET2003に変更したところ
以前.NETで作成したプログラムが「MFC70D.DLLが見つからなかったため・・・」
というメッセージが出てデバッグ、実行等ができなくなってしまいました。

指定されたファイルを他の環境から持ってこれば動くのかもしてませんが
それでは根本的な解決になっていない気がして落ち着きません。

projファイルなどもエディタで開いて眺めてみたのですが
力不足なため、イマイチよくわかりませんでした。

どなたか解決方法を御教示いただけませんでしょうか?

802 名前:デフォルトの名無しさん :2005/04/08(金) 15:34:32
>>801
MFC70D.DLLってデバッグバージョンじゃね?
デバッグバージョンのDLLは再配布不可のはずなので、Releaseモードでビルドすればいいんでね?

803 名前:デフォルトの名無しさん :2005/04/08(金) 15:35:21
>>801
プロジェクト変換してリビルドすりゃいいと思うけど…?

804 名前:801 :2005/04/08(金) 15:41:01
ありがとうございます。

>デバッグバージョンじゃね?
>Releaseモードでビルドすればいいんでね?
たしかにデバッグバージョンです。
ただexeを実行したいという意味ではなく.NETで開発していたものを引き続き2003で開発したい
という意味なのでReleaseモードではデバッグができなくなってしまうんです。

>プロジェクト変換してリビルドすりゃいいと思うけど…?
最初に2003で実行するときに「変換しますか?」のようなメッセージが出たので変換を行って
その後でリビルドもしたのですが前述のメッセージが出る次第です。

805 名前:デフォルトの名無しさん :2005/04/08(金) 15:45:29
MFC70D.DLLはパスの通ってるところにある?

806 名前:801 :2005/04/08(金) 15:52:49
>MFC70D.DLLはパスの通ってるところにある?
いえ、2003を入れた方のPCにはMFC70D.DLL自体が入っていない模様です。
(MFC70.DLLは入ってます。)
もちろん2003のインストール時にはフルインストールはしたはずなのですが。

もしかして2003は.NETが既にインストール済みの環境でしか使えないなんて
制約があったりとかしますか?

807 名前:デフォルトの名無しさん :2005/04/08(金) 16:17:16
>>806
デバッグビルドをリビルドしてもダメ?
もしかしたらそのプロジェクトの対象オブジェクトから起動しているモジュールとかDLLとかない?
漏れは.netで作られたプロジェクトを.net2003でデバッグしているけどプロジェクトを変換した以外何もしてないよ。
#つーか、まさかDebugディレクトリ配下も持ってきてるとか言わないよな。

808 名前:デフォルトの名無しさん :2005/04/08(金) 16:20:20
単にインストール失敗しただけじゃね?

809 名前:801 :2005/04/08(金) 16:46:57
>デバッグビルドをリビルドしてもダメ?
ダメです・・・。

>漏れは.netで作られたプロジェクトを・・・
そうですね。普通はそうなるはずだと思うんですけど。

>#つーか、まさかDebugディレクトリ配下も持ってきてるとか言わないよな。
これは大丈夫です。

>対象オブジェクトから起動しているモジュールとかDLLとかない?
これが怪しいかもしれません。
.NETでビルドしたDLL使ってるのでソースをもらって2003でリビルドしてみます。

>単にインストール失敗しただけじゃね?
や、その可能性もありますが・・・。

810 名前:デフォルトの名無しさん :2005/04/08(金) 16:51:37
>.NETでビルドしたDLL使ってるのでソースをもらって2003でリビルドしてみます。

それだ。そのDLLがMFC70D.DLLを必要としていると言うこと。

811 名前:801 :2005/04/08(金) 17:10:00
使用していたDLLを2003でビルドし直したら無事に動きました。
ありがとうございました。

812 名前:デフォルトの名無しさん :2005/04/08(金) 17:20:32
>>800
俺はそれであっていると思うよ。

813 名前:デフォルトの名無しさん :2005/04/08(金) 18:32:41
大学の生協で売ってるアカデミック版?で作ったソフトを売ってもいいの?

814 名前:デフォルトの名無しさん :2005/04/08(金) 18:36:46
シェアウェアまでなら

815 名前:813 :2005/04/08(金) 19:31:55
>>814
マジっすか! じゃあ使えないな〜グスン

816 名前:デフォルトの名無しさん :2005/04/08(金) 20:48:15
Visual C++ で、実行したらすぐに変な黒いウィンドウが出て
閉じるんですけど、どうすればいいんですか? 設定とかでどこを
いじればいいのでしょうか? 教えてください

817 名前:デフォルトの名無しさん :2005/04/08(金) 21:17:58
(((( ;゚Д゚)))ガクガクブルブル

818 名前:デフォルトの名無しさん :2005/04/08(金) 21:55:07
ガクガクブルブル(((( ;゚Д゚))人(( ;゚Д゚)))ガクガクブルブル

819 名前:817 :2005/04/08(金) 22:10:12
>>818
勝手に手繋ぐな、キモイ

820 名前:デフォルトの名無しさん :2005/04/08(金) 22:50:25
自演乙

821 名前:デフォルトの名無しさん :2005/04/09(土) 00:48:17
CToolBarのボタンに表示するテキストを複数行にしたい場合はどのようにすればいいのでしょうか
CToolBarCtrlのSetMaxTextRows()を指定したりSetDrawTextFlags()にDT_WORDBREAKを突っ込んだりしてみたけど改行されませんでした

822 名前:デフォルトの名無しさん :2005/04/09(土) 18:16:24
文字列を数値に変換するときsprintf使ってるんですけどほかに便利な方法おしえてください

823 名前:デフォルトの名無しさん :2005/04/09(土) 18:18:31
>>822
sprintfでどうやって数値化するのか教えて欲しいものだ(w
それはともかくとして、C++ならもう一つの方法として strstream が考えられるね

824 名前:デフォルトの名無しさん :2005/04/09(土) 18:19:11
atoi
boost::lexical_cast

825 名前:800 :2005/04/09(土) 18:22:07
>>812
レス遅れたけどありがとう。

826 名前:デフォルトの名無しさん :2005/04/09(土) 18:26:50
数値を文字列でした。逆でしたね

827 名前:デフォルトの名無しさん :2005/04/09(土) 19:11:47
>>826
strtol(), strtoul() &c.

828 名前:デフォルトの名無しさん :2005/04/09(土) 19:50:45
>>826
boost::lexical_cast

829 名前:デフォルトの名無しさん :2005/04/09(土) 19:57:27
VC++で簡単なメディアプレーヤーの作り方が詳しくのってるサイトはありませんかね?

830 名前:デフォルトの名無しさん :2005/04/09(土) 20:16:33
まずは「簡単なメディアプレーヤー」の定義から始めようか。

831 名前:デフォルトの名無しさん :2005/04/09(土) 20:21:35
あ、ごめんなさい。
ファイルを選択して、音楽ファイルを再生できるようなものを作りたいのですが・・・
ググりかたが悪いのか、なかなか見つかりません。
上に近いようなものが作れるならどんなサイトでもかまいません。

832 名前:デフォルトの名無しさん :2005/04/09(土) 20:36:44
>>831
DirectShowでぐぐってみれば?

833 名前:デフォルトの名無しさん :2005/04/09(土) 21:38:41
int型aにtimeGetTime()で、システム起動時間を取得して
char型bに「hoge」といれて、これらの変数を
「hoge (システム起動時間)」っていう風にするのは
どうすればいいでしょうか?

834 名前:デフォルトの名無しさん :2005/04/09(土) 21:48:26
sprintfでいいんじゃね?

835 名前:833 :2005/04/09(土) 22:08:35
>>834
ありがとうございました。
やっとできました。

836 名前:デフォルトの名無しさん :2005/04/09(土) 22:44:06
>>816
トレースの出力に何か出てないか?
コンソールアプリだったりしないか?

>>822
数値を文字列になら、sprintfでいいんじゃない?
それなりに書式指定できるしさ。

ただ、snprintfを使って欲しい気もする。
CString::Format()という手もあるよ。

>>831
手っ取り早くMCI

837 名前:デフォルトの名無しさん :2005/04/10(日) 14:38:36
IEのようにウィンドウの下の部分にある、
説明っぽいのが出てる枠は何ていうんでしょうか?
なにか名前がついててウィンドウのスタイルとかで指定できたりしましたっけ?

838 名前:デフォルトの名無しさん :2005/04/10(日) 14:40:16
>>837
ステータスバーの事?

839 名前:デフォルトの名無しさん :2005/04/10(日) 15:04:03
>>838
それでした。ありがとうございました。

840 名前:デフォルトの名無しさん :2005/04/11(月) 00:04:11
画面がチラチラするのですが、こういう場合どうすれば直るのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/295.cpp

841 名前:デフォルトの名無しさん :2005/04/11(月) 00:26:03
なんでWM_PAINTでInvalidateRect呼んでるの?

842 名前:デフォルトの名無しさん :2005/04/11(月) 00:30:06
InvalidateRectの第3引数をよく見てみろ

843 名前:デフォルトの名無しさん :2005/04/11(月) 00:50:21
つーか永遠にWM_PAINTが来てえらいことだ。

844 名前:デフォルトの名無しさん :2005/04/11(月) 01:01:50
>>841さん
こうやる以外、自分は字の動かし方を知らないですから。
WM_PAINT 送り続けて画面を更新させ続けようって思いました。

>>842さんのおっしゃった事をヒントに FALSE にしてみたのですが、
残像が残ります。残像を残さず、しかもチラチラさせずに表示する
にはどのようにすれば・・・ ;;

845 名前:デフォルトの名無しさん :2005/04/11(月) 01:15:34
WM_PAINTは現状の描画のみ。で、タイマーとかで現状を更新して
再描画をお願いするってのが良いと思うのですよ。
残像を消すには文字描く前に塗りつぶしたり。フリッカが死ぬほど
嫌なら、背景ブラシをヌルポにして裏画面転送だと思うのですよ。

846 名前:デフォルトの名無しさん :2005/04/11(月) 01:47:15
よっしゃーー! いけました!
なんとか残像も消えてくれましたし、嬉しいっす!
WM_PAINTは現状の描画のみ、って言葉がとても参考になりました。
本当に、ありがとうございました!

847 名前:デフォルトの名無しさん :2005/04/11(月) 02:36:09
.vcprojから.makeへのエクスポートってVC2003.NETでもできますか?


848 名前:デフォルトの名無しさん :2005/04/11(月) 09:46:07
Pentium4に最適化されたコンパイラを使った場合に、
同じコアのCeleronとPentiumで吐き出すコードが違うことってあり得ますか?

また、プログラムは単純な計算の繰り返しとして、
同周波数・同コアのPentium4とCeleronで
計算速度に有意な差は出てくるのでしょうか?

よろしくお願いします。

849 名前:デフォルトの名無しさん :2005/04/11(月) 09:59:35
>>848
この辺で聞いたら?
>x86命令の所要クロック計測スレ
http://pc8.2ch.net/test/read.cgi/tech/1103609337/

850 名前:848 :2005/04/11(月) 10:12:08
>>849
ありがとうございます。移ってみます。
こちらでもわかる方がいらしたら、お願いします。

851 名前:デフォルトの名無しさん :2005/04/11(月) 11:16:26
すみません。共有で使用しているインクルードファイルがあるのですが
プロジェクトワークスペースに当該インクルードファイルを追加しても、
ビルド時にインクルードファイルが開けません。のエラーが出ます。
何か設定がいるのでしょうか?

852 名前:デフォルトの名無しさん :2005/04/11(月) 11:46:33
>>851
プロジェクトに参加させるかどうかと、インクルードパスの設定は関連がない。
プロジェクトの設定でインクルードパスの設定をしなさい。
#或いは、そのインクルードファイルまでのパスが確定しているなら相対パスでインクルードする手もあるが。

853 名前:デフォルトの名無しさん :2005/04/11(月) 11:48:44
>>852
助言いただきました通り
インクルードファイルのパスを追加する事でエラーが解消されました。
ありがとうございます。

854 名前:デフォルトの名無しさん :2005/04/11(月) 12:33:11
>>849
ゴルァ
スレの主旨を無視して誘導するな。

>>850
スレの主旨を無視してマルチする奴の質問には答えない。

855 名前:デフォルトの名無しさん :2005/04/11(月) 14:21:48
>>854
CPUコアの話が初心者向けでないと思ったから誘導しただけ。
ついでに言えば、誘導された>850はきちんと挨拶しているし、それをマルチと断罪するには値しないと思うが。

856 名前:デフォルトの名無しさん :2005/04/11(月) 14:30:40
LineTo、MoveToを使って描画したいのですが、アサートに引っ掛かってしまいます。(ハンドルがNULL?)
要はデバイスコンテキストあたりで躓いているようなのですが、何が悪いのかわからないのでお助けください。
CDCを継承したクラス内で、なにやら本に書いてあったことを見よう見まねで
CClientDC dc(this);
の様にしても、下記のエラーが出ます。
よろしくお願いします。

'CClientDC::CClientDC' : 1 番目の引数を 'class CCtrlDraw *const ' から 'class CWnd *' に変換できません。 (新しい機能 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

857 名前:デフォルトの名無しさん :2005/04/11(月) 14:46:51
>>856
>'class CCtrlDraw *const ' から 'class CWnd *' に変換できません。
この意味がわからんのだったらクラスの継承とかその辺をやり直したほうがいい。

858 名前:デフォルトの名無しさん :2005/04/11(月) 15:14:35
>>857
というと、これはただ単純にCCtrlDrawからCWnd*に変換できない、ってことではないんですか?
自分ではthisポインタが怪しいと思うのですが・・・・

859 名前:デフォルトの名無しさん :2005/04/11(月) 15:15:37
>>858
CCtrlDrawからCWnd*に変換できない
ってことだよ。CCtrlDrawがなんなのか知らんがCWndから派生してないんじゃない?

860 名前:デフォルトの名無しさん :2005/04/11(月) 15:18:48
thisが何か判っていない悪寒。

861 名前:デフォルトの名無しさん :2005/04/11(月) 15:31:48
859さんの言うとおりにCWndからの継承にしたところ、コンパイルは通るようになりました。
が、相変わらずアサートに引っかかります。アサート条件は以下でした。
おそらく860さんのおっしゃるとおりthisポインタがなんなのかイマイチわかっていない悪寒・・・・

ASSERT(pWnd == NULL || ::IsWindow(pWnd->m_hWnd));


862 名前:デフォルトの名無しさん :2005/04/11(月) 15:35:14
>>861
本に書いてある通りにやってみろ。
自分流のアレンジよりも、先ずはそこからだ。


863 名前:デフォルトの名無しさん :2005/04/11(月) 15:48:17
>>862
いや、そこんところは本には書いてないんです。
今はそういったクラスを分ける練習みたいなものをやっているところです。

864 名前:デフォルトの名無しさん :2005/04/11(月) 15:49:36
なんでCClientDCのコンストラクタはCWnd*を引数に取るか考えろよ。
CCtrlDrawで何がしたいんだ?

865 名前:デフォルトの名無しさん :2005/04/11(月) 15:56:10
>>864
ウィンドウと対応付けるためだと理解してますが。
具体的にはマウスの移動に対応した描画です。

866 名前:デフォルトの名無しさん :2005/04/11(月) 15:58:41
>>855
その誘導先が問題なんだが。

867 名前:デフォルトの名無しさん :2005/04/11(月) 16:53:24
>>866
それは失礼。コアな話ならあそこが一番かと思って。

>>865=856
DCの取り扱いは本にあったんだろ? 本の通りにDCを使えるようになってから出直せって。

868 名前:デフォルトの名無しさん :2005/04/11(月) 17:01:10
・・・・わかりました。最後に教えて頂きたいのですが、
イベントキャッチ

処理で関数に飛ばす

で、飛ばされた関数の中でのthisポインタは何を指しているのでしょうか?


869 名前:デフォルトの名無しさん :2005/04/11(月) 17:06:29
>>868
・・・
MFC使う前にC++の基本を学んだほうがいい。

870 名前:デフォルトの名無しさん :2005/04/11(月) 17:22:47
&飛ばされた関数、だろ。

871 名前:デフォルトの名無しさん :2005/04/11(月) 20:56:42
>>867
まぁありがちですね。
詳しい人が多そうなんで、スレ違いだけど、質問させてください
っていうのは。

漏れなんて、インターネットが普及しはじめた頃に一度、
自宅のパソコンの調子が悪いので相談に乗ってくれ
というメールが来たよ。公開してるフリーソフトと関係ないだろ!ってゴルァした。

872 名前:デフォルトの名無しさん :2005/04/11(月) 20:59:08
>>871
オマエモナー

873 名前:848,850 :2005/04/11(月) 21:57:08
すみません、ちょっとトラブルになったようで。
適当なスレが見当たらなかったので質問させていただきました。
もしよろしければ、レスをいただけるとありがたいです。

874 名前:デフォルトの名無しさん :2005/04/11(月) 22:46:31
>>873
ヒント: キャッシュ

875 名前:デフォルトの名無しさん :2005/04/12(火) 04:59:12
リソースエディタで作ったダイアログの枠の大きさを
その中に配置されたコントロール群より小さくしたとき、
スクロールバーでスクロールさせてきちんと全体を見渡せるようにしたいんですが、
ダイアログのプロパティでスクロールバーを付けてるのに
これが上手く機能しません。
どうしたらよいのでしょうか?

876 名前:デフォルトの名無しさん :2005/04/12(火) 08:46:32
1つのダイアログの機能とデザイン、リソースIDなどをまるごと
他のプロジェクトへコピーしたいのですが、簡単な方法はありますか?

877 名前:デフォルトの名無しさん :2005/04/12(火) 09:00:50
ギャラリへ追加

878 名前:デフォルトの名無しさん :2005/04/12(火) 18:28:49
変数はループの外で宣言したほうが早くなりますか?

以下は例です。

for(int i;i<256;++i){
int a;
a=hoge(i);
}

int a;
for(int i;i<256;++i){
a=hoge(i);
}

879 名前:デフォルトの名無しさん :2005/04/12(火) 18:30:17
コンパイラの最適化で同じ物になりそう

880 名前:デフォルトの名無しさん :2005/04/12(火) 18:52:21
>>879
じゃあ可読性のよい方を選べばいいんですかね?

881 名前:デフォルトの名無しさん :2005/04/12(火) 19:09:45
>>880
スコープを小さくするメリットを優先すべし。
当然、前者の方がいい。
#つーか、仮令例でもiが初期化されていないの激しく気になる。

882 名前:デフォルトの名無しさん :2005/04/12(火) 19:13:57
>>881
お返事ありがとうございます。
スコープを小さくすることでレジスタに入ったりするということでしょうか?
iの初期化は例文のミスです。

883 名前:デフォルトの名無しさん :2005/04/12(火) 20:23:07
>>882
コンパイラはあんたより賢いからどちらでも同じコードを吐く。
寧ろ、あんたがミスしないようにエラー通知や警告さえしてくれるわけだ。
生存期間を短くすると言うことはそういうことだ。

884 名前:デフォルトの名無しさん :2005/04/12(火) 22:01:45
そんなとき俺なら更に初期化時に戻り値を受けるようにする。
for(int i = 0; i < 256; ++i) {
  int a = hoge(i);
}

885 名前:デフォルトの名無しさん :2005/04/12(火) 23:27:13
for (int i = 256; i ; i--) {
 int a = hoge(i);
}

886 名前:デフォルトの名無しさん :2005/04/12(火) 23:32:44
>>885
そんなひっかけ見たことない

887 名前:デフォルトの名無しさん :2005/04/12(火) 23:45:19
winsockで質問です。

現在、クライアントからselect()ベースでTelnetの通信制御を行う
プログラムをMFCで作成しております。

Telnet通信を行っているあいだに、とあるコマンドにおいてサーバ側が
自動で切断します。このときサーバ側は受信の応答を返さずに切断して
しまうので、これをクライアント側で切断のタイミングを検出し再接続
を行うようにしたいのです。

その検出方法でなかなか良い方法が見つかりません。
とあるサイトで切断のタイミングは受信バッファが0である
と見かけましたが、サーバ側からの受信バッファが途中で
一端途切れるため、実際に切断されるよりも前のタイミング
で検出してしまいます。

なにか良い方法はないのでしょうか?

888 名前:デフォルトの名無しさん :2005/04/13(水) 00:10:52
コマンドラインのワイルドカードを展開するときって setargv.obj をリンクしますよね。
VC6(SPなし、SP6どちらも)でMBCSビルドではうまくいくのですが、wsetargv.objを
リンクしてUNICODEビルドすると

wsetargv.obj : error LNK2001: 外部シンボル "___wsetargv" は未解決です

となってしまいます。どうしたらいいんでしょか?
(VC2003ではOKだった...)

889 名前:デフォルトの名無しさん :2005/04/13(水) 02:03:46
>>887
unixからの移植用のselectなんて使うのやめて、
Windows用のWSAAsyncSelectでFD_CLOSEイベントを受けとろう。

890 名前:デフォルトの名無しさん :2005/04/13(水) 02:12:33
なんかよう意味がわからん。
サーバがcloseかshutdownで切断すればクライアントは
recvで0を受け取って、切断されたんだな〜ってわかると思うが。


891 名前:デフォルトの名無しさん :2005/04/13(水) 05:41:36
>>887の人は、

> サーバ側からの受信バッファが途中で
> 一端途切れるため、実際に切断されるよりも前のタイミング
> で検出
と書いているから、
ブロッキングではなく、ノンブロッキングでrecvを呼んでいるのだと思う。

892 名前:デフォルトの名無しさん :2005/04/13(水) 06:25:29
下のようなコードを見たのですが、
boolをなんだか関数みたいな形でtypedefしてるみたいなのですが
わけがわからないです。これはどういうことでしょうか?
どんな意味か、どんなメリットがあるかも分かりません。教えて下さい。お願いします。

typedef bool (*HOGE_FOO_AAA)( BAR bar, MOGE moge);
typedef bool (*HOGE_FOO_BBB)();

893 名前:デフォルトの名無しさん :2005/04/13(水) 06:31:14
関数ポインタでぐぐれ

894 名前:デフォルトの名無しさん :2005/04/13(水) 08:33:28
すみません質問なのですが、VisualC++はC言語の勉強もできますか?
4月から学校で習うので、もしできるのなら購入したいと思いまして。
皆様よろしくお願い致しますm(_ _)m

895 名前:デフォルトの名無しさん :2005/04/13(水) 08:52:16
>>894
はい

896 名前:デフォルトの名無しさん :2005/04/13(水) 08:56:58
>>895
ありがとうございます
学生証もらったら買いに行きます

897 名前:デフォルトの名無しさん :2005/04/13(水) 09:03:27
>>894
Cの勉強のためだけなら必ずしも買う必要もありませんが。

898 名前:デフォルトの名無しさん :2005/04/13(水) 09:03:58
>>894
学校で使う程度なら、フリーのコンパイラでもいいんじゃない?
それで、プログラムに興味もって何か作ろうって思ったらVC買えばいいとおもう。

学校ってのが、高校なのか大学かはしらんが、大学ならUNIXだったりするぞ。

899 名前:デフォルトの名無しさん :2005/04/13(水) 09:14:50
>>897-898
ありがとうございます
フリーのコンパイラの方も検討してみます。

900 名前:デフォルトの名無しさん :2005/04/13(水) 12:49:54
お勉強ならCygwinを入れてgccがいいんじゃないかな。

901 名前:デフォルトの名無しさん :2005/04/13(水) 13:37:45
漏れはVC++を勧めるよ、コンパイラとしてではなくデバッガとして。

902 名前:デフォルトの名無しさん :2005/04/13(水) 14:15:50
本当にここはVCのスレなんだろうか?
嫌がらせでわざと毎日スレ違いの質問しに来てるとしか思えない。

903 名前:デフォルトの名無しさん :2005/04/13(水) 14:49:03
>>899
むしろこっちをお勧め。

激安で買えるVisual Stdio.NET theSpoke Disc.9
http://pc8.2ch.net/test/read.cgi/tech/1103381010/

904 名前:デフォルトの名無しさん :2005/04/13(水) 15:22:03
教えてくださいお願いします。VisualStuido97で
作成しているプロジェクトなのですが
プロジェクトワークスペース内に
main.c メイン処理(初期化やクローズ、画面の作成)
sub1.c サブ関数群1
sub2.c サブ関数群2
という構成で一つのEXEが作成されています。
基本的には各処理が終わればmain.c内のClose関数で
画面の破棄、メモリの開放等を行っています。
ところが、ある条件が揃った時に致命的エラーが発生するのです。
要はデータファイルを共用しており、別のプログラムがデータファイルに
アクセスしている際に不具合が発生するようなのです
処理の優先順位は当該プログラム側の方が低い為
データアクセス競合時にこれを避けるために処理を強制的に終わらせたいと思います
競合時の判定はsub2.c コード内で取得できるので sub2c内のコードから
強制終了したいのですが、方法がわかりません。
main.cにもっているClose関数を呼ぼうとするとLNK1120:外部シンボル"ClosePrc"は未解決です
のエラーが発生しています。アドバイスをお願いします。

905 名前:デフォルトの名無しさん :2005/04/13(水) 16:19:35
sub2.cはmain.cにもっている関数の宣言を知らないんじゃない?

906 名前:デフォルトの名無しさん :2005/04/13(水) 16:27:51
>>905
そうとも考えまして
main.cで定義している関数を
sub2.cのインクルードファイルにextern宣言してみたりしたのですがうまく
コンパイルが通りません。
厨な方法なのですが、closePrcに書いている各関数の初期化や
破棄等をベタ書きで書いたりして無理矢理コンパイル通したりしたのですが
画面さえ閉じられる物のプロセスは生き残ってしまっています。

907 名前:デフォルトの名無しさん :2005/04/13(水) 20:55:30
ヘッダファイル作れば良いんじゃないの?

908 名前:904 :2005/04/14(木) 09:07:29
レスありがとうございます。
すみません。インクルードファイルとはヘッダファイルの事でした。
既にヘッダファイルを作成して、各Cソース上部にそのヘッダをインクルードしています。

909 名前:デフォルトの名無しさん :2005/04/14(木) 09:45:16
そのcloseなんとかがstatic関数だったりしない?

910 名前:904 :2005/04/14(木) 09:47:57
>>909
おっしゃる通りstaticで定義されております。
なぜstaticでないと行けないのかは解らないのでそのままなのですが
そこに問題ありでしょうか?

911 名前:デフォルトの名無しさん :2005/04/14(木) 10:25:52
>>910
staticな関数は「そのファイルの外側からは見えない」
externしても無駄無駄

912 名前:デフォルトの名無しさん :2005/04/14(木) 10:29:01
プログラム自身が現在使用しているメモリ量と、パソコンの残り空きメモリ量はどのようにしたら取得できるのでしょうか?

913 名前:904 :2005/04/14(木) 10:31:06
>>911
そういう問題があったのですね。
勉強不足ですみません。一度、指摘されました個所を
コメント化して現在の
static void ClosePrc(HWND hwnd);
から
void ClosePrc(HWND hwnd)
へ変更し、extern してみたのですが、同じくLNK1120のエラーが発生
してしまいました。何か他にも要因が考えられますでしょうか?
よろしくお願いします。


914 名前:デフォルトの名無しさん :2005/04/14(木) 10:35:15
//main.c
void ClosePrc(HWND hwnd) {
....
}

//ヘッダ
extern void ClosePrc(HWND hwnd);

//sub2.c
#include "ヘッダ"
foo() {
ClosePrc(hoge);
}
って状態なんだよね?

915 名前:デフォルトの名無しさん :2005/04/14(木) 10:55:49
ソース全部晒せ!

916 名前:904 :2005/04/14(木) 10:58:38
>>914
失礼しました。実態の定義部にstaticが残っておりました。
清書しまして現在、コンパイルが通りましたので
早速動作確認してみました。
やはりプロセスが生きのこってしまっています。
上記で教えていただきました、関数呼び元の
ClosePrc(hoge); ですが
hogeとはどのような意味がありますでしょうか?
当方コードではHWND hwnd;
で宣言しているClosePrc(hwnd);としています。
終了する際のハンドル取得に問題があるのでしょうか?

917 名前:デフォルトの名無しさん :2005/04/14(木) 11:44:44
プログラム組む前の段階の質問で申し訳ないんですけど
今までVC++をCドライブのプログラムファイルフォルダ以下にインスト(多分デフォでここだったはず)
してたんですけど、どこかのスレでプログラムファイル以下にインストする奴は馬鹿みたいな事を書いていたのを見たんですけど
実際皆さんどこにインストールしてますか?プログラムファイル以下だと何か不都合があるんでしょうか?

918 名前:デフォルトの名無しさん :2005/04/14(木) 11:45:22
>>916
初心者の特徴:ソースを見せずに「うまくいかないんです。なぜですか?」

919 名前:904 :2005/04/14(木) 11:56:59
>>918
すみません。ソースを全てお見せすると膨大な量となります。
主要部分を抜き出すと>>914で確認の為に作成していただいた
各関数のコードのみとなるのですが。。。。
おっしゃる通り私は初心者です。申し訳ございません。

920 名前:デフォルトの名無しさん :2005/04/14(木) 12:05:50
>>919
「ソースを見せずに」≠「ソースを全て見せずに」
問題の発生する必要最低限のコードを抜き出して見せないと満足な回答は得られないよ。

921 名前:904 :2005/04/14(木) 12:18:43
>>920
失礼しました。主要関数内部のコードを貼ります。よろしくお願いします。
//Main.c 処理の終了
void ExitProc(HWND hWnd)
{
CancelFlg = YES;
CloseTransferThread();
DeleteAlltempFile();
DisconnectProc();
WSACleanup();
DestroyWindow(hWndFtp);
return;
}

//sub2.c 処理状況の取得
int ReadReplyMessage(SOCKET cSkt, char *Buf, int Max, int *CancelCheckWork, char *Tmp)
{
int iRetCode;
int iContinue;
int Lines;

HWND hWnd;

if(Buf != NULL)
memset(Buf, NUL, Max);
Max--;

iRet = ReadLine(cSkt, Tmp, ONELINE_BUF_SIZE, CancelCheckWork);


922 名前:904 :2005/04/14(木) 12:19:18
FirstCode = 0;
if(cSkt != INVALID_SOCKET)
{
Lines = 0;
do
{
iContinue = NO;
//正常終了(連続処理時の正常終了)
if (strstr(Tmp,"Transfer complete")!=0){
MessageBox(NULL,"","終了確認",MB_OK);
ExitProc(hWnd);//アプリケーションの終了
}

if(){//エラー判定割愛
ExitProc(hWnd);//アプリケーションの終了
FirstCode = 500
break;
}
Lines++;

}
while(iContinue == YES);
FirstCode = iRet
}
return(FirstCode));
}

923 名前:デフォルトの名無しさん :2005/04/14(木) 13:05:34
>>904
・ExitProc()を読んだときのhWndには何が入ってるの?
main.cとsub2.cで違うものが入ってたら同じ動作はしない可能性が高いわけだが。
・ExitProc()にhWnd渡してるのに使ってないけど?
・同じく、hWndFtpとはなに?

初心者云々以前にプログラマに向いてない気が。

924 名前:デフォルトの名無しさん :2005/04/14(木) 13:19:15
流れを読まずに質問。
ウィンドウのサイズを変更したら中にあるリストビューのサイズも追従させたいんだけど、どうすれば出来ますかね?
ウィンドウのサイズが変わったときに送られるメッセージとかあるの?

925 名前:デフォルトの名無しさん :2005/04/14(木) 13:21:37
ある

926 名前:904 :2005/04/14(木) 13:28:04
>>923
すみません。張り付け時に急いでサンプル化しましたので
コピーミスです。
ExitProc(hWndFtp);
が呼び方では正です。申し訳ありません。
hWndFtpはメイン画面のウインドウハンドルで画面のクリエイト時に
取得した値をexternで各sub.cで宣言しております。

#申し遅れました。私はプログラマでは無く事務員です。
基礎知識が足りなくてすみません。

927 名前:デフォルトの名無しさん :2005/04/14(木) 13:28:36
>>924
WM_SIZEを拾うか、CDialogを継承しているならOnSize()をオーバーライド。

928 名前:デフォルトの名無しさん :2005/04/14(木) 13:29:46
最近の事務員と言うのは物事を満足に相手に伝えることもできないのか。

929 名前:デフォルトの名無しさん :2005/04/14(木) 13:30:42
>927
thx!

930 名前:デフォルトの名無しさん :2005/04/14(木) 13:32:00
>>926
ExitProc()を呼んだ後、returnで脱出して味噌。

931 名前:flets-a-west-7-122.dsn.jp :2005/04/14(木) 13:34:05
えぇけっしとるのぉ(*´Д`)ハァハァ


うはっwwwおkwwwうえっwww??


932 名前:904 :2005/04/14(木) 13:44:23
>>928
申し訳ありません。よく上司に怒られています。
周りからもいわれます

>>930
ありがとうございます。return追加してビルド後うごかすと
画面もプロセスも終了できました。
関数が処理中だったんでプロセスを掴んでいたのでしょうか?
感謝いたします。解決しました。

933 名前:924 :2005/04/14(木) 14:00:39
申し訳ない・・・・・喜び勇んで書いてみようとしたところ、結局コントロールのサイズを変えるやり方がわかりません。
教えてくんでごめそ。誰か教えて。

934 名前:デフォルトの名無しさん :2005/04/14(木) 14:04:30
>>923
初心者が必死に質問してんのに
テメェはちょっとプログラムかじったからっつって上から見て
偉そうな事ぬかしてんじゃねぇよ。
しかも問題と関係ないどうでもいいところ頃突っ込んでるの見ると
オメェの実力も大したことねぇしよ。
オメーは人間に向いてねぇから糞食って氏ね。

935 名前:デフォルトの名無しさん :2005/04/14(木) 14:15:45
逆切れキター

936 名前:デフォルトの名無しさん :2005/04/14(木) 14:17:52
>>935
使い方間違ってる
http://dictionary.goo.ne.jp/search.php?kind=jn&mode=0&MT=%8B%74%90%D8%82%EA&IE=sjis&type=sleipnir

937 名前:デフォルトの名無しさん :2005/04/14(木) 14:23:59
最初に使われ始めた頃は、「おとなしい子が突然キレること」だったのになぁ・・・・

938 名前:デフォルトの名無しさん :2005/04/14(木) 14:28:06
>>934
>テメェ
>オメェ
>オメー

>どうでもいいところ頃

939 名前:927 :2005/04/14(木) 14:32:48
>>933
教えるのは構わないのだが、情報が少なすぎてなんとも。
下手に聞き取り調査して>934みたいな因縁つけられたくないからパスで。
#つーか、ダイアログならクラスウィザードなりプロパティから関数を追加できるけど。

940 名前:924 :2005/04/14(木) 14:42:02
えーとですね、ダイアログベースのmfcなんですけれども。
要は、onsizeに追加するべき内容っていうか、コントロールのサイズを変更するAPIみたいなのがあったりするのかなって考えたり。
ウィンドウ全体に広がりたいので、クライアント領域を取得してその大きさにリストビューのサイズを変えようと思ったらその「リストビューのサイズを変える方法」がわからなかったのです。
同じこと二回言ってますか?いや失敬。

941 名前:デフォルトの名無しさん :2005/04/14(木) 14:43:12
923みたいに、バカのくせに最後に余計な事言わなきゃいいだけ。

942 名前:デフォルトの名無しさん :2005/04/14(木) 14:45:12
ウィンドウのサイズが変わった事を知らせてくれるメッセージはWM_SIZE。
これを受け取ったらリストビューのウィンドウハンドルを取得して
SetWindowPosなりでリストビューの大きさをセット。



943 名前:デフォルトの名無しさん :2005/04/14(木) 14:46:35
まぁ逆切れしたくもなるわな。本人か知らんけど。

944 名前:924 :2005/04/14(木) 14:48:27
なるほどっ。コントロールもウィンドウハンドルを持ってるのですね。
SetWindowPosは使ったことあるのでわかります。
どもありがとうございましたー。


945 名前:923=930 :2005/04/14(木) 14:53:18
呼んだ?

946 名前:デフォルトの名無しさん :2005/04/14(木) 14:55:56
早く糞食って氏ねよ。お前人間向いてねぇから。

947 名前:デフォルトの名無しさん :2005/04/14(木) 15:00:05
>>944
つーかコントロールはウィンドウだ。

948 名前:デフォルトの名無しさん :2005/04/14(木) 15:02:10
VC++.NET2003使い始めたのですがこのコントロールの説明書みたいなのってないですか?

949 名前:デフォルトの名無しさん :2005/04/14(木) 15:12:13
知識がないから初心者なのではない。知識の探し方を知らないから初心者なのだ。
的確な質問ができる人間は、多くの場合他人の力を借りずとも問題を解決できてしまう。
よって質問スレはあやふやで時に意味不明な質問で溢れることになる。

950 名前:デフォルトの名無しさん :2005/04/14(木) 15:12:51
初心者スレってこと忘れんな、一部のヴォケガ

951 名前:デフォルトの名無しさん :2005/04/14(木) 15:13:58
m9(^Д^)プギャー

952 名前:デフォルトの名無しさん :2005/04/14(木) 15:44:18
つーか、質問するネタもなく回答する知識もないなら指咥えて黙って見てればいいのに。

953 名前:デフォルトの名無しさん :2005/04/14(木) 16:04:12
俺は、指咥えるくらいなら、むしろちんぽ咥えているほうがいいな

954 名前:904 :2005/04/14(木) 16:18:15
すみません。引き続きお願いします。
ビルド時にLNK1104が発生しなかっただけで
実はプロセスが生き残ってしまっています。
タスクマネージャを見てビックリ致しました。

955 名前:デフォルトの名無しさん :2005/04/14(木) 16:41:42
>>953
息子をよろしくお願いします

956 名前:デフォルトの名無しさん :2005/04/14(木) 16:44:24
>>904
正常ルートは正しく終了するんだよね?
やっぱあれだ、正常ルートのExitProc()呼び出し周りと異常ルートのそれを見比べるしか。
#見て判らなきゃ貼れ。

957 名前:904 :2005/04/14(木) 17:05:48
>>956
レスありがとうございます。正常ルートといいますか
上部に貼ったコードでの
//正常終了(連続処理時の正常終了)
if (strstr(Tmp,"Transfer complete")!=0){
MessageBox(NULL,"","終了確認",MB_OK);
ExitProc(hWnd);//アプリケーションの終了
}
部もプロセスが残ってしまっています。main.c内で直接
ExitProcを呼び出すと、問題なく終了するようです。
念の為、メイン画面のウィドウハンドルがSub2.cに引き継がれているか
確認したのですが、値は取得時の値と一致しているようです。
一つ気になった点で原因かはまだ未確認ですが,main.cから呼び出した
sub2.c内の関数A’でメッセージボックスを出す処理を追加すると
main.cで上記関数A'の呼出し後に表示されるメッセージが先に表示されていました。
これはsub2.cで非同期関数を使用しているからなのでしょうか?
思い当たる節はファイル転送ソケット系でコールバック関数を使用しております。

958 名前:デフォルトの名無しさん :2005/04/14(木) 17:23:14
>>957
いったいどういうプログラムを元にして、どういう風に改造したのか?
もし素人がでたらめに作ったものであれば、
掲示板に張られてもたぶん利用価値は全くないし迷惑なだけだ。

959 名前:904 :2005/04/14(木) 17:42:18
>>958
弊社で使用している事務用集計データ落とし込みツールです
ソラリス(SUNでしたっけか)といわれるサーバに置かれたデータを事務(OA)が
端末から取り出して集計を行う為の補助ツールで
作成されたメーカーさんはもういません。
もともと、画面があがり、画面の中で指定した日付のログとデータを
手作業で一つづつ端末に落しこんで解析、集計をしていたのですが
不景気で雇いOAも減り残業で帰れない上、日曜出勤を余儀なく
されるのでコマンドラインからパラメタ式起動をかけて、連続で
データの落とし込みと集計を行えるように改造したのです。
幸い、私はパソコンでインターネット等を触われるので色々調べて
なんとか、落とし込みと集計まではうまく動くように改良できました。
社長には来月くらいに出来るかもしれない と言ってしまい
変に期待されて困っています。ちなみにSEとかメーカーに依頼する金は
無いそうです。ゴルフ控えてほしいのですが

960 名前:デフォルトの名無しさん :2005/04/14(木) 17:44:53
>>904
それじゃ今度はsub2.c内の関数がmain.c内の関数と同じスレッドかどうかの確認だな。
別スレッドならメッセージを飛ばすか何か、工夫が必要。
#アップローダに全部晒しちゃえよ。

961 名前:デフォルトの名無しさん :2005/04/14(木) 17:56:01
んだんだ。ソースを全部うpしたらいいかもしれん。

962 名前:904 :2005/04/14(木) 18:03:04
>>960
初歩的な質問ですみません
同じスレッドかどうか調べるにはどのようにすれば良いでしょうか?
スレッドという言葉自体、2chでしか聞いた事がなく
知識不足で申し訳ありません。スレッドという用語について少し調べてみます

言われる通り、ソースを圧縮してアップロードしたいのですが
ところどころに製造メーカ名や実名と思われるコメントがあったり
ヘッダファイルの一部に#define に顧客情報がベタ書きにされている為
ちょっとマズイ可能性があります。基本的に内部の深層までは触わる技術が
当方にない為、とりあえず、プロセスが終了可能なExit方法をみつけられれば
と思っています。お手数かけてしまってスミマセン

一度試しにsub2.c内のA'関数を呼んだ直後に
whileで永久ループさせて、終了及び異常、強制終了時に
グローバルなフラグを立てて、その値が要求に満た場合に
ループを抜けるてmain.c内でクローズ という方法をとってみた
のですが、whileに移った直後、永久に回りつづけているせいか固まってしまいました。



963 名前:デフォルトの名無しさん :2005/04/14(木) 18:18:36
無駄な努力をするのは勝手だが、手に負える範囲を超えているんジャマイカ。
ループ内にSleep(1)を入れてみてそれでも固まるなら諦めかw
兎に角終わるだけでいいならexit()してしまうかねぇ。

964 名前:デフォルトの名無しさん :2005/04/14(木) 18:28:34
全然スレ違いじゃないか
やりたいやつはどっか他所でやってくれ

965 名前:904 :2005/04/14(木) 18:38:16
あ、うまくいったかもしれません。
>>963さまのexitでプロセスが完全に消えました。
ソケット系の初期化とか閉じる処理を残すと怖そうなので

EndProcに書いている一連の処理を呼んだ後にexit()
を追加して様子をみてみます。
ありがとうございます!!

966 名前:デフォルトの名無しさん :2005/04/14(木) 18:44:02
>>962
スレッドIDが同じなら同じスレッドと言える

967 名前:デフォルトの名無しさん :2005/04/14(木) 18:49:05
自作アプリケーションにファイルをドラッグする方法は判るのですが、
自作アプリケーションから他のアプリやデスクトップにファイルをドラッグする方法はあるのでしょうか??
SDKでソースを書いています。MFCは使っていません。
よろしくお願いします。

968 名前:デフォルトの名無しさん :2005/04/14(木) 20:03:40
かもしれません?

様子をみてみます?


969 名前:デフォルトの名無しさん :2005/04/14(木) 20:29:11
次スレマダー?

970 名前:デフォルトの名無しさん :2005/04/14(木) 21:00:21
>無駄な努力をするのは勝手だが、手に負える範囲を超えているんジャマイカ。

何でこういう余計な一言を言う馬鹿って多いんだろう。氏ねよまじで。今すぐに。

971 名前:デフォルトの名無しさん :2005/04/14(木) 21:34:33
Visual C++とは関係ない、C/C++言語のことを質問すりゃ、冷たくされても仕方ない。
初心者だからといって、スレ違いにまで寛容になれとは・・・。

>>912
MFCにはなかったと思う。

Win32 APIスレで聞き直したほうがいいよ。

972 名前:デフォルトの名無しさん :2005/04/14(木) 22:53:29
971って馬鹿?
そしたら初心者のc++質問の専用スレ立てろてか?
ビジュアルは見映えだ。重要なのは中身だよ中身
見てくれオンリーは消えろカス

973 名前:デフォルトの名無しさん :2005/04/14(木) 22:53:48
Visual Stdio .NETで
アイコン追加するとき、
「新しいイメージの種類」ではmonocrome,16色,256色
しか選択できないのですが、それ以上はどう追加すればよいのでしょう。
MFCのデフォルトのアイコンIDR_MAINFRAMEはイメージの種類
が32*32 16777216色なんですが。
なのに。

974 名前:デフォルトの名無しさん :2005/04/14(木) 23:19:05
>ビジュアルは見映えだ。

975 名前:デフォルトの名無しさん :2005/04/14(木) 23:32:01
JAVAとかでねコンパイルすると
エラーの行教えてくれるじゃないですか。
Visual Stdio .NETでC++をコンパイルすると
エラーしてたらコンパイルできなくて
どこがわるいかもおしえてくれないんですけど
エラーの場所おしえてくれるやりかたとかありますか?


976 名前:デフォルトの名無しさん :2005/04/14(木) 23:51:34
それにしても何で事務員がC++なんだよ
いくらPc触れても次元違うだろ
ネタだよネタ おまいら騙されんな
奴はプログラマだ。しかも使えないタイプの役立たず

977 名前:デフォルトの名無しさん :2005/04/14(木) 23:58:16
C++使って事務員の給料じゃやってられないわなw

978 名前:デフォルトの名無しさん :2005/04/15(金) 00:01:06
漏れも事務員だけど、社内アプリ作ってるぞ。貧乏会社だから。

979 名前:デフォルトの名無しさん :2005/04/15(金) 00:03:59
>>911
細かいつっこみすまん
staticはグローバルエリアに宣言すれば
ファイル内使いまわしで合ってるが
では関数内ではどうだ?たとえば再起処理とかの場合
誤解を生むので
《staticはファイル内》っていう表現は避けたほうがいい

980 名前:デフォルトの名無しさん :2005/04/15(金) 00:12:24
>>965
ここの住人は案外親身になって色々思案し
答えてくれている。
初心者ならいざ仕方ないが、《なんかしら動いた》
とか《なんとなくわかりました》
といった回答が出ると、真剣に考えてる半面、適当な対処で
済ませられてるとも取れるので、できればきちっと
疑問点に対して納得の行く答えと結果をレスしてほしい

981 名前:デフォルトの名無しさん :2005/04/15(金) 03:52:20
>>975
普通にやれば表示されるけどなぁ。

言葉じゃわかりにくいから、
画面をキャプチャソフトかビデオカメラで撮影して、どこかのWebサーバで見せてよ。

そしたらアドバイスできるかも。

>>977
C++ってそんなに大層なものなわけ?

982 名前:デフォルトの名無しさん :2005/04/15(金) 06:53:11
>>965
おまえのような香具師がバグやセキュリティホールを大量生産するんだよ

983 名前:デフォルトの名無しさん :2005/04/15(金) 10:25:48
つーか、>965の会社は日曜大工で作った事務所で仕事するようなことをよくできるなぁ。
社長がゴルフ三昧らしいからしょうがないかも知れんが。

984 名前:904 :2005/04/15(金) 12:15:44
皆様 適確なアドバイス、ご指導ありがとうございました。
お叱りいただいた内容についてお詫びします。申し訳ありませんでした。
なんとなく動けばいいかな?と思っていた点は強く反省いたします
調べても解らない所も多く、憶測でしか物事を見れませんでした。
現在、皆様のご指導のもと、希望していた改造機能が順調に動いております
半ば趣味半分で触わっていたもので、【とりあえず】という考え方を
あらためて、今後、動作を見て、理解していく努力をします。
私は本当に小さな会社の事務員です。プログラマーではありません。
時には部品工場の棚卸しをしていますし、穴を掘る事だってあります。
わがままでケチな社長ですが、いいところのほうが多いので社員も
昔から入れ替わらないでいます。今回はVC++の実務は初挑戦でしたが
社長に喜んでもらえたので嬉しくおもいます。皆様ありがとうございました

985 名前:デフォルトの名無しさん :2005/04/15(金) 12:36:36
ちなみにいいところってどんなん?

986 名前:デフォルトの名無しさん :2005/04/15(金) 12:45:38
仕事帰りに、風俗に連れて行ってくれるところ

987 名前:デフォルトの名無しさん :2005/04/15(金) 13:19:12
質問と回答だけでいい。余計な人となりなんていらない。

988 名前: ◆Manna2uCLg :2005/04/15(金) 13:37:34
次スレ

★初心者にVisual C++を教えるスレ★ Part18
http://pc8.2ch.net/test/read.cgi/tech/1113539594/

989 名前:デフォルトの名無しさん :2005/04/16(土) 00:15:41
さっさと埋めてよ

990 名前:デフォルトの名無しさん :2005/04/16(土) 00:35:23
早く埋めてくれーーーっ!!!!

991 名前:デフォルトの名無しさん :2005/04/16(土) 00:35:48
俺の力では無理。

992 名前:デフォルトの名無しさん :2005/04/16(土) 00:44:34
君の力はそんなもんじゃないハズだ

993 名前:デフォルトの名無しさん :2005/04/16(土) 01:10:23
从*・ 。.・)<梅

994 名前:991 :2005/04/16(土) 01:34:32
最後の力を振り絞ってみる。
そして、おやすみなさい。

995 名前:デフォルトの名無しさん :2005/04/16(土) 02:00:23
ぬるぽ

996 名前:デフォルトの名無しさん :2005/04/16(土) 02:13:49
ぬるぽ

997 名前:デフォルトの名無しさん :2005/04/16(土) 02:27:37
ぬるぽ

998 名前:デフォルトの名無しさん :2005/04/16(土) 02:50:48
>>995-997
ガッ!ガッ!ガッ!


999 名前:デフォルトの名無しさん :2005/04/16(土) 02:51:15
ぬるぽ

1000 名前:デフォルトの名無しさん :2005/04/16(土) 02:53:54
           . . . . . . .<ぬるぽぬるぽ!
           : ::: : : :<ぬるぽぬるぽ!
          。'。'。' '。'。'。'。<ぬるぽぬるぽ!
          ( . . . . . . .<ぬるぽぬるぽ!
           : ::: : : :<ぬるぽぬるぽ!
          。'。'。' '。'。'。'。<ぬるぽぬるぽ!
          () () () () () () ()<ぬるぽぬるぽ!
         (.)(.)(.)(.)(.)(.)(.)<ぬるぽぬるぽ!
        (.) (.) (.)(.) (.)(.)(.)<ぬるぽぬるぽ!
        (v)(v)(v)(v)(v)(v)(v)<ぬるぽぬるぽ!
       (∀)(∀)(∀)(∀)(∀)(∀)(∀)<ぬるぽぬるぽ!
      (∀) (∀) (∀)(∀) (∀)(∀)(∀)<ぬるぽぬるぽ!
      (∀) (∀) (∀) (∀) (∀) (∀) (∀)<ぬるぽぬるぽ!
     (゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)(゚∀゚)<ぬるぽぬるぽ!
     (゚∀゚ )(゚∀゚)(゚∀゚) (゚∀゚)(゚∀゚)(゚∀゚)( ゚∀゚)<ぬるぽぬるぽ!
    (゚∀゚ ) (゚∀゚) (゚∀゚) (゚∀゚) (゚∀゚)(゚∀゚)( ゚∀゚)<ぬるぽぬるぽ!
   (゚∀゚ ) (゚∀゚ ) (゚∀゚ ) (゚∀゚) ( ゚∀゚)( ゚∀゚)( ゚∀゚)<ぬるぽぬるぽ!
  ( ゚∀゚ )(゚∀゚ ) (゚∀゚ ) ( ゚∀゚ ) ( ゚∀゚) ( ゚∀゚) ( ゚∀゚)<ぬるぽぬるぽ!
 ( ゚∀゚ ) (゚∀゚ ) (゚∀゚ ) ( ゚∀゚ )  ( ゚∀゚) ( ゚∀゚)  ( ゚∀゚ )<ぬるぽぬるぽ!
( ゚∀ ゚ )(゚∀゚ ) (゚∀゚ ) ( ゚ ∀ ゚ )  ( ゚∀゚)  ( ゚∀゚)  ( ゚∀゚ )<ぬるぽぬるぽ!
( ゚∀ ゚ )( ゚∀゚ ) ( ゚∀゚ ) ( ゚ ∀ ゚ )  ( ゚∀゚ )  ( ゚∀゚ )  ( ゚ ∀゚ )<ぬるぽぬるぽ!
つ」7=(つ」7=∩(つ」7=∩(つ」7=∩-(つ」7=∩- (つ」7=∩ (つ」7=∩
|   j |   j   |   j   |   j    |   j    |   j   .|   j
し'⌒U し'⌒U  し'⌒U  し'⌒U   し'⌒U    し'⌒U.   .し'⌒U


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.