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


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

★初心者にVisual C++を教えるスレ★ Part14
1 名前:デフォルトの名無しさん :04/08/28 15:02
Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう。
・できるだけ具体的に。

  質問の仕方については次のページが大変参考になります。
  http://www.hyuki.com/writing/techask.html
  http://www.geocities.co.jp/Beautycare/4965/public/template.html

■回答するにあたって
・回答する場合はその答えに至るための「コツ」も書いてあげると良いでしょう。
 (MSDNのどの項目だとか、何のキーワードでGoogleするとか)
・ネタや煽りは軽く流しましょう。

前スレ
★初心者にVisual C++を教えるスレ★ Part13
http://pc5.2ch.net/test/read.cgi/tech/1089011118/l50


2 名前:デフォルトの名無しさん :04/08/28 15:03
// 過去スレ
Part13 http://pc5.2ch.net/test/read.cgi/tech/1089011118/
Part12 http://pc5.2ch.net/test/read.cgi/tech/1083585833/
Part11 http://pc5.2ch.net/test/read.cgi/tech/1077965179/
Part10 http://pc5.2ch.net/test/read.cgi/tech/1074933908/
Part09 http://pc5.2ch.net/test/read.cgi/tech/1068983609/
Part08 http://pc5.2ch.net/tech/kako/1063/10630/1063029371.html
Part07 http://pc5.2ch.net/tech/kako/1056/10562/1056280510.html
Part06 http://pc5.2ch.net/tech/kako/1052/10529/1052931903.html
Part05 http://pc5.2ch.net/tech/kako/1048/10486/1048698321.html
Part04 http://pc5.2ch.net/tech/kako/1044/10441/1044196393.html
Part03 http://pc5.2ch.net/tech/kako/1038/10381/1038160750.html
Part02 http://pc3.2ch.net/tech/kako/1030/10309/1030985362.html
Part01 http://pc3.2ch.net/tech/kako/1023/10235/1023530449.html
※「いや〜、ごめんなさい」により、紛失の可能性

// 関連
■MFC相談室 mfc11.dll■
http://pc5.2ch.net/test/read.cgi/tech/1088084875/
Win32API質問箱 Build22
http://pc5.2ch.net/test/read.cgi/tech/1092524669/
鬱だ氏のう DirectX (Part 14)
http://pc5.2ch.net/test/read.cgi/tech/1088594869/
C++相談室 part34
http://pc5.2ch.net/test/read.cgi/tech/1092018643/
C/C++の宿題を片付け作戦指令 30代目
http://pc5.2ch.net/test/read.cgi/tech/1091954342/


3 名前:デフォルトの名無しさん :04/08/28 15:03
// 外部リンク
猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
MSDN ライブラリ
http://www.microsoft.com/japan/msdn/library/
Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Google
http://www.google.co.jp/

//このスレの前身 VisualC++相談室 過去スレ
part 1 http://piza.2ch.net/tech/kako/970/970607517.html
part 2 http://piza.2ch.net/tech/kako/981/981630730.html
part 3 http://piza2.2ch.net/tech/kako/993/993186053.html
part 4 http://pc.2ch.net/tech/kako/1002/10021/1002165477.html
part 5 http://pc.2ch.net/tech/kako/1006/10068/1006834463.html
part 6 http://pc.2ch.net/tech/kako/1011/10116/1011615035.html
part 7 http://pc.2ch.net/tech/kako/1017/10178/1017843192.html
part 8 http://pc.2ch.net/tech/kako/1022/10224/1022499000.html
part 9 http://pc5.2ch.net/tech/kako/1036/10368/1036897197.html



4 名前:デフォルトの名無しさん :04/08/28 16:18
>>1
市ね

5 名前:デフォルトの名無しさん :04/08/28 16:30
>>1


6 名前:デフォルトの名無しさん :04/08/28 17:54
VC++6で.cppと.defファイルをDLLにコンパイルする方法を教えて下さい

7 名前:デフォルトの名無しさん :04/08/28 20:13
>>6
意味不明

8 名前:デフォルトの名無しさん :04/08/28 22:37
>>6
ウイザードでDLLのプロジェクトを作成する。
cppとdefを書き換える。
コンパイルする。


9 名前:デフォルトの名無しさん :04/08/28 22:47
はじめまして

環境:Visual Studio 6

C++にある、setというコンポーネントを使おうとしてます。
勉強段階として、次のデータ型を
---
///データ型
typedef struct{
stringid;
stringname;
stringdetail;
} DATA;

template<typename DATA>
bool operator<(DATA const &a, DATA const &b){
return a.id < b.id;
};
---

以下のsetに次々と登録していきたいと考えています。
set<DATA> idlist;

が、次のようなエラーが出てしまいます。

error C2667: '<' : 2 個のオーバーロード関数があいまいで最適な変換ができません。 (新しい機能 ; ヘルプを参照)
error C2593: 'operator <' があいまいです。

idの部分を、intに変えた場合はうまくいきました。
なぜ、stringにするとダメなのでしょう…?
何かご存知の方がおられましたら、ご教授の程お願いいたします。

10 名前:デフォルトの名無しさん :04/08/28 23:04
// これはいらないんじゃないか? → template<typename DATA>
bool operator<(DATA const &a, DATA const &b){
return a.id < b.id;
};

ってか、stringのあとにちゃんと空白を入れろと。

11 名前:デフォルトの名無しさん :04/08/28 23:18
>>10さん

ありがとうございました。できました。
template宣言いらないのか…

空白をTABにしていたので、消えちゃいました;;
次から気をつけます(^^)ゞ

12 名前:デフォルトの名無しさん :04/08/29 11:30
アプリケーション配布ライセンスって
Visual C++ 6.0 Professional Editionで作ったものって売っても問題ないの?教えてください
使用許諾書のを読んだけど、問題ないみたいが。


13 名前:デフォルトの名無しさん :04/08/29 15:02
質問です。
ネット上で拾ったDLLモジュールのソースをコンパイルして使用したいのですが
VCTK2003+PSDKの環境で
VCTKの方のコンパイラを使用してます
cl /c AutoAcce.cpp
link /dll AutoAcce.cpp /DEF:AutoAcce.def
それで以下の結果に終わってしまいます。
何がいったい原因なんでしょうか?
   Creating library AutoAcce.lib and object AutoAcce.exp
AutoAcce.obj : error LNK2019: unresolved external symbol __imp__KillTimer@8 referenced in function "void __stdcall DefaultEquip(struct HWND__ *,unsigned int,unsigned int,unsigned long)" (?DefaultEquip@@YGXPAUHWND__@@IIK@Z)
AutoAcce.obj : error LNK2019: unresolved external symbol __imp__SetTimer@16 referenced in function "int __stdcall OnSend(unsigned char *,int)" (?OnSend@@YGHPAEH@Z)
AutoAcce.dll : fatal error LNK1120: 2 unresolved externals

14 名前:デフォルトの名無しさん :04/08/29 15:16
よくわからないのですがKillTimerとSetTimerを他のLibから引っ張らないといけないのでしょうか?

15 名前:デフォルトの名無しさん :04/08/29 18:43
稀にソフトウェアのバージョンアップ内容を見ると
・開発環境を VC++ 6.0 から VC++ .NET に移行した
と、開発環境の変更だけの更新内容を見かける事があるのですが
VC++ 6.0 から VC++ .NETへ移行することで
起動の早さ等、ユーザー側に何らかの影響を及ぼすのでしょうか?
VC++素人の質問ですみません、よろしくお願いします

16 名前:デフォルトの名無しさん :04/08/29 18:50
dllのバージョンとか最適化とか

17 名前:デフォルトの名無しさん :04/08/29 20:07
>>15
manegedで書き直した場合なら、実行にCLRランタイムが必要になるし
起動速度なんかも大分かわってくるんじゃないの?

18 名前:デフォルトの名無しさん :04/08/29 21:22
VC++自体の質問なのですが、
http://www.amazon.co.jp/exec/obidos/ASIN/B00009PJOC/qid=1093782111/sr=1-2/ref=sr_1_10_2/249-3678490-8701153
対応OS:Win2000Sv/Win2000AdvSv/Win2000Profesl/WindowsXp Home/WindowsXp Pro/Win2003Sv STD/Win2003Sv
になってるのですがMe、98では使用不可でしょうか?

19 名前:デフォルトの名無しさん :04/08/29 21:48
>>18
インストール出来ません

20 名前:デフォルトの名無しさん :04/08/29 22:08
そんなぁ…orz

21 名前:デフォルトの名無しさん :04/08/30 11:44
>>18
では「インストールできます」ってことにしておきますね

22 名前:デフォルトの名無しさん :04/08/30 14:22
XP買いなはれ。

23 名前:デフォルトの名無しさん :04/08/30 14:36
最近使ったファイルがデフォでコンパイルした場合表示されるのですが、
(MRU?)
そのファイル名を取得できる方法をお教えください。


24 名前:デフォルトの名無しさん :04/08/30 15:24
>>23
VC6.0付属MFCには、CWinAppのprotectedメンバにm_pRecentFileListがある。
MSDNには載ってないけど多分これ使えばいいんじゃね?

25 名前:デフォルトの名無しさん :04/08/30 15:51
>>23
レジストリから漁ったりなんかしちゃったりして

26 名前:デフォルトの名無しさん :04/08/30 16:00
コマンドプロンプトよりユーザID、パスワードを入力させ、
RADIUSサーバにRADIUSプロトコルで送信し、
ユーザの認証を行うRADISUクライアント用のAPをVCで作ろうと思っています。
Active DirectoryでRADIUSを叩けるという話を聞きまして、
調べてみたのですが、ADSIでActive Directoryにアクセスするという所までわかったのですが、
具体的にどのようなことをすれば良いのかわかりませんでした。

そこでみなさんの知恵をお借りしたいのですが、ご存知無いでしょうか?
参考になるサイト、書籍やアドバイスがございましたら、ご教授くださいませ。
宜しくお願い致します。

開発環境は
Windows2000pro
Visual Studio.NET
です。


27 名前:15 :04/08/30 18:16
>>16
>>17
レスありがとうございます

28 名前:デフォルトの名無しさん :04/08/30 18:53
>>12
俺の脳内ソースだと、ProはOKなはず

29 名前:デフォルトの名無しさん :04/09/01 02:11
VC6,0でリソースエディタにて、画面を作成しました。

その画面には、[OK]ボタンがデフォルトボタンになってます。
また、リストビューが表示されています。

このリストビューを、サブクラス化してエンターキーを押した場合に、
ダイアログを出そうと考えています。

ところが、エンターを押すとデフォルトボタンの[OK]が実行されてしまいます…
どうしたらいいでしょうか…

試しに、スペースキーを入れてみましたが、スペースはうまくいきます。

サブクラス化した一部です。


switch(message) {
  case WM_KEYDOWN:
    switch(wParam){
      case VK_RETURN:
        MessageBox(hWnd, "えんたー", NULL, MB_OK);
        break;

      case VK_SPACE:
        MessageBox(hWnd, "すぺいす", NULL, MB_OK);
        break;
 :
 :

30 名前:デフォルトの名無しさん :04/09/01 03:35
>>29
OnOK()

//CDialog::OnOK();
とコメントアウトする

適当な処理をそこに足す

31 名前:デフォルトの名無しさん :04/09/01 03:56
SDKの質問にMFCで答えるスレはここですか

32 名前:デフォルトの名無しさん :04/09/01 08:13
#include<stdio.h>
#include<stdlib.h>

int main(void){
FILE *fp;
if((fp=fopen("sintai.dat","w"))==NULL){
printf("File not open\n");
exit(1);
}

int i;
struct sintai {
char *name;
int height,weight;
};
static struct sintai a[]={
{"nagata" ,180, 85},
{"nisimura" ,185, 95},
{"nakanisi" ,175, 80},
{NULL,0,0}
};
for (i=0 ; a[i].name != NULL; i++){
printf("%s\t%d\t%d\n",a[i].name,a[i].height,a[i].weight);
fprintf(fp,"%s\t%d\t%d\n",a[i].name,a[i].height,a[i].weight);
}
return 0 ;
}

これはstruct sintai a[]を初期化してsintai.datへ書き出すプログラムですが

これの逆をする場合、つまりsintai.datが 先に与えられている条件でsintai.datを読み込んで
struct sintai a[]へ代入する場合はどうすればいいでしょうか

33 名前:デフォルトの名無しさん :04/09/01 08:24
fscanfを使え!てかスレ違いだ

34 名前:デフォルトの名無しさん :04/09/01 08:27
メモ帳が保存できません

35 名前:デフォルトの名無しさん :04/09/01 08:42
>>34
メモ帳を終了させてから notepad.exe をバイナリエディタで読み込み保存しろ

36 名前:28 :04/09/01 09:04
>>30>>31
すみません。環境説明が足りなかったです…
おっしゃるとおり、SDKなのでOnOKの処理はありません。

デフォルトボタンはリストビュー以外では有効にしておいて
リストビューでのエンターに対してのみ、ダイアログを表示したいのです。

この手の動きをするアプリはいくつかあるので、実現可能なはずなのですが…

37 名前:デフォルトの名無しさん :04/09/01 10:43
visual c++.netでcppファイルからヘッダーファイルを作る方法を
教えてください。

m(__)mお願いします。

38 名前:デフォルトの名無しさん :04/09/01 11:03
>>37
自分で.cppファイル解析して書くしかない。
ヘッダ間違って消したのか?

39 名前:デフォルトの名無しさん :04/09/01 11:31
ダイアログベースのアプリケーションを作りたいんだけど
他の人が作ったファイルの機能などを取り込みたい、
でもそっちにもメインウィンドウがあってしかも機能がウィンドウに密着している(と思う)

このウィンドウは全然要らないので
必要な関数だけを読んでコードを書きました。
コンパイル、ビルドにはエラーはありません。

実行時に
Debug Library
Debug Assertion Failed!
というエラー
多分メインウィンドウが重複しているとかだと思うのですが..


もっと詳しく書かないとアドバイスもらえませんかね。

40 名前:デフォルトの名無しさん :04/09/01 11:38
>>39
Assertしたならその行がわからないと。
「再試行」でその行に止まるからそれを見て自己解決か再投稿。
ソース抜き出し再利用とかでは気をつけないとよくある。

41 名前:デフォルトの名無しさん :04/09/01 14:11
おそらくVCでコピーした時だけど
コピー前にクリップボードに "retun 1;"がはいっていて
"hoge()"を選択して
おそらくCtrl+Cを押すと
retun 1;hoge()
がクリップボードに入ってる時がたまにあるんだわ。

これって、Ctrl+C以外を押したときになるの?
それとも、VC以外の機能?



42 名前:41 :04/09/01 14:13
環境は
VC6
WindowsNT4
です。
他に常駐は「紙」

インストールしているエディタは、
秀丸と
EmEditorと
サクラエディタと
xyzzy
です。

43 名前:デフォルトの名無しさん :04/09/01 15:06
>>41
VC++のエディタ上での事?

44 名前:デフォルトの名無しさん :04/09/01 15:47
>>43
はい。
ショートカットキーでコピペすると
たまに、古いクリップボード内容がくっついてるんです。
何か別のキーを押してたのかもしれません。
そんな機能ってあります?

45 名前:デフォルトの名無しさん :04/09/01 15:48
>インストールしているエディタは、

(´ー`)y−〜〜

46 名前:デフォルトの名無しさん :04/09/01 15:54
>>44
今、数十回やってみたけど、そんな事一度も起こらんよ。
とりあえず、SPはあててるの?

47 名前:デフォルトの名無しさん :04/09/01 19:10
今日学校にVisual C++6.0があったので友達とコピーしてたのですが、
これって違法ですよね?

48 名前:29 :04/09/01 19:47
すみません…先ほど番号を間違えました…

デフォルトボタンをやめて確認しようとしたところ、
VK_RETURNに入りませんでした!

つまり、デバッガで、VK_RETURNとVK_SPACEのMessageBoxにブレイクポイントしても
スペースは止まるが、エンターだと止まらないのです…

調べてみたのですが、MFCの場合は「PreTranslateMessage」を使う
ということはわかったのですが、SDKの場合はどうすれば良いのでしょう?

49 名前:デフォルトの名無しさん :04/09/01 20:11
directplayでmsnZONEみたいな自動起動プログラムをつくりたいのですが
どうすればよいのでしょうか?

50 名前:デフォルトの名無しさん :04/09/02 08:57
MFCでツールバーをフローティングしたりドッキングしたりする
アプリ作れますか?
作れるか作れないかで結構です。
それによって、VCかBCBにするか決めるので・・・

51 名前:デフォルトの名無しさん :04/09/02 09:27
#includeで取り入れたいヘッダーファイルの場所を指定するにはどうすれば
よいのでしょうか?
#include<A>
#include<B>
#include<C>
A,B,C全て異なるフォルダから参照することはできますでしょうか?

52 名前:デフォルトの名無しさん :04/09/02 10:13
>>51
意味わからんがとりあえず貼っとく。
ttp://forums.belution.com/ja/vc/000/262/27.shtml

53 名前:デフォルトの名無しさん :04/09/02 10:34
>>50
出来る。
でもBCBの方が遥かに楽。
でも仕組み知っておきたいならMFCか。

BCBは、これ以上バージョンアップしない予感だし
仕事ではVCが遥かに多い。

とりあえず
両方知っとけ。

54 名前:50 :04/09/02 12:31
>>53
ありがとうございます。
とりあえず、将来性に期待してVCを覚えます。
ゆくゆくは両方覚えられるといいかな・・・

55 名前:デフォルトの名無しさん :04/09/02 14:23
開発環境:VC++6 SP5、最新のPlatform SDKインクルード、Windows XP Pro SP1

エクスプローラ上で、ファイルやフォルダのアイコンの上で右クリックすると、
「開く」「印刷」「検索」などの項目で構成されるメニューが表示されますよね。
項目を非表示させる、あるいは項目名が灰色表示で選択できない、というプログラムを
作りたいです。
イメージとして、作りたいと思うプログラムが起動されているとき、項目の非表示、
あるいは灰色表示で選択できなくなり、起動されていないときは普通に表示されて
選択ができる、というものです。

VCのシェルプログラミングに関するサイトをいろいろ見たのですが、イメージに
ぴったり合うサイトが発見できませんでした。
メニューに項目を追加する、というものならたくさんありましたが…。

どなたかやり方、あるいは参考リンクをご存知でしたら教えてください。

56 名前:デフォルトの名無しさん :04/09/02 14:39
CMenu
EnableMenuItem(item, MF_GRAYED);

57 名前:55 :04/09/02 16:42
>>56
ありがとうございます。
それで、関連して2つ質問があります。

(1)EnableMenuItemの第一引数に設定する情報ですが、afxres.hをインクルードして、
ID_FILE_XXX、又は、ID_EDIT_XXXで始まる定数を設定すればよいですよね?

(2)作りたいと思うプログラムは、MFCのダイアログベースでやりたいです。
試しに新規にプロジェクトを作成後、クラスウィザードでOnRButtonDownを追加して、
以下のように組みました。
(例:ファイルを右クリックしたときに、「開く」を無効にしたい場合)
void CClickDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
CMenu *hMenu;
CWnd* cwParent = GetParent();
DWORD dwStyle = cwParent->GetStyle();
hMenu = cwParent->GetSystemMenu(FALSE);
hMenu -> EnableMenuItem(ID_FILE_OPEN, MF_GRAYED);
CDialog::OnRButtonDown(nFlags, point);
}
上でビルドして実行ファイルが立ち上がっている状態で、あるテキストファイルのアイコン上で
右クリックしました。
しかし、「開く」の項目が無効になりませんでした。
これは、ソースの組み方そのものがおかしいのでしょうか?
ダイアログベースでできるのであれば、プロジェクト新規作成後からの手順を
教えていただけたらうれしいです。

58 名前:デフォルトの名無しさん :04/09/02 22:15
>>57
ちょっと意図する事がよく分からないんですが、
要するに、自分の作ったプログラムから
エクスプローラのポップアップメニューを制御したという事ですか?

↓にシェル関係の情報が紹介されてるので参考までに。
ttp://www.asahi-net.or.jp/~GV4J-SGUR/narik/susucyu.htm

59 名前:デフォルトの名無しさん :04/09/02 22:18
visual c++.net やってますが正直さっぱりわかりません。

javaはそれなりに出来ますがc++自体初心者です。
MFCアプリケーションだとすでに、ヘッダーファイルやcppファイルなどが
作られていますがその中の文法がわかりません。
2,3さつ本持っていますが、どれもコンテンツの加え方みたいなものしか書いていません。

中で何が行われているかわからないと、この先壁にぶち当たるような気がしていて
とりあえず、中でどういう順番で何が行われているか理解しようと思っています。

こういう自分にお薦めのvisual c++.netの本がありましたら教えていただけないでしょうか?

60 名前:デフォルトの名無しさん :04/09/02 22:24
なら純粋なCやC++の本を買った方がいいんじゃないの?

61 名前:デフォルトの名無しさん :04/09/02 22:43
javaは簡単っつーことだな。

62 名前:デフォルトの名無しさん :04/09/02 22:50
>>59
自分も最初はMFCどころかC++の文法も分からなかったけど
C/C++の文法を覚えてからMFCでのプログラミングを練習したよ。

最初は、ホント滅茶苦茶なコードしか書けず何度何度も破綻したけど、
色々な書籍やサイトなどの文献を読み漁って(時には2chでの質問も)
諦めずにやっていたら、いつの間にやらそれなりにまともなコード書けるようになってたよ。

今では、公開しているソフトがそこそこ評価してもらえるくらいになったよ。
ちなみに、自分で「まとも」だと思えるアプリが作れる様になるまで3年くらいかかったけどね…

63 名前:62 :04/09/02 22:55
>>59
>こういう自分にお薦めのvisual c++.netの本がありましたら教えていただけないでしょうか?
ごめん、ここの部分のレスがなかったね…
う〜ん、自分の場合は書籍よりもWebの方が有意義な情報が多かったような気がするなぁ。

64 名前:デフォルトの名無しさん :04/09/03 03:00
>>59

1冊目 MFCによるWindows95プログラミング
ウィザードの吐き出したソースの変更ではなく
1からスクラッチでソースを起こす方式で
SDK的にMFCを解説
Win32APIの知識は無くても読める
C++の知識は必要

2冊目 MFCアンサーブック
前半にドキュメントビューアーキテクチャの解説がある
MFCのフレームワークが理解出来る

65 名前:デフォルトの名無しさん :04/09/03 03:03
>>64
MFCによるWindows95プログラミングは、MFCによるWindowsプログラミングとして、改訂版がでてますよ。


66 名前:デフォルトの名無しさん :04/09/03 09:27
MFCアプリケーションについて質問があります。
ソースファイル
 |_MainFrm.cpp
_SOFT.cpp
_SOFTDoc.cpp
_SOFTView.cpp
_stdafx.cpp
ヘッダーファイル
 |_MainFrm.h
_Resource.h
_SOFT.h
_SOFTDoc.h
_SOFTView.h
となっていて、MainFrm.cppの中でCMainFrame::OnCreateやCMainFrame::PreCreateWindow
など、MainFrm.hの中にあるメソッドについて何か操作をしているようですが、
これは一体何をしているのでしょうか?

あと、上記のソースファイルの中ではclassが定義されていませんが、classがある時と
ないときで何が変わるのでしょうか?

67 名前:66 :04/09/03 09:30

あ‥メソッドを上書きしているのですか?

68 名前:55 :04/09/03 10:52
>>58
やりたいことはそのとおりです。
教えていただいたURLですが、実はシェルプログラミングの別件の調査で、
少し前に発見していました。
コーディングをするならEnableMenuItemを使うのではなく、レジストリ操作で
やる方法になるんですか…。

69 名前:デフォルトの名無しさん :04/09/03 20:44
ウィンドウに描画された矩形をマウスでドラグするという
単純なテストプログラムを作ってみたんですが、どうもうまくいきません。
どうすればいいか教えて下さい。
説明が難しいのでワークスペースごとUPしてしまいました。
ごく短いVC++6、WinAPIのプログラムです。
ttp://gamdev.org/up/img/1157.zip
こんな事も分からない俺…orz
よろしくお願いします。

70 名前:デフォルトの名無しさん :04/09/03 20:47
↑ウィルス

71 名前:デフォルトの名無しさん :04/09/03 20:47
>>69
意図的に作られたものではないにせよ、実質ウィルス。

72 名前:69 :04/09/03 21:05
まじで?なんか感染してる?
そうじゃなくてアフォプログラムでPCバグったとか
そういう意味だったらすいません。。。

73 名前:デフォルトの名無しさん :04/09/03 21:25
何をしたいのかってのを明確にした方が早いと思うけどなあ。

74 名前:69 :04/09/03 21:31
すいません。古いのをUPしてたんで消しました。
新しいのをUPしようとしたけど(どっちにしろまともに動かないけど)
やっぱ恥かしいので止めときます。

>>70>>71
とりあえず氏ね。

75 名前:デフォルトの名無しさん :04/09/03 21:53
いちいち反応して暴言吐いてる香具師には多分無理w

76 名前:デフォルトの名無しさん :04/09/03 21:59
マウスボタンON/OFF情報を保存するフラグ変数を用意して
マウスボタンON時は、マウスポインタが矩形内にあるか判断した上でフラグをTRUEにする。
マウスボタンOFF時は、フラグをFALSEにする。
で、その変数がTRUEの場合だけ、マウス移動と連動して矩形を移動させれば良いのでは?

77 名前:69 :04/09/03 22:17
>>76
69でUPしたのはなんだかでたらめのやつをUPしてしまったんですが
76と同じ意味の事をやってるつもりのバージョンでもできないんですよねぇ。
WM_MOUSEMOVEは使いたくないし。。。

78 名前:デフォルトの名無しさん :04/09/04 00:01
>>77
どの辺りが分からないのかをハッキリさせないと
多分誰も答えてくれないと思うよ。

79 名前:デフォルトの名無しさん :04/09/04 00:01
他人が書いたWinソフトのソースコードを見ると
標準出力の起動しないアプリケーションで
よくprintfが描いてあるのですが、これはどういった効果のためでしょうか?


80 名前:デフォルトの名無しさん :04/09/04 00:06
sprintfの見間違いと思われ

81 名前:デフォルトの名無しさん :04/09/04 00:07
いえ、見間違いでは有りません、
デバッグのときだけ認識するようですがこれはなんなのでしょうか

82 名前:デフォルトの名無しさん :04/09/04 00:51
visual c++.netでおすすめの本ってありますか?


83 名前:デフォルトの名無しさん :04/09/04 09:05
>>79
標準出力の起動しないってどういう意味だ?

デバッグ用の出力だろ。
コンソールアプリでなくても標準出力はできるぞ。
パイプ開くツールから起動してログ取ったりする。リダイレクトも出来るだろ。


84 名前:69 :04/09/04 14:55
>>78
すいません。昨日の部分はうまくいったんですが別の問題が発生したので改めて、、、

APIで矩形を描いてそれをマウスで掴んで動かす実験をしてます。
GetAsyncKeyStateでマウスボタンの押下状態を取得してるんですが、
外からボタンを押したまま矩形に接しただけでも矩形を掴めてしまって困ってます。
(連射しながら近づいているような扱いになっているためフラグとか使うのも無理っぽい)
ウィンドウメッセージのswitchを使わずに、
きちんと矩形内でマウスボタンを押下する以外には掴めないようにできないものでしょうか?
なにか方法があったら教えてください。お願いします。
↓ソースです。(VC6++です)
ttp://gamdev.org/up/img/1162.zip

85 名前:デフォルトの名無しさん :04/09/04 15:23
脳内コンパイルだけどこれで駄目ですか?

static int oldX,oldY;;
static bool bDrag=false;

//左ボタンが押されてたら移動
if(bDrag) move(mouseX-oldX,mouseY-oldY);
if (GetAsyncKeyState(VK_LBUTTON) & 0x8000){
 //カーソルが矩形内にあるかどうか判定
 if (mouseX>=wndX && mouseX<=wndX+wndW &&
     mouseY>=wndY && mouseY<=wndY+wndH){
  bDrag=true;
 }
}
else bDrag=false;
oldX=mouseX;
oldY=mouseY;


86 名前:69 :04/09/04 15:41
>>85
すいません、駄目でした。。。
動き的には今までと同じ模様です。

87 名前:デフォルトの名無しさん :04/09/04 15:47
じゃあこれは
if (!bDrag&&GetAsyncKeyState(VK_LBUTTON) & 0x8000)


88 名前:デフォルトの名無しさん :04/09/04 15:48
>>87
あだめだ

89 名前:デフォルトの名無しさん :04/09/04 15:52
んーこうかな?
int oldX,oldY;;
static bool bDrag=false,bFst=false;

//左ボタンが押されてたら移動
if(bDrag) move(mouseX-oldX,mouseY-oldY);
if (!bFst&&GetAsyncKeyState(VK_LBUTTON) & 0x8000){
 bFst=true;
 //カーソルが矩形内にあるかどうか判定
 if (mouseX>=wndX && mouseX<=wndX+wndW &&
     mouseY>=wndY && mouseY<=wndY+wndH){
  bDrag=true;
 }
}
else{bFst=bDrag=false;}
oldX=mouseX;
oldY=mouseY;



90 名前:デフォルトの名無しさん :04/09/04 16:02
ヘッダーファイル
|_A.h
|_B.h
とあって、ヘッダーファイルAの中ではclass Aが定義されていて、ヘッダーファイル
Bの中ではクラスBが定義されています。
ここで、
#include "B.h"
class A : public BとしてクラスBを継承したいのですが
どうしても、C2054 の「定義されていない基本クラスが宣言されています」の
エラーが出てしまいます。
逆に、ためしに
#include "A.h"
class B : public A

とやると、エラーはでません。この理由がわかりません。この場合クラスAとBの
違いは何が考えられるでしょうか?

91 名前:デフォルトの名無しさん :04/09/04 16:03
ごめんおれへっぽこだな
if (!bFst&&GetAsyncKeyState(VK_LBUTTON) & 0x8000){
 bFst=true;
 //カーソルが矩形内にあるかどうか判定
 if (mouseX>=wndX && mouseX<=wndX+wndW &&
     mouseY>=wndY && mouseY<=wndY+wndH){
  bDrag=true;
 }
}
else if(bFst){bFst=bDrag=false;}

92 名前:デフォルトの名無しさん :04/09/04 16:56
>>90
恐らくだが、
先行宣言 でぐぐれ

93 名前:92 :04/09/04 17:00
すまん、先行宣言関係ないじゃん…

94 名前:デフォルトの名無しさん :04/09/04 17:33
>>90
原因を突き止めるためにsimplifyしてみたら?
----- A.h -----
#include "B.h"
class A : public B {};

----- B.h -----
class B {};

ここまでやれば通るでしょ?


95 名前:69 :04/09/04 19:31
>>91
どうもです。
これでもだめっぽいです。
やっぱ時間を細切れに考えると連射で矩形内に侵入してることに
なってるんでしょうか。。。頭がこんがらがって…

96 名前:69 :04/09/04 21:48
すいません、ちょっと別のところで聞いてくることにします。
色々お世話様でした。助けてくれた方ありがとうございました。

97 名前:初心者 :04/09/04 22:15
すいません、課題が進まなくて困っています、誰か教えていただけないでしょうか?
目的は、すでにあるテキストファイルを次々に読み込んでその中の一部のデータだけを
まとめて一つのファイルに出力したいのですが・・・、
次々にファイルを読み込む命令で,
fpopen(fp,"ファイル名+number","r");
みたいな形でnumberの部分for文で次々に変えていきたいのですが
うまくいきません(T_T)
strcatやstrcpyを使うことは考えたのですがint型はchar型では渡せないとかなんとかの
エラーが・・・。雑な説明ですがどうぞご教授願います。


98 名前:デフォルトの名無しさん :04/09/04 22:17
>>97
sprintf

99 名前:初心者 :04/09/04 22:42
おお!?
試してみます!
ご返事ありがとうございます!!

100 名前:デフォルトの名無しさん :04/09/05 06:14
>>96
そんなに難しい事かな?
以下のコードで出来るよ(確認済み)。

static POINT BoxPos;
static POINT OldCurPos;
static BOOL DrgFlag;

POINT CurPos;
GetCursorPos(&CurPos);
ScreenToClient(hWnd, &CurPos);

if(GetKeyState(VK_LBUTTON) & 0x80){
  if(!DrgFlag){
    if(CurPos.x >= BoxPos.x && CurPos.x <= BoxPos.x + 64 &&
      CurPos.y >= BoxPos.y && CurPos.y <= BoxPos.y + 64){
      DrgFlag = TRUE;
      OldCurPos.x = CurPos.x - BoxPos.x;
      OldCurPos.y = CurPos.y - BoxPos.y;
    }
  }
}else{
  DrgFlag = FALSE;
}

if(DrgFlag){
  BoxPos.x = CurPos.x - OldCurPos.x;
  BoxPos.y = CurPos.y - OldCurPos.y;
}

101 名前:デフォルトの名無しさん :04/09/05 08:46
ソースファイル
A1.cpp
ヘッダーファイル
B1.h
をビルドするとエラーが出ませんでした。後にソースファイルにA2.cppを追加したらエラーが
でました。そしてその後A2.cppを消して再ビルドすると以下のエラーが出て
どうしても解決しません。

error LNK2020: 未解決のトークン
fatal error LNK1120: 外部参照1が未解決です。

調べると、変数が見つからないという類のエラーらしいのですが、だとしたら
一度通ったコードが通らなくなる理由がわかりません。
誰か教えてください!

102 名前:96 :04/09/05 08:52
>>100
ありがとうございます。実は昨夜何とか解決しました。
100の方法試させて頂きましたが、
ドラグ状態で矩形に近づくと掴んでしまいません?

103 名前:100 :04/09/05 10:25
>>102
ああ、それが問題だったのね… 解決したなら、もう必要ないとは思うけど
以下修正コード。ちょっと汚いけど。

BOOL GetLBtnState(void)
{
static BOOL flag = FALSE;
  if(GetKeyState(VK_LBUTTON) & 0x80){
    if(!flag){ flag = TRUE; return TRUE; }
  }else{
    flag = FALSE;
  }
  return FALSE;
}
void Main(void)
{
static POINT BoxPos, OldCurPos;
static BOOL DrgFlag;
  POINT CurPos;
  GetCursorPos(&CurPos);
  ScreenToClient(hWnd, &CurPos);
  if(!DrgFlag && GetLBtnState()){
    if(CurPos.x >= BoxPos.x && CurPos.x <= BoxPos.x + 64 &&
      CurPos.y >= BoxPos.y && CurPos.y <= BoxPos.y + 64){
      DrgFlag = TRUE;
      OldCurPos.x = CurPos.x - BoxPos.x; OldCurPos.y = CurPos.y - BoxPos.y;
    }
  }else if(DrgFlag && !(GetKeyState(VK_LBUTTON) & 0x80)){
    DrgFlag = FALSE;
  }
  if(DrgFlag){ BoxPos.x = CurPos.x - OldCurPos.x; BoxPos.y = CurPos.y - OldCurPos.y; }
}

104 名前:デフォルトの名無しさん :04/09/05 10:26
MFCをでコードを組んでいて、Onpaintで描画しようと思っています。
あるダイアログボックスの中に、Edit Controlを4つ、ボタンを1つ用意し
ボタンを押した瞬間に、Edit controlに入れられた値をパラメータとする四角形
をビューウィンドウに描画するようにしたいのですが、

Onpaint関数だと、ボタンを押した瞬間には描画してくれません。
又、Invalidate();を使うとビューウィンドウではなく、ダイアログボックスの中に
描画されてしまいます。

何か良い方法はありませんでしょうか?

105 名前:デフォルトの名無しさん :04/09/05 10:47
よくわからんけど、RedrawWindow()じゃダメ?

106 名前:104 :04/09/05 11:03
一部追加。

void CChildView::OnBnClickedOk()
{
Invalidate();
OnPaint();
}
ボタンが押された時に呼び出される関数OnBnClickedOk()の中で上のように
書くとダイアログボックスの中に描画されてしまいます。
RedrawWindow()やupdatewindow()でもうまくいきません。
OnBnClickedOk()メソッドの中で再描画をコードしてはいけないのでしょうか?


107 名前:デフォルトの名無しさん :04/09/05 11:13
>>106
OnPaint()が、CChildViewのメンバ関数だからじゃね?
描画すべき親の関数を呼び出してみては?

108 名前:デフォルトの名無しさん :04/09/05 11:34
>>104
矩形表示用のウィンドウと値設定用のダイアログがあるのかな?
それなら値を格納する変数はとりあえずグローバルにしておいて
ダイアログのボタンを押したときに表示用ウィンドウ側に、
WM_PAINTメッセージでも送ってやったらどうだべ?
で表示用ウィンドウ側ではそのデータを元に矩形を描くと。

109 名前:デフォルトの名無しさん :04/09/05 16:46
String Tableでは扱えない大きさの文字列をリソースにして読み込みたいのですがよい方法はありませんか?

110 名前:デフォルトの名無しさん :04/09/05 16:54
main関数があるソースの場合
cout <<を使えば、そこを通る値が確認できデバッグしやすいのですけど、
MFCでコレに近いことってできませんかね。

ある場所を通る値を簡単に出力できるような方法がないですかね?

111 名前:デフォルトの名無しさん :04/09/05 16:55
>>110
trace

112 名前:デフォルトの名無しさん :04/09/05 18:18
MessageBox

113 名前:デフォルトの名無しさん :04/09/05 18:59
>>109
バイナリリソースにして埋め込んでは伺か?

114 名前:109 :04/09/05 19:56
それを読み込む方法がわからないです

115 名前:デフォルトの名無しさん :04/09/05 20:01
#pragma once
というのは、どこまで制御が及ぶんですか?

#pragma once
#include "a.h"
#include "b.h"
#include "c.h"

だと、"a.h" "b.h" "c.h"全てに制御されますか?

116 名前:デフォルトの名無しさん :04/09/05 20:01
>>114
LoadResource(hModule, FindResource(hModule, lpName, lpType));

117 名前:デフォルトの名無しさん :04/09/05 20:33
#pragma onceまで

118 名前:デフォルトの名無しさん :04/09/05 21:10
>>116
できました。ありがとうございます

119 名前:デフォルトの名無しさん :04/09/05 21:58
>>117
挟むんですか、なるほど。
ありがとうございます。

120 名前:デフォルトの名無しさん :04/09/06 13:24
いきなりで申し訳ないですが質問させてください。

MDIのプログラムで別スレッドで1秒ごとにデータを受けながらそれを表示する
というようなプログラムを作っていたのですが、たまにその表示が固まってしまい
更新しなくなってしまいました。(このときCPU稼働率が100%になっていた)

これは 「for」もしくは「while」の条件文がどこかでおかしくなっている、と判断して
よいのでしょうか?
上の二つ以外にも可能性がありえるとしたら教えてください。

Win2k/VC6++

121 名前:デフォルトの名無しさん :04/09/06 14:16
エスパー登場


122 名前:デフォルトの名無しさん :04/09/06 14:20
>>120
そうじゃないの?

123 名前:デフォルトの名無しさん :04/09/06 16:38
標準コントロールのエディットボックスIDC_Aがあるとします。
直接コーディングでSetDlgItemText(hdc,IDC_A,"aaaa\r\naaa")
とすると自動で改行表示さます。
しかし、別のエディットボックスに同じように「aaaa\r\naaa」と手で入力し、
それをGetDlgItemTextして、
その文字列をIDC_Aにセットすると改行されないのは
どういう仕組みなんでしょうか。

124 名前:デフォルトの名無しさん :04/09/06 16:46
.net XP

sinやcos、tanを使いたいのですが、
 error C2668: 'sin' : オーバーロード関数の呼び出しを解決することができません。
などというエラーが出てしまいます。
変数=sin(数値);
という形にしているのですが使い方が違うのでしょうか?


125 名前:デフォルトの名無しさん :04/09/06 17:03
>>124
数値の型がまずいんじゃね?

126 名前:デフォルトの名無しさん :04/09/06 17:09
>>123
前者はキャリッジリターン(0x0d)と改行(0x0a)の文字コードになる。
後者はただの「\r\n」という文字列。

127 名前:デフォルトの名無しさん :04/09/06 17:11
>>125
kakudo(float型)=sin(20);
という形にしていますが、PIも使えないようなのでラジアン云々の計算すらできないです。

128 名前:125 :04/09/06 17:13
>>127
ダメダメ
kakudo(float型)=sin((double)20);


129 名前:デフォルトの名無しさん :04/09/06 17:19
>>128
oops..
ありがとうございます。
sin・cos・tanはエラーが出なくなりました。

・・・その中に使う円周率のPIが使えないのですが、PIの前後に何か付くのでしょうか?
 error C2065: 'PI' : 定義されていない識別子です。
3.14159・・・でも誤差は僅かなのですがほぼ正確な円周率を使いたいです。

130 名前:デフォルトの名無しさん :04/09/06 18:18
>>129
ttp://www1.coralnet.or.jp/kusuto/PI/super_pi.html

自分で求めれ

131 名前:デフォルトの名無しさん :04/09/06 18:30
>>130
自分でやらないと駄目なのか(;´Д`)

132 名前:デフォルトの名無しさん :04/09/06 19:16
PIと書いて、カーソル合わせると
#define PI 3.141592653589793
とツールチップでヒントが出るので、どっかに定義されてはいるみたいだな
ただ、どのヘッダーをincludeすれば良いのかは分からない・・・
(なら、ヒント出すなよ・・・)

133 名前:デフォルトの名無しさん :04/09/06 19:18
>>123
ソースコード中の「\r\n」と通常(この場合エディットボックス)の「\r\n」は意味が違うよ。
エディットボックスに入力された「\r\n」はプログラムと違ってエスケープシーケンスとして認識出来ないよ。
だから、エディットの「\r\n」はコード上での「\\r\\n」と同義になるよ。


134 名前:デフォルトの名無しさん :04/09/06 19:53
余計な問題が出ますたorz

selectのcase内で宣言したR[][]をグローバル変数R2[][]に入れるという作業をしたいのですが
>: error C2059: 構文エラー : ']'
「R2[][]=R[][];」をするとこうなりました。
*R・R2は2×2の行列
行列の中に行列を入れると言う動作は1発でできないのでしょうか。
できないならできないで2重ループで1つずつ処理すれば大丈夫そうだけど・・

135 名前:デフォルトの名無しさん :04/09/06 20:38
構造体かmemcpy

136 名前:デフォルトの名無しさん :04/09/06 20:39
どこに定義されてるかわからんようなのはgrepかけるなりwinの
検索なりで探せよド素人が。

137 名前:デフォルトの名無しさん :04/09/06 20:50
VC++初心者です。
よろしくお願いします。

DHCP環境のWin2000/XPマシンがあります。
このマシンの
・IPアドレス
・サブネットマスク
を取得したいのですが、どのようにすればよろしいのでしょうか?
固定IPなら、gethostbynameが使えるのですよね。。。

今日一日、ネットで私なりに色々検索したのですが、分かりませんでした。
手がかりだけでも良いので、ご教授よろしくお願いします。

138 名前:デフォルトの名無しさん :04/09/06 20:51
>>135
レスありがとうございます。
構造体・・・かorz

139 名前:137 :04/09/06 21:00
> 固定IPなら、gethostbynameが使えるのですよね。。。

hostsファイルに自分のホスト名とIPアドレスがあれば、と言うことですよね。
そのIPアドレスが固定じゃない(hostsにIPアドレスが記述されていない)DHCP環境では、
どうしたら良いのか。。。


140 名前:デフォルトの名無しさん :04/09/06 21:15
>>138
memcpyでいいやん

141 名前:デフォルトの名無しさん :04/09/06 21:20
>>137
> このマシンの
> ・IPアドレス
> ・サブネットマスク

そもそもそれ違ってるだろ
システムにアドレスがあるんじゃなくてアダプタに付いてるもんなんだから

142 名前:デフォルトの名無しさん :04/09/06 21:41
memcpyは初めて聞いたので使い方がビミョンヌ(´・ω・`)
memcpy(R2,R,2)?;

143 名前:デフォルトの名無しさん :04/09/06 21:45
>>142
MSDN読め

144 名前:デフォルトの名無しさん :04/09/06 21:55
MSDNに書いていることって初心者には難しい(知らない言葉が出てくる)のはどうにかならないものかorz
とりあえず組みなおした後適当に試してみます。

145 名前:デフォルトの名無しさん :04/09/06 22:32
>>120
凄い質問だなw
さて問題です。織田信長はどうでしょう?
みたいな。

146 名前:デフォルトの名無しさん :04/09/06 22:54
おまいら標準Cの関数はマスターしたほうがいいぞ、できないと書けるコードが少なすぎるマになるぞ

147 名前:デフォルトの名無しさん :04/09/07 00:09
132じゃないんですが、気になったので・・・
PIってどこで定義されてるか、どのようにすれば
分かるのでしょう?

148 名前:デフォルトの名無しさん :04/09/07 00:12
MSDNでPIを検索


149 名前:147 :04/09/07 00:13
>>148
それは既に試みました

150 名前:デフォルトの名無しさん :04/09/07 00:13
3.1415あたりで検索かけりゃわかりそうなもんだが・・

151 名前:デフォルトの名無しさん :04/09/07 00:22
ありゃ、確かにHITしないな

152 名前:147 :04/09/07 00:23
うーん・・・
難しそうですね。
そんなに重大問題では無いので、きっぱり諦めます。

153 名前:デフォルトの名無しさん :04/09/07 00:33
DirectXSDKにあった
#define D3DX_PI ((FLOAT) 3.141592654f)

154 名前:137 :04/09/07 10:24
>>141
そうですね。
では表現を正しくして、複数LANカードがささっているDHCPマシンの
・IPアドレス
・サブネットマスク

を知るには、どうすれば良いのですか?


155 名前:デフォルトの名無しさん :04/09/07 10:51
これかな
ttp://homepage2.nifty.com/spw/tips/GetIpTable.html

156 名前:デフォルトの名無しさん :04/09/07 13:32
VC++6を使用しています。
ダイアログボックス内に配置したスタティックテキストに線を描画させることが出来ません。
スタティックテキストのIDは「IDC_CANVAS」としました。
*.exeファイルを実行すると、ウィンドウは開かずにダイアログボックスのみを開くようにしてあります。

//関係のある部分のみ抜粋
/* global変数 */
HDC hdcMemCanvas; /* キャンバスのメモリデバイスコンテキストのハンドル */
HBITMAP hbmCanvas; /* キャンバスのビットマップのハンドル */
HBITMAP hbmDefCanvas; /* キャンバスのデフォルトビットマップのハンドル */
/* ここまで */

BOOL CALLBACK DialogProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
/* case WM_INITDIALOG内 */
HWND hwndCanvas; /* キャンバスのウインドウハンドル */
HDC hdcCanvas; /* キャンバスのデバイスコンテキストハンドル */
RECT rectCanvas; /* キャンバスの矩形 */

/* キャンバスのためのメモリデバイスコンテキストを作成する */
hdcCanvas = GetDC(hwndCanvas);
hdcMemCanvas = CreateCompatibleDC(hdcCanvas);
ReleaseDC(hwndCanvas, hdcCanvas);
/* キャンバスのためのビットマップを作成する */
GetClientRect(hwndCanvas, &rectCanvas);
hbmCanvas = CreateCompatibleBitmap(hdcMemCanvas, rectCanvas.right, rectCanvas.bottom);
/* ビットマップを選択する */
hbmDefCanvas = SelectObject(hdcMemCanvas, hbmCanvas);
/* case WM_INITDIALOG内はここまで(以下の処理は省略) */

Draw(hWnd);
} /* DialogProcここまで */

157 名前:156(続きです) :04/09/07 13:33
/* 線の描画 */
Draw(HWND hwndDlg){
MoveToEx(hdcMemCanvas, 30, 30, NULL);
LineTo(hdcMemCanvas, 200, 200);
SendDlgItemMessage(hwndDlg, IDC_CANVAS, STM_SETIMAGE,
(WPARAM)IMAGE_BITMAP, (LPARAM)hbmCanvas);
}


スタティックテキストの位置と、線を描画する座標は合っています。
どこがオカシイのでしょうか?ご教授願います。

158 名前:137 :04/09/07 13:41
>>155
うわぁー。これで解決するかもしれません!
早速試してみます。
ありがとうございます。

159 名前:デフォルトの名無しさん :04/09/07 13:56
スタティックテキストに直接、線なんて描けるの?
スタティックコントロールの派生クラスを作って
そこのPaintかなんかで描画した方が簡単なような

160 名前:デフォルトの名無しさん :04/09/07 14:25
MFCでコーディングしているとどうしてもドキュメントクラスに処理が集中してしまうのだが
どうしたらいいのだろうか。処理の意味的にビュークラスやアプリクラスには入れられない。

メニュー処理、ダイアログ表示、処理実行等、ドキュメント変更にかかわるもの全てドキュメントクラス上にあります。
MFCのアプリってのはこういうものなのでしょうか?


161 名前:デフォルトの名無しさん :04/09/07 14:34
HDC hdc;
hdc=GetDC(GetDlgItem(hDlg,IDC_EDIT));//(GetDlgItem(コントロールの親ハンドル,コントロールのID)
MoveToEx(hdc, 30, 30, NULL);
LineTo(hdc, 200, 200);

って感じに簡単にエディットボックス内に線が引けた。

162 名前:156 :04/09/07 15:10
>>159 >>161
レスありがとうございました。
>>161氏の方法で、スタティックテキストに線を描くことが出来ました。

163 名前:デフォルトの名無しさん :04/09/07 20:12
OS再インスコするのですが,VC6.0のカスタマイズのファイルって
バックアップできますか?

164 名前:デフォルトの名無しさん :04/09/07 20:41
.hファイルにクラスのメンバやメンバ関数をいれ、
.cppファイルに関数の中身を書くというのはよく行うこと
なんでしょうか。
みなさんはどのようにファイルをまとめていらっしゃいますか?
かなり気になる==
もしいいサイトあったら教えてほしいです。よければお願いします。

165 名前:デフォルトの名無しさん :04/09/07 20:53
>>164
テンプレート以外は普通そうしないか?

166 名前:デフォルトの名無しさん :04/09/07 21:32
>>164
そんな感じで問題ないと思うけどね。
余程短いコードならヘッダに直接書いちゃう事もあるけど。

167 名前:デフォルトの名無しさん :04/09/07 22:14
>>160
釣りか?

ドキュメントが処理ではなく、ドキュメントへ「通知」すると考えれば、
自然と各ビューに処理が分散される。
そもそもコマンド系がアプリやメインフレームに少なかったり、
ダイアログの処理がダイアログになかったりするなら、
なにか根本的な考え方に問題がある。

168 名前:デフォルトの名無しさん :04/09/07 22:37
コマンドがアプリやメインフレームに集まる方こそおかしくないか?
アプリは GetViewList/GetDocumentListとか、Application.Exit Application.Clone とかだけでいいと思うんだが。

169 名前:デフォルトの名無しさん :04/09/07 23:58
>>165 >>166
レスありがとうございました。
そうですか。なんかちょっと別の方法を期待してたのですが。
でも、そうと分かればしばらくその方法でいこうと思います。
慣れるまで。

続けて質問すみません。
WM_のウィンドウメッセージをキューから削除するような関数って
有りませんか。ちょうど、SendMessageやPostMessageの逆みたいな
関数。本やリファレンス調べてみたけど見つからない。
有りそうな関数だと思うんだけど。やろうとしているのは
ウィンドウ作成時にWM_ACTIVATEを呼びだすのを止めたいのですが。
でもでも、DefWindowProcに送らなくても大丈夫か。。?
実装してるコードが気になるが、リファレンスで探してみるも
また見つからない。検索の仕方難しい。
フラグで処理すればいいかも知れないが、何かとできない処理が
見つかればすぐにフラグが思い付く私は、、、、(ry
長文スマソ。。

170 名前:デフォルトの名無しさん :04/09/08 00:02
GetMessageでもPeekMessage(PM_REMOVE)でも。

171 名前:デフォルトの名無しさん :04/09/08 02:48
デスクトップ上のマウスの動きをプロシージャに送りたいのですが、どのようにしたら宜しいのでしょうか?
SetCapture()を使ったのですが、全然WM_MOUSEMOVEとかのメッセージがきません・・・


172 名前:デフォルトの名無しさん :04/09/08 03:02
>>171
timerセットして、GetCursorPos()で監視とかではダメ?

173 名前:デフォルトの名無しさん :04/09/08 03:08
>>171
マウスフック
SetCaptureはドラッグしている間しか効かなかった気がする。

174 名前:デフォルトの名無しさん :04/09/08 18:13
VC++6.0 MFCを使ったダイアログベースのシリアル通信アプリケーションを作りたいのですが、
受信したものを表示させるところで行き詰っています。

char型の受信バッファをエディットボックスにいい感じに表示するにはどーすれば良いですか?

受信バッファ rcvBuf
エディットボックスのID IDC_EDITrcv
といった感じで、

ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL);//ファイルからデータを読み取る(char)
CString aiu;
rcv = rcvBuf;
SetDlgItemText(IDC_EDITrcv,rcv);

と、今はこんな感じです。

何やら無理やりCStringにしてるんですが、charのままエディットに表示できたりしないですか?
あと、これでも表示されるんですが、0x40と16進で表示させたいにもかかわらず ・@と文字コードで表示されてしまいます。

ご覧の通り初心者ですが、何かアドバイスお願いします。

175 名前:174 :04/09/08 18:16
すいません、訂正です。

ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL);
CString rcv;
rcv = rcvBuf;
SetDlgItemText(IDC_EDITrcv,rcv);


176 名前:デフォルトの名無しさん :04/09/08 18:45
>>175
普通にこうじゃないの?
SetDlgItemText(IDC_EDITrcv, rcvBuf);


177 名前:176 :04/09/08 18:47
ゴメン 0x40 みてなかった・・・

178 名前:169 :04/09/08 18:56
>>170
削除じゃ無くて拾えば良かったんだ。
ありがとです。

179 名前:174 :04/09/08 19:47
>>176
すんません、普通に
ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL)
SetDlgItemText(IDC_EDITrcv,rcvBuf);
で表示できますね。無駄にCStringにしてました。意味なかったっぽいです。
↑これでchar型のままエディットボックスに表示できたのはいいんですが、
やはり、文字コードの・@と表示されてしまいます。

ちなみに、
SetDlgItemInt(IDC_EDITrcv,dwCount);
とすると、16と表示され、受信データは16バイトのはずなのですが、先頭の40しか表示できていないのも気になります。

まずは@の文字コードを40と表示できるようになってから16バイトすべて表示させてやろうと考えております。

何度も書き込み申し訳ありません。

180 名前:デフォルトの名無しさん :04/09/08 20:04
そら0x40は@だからなあ・・・・そう表示されちゃうべ。
通常の数字やアルファベットはそのまま表示して、特定のコードだけ
16進で表示しようとしてるんかね?

181 名前:5歳の女をレイプマン SS :04/09/08 20:11
ss(おしゃれやん芸人)は和田明子を車で引かしたのでしょうか。


182 名前:デフォルトの名無しさん :04/09/08 21:51
>>172,>>173

183 名前:デフォルトの名無しさん :04/09/08 21:52
すみません・・・間違えて書き込んでしまいました
>>172さん>>173さん
どうもありがとうございました。
フックでやってみます

184 名前:179 :04/09/08 23:30
>>180
>通常の数字やアルファベットはそのまま表示して、特定のコードだけ
>16進で表示しようとしてるんかね?

そうです。
@にならないように、0x40、もしくは40とエディットボックスへ表示するにはどうしたら良いでしょうか。

185 名前:デフォルトの名無しさん :04/09/08 23:40
>>184
sprintf(mojiretu, "0x%x", suuji)

186 名前:184 :04/09/08 23:50
>>185
ReadFile(hComm, rcvBuf, dwCount, &dwRead, NULL)
sprintf(rcvBuf,"0x%x",rcv)
SetDlgItemText(IDC_EDITrcv,rcv);
ということでしょうか。

何はともあれアドバイスありがとうございます。
現在は開発環境が無いため、明日朝一でアドバイスを元に試行錯誤してみます。


187 名前:デフォルトの名無しさん :04/09/09 00:02
>>186
逆だよ。一桁づつしか変換できないし。

sprintf(rcv, "%#x", rcvBuf[0])
SetDlgItemText(IDC_EDITrcv, rcv);



188 名前:184 :04/09/09 00:07
>>187
あ、はい。。
ご指摘感謝です。

189 名前:デフォルトの名無しさん :04/09/09 13:16
ちょっと気になることがあるので教えてください。

1、 TypeA& func() { return *new TypeA; }

2、 game->fire(new CBullet(iX+12,iY-6,0,-10,game));

↑のコードはどっちもネットで見つけたものなんですが、どこにもdeleteが書いてないんですがこれってメモリリークにならないんですか?

190 名前:デフォルトの名無しさん :04/09/09 13:30
前者は大抵の場合リークになるだろうな。
ただ、際限なく増えつづけるような悪質なものとは限らない。

後者はfireの中でdeleteしてるかもしれないしなんともいえない。

191 名前:デフォルトの名無しさん :04/09/09 14:01
>>190
レスどうもです。
やっぱりリークするんですか。
ネットに載せるくらいだから間違いないんだろうな〜と思ってたんですが、そうでもないみたいですね・・・。
すっきりしました。

192 名前:デフォルトの名無しさん :04/09/09 14:19
>>191
リークするかどうかは、newのオーバーライドやその後のコードによるんだよ。
参照にしたものからわざわざポインタを取り出してdeleteする事もできるし、
ヒープ以外から確保するようにnewをオーバーライドしているかもしれない。

ついでに言えば使い方次第ではdeleteしなくても間違いじゃない。

193 名前:デフォルトの名無しさん :04/09/09 14:20
ネットに載せてあるソースなんて、大抵間違いだらけ

194 名前:デフォルトの名無しさん :04/09/09 15:35
VC++6を使用しています。
ウィンドウを作らずにダイアログボックスのみを開くプログラムを作成しています。

プログラム実行と同時に線を描画させたいのですが、上手くいきません。

・global変数として「HDC hdc_field」を作成。
・ダイアログプロシージャ関数の case MW_INITDIALOG 内で hdc_field = getDC(hWnd);
@↑のgetDCの命令の下に、線を描画させる関数を配置。
A線を描画させる関数を、ダイアログボックスに配置したボタンを押したときに呼ぶ関数内に配置

Aでは線が描かれるのですが、@では線が描かれません。
同じ関数を呼び出しているのに、どうしてなのでしょうか?
また、プログラム実行と同時に線を描画させるにはどうしたら良いのでしょうか?
(ウィンドウを開くプログラムではこのような問題は生じなかったのですが…)

よろしくお願いします。

195 名前:デフォルトの名無しさん :04/09/09 16:05
>>194
WM_INITDIALOGが送られてくる時点ではまだダイアログは画面に表示されてないから何描いても無駄。
WM_PAINTに処理書くとか、WM_INITDIALOGでWM_APP+nをpostしてそこで描くとか。

196 名前:デフォルトの名無しさん :04/09/09 16:11
ありがとうございました

197 名前:194 :04/09/09 16:22
>>195
むむ、そうですか。やってみます。
ありがとうございました。


>>196
自分の番号と、レスアンカーを付けた方がよろしいかと。

198 名前:デフォルトの名無しさん :04/09/10 05:36
えーとC言語歴一週間のヘタれですが
これからVC++とMFCというやつで色々作って行こうと思ってます。
ベクターとかで公開してそこそこダウンロードしてもらえる様な物を作るのが当面の目標です。

この版見ているとMFCが難しいと言う意見が多いんですが
実際自分でちゃんとしたアプリが作れる様になるには平均的にどのくらいかかるもんなんですか?
その辺は人によりけりだというのは百も承知ですが
参考までに最低でもこの位の期間が必要だというのを教えていただければ幸いです。

199 名前:デフォルトの名無しさん :04/09/10 06:23
下積みの有無によるものが大きい。
MFC使った事なくても、JavaAppletとかで画面イベントに慣れていれば1ヶ月くらいでいけるかも。

200 名前:198です :04/09/10 06:35
>>199
レスどうもです。
下積みですか。でも自分は下積みどころかプログラムするのも初めてなんですよ・・
こんな感じだとやっぱり結構時間がかかるんでしょうね・・

それともう一つお聞きしたいのですが
ボーランドのC++ビルダーとかは使いやすいと言う意見が多いのですが
具体的にどの辺がMFCと比べて使いやすいのか教えて頂けると助かるのですが。
場合によってはそちらの方に乗り換えようかとも考えていますので。

201 名前:デフォルトの名無しさん :04/09/10 07:00
コードを書かなくても外見だけは作れる

202 名前:デフォルトの名無しさん :04/09/10 09:00
>>200
そういう考えかたならVBを勧める

203 名前:デフォルトの名無しさん :04/09/10 09:03
パソコン買ったけど使えなくて挫折する
VC買ったけど使えなくて挫折する
どっちもよく聞く話

204 名前:デフォルトの名無しさん :04/09/10 10:06
全く経験ない場合は、CとC++をやってから、MFCに移行だけど、はっきり言って
相当に時間がかかるし、エネルギーも必要。大抵の人は挫折を途中にはさみ
ながら、紆余曲折を経て目的に到達というところだろう。

趣味でなく、学生とか仕事だとしたら、向けられるエネルギーも多いだろうから
一気に行ける場合もあるかも知れない。

いずれにせよプログラミングってのは、ただパソコンいじるのと別次元の難しさ
があるから、あんまり甘い期待を持たないことだ。

205 名前:デフォルトの名無しさん :04/09/10 12:12
マルチメディアタイマーを使用しています。Visual C++だと
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
を書けばうまくいくのですがBorland C++だとうまくいきません。
リンクができないところが原因だと考えています。設定の仕方を教えてください。
また時間の精度として1msを必要としていてマルチメディアタイマーを使っています。
もし他に何かいい方法をご存知でしたら教えてください。詳しくお願いします。

206 名前:デフォルトの名無しさん :04/09/10 12:14
はじめまして
厚かましいお願いなんですが、VC++6.0のMSDNコレクションのCDの中身を
アップしてくださいませんか?ヘルプが使えなくて困っています。
だめならそのCDが売っている所を教えていただけると嬉しいです。

207 名前:デフォルトの名無しさん :04/09/10 12:19
>>205
Borland C++の事など知ったこっちゃありません

208 名前:デフォルトの名無しさん :04/09/10 12:21
>>205
パフォーマンスカウンタ使えば?

209 名前:デフォルトの名無しさん :04/09/10 12:23
普通のMSDNライブラリなら秋葉の怪しい店で売ってる。



210 名前:デフォルトの名無しさん :04/09/10 12:29
>>208
もしよければなにか具体的に使用したプログラムの例はありますか?

211 名前:デフォルトの名無しさん :04/09/10 12:53
>>210 こんな感じかなぁ。
#include <iostream>
#include <windows.h>
using namespace std;

int main(void)
{
LARGE_INTEGER freq, now, old;
UINT r = 60;

QueryPerformanceFrequency(&freq);
while(!(GetKeyState(VK_RETURN) & 0x80)){
cout << "fps: " << r << endl;

QueryPerformanceCounter(&now);
while(now.QuadPart - old.QuadPart < freq.QuadPart / r){
QueryPerformanceCounter(&now);
}
QueryPerformanceCounter(&old);
}
return 0;
}

212 名前:名前は開発中のものです。 :04/09/10 13:30
>>206
犯罪を犯せというお願いですか。
凄いですね。
厚かましいとかいう次元の問題ではないですね。
夏ですね。

213 名前:デフォルトの名無しさん :04/09/10 13:34
>>206
>>3

214 名前:デフォルトの名無しさん :04/09/10 13:46
>>211
親切にしていただきありがとうございます。試してみます。

215 名前:206 :04/09/10 14:44:44
すみませんでした。
秋葉原を探してみます。

216 名前:デフォルトの名無しさん :04/09/10 14:54:08
>>215
だから、なんで>>3じゃダメなんだ?

217 名前:デフォルトの名無しさん :04/09/10 15:42:05
>>211
Borland C++ではまたエラーがでてしまいました。>>211さんはVisual C++ですか?
もしBorland C++でのやり方を知っていたら教えてください。


218 名前:デフォルトの名無しさん :04/09/10 15:48:35
★初心者にVisual C++を教えるスレ★ Part14

Visual C++入門者・初心者からの質問を、
お兄ちゃん達が優しく、時には厳しく回答してくれるスレッドです。


219 名前:デフォルトの名無しさん :04/09/10 19:14:37
>>206
MFCとかATLは無理だけど、PlatformSDKのドキュメントなら
PSDK Updateについてくるからそれ使えよ。
他のが見たければMSDN Library Online使うしかないけど。

220 名前:デフォルトの名無しさん :04/09/10 21:26:25
>>206は発想が割れ厨だろ。マンドクセ。

221 名前:デフォルトの名無しさん :04/09/11 00:12:42
まじめに、どこから手をつけたら良いかわかりません。
みなさんがプログラミングを始めたきっかけとかどういった感じに勉強したかを教えてください。

222 名前:デフォルトの名無しさん :04/09/11 00:29:21
結局やる気の問題じゃないかな。
当然まず環境から揃えなきゃならんけど。

223 名前:デフォルトの名無しさん :04/09/11 00:48:58
>>221
べーマガを書店で見掛けたから。

224 名前:デフォルトの名無しさん :04/09/11 01:03:59
>>221
消防のころ電気屋でパソコンを見て欲しくなった。
買ってもらえなかったんでチラシの裏にBASICでプログラム書いてた。
(チラシの裏でゲームはできなかったので。)

225 名前:デフォルトの名無しさん :04/09/11 09:48:33
>>221
とりあえず入れ物から行く人が多いんじゃないかな?
まずVC買って、自分のカネで用意したからにはそれなりにやろうという気になるし。
後は書籍だろ。他人の推薦とかより立ち読みして自分に合ったの見つける方が良い
とオレは思うけど。

226 名前:デフォルトの名無しさん :04/09/11 13:34:46
VC2003のエディタで質問なんですが、
選択した範囲のインデントを整形してくれるショートカットキーって
どうやるんでしたっけ?
なんかやり方忘れたのか、はたまた効かなくなってるのか・・・

for(;;){
a=0;
}

↓(Alt + ?)

for(;;){
    a=0;
}

こうなるヤツです。



227 名前:デフォルトの名無しさん :04/09/11 15:18:45
ツール
オプション
テキストエディタ


228 名前:デフォルトの名無しさん :04/09/11 15:26:09
>>224
私も買ってもらえなくて(小3くらい.),
べーマガとか月刊マイコンなんか買ってリストを読んでたなぁ.
さすがに224さんみたいに処理系手に入る前に自分で書くようなことはしなかったですけど.


229 名前:デフォルトの名無しさん :04/09/11 18:04:19
CString strから'\n'を判定して1行ずつ文字列を得たい場合どうすればいいですか?

230 名前:デフォルトの名無しさん :04/09/11 18:10:16
>>227
ちがうんです><
スマートインデントじゃなくて、後からインデントを一発で整形するヤツです!
みんな使わないのかなぁ・・・

231 名前:デフォルトの名無しさん :04/09/11 18:19:39
Atl+F8だろ。

232 名前:デフォルトの名無しさん :04/09/11 18:31:09
VC++6.0を会社の研修で使ってます。
自宅でも勉強しようとVC++.net2003を購入したんですが
Win32コンソールでソース書いて開始してもコマンドプロントが実行後すぐに
終了してしまいます。
どこか設定で終了させないようできるのでしょか?

#include <stdio.h>
void main(void)
{
printf("テストです。\n");
}

などと書いても一瞬表示されて自動終了します。
コンパイルもビルドもエラーはありません。
会社で使っているVC++6.0では表示されたあと何か
キーを押すと終了されるようなっています。
ちなみに会社も自宅もWinXPです。

233 名前:デフォルトの名無しさん :04/09/11 18:33:17
>>231
ありがとう!それを手掛かりに、
オプション→キーボード マップ スキームを「Visual Studio 6」
に設定したら直りました。
快適快適☆


234 名前:233 :04/09/11 18:34:10
>>232
あ、それ知ってますよ
Ctrl + F5
です

235 名前:232 :04/09/11 18:46:13
>>234
ありがとうございました!
非常に助かりました。感謝します!
勉強がんばるぞ!

236 名前:デフォルトの名無しさん :04/09/11 19:43:59
すいません。Visual C++ 6.0 でメンバテンプレートを
コンパイルするには何かコツがあるんでしょうか?

いま手元にソースや環境がないので詳細な例とか
エラーメッセージとか出せないので申し訳ないんですが、

class MyClass {
 template <class Type>
 static bool fetchValue(Type & value);
}

こういった感じのコードをコンパイルできないんです。
gccとかVisual C++ .NETでは通るのに。。

何か関連する情報をご存じでしたら教えていただけませんか?

237 名前:232 :04/09/11 20:16:02
すいませんもうひとつ質問させてください。
VC++6.0のときのようにワークスペースを切り替えできるようなものはVC++.net2003ではどのように設定すればいいのでしょうか?

ソリューションエクスプローラからスタートアッププロジェクトに設定でことをすませておりますが、
以前のようにワークスペースをメニューバーから簡単に切り替えられないものかと思います。
どうぞご教授お願いします。

238 名前:デフォルトの名無しさん :04/09/11 20:16:46
>>236
VC6はテンプレートに完全に対応してないとか聞いたが

239 名前:デフォルトの名無しさん :04/09/11 22:14:43
>>236
typoだと思うけど
template <class Type>
class MyClass {
...
でしょ?
とりあえず必要十分なソースを出してくれ。
話はそれから。

240 名前:デフォルトの名無しさん :04/09/11 22:21:16
>>239
メンバテンプレートって言ってるから>>236であってると思うけど。

241 名前:239 :04/09/11 22:30:39
>>240
なるほど、それで分かった。
VC6 はメンバテンプレートには対応してないんだ。
俺、VC6 しか使ってないから、>>239みたいのでも
メンバに使ってればメンバテンプレートって言うのかと思ってたよ。orz

>>236さん、あきらめてください。

242 名前:デフォルトの名無しさん :04/09/11 23:14:41
>>236のコードは、VC6でも通るぞ。
ただ、

MyClass::fetchValue<char>(0);

という感じで、型指定をしている場合は通らないハズ。
自動的に型を判別出来る場合は通る。

243 名前:デフォルトの名無しさん :04/09/11 23:19:46
>>236
class MyClass {
public:
template <class Type>
static bool fetchValue(Type & value)
{
value = Type();
return true;
}
};

int i;
MyClass::fetchValue(i);

VC++6SP6で通ったけど素直に.NETに移行した方がいいと思う。

244 名前:デフォルトの名無しさん :04/09/12 00:13:47
MFCなんですが、ダイアログベースでメニューを追加したんですが、
メニューの所が窪んだ感じ(視覚的に)なって、動きには関係ないんですが、
どうにかあの窪み(?)を無くせませんか?
VC++2003です。

245 名前:虎夫 :04/09/12 02:38:59
現在作っているプログラムで、
割り込みによって一定時間ごとにデータを取得しております。

このとき割り込みの周波数を100[Hz]に設定すると、
プログラムは0.01秒毎にタスクを行います。
(PCのCPUが十分であると考えて)
たとえばタスクA,B,Cを割り込みの1周期に1度行うとすれば、
Aのタスクは0.01秒ごとに遂行されます。

しかし、もしBというタスクが常に2秒かかるタスクだとすれば、
それぞれのタスクは2.01秒に1回しか遂行されません。
これはあれ程度しかたありません。

現在私の悩んでいる問題は、
A,Cというタスク(1回に1msもかからない)を0.01秒ごとに
遂行して、ある条件の時にBというタスクを行いたいとすると、
今のままでは、A,Cは普段0.01秒に1度タスクが遂行されますが、
Bが遂行されるときにはタスクが2秒(Bの遂行時間)待ちが生じます。
こんなとき、BをA,Cとは並列に遂行させ、
常にA,Cを0.01秒ごとに遂行させるにはどうすればよいでしょうか?
(ここで、Bが遂行中に次のBの命令がくることはないとします。)


246 名前:デフォルトの名無しさん :04/09/12 04:46:42
>>242
>MyClass::fetchValue<char>(0);

>という感じで、型指定をしている場合は通らないハズ。

げ、まさにそれです。

>>243
みたいに <> を付けないで呼び出せばよかったんですね。
情報ありがとうございました!

ただ、

class MyClass {
public:
template <class Type>
static Type fetchValue(const MyInstance & instance, const string & key);
};

int i = MyClass::fetchValue<int>(instance, key);

こんなことはVC++6ではできないということなんですよね。。。

247 名前:デフォルトの名無しさん :04/09/12 05:51:49
>>246
>こんなことはVC++6ではできないということなんですよね。。。
うむ。

VCToolKitとか、VC2005Expressβとか落として使ってみるのも手だけど、
おそらく、たくさんコードを書き換えないと動かない予感......

248 名前:デフォルトの名無しさん :04/09/12 08:01:39
>>245
プログラミング以前の問題

249 名前:デフォルトの名無しさん :04/09/12 09:03:11
>>245
A,Cの処理は10ms以内に収まるのであれば割り込みトリガそのもので
シーケンシャルに動かして、Bの処理は割り込みトリガからスレッド起動で
処理するとか。A,CとBは同期してる必要がなければ、ね。

250 名前:デフォルトの名無しさん :04/09/12 14:26:19
これ初めて使うんですが、
何かサンプルコードとかがあって、わかりやすいHPあれば教えて下さい。


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