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


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

VisualC++相談室 2
251 名前:デフォルトの名無しさん :2001/03/08(木) 14:20
>250

わがままいってんじゃねーよ
InsertMenuItemとかでぢみちに入れてみ

252 名前:デフォルトの名無しさん :2001/03/08(木) 16:44
>>246
myProg.lpszMenuName=MAKEINTRESOURCE(IDR_MENU1);
ってやってみれば、上手にいくかもね



253 名前:デフォルトの名無しさん :2001/03/08(木) 17:15
仕事で、VC++でXMLDOMDocument Object使うことになったのですが
insertBeforeメソッドが使えなくて困っています。
コンパイルすると2番目の引数の型が違うと怒られます。
IXMLDOMNodePtrを_variant_tにすれば良い様なのですが
VCは初心者なのでやり方が分かりません。
どなたか教えて下さい。
お願いします。

254 名前:いつでもどこでも名無しさん :2001/03/08(木) 20:03
>>223
[Ctrl]+[F5]

255 名前:マルチメディア :2001/03/08(木) 21:37
>>252
メニュー表示されました!有り難うございます!!


256 名前:みずき :2001/03/09(金) 00:38
実行ファイル本体とは別に、設定用のダイアログをDLLで持ちたいと思っています。

ところが、実行ファイル本体の持つリソースIDと、設定ダイアログのDLLの
リソースIDが衝突してしまうという問題が発生してしまいました。

とりあえずIDを手動で変えることで回避はできると思うのですが、
これから先リソースが増えてきたら、それでは対応できない気がするのです。

なにか、良い方法はありませんでしょうか?
どなたか、よろしくお願いします。

257 名前:デフォルトの名無しさん :2001/03/09(金) 03:18
>256
リソースファイルのヘッダファイルの

_APS_NEXT_RESOURCE_VALUE

とかを変更しておけば毎回変えなくていいじゃない?

258 名前:トリッキーの1 :2001/03/09(金) 04:30
ちょっと質問させてください。
Visual C++で簡単なグラフィックを扱うアプリを作ろうとしたとき、
(例えば……オセロをさくっと作ろうとしたときの事を考えてください)
皆さんどういった環境で作成しますか?

WizardでMFCだと、document/viewのサポートが鬱陶しいし
生MFCを書くのもどうも面倒で気が引けます。
ましてやC+APIってのは時代に反しているし(お気に入りだけど)。

こういう状況で、皆さんのchoiceを聞かせてください。

259 名前:デフォルトの名無しさん :2001/03/09(金) 06:25
>ましてやC+APIってのは時代に反しているし(お気に入りだけど)。
ゲームならAPIだろ?
MFCはウィンドウズっぽいソフト向き!

260 名前:デフォルトの名無しさん :2001/03/09(金) 06:46
ダイアログベースで、入力はすべてコモンコントロールとか
真面目な話、小さめのアプリなら私もC+++API(w
ウィンドウズっぽい機能使わないならかえって煩わしいですよね、MFC

ましてやトリッキーの1さんレベルなら!(cool!cool!cool!)

261 名前:いさましいチビの女 :2001/03/09(金) 06:58
>>258
WizardのMFCでも、DOC/VIEWを強制されるってわけじゃないけどね。
特に6からは、手作業なしでチェックボックスひとつでDOC/VIEWを
はずすことができるし。

262 名前:みずき :2001/03/09(金) 09:28
>>257
ありがとうございます。
でも、最初から、_APS_NEXT_RESOURCE_VALUE の
値は、メイン側とDLL側で違っていたみたいなんです;
どうしたら良いんでしょうか?

↓DLL側のresource.hの一部

#define IDD_WINDOW1 102
#define IDD_WINDOW2 103

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 2000

263 名前:デフォルトの名無しさん :2001/03/09(金) 10:38
すごい簡単な事かもしれませんが、困ってます。教えて下さい。
NTサーバに自動でフォルダを作るプログラムを作ろうと思ってるんです
けど、アクセス権の設定が必要なんです。で、以下のどちらかができ
れば、良いのですけど..。
1.フォルダを作成した後、任意のユーザにフルコントロールのアク
セス権を与える。
2.任意のユーザでフォルダを作成する。
よろしくお願いします。

264 名前:トリッキーの1 :2001/03/09(金) 11:29
やはり、他の選択肢は無いのかな?
OWLとか出てくるかと期待していたけれど(笑)

>>260
過大評価サンクス(笑)
ダイアログベースだと、例えばグラフの出力なんかがちょっとトリッキーになってしまうので、
あまり好きではないんですよ。
MFCのWizardで、CFrameWndを使わないものがあれば最高なんですけれどね。

>>261
そうなんですが、その場合Wizardが狂ったコードを出力するので
(関連づけられていないViewが作成されて、ASSERTで飛ぶ模様)
その程度ならばDummy Documentを介しても手間はほとんど変わらないし。
Wizardを使うなら、素直にDocument/Viewを使っておくのが無難そうです。

265 名前:デフォルトの名無しさん :2001/03/10(土) 00:40
マルチメディアタイマーのコールバック関数とスレッドを
ミューテクスで同期させることは可能ですか?


266 名前:デフォルトの名無しさん :2001/03/10(土) 01:04
多分可能だけど>265
でもカーネルオブジェクトって(他のプロセス固有な手段と比べて)遅い様だけどタイマーの精度は大丈夫?
CriticalSectionに変更できるなら、そうした方が良いんじゃないかと。

267 名前:デフォルトの名無しさん :2001/03/10(土) 01:27
ありがと266
くりてぃかるでいってみるよ
タイマーの精度・・・いまいちのような気が


268 名前:デフォルトの名無しさん :2001/03/10(土) 23:16
フラットツールバーをつくったんですが、
単純にSetWindowLongでTBSTYLE_FLATを追加しただけだと、
上下に余白ができるんで、これを回避したいんです。

例としてはHTMLヘルプとかiriaのツールバーみたいな感じです。
ボタンの縦サイズ=ツールバーの縦サイズ
みたいなスタイルにしたいのですが。

269 名前:デフォルトの名無しさん :2001/03/11(日) 06:52

IMEの制御の方法教えて。
自分のプログラムのウィンドウ上の指定した座標に文字入力ウィンドウ出して
入力された文字を漢字変換して変換した後の文字を受け取るみたいなの
「ペイント」で文字入力するときの処理と同じやつ
IME全然知らないドキュソでも分かるようなものきぼ〜ん
できれば解説してるサイトやサンプルコード付きよい。
可及的速やかにお願いモーニング!


270 名前:デフォルトの名無しさん :2001/03/11(日) 16:53
>>269
そんな虫のいい話はないぞ。
とりあえず、これはどう?
http://www.ainet.or.jp/~inoue/im/win32.html

271 名前:トリッキーの1 :2001/03/11(日) 22:25
MFCならCEditViewを派生すれば簡単に出来るでしょう。
APIならEDITをスーパークラス化して使うのが一般的です。
IMEはあまり関係ありません。ふりがなを上に打つならば話は別だけれど。

272 名前:269 :2001/03/11(日) 23:15
3級!

273 名前:269 :2001/03/13(火) 07:27
IMEわかった。
意外と簡単だった。
てっきり初期化とかもっと複雑化だと思ってた。
ところで追加質問なんですけど入力中の文字の長さってどうやって取得するんですかね?
「ペイント」や「メモ帳」では入力済みの文字列の途中に新規にIMEで文字を追加する場合
IMEで入力中はすでにある文字列の上に描画され確定後に文字列の間に挿入し再描画してますが
「ワードパット」などではIME入力中にリアルタイムに挿入後の文字列を計算し再描画してます。
入力中の文字列は取得できるので自分で文字列の長さを計算すればいいですけど
複数行に折り返された場合どこで折り返されるか分からないため(一応計算で求められると思うけど)
自分で計算するのはダルそうです。
IMEから直接入力中文字の長さ(ピクセル単位)を取得する方法ないですか?

こういう質問は2chじゃなく本格的なMLで聞いた方がいいですかね?


274 名前:デフォルトの名無しさん :2001/03/13(火) 09:49
>>269
2chをなめるなよ〜 といっても俺はわかりません。
力になれなくてごめんな。

275 名前:トリッキーの1 :2001/03/13(火) 10:16
>>273
IMEから現在入力中の文字を取ることが出来るので、
それを用いてGetTextExtentを使うと出来ないこともないです。
折り返されたらお手上げです。それを一般的に取得する方法は無いはずです。

しかし"一般に"、IME入力中にずるずると後ろにずれるタイプのプログラムは、
IME入力中の文字も自分で描画する必要があります(その方がスマートです)。
なぜかと言えば、IMEによって予期しない文字が足されることが多々あります。
(たとえばATOKは、表示は「入力文字+_」なので、文字数に1を足す必要があります)
だから、まともなプログラムならだるくても必ず自分で描画する必要があります。
自分で描画するんだから、計算もヘチマもありません。

#実際一番だるいのは、変換場所に応じて色分けすることなんですが。
#MSDNなどにも資料が全然ないので、Try&Errorで内部情報をさぐっていくしかありません。

276 名前:デフォルトの名無しさん :2001/03/13(火) 10:50
すみません、
C/C++はDOSや組込み系でばりばり書いてるんだけど
Windowsプログラムは一ミリも書いたことが無いし
右も左もぜんぜんわからんという私に適当な
Windowsプログラミングの入門書を教えてください。

277 名前:デフォルトの名無しさん :2001/03/13(火) 11:11
VC4Standard買って以来VCを買ってないんですけど
まあいろいろつかってWindowsアプリを作ってます
もうVC4はアンインストールしてしまったんですが
たまにVC4付属のMSDNみたいなやつが読みたい時があります
VCBKS40.MVBというファイルを読むツールは存在しませんか?

278 名前:デフォルトの名無しさん :2001/03/13(火) 13:56
メニューに関して質問なんですけど、
IEのお気に入りのメニューみたいに、
ドラッグ&ドロップでメニューの位置を
変更するようにするにはどうしたらいいのでしょうか?
いろいろ調べてみたのですけど、わかりませんでした。
知ってる方います?

279 名前:デフォルトの名無しさん :2001/03/13(火) 19:44
>>276
「プログラミングWindows」
通称ペゾルド本。定番だが、これに勝る入門書は今の所無い。ただしWin32APIオンリー。

MFCなら「MFCによるWindowsプログラミング」が良い。ただ順番として
API→MFCと進むのがベターか。

280 名前:デフォルトの名無しさん :2001/03/13(火) 21:57
つまり
プログラミングWindows→MFCによるWindowsプログラミング
の順番がよろしい訳ですね?

281 名前:デフォルトの名無しさん :2001/03/13(火) 23:00
VC6.0をオンライン登録したいんですが、どうやったらできますか?
もしかしてOfficeみたいにオンライン登録はインストール時のみ可能ってやつですか?

あと、MSDNだけ見たいときにいちいちVC起動するのが面倒なので直接MSDNを開きたいんですが、
ファイルが多すぎてどれが本体なんだか分かりません。


282 名前:トリッキーの1 :2001/03/13(火) 23:11
>>280
Cをばりばり扱ってきた人であれば、APIから入門した方がわかりやすいでしょう。
そして「MFCによるWindowsプログラミング」は、実に良い本です。
私は以上の道筋を経てWindowsプログラマになりました。

#もっとも私の場合、必ず最初は他人のコードの改造からはいります。
#そのポリシーはN88BASICだろうがAPIだろうがMFCだろうが変わらないですけどね。
#他人のコードを読むのは、本当に勉強になりますよ(参考図書:プログラミングの心理学)

283 名前:デフォルトの名無しさん :2001/03/14(水) 02:48
「MFCによるWindowsプログラミング」
Jeff Prosise著、マイクロソフトプレス
"Programming Windows with MFC Second Edition"

これのことですか?


284 名前:デフォルトの名無しさん :2001/03/14(水) 09:33
>>283
その通り。First Editionは「MFCによるWindows95プログラミング」だった。

これを読破して、AppWizardやClassWizardに頼らずに組めるようになれば一人前。
Wizardを使って良いのは上級者,熟練者だけ。そこのところを間違えないこと。

285 名前:トリッキーの1 :2001/03/14(水) 11:43
>>284
激しく同意

286 名前:269 :2001/03/14(水) 13:41
>トリッキーの1 >>273

>#実際一番だるいのは、変換場所に応じて色分けすることなんですが。

CandidateWindow が出ている状態での変換場所の取得はできましたが
出てない状態で選択位置が変更されたときの位置が取得できません。
開始位置は ImmGetCompositionString でカーソル位置を取得すればいいんですが
終わりの位置(範囲)の取得方法がわかりません。
変換場所の取得または変換中の文字の取得ってどうするんですか?

コンポジションウィンドウを消すのに
ImmSetCompositionWindow で CFS_RECT を指定して文字が表示できないくらい
小さな矩形を設定すれば消えますがもっとスマートな方法はありますか?


お願い教えて!


287 名前:269 :2001/03/14(水) 15:12

自己レスです。

>CandidateWindow が出ている状態での変換場所の取得はできましたが
>出てない状態で選択位置が変更されたときの位置が取得できません。
>開始位置は ImmGetCompositionString でカーソル位置を取得すればいいんですが
>終わりの位置(範囲)の取得方法がわかりません。
>変換場所の取得または変換中の文字の取得ってどうするんですか?

ImmGetCompositionString で出来ました。
使い方間違ってました。

>コンポジションウィンドウを消すのに
>ImmSetCompositionWindow で CFS_RECT を指定して文字が表示できないくらい
>小さな矩形を設定すれば消えますがもっとスマートな方法はありますか?

ImmSetCompositionWindow の矩形で横幅がマイナスの値で良いような気がしますが違います?
サイズ0だと何故か表示されるがマイナスだと消える。


それとコンポジションウィンドウが表示されない状態だと
CandidateWindow の表示位置を設定できるんですが
コンポジションウィンドウが表示される状態だと
CandidateWindow の位置を設定しても勝手にデフォルトの位置(変換文字の真下)に
移動されてしまいます。(一瞬設定した場所に表示されてすぐに移動される)
これって位置設定のタイミングが間違ってる?
設定する時ってIMEから何かメッセージ送られてくるんですかね?

まぁ表示されていない状態ならうまく動くのであまり関係ないですけど。


自分はMS-IMEなんですけどATOKとかだとIMEから送られてくる
メッセージって多少違ったりするんですかね?
MS-IMEでは動いてATOKじゃ動かないとか・・・


誰か教えて♪


288 名前:デフォルトの名無しさん :2001/03/14(水) 16:39
すいません。A.cppの関数からB.cppの関数を呼べるようにするにはどうしたらよいのでしょうか。

289 名前:デフォルトの名無しさん :2001/03/14(水) 17:10
B.cppの関数をプロトタイプ宣言したヘッダをA.cppにインクルードする

290 名前:デフォルトの名無しさん :2001/03/14(水) 17:33
インクルード ファイルがオープンできません。'hed.h': No such file or directory
こういうメッセージが出てインクルードできないのですが、何故でしょう?
hed.hファイルはプロジェクトのHeader Filesの中にあるのですが・・・

291 名前:デフォルトの名無しさん :2001/03/14(水) 17:53
Includeパスが通ってないとか?

292 名前:デフォルトの名無しさん :2001/03/14(水) 17:58
>291
どうすればいいのでしょう?

293 名前:デフォルトの名無しさん :2001/03/14(水) 18:31
#include <hed.h>

としていませんか?

#include "hed.h"

としてみてください。

294 名前:デフォルトの名無しさん :2001/03/14(水) 18:42
駄目でした・・・壊れたんでしょうか。

295 名前:デフォルトの名無しさん :2001/03/14(水) 19:31
原因が判明しました。A.cppがプロジェクトのフォルダと違う場所に置いてあったからでした。
ご迷惑おかけしました。289,291,293の皆さん、どうもありがとうございました。

296 名前:デフォルトの名無しさん :2001/03/14(水) 19:53
予想通り?

297 名前:デフォルトの名無しさん :2001/03/14(水) 20:26
VBAってVisualC++から使えます?

298 名前:デフォルトの名無しさん :2001/03/14(水) 20:45
Unicodeの使い方が分かりません。
#define _UNICODEしたんですが、上手くいきません。
どうすればいいんでしょうか。



299 名前:デフォルトの名無しさん :2001/03/14(水) 22:32
>VBAってVisualC++から使えます?

意味がわかりません。

300 名前:デフォルトの名無しさん :2001/03/14(水) 23:31
>VBAってVisualC++から使えます?
システムモニタってメモ帳から使えます?
と同じような発言だよ。

結論を言うと使えません。

301 名前:デフォルトの名無しさん :2001/03/15(木) 00:28
>VBAってVisualC++から使えます?
肛門から小便だせます?
と同じような発言だよ。

結論を言うと使えません。



302 名前:デフォルトの名無しさん :2001/03/15(木) 00:50
VC++5.0で、ダイアログAPPを作ってました。
どこをいじったのか今となっては定かでないのですが、
ダイアログリソースの編集をしようと、リソースエディタにフォーカスする度に、
「ソースファイル(foo.h, foo.cp)のクラス"foo"は重複する挿入ブロックが存在します」
と警告ダイアログが出るようになってしまいました。
この警告ダイアログは何なのでしょう。そもそも挿入ブロックとは何なのでしょう?

303 名前:297 :2001/03/15(木) 11:06
やっぱり言ってることが変でしたか・・・
WinプログラムからVBAのマクロを呼び出せますか?
(これもおかしいこと聞いてますか?)

304 名前:デフォルトの名無しさん :2001/03/15(木) 11:51
>>303
ShellExecute使ったらどうよ?

305 名前:デフォルトの名無しさん :2001/03/15(木) 12:43
>>303
OLEオートメーション使えば出来るかな。
ちょっとメンドウだけど


306 名前:名無しさん :2001/03/15(木) 12:57
初心者です。よろしくおねがいします。
VCでダイアログを表示したり、クラス型の宣言を行ったりしたときなのですが、
pDocTemplate = new CMultiDocTemplate( とか
CAboutDlg aboutDlg;
aboutDlg.DoModal();とか
この場合、pDocTemplateやaboutDlgのメモリを開放するようなコードは
無い、もしくは必要ないのでしょうか。

逆に、必要な場合というのは、どういう時で、どのような命令を実行すれば
いいのでしょうか。


307 名前:デフォルトの名無しさん :2001/03/15(木) 14:08
上記の2つに関してはdeleteする必要なし。

308 名前:SAGE :2001/03/15(木) 14:10
>>306
普通 new で作ったモノは delete で解放する必要がある。
が、pDocTemplate の場合、MFC側のどこかに既に解放用のコードが
入っているはずなので、わざわざ自分で書く必要はない。

後者の場合は普通に int a; とか書いたときと同じで特に何もする
必要はない。変数のスコープが終わったところでデストラクタも自動で呼ばれるし。

309 名前:デフォルトの名無しさん :2001/03/15(木) 15:36
>>306 補足

deleteに関してよく問題になるのがCWnd。
MFCのソースから、CFrameWnd::PostNcDestroyやCView::PostNcDestroyを探して読んでみるべし。

310 名前:302 :2001/03/15(木) 16:07
>>304
>>305
ありがとうございます
OLEオートメーションはお手上げなんでShellExecuteを
使う方法はどうやるんですか?
ヘルプで調べても指定したファイルをオープンした後に
どうするか見当もつきません。
すいません厨房ですがお願いします。


311 名前:306 :2001/03/15(木) 17:05
>>306です
>>307-309
ありがとうございます。
確かにint a;は、消さなくては・・・という気にはなっていませんでした。
(それも問題かもしれないけれども)ちょっと、リキ入れすぎで変に
なっているようです。

落ち着いてCFrameWnd::PostNcDestroyやCView::PostNcDestroyを読んで
みます。

312 名前:302 :2001/03/15(木) 20:18
度々すいません、詳細に書きますと
VisualC++のコード上からVBAの
ActiveDocument.Shapes.AddPictureを呼び出したいのですが
それのやり方があれば教えていただけないでしょうか?
よろしくお願い致します。

313 名前:デフォルトの名無しさん :2001/03/15(木) 20:22
ずっと独学でやってきたのですが、一つのプロジェクト
の中でどのくらいファイルを分割するものでしょうか?
オリジナルのライブラリ以外全部一つのファイルなので
数千行になったりするものもあるのですが、人に見せた
ら「はぁ?」みたいな顔をされました。

314 名前:デフォルトの名無しさん :2001/03/15(木) 20:41
>>313
その関数のジャンルごとにとりあえず分けなさい
ファイルの名前もそれに付随した名前にする
例えばファイル関連ならfile.cとか(これはあくまで例)そんな感じで

315 名前:デフォルトの名無しさん :2001/03/16(金) 12:37
>VisualC++のコード上からVBAの
>ActiveDocument.Shapes.AddPictureを呼び出したいのですが

Wordのタイプライブラリを探して、

#import "タイプライブラリ名"

タイプライブラリを探すのは、VBの参照設定画面を使うのがお手軽。

316 名前:デフォルトの名無しさん :2001/03/17(土) 01:24
初歩的な質問でスマソ。
2枚の画像を重ねて表示するとき、
たとえば黒の部分だけは透明ということにして
下の画像を残すような処理はどうすればいいですか?

317 名前:デフォルトの名無しさん :2001/03/17(土) 02:09
1どっとずつ0か否かを判定して残すか否かを決める(w。

318 名前:デフォルトの名無しさん :2001/03/17(土) 03:06
>>310

Auto_Openマクロを書くのが一番簡単

>>316

TransparentBlt()で。


319 名前:デフォルトの名無しさん :2001/03/17(土) 15:09
VC++でEditなどのコントロールを追加する方法はありますか?
(例えばメインダイアログで3と設定したら、
サブダイアログにEDITが3つ作成されているっていう事をしたい!)

320 名前:デフォルトの名無しさん :2001/03/18(日) 01:19
LVS_OWNERDATAスタイルをもったリストビューを作ったのですが、
アプリケーション側から特定項目のデータの表示を更新する方法がわかりません。
なにか、良い方法内でしょうか?

321 名前:デフォルトの名無しさん :2001/03/18(日) 04:51
ウインドウプロシージャをstaticなメンバ関数にすることに成功したのですが、
SetTimerが使えなくなってしまいました。
なんとか使う方法はないでしょうか。


322 名前:デフォルトの名無しさん :2001/03/19(月) 17:49
超初心者です。
VCを色々と触ってみているのですが、メニューバーの「編集」の
「コピー」「切り取り」「貼り付け」は自分でコードを書きなさい・・・と
いうようなことが、ヘルプに書かれてあるのですが、さっぱりわかりません。
文字列の切り取り,コピー,貼り付けをクリップボード経由で行うには
どんなコードが必要なのでしょうか。
C++がわかっていれば、おそらく恐ろしく簡単なものなのではないかと、
推測しているのですが、私にはさっぱりわかりません。
どなたか、教えて下さい。

323 名前:322 :2001/03/19(月) 21:00
うーむ・・・やっぱりわからない。
複数行入力可能なエディットボックスをフォームに置いているので、
CTRL+X,C,Z,Vを可能にしたいのです。
フォームビューを表示してるだけなんだけど、この方法に問題があるのだろうか。

324 名前:322 :2001/03/19(月) 21:32
自作自演になりつつありますが・・・
COleClientItemってのを使わないとダメみたいですね。
(その使い方が判らない状態だけど)

325 名前:デフォルトの名無しさん :2001/03/20(火) 00:20
>>322
俺も詳しくないんだけど、エディットボックスにたいして
CEdit::Cut()、CEdit::Copy(), CEdit::Paste()を使えば
CTRL+X,C,Vはできるかも。
CTRL+Zのアンドゥは自分でガシガシ書くしかないみたい。

326 名前:名無しさん :2001/03/20(火) 06:29
>>325の方法だと
エディットボックスが多い場合に問題かな
なんていってる俺も今までにそういうのやったことないけど

327 名前:ひよこちゃん :2001/03/20(火) 14:10
VC++を使うに置いての質問です。
VC++6でコツコツと簡単なゲームプログラムを作成していました。
ソースの行数も4000行近くなってきたのですが、行数が増えるにつれ
やたらと処理が重くなるのです。実行したプログラムの処理ではなく、VC++
自体の処理がです。一つのソースファイルにまとめて書くと言うこと自体が
初心者かもしれませんが、分割する以外に対処などはありますでしょうか?

328 名前: :2001/03/20(火) 14:54
分割以外つったら早いマシンに買い換える
素直に分割しなさいよ 分割の仕方を学びなさい

329 名前::2001/03/20(火) 15:25
>>322
フォームのクラス内にメインフレームのメニューに関する
ハンドラを置いて、そのハンドラの中で、
フォームのエディットボックスのポインタで
Copy()
とかを呼び出してやれば良いんじゃないですか

330 名前:デフォルトの名無しさん :2001/03/20(火) 16:47
駄目駄目

331 名前:初心者 :2001/03/20(火) 21:37
>>327
インクリメンタルコンパイルがうまく行っていないのでは?
もしくはソースの依存性が高くて一部の変更が全てに影響して、
実質リビルド状態になっているとか。

332 名前:SAGE :2001/03/20(火) 22:44
>>327
コンパイルが、つーか、エディタが重いんだろ?諦めれ。
一ファイルにだらだら書いていいことは何一つ無いし。

333 名前:デフォルトの名無しさん :2001/03/20(火) 22:50
>>331
>一部の変更が全てに影響して

そりゃそうじゃん

>>327
>一つのソースファイルにまとめて書くと言うこと自体

っていってるし

334 名前:質問 :2001/03/20(火) 23:35
あるフリーのソフトでエディットボックスに[y=x^3+x^2+3x+5]とか記入すると座標にグラフを描いてくれるソフトがあったのですがどのようにして作られているのですか?文字と数字が一緒に記入しても処理できるのですか?私なりにプログラムしてみたのですが簡単なn=3 Y=n*X程度のプログラムならできるのですがy=x^2+3x+5みたいなプログラムはできませんどのようにすればよろしいのですか?また「*」はどのように処理しているのですか?


335 名前:名無しさん :2001/03/21(水) 07:12
>>334
それは、貴方が面倒くさがってコーディングしていないだけ
以上。

336 名前:デフォルトの名無しさん :2001/03/21(水) 10:30
>334
そのようなプログラムは原理的にVC++では不可能です。
まず、VBの入門書をよく読んでみましょう。

337 名前:デフォルトの名無しさん :2001/03/21(水) 14:35
>>336
なんで?GetWindowTextで文字列取ってきて、それをparseすりゃ良いだけの話だと思うんだけど?


338 名前:デフォルトの名無しさん :2001/03/21(水) 20:12
スレ違いかもしれなかったのでこちらで聞かせてください
OutLook Expressのメッセージ本文のデータを取得する方法は
どうやるのでしょうか?MAP〜以外のやり方があったらお願いします。

339 名前:デフォルトの名無しさん :2001/03/21(水) 20:44
>>333
氏ね
インクリメンタルコンパイル/リンクしらね−のか?
関数単位でやるからソースのでかさは関係ない

340 名前:デフォルトの名無しさん :2001/03/21(水) 21:15
それでもファイル分割くらいはできるようになっとけ

341 名前:デフォルトの名無しさん :2001/03/21(水) 22:47
>>340
>>333の逝ってることが的外れなだけ

342 名前:デフォルトの名無しさん :2001/03/21(水) 22:53
>>336
んなわけないって。それじゃ VC++ でインタプリタ作れない
じゃん。

>>334
コンパイラ理論とか言語理論に関する本を買ってきて読ん
でください。ドラゴンブックが定番。

また、少し古いですが「UNIX プログラミング環境」とい
う書籍に yacc を使った関数電卓の実装方法が取り上げら
れています。

# Win32 なら Excel あたり COM 経由で呼び出して、そっ
# ちに計算させるのもアリか?

343 名前:デフォルトの名無しさん :2001/03/22(木) 00:22
>337,342
あきらかに、336はネタだろ。

344 名前:名無しさん :2001/03/22(木) 09:32
超初心者です。
エディットボックスのコピー,カット,ペースト,アンドゥが解決しました。
FormViewにOnEditCopyを追加して(こういうのをなんて言うのか判っていませんが)
次の記述で、できました。

void CTestForm::OnEditCopy()
{
// TODO: この位置にコマンド ハンドラ用のコードを追加してください
CEdit* ed=(CEdit*)GetFocus();
ed->Copy();
//Copy(),Cut(),Paste(),Undo()で、それぞれの選択範囲がクリップボードへ
}

>>325,>>329さんの、言われていたことに、非常に近いコードだと思っています。
ありがとうございました。

これって、現在フォーカスのあるエディットボックスのポインタを
CEdit型の変数edに代入し(これも何か言い方があると思うのですが
判りません)、そのエディットボックスのCopy()を呼び出す(これまた、
言い方があると思うのですが)という動作と考えてあっていますかね・・・。

345 名前:名無しさん :2001/03/22(木) 09:35
超初心者です。
VC++初心者用スレができたので、私はそっちに行ったほうが
正解ですね。

346 名前:デフォルトの名無しさん :2001/03/22(木) 13:57
なんで初心者質問スレが出来たんだ?
大した人数もいないのにこんなに分けて意味あるのか?

347 名前:名無しさん :2001/03/22(木) 14:20
超初心者です。
どっちに行けばいいのやら・・・ウロウロ
内容次第ですかね・・・。
(自分の質問が、どっちに含まれるかわからない初心者ですが)

348 名前:名無しさん :2001/03/22(木) 16:02
アプリの終了時に Detected memory leaks って、出るのですが
これって、なにかDestroyしわすれているのでしょうか?


349 名前:デフォルトの名無しさん :2001/03/22(木) 19:38
>>348
Destroyじゃなくてdelete

350 名前:デフォルトの名無しさん :2001/03/22(木) 20:47
>>339
>インクリメンタルコンパイル/リンクしらね−のか?
>関数単位でやるからソースのでかさは関係ない

333です
そーなんだしらんかったっす
一つ利口になりました

351 名前:デフォルトの名無しさん :2001/03/26(月) 04:18
VC6.0を使っているのですが、
newがbad_allocをthrowするようにするためにはどうしたら良いのでしょうか?
CRTのソースを見ると、bad_alloc周りのコーディングもしてあるようですが?

352 名前:デフォルトの名無しさん :2001/04/01(日) 23:25
>>351

throw bad_alloc;


353 名前:デフォルトの名無しさん :2001/04/02(月) 15:55
送信アプリ−受信側アプリの2つを作成して送受信するものを作りたいのですが
送信側で
(1)socketでソケットの生成
(2)inet_addr、gethostbynameで送信先の検索、指定
(3)送信データの作成
(4)sendtoで送信
として、
受信側では、
(1)データを受け取ったら
(2)socketでソケットの生成
(3)recvfromで受信
(4)受信データの表示
としようと思います。
そこで受信側の
(1)のデータを受け取ったら
という部分は、何を使ったらデータを受け取った事を確認できるのですか?
教えてください。

またこの仕組みに改善点があったら教えてください。



354 名前:デフォルトの名無しさん :2001/04/02(月) 16:06
そもそも、ソケットを作らないと、データを受信したか
どうかも分からん、と思う、今日この頃。

355 名前:デフォルトの名無しさん :2001/04/02(月) 16:16
>>353
select() WindowsならWSAAsyncSelect() winsock2なら、WSAEventSelect()を
調べてみるがよろし。

356 名前:COM超初心者 :2001/04/02(月) 21:56
アプリからIISの設定(仮想ディレクトリなど)を書き換えたいんですが、サンプルなどご存知でしたら教えて下さい。
#IIS Admin Object の使い方が全然わかりません。



357 名前:デフォルトの名無しさん :2001/04/02(月) 23:59
>>356
それ私も知りたい・・・
IIS Admin Objectってあるんだ、ちょっと調べてみる。

358 名前:356 :2001/04/03(火) 16:28
>>357
参考までにおいらが調べたことを書いておきます。
1.アプリからIISの設定をするには、「IIS Admin Object」という COMオブジェクトにアクセスするらしい。
2.VS6 のMSDNで「Enumerating Keys and Data」にサンプルらしきものがある。
が、単純にコンパイルすると下記のエラーが出る。
error LNK2001: 外部シンボル "_CLSID_MSAdminBase_W" は未解決です
error LNK2001: 外部シンボル "_IID_IMSAdminBase_W" は未解決です
3.(NT4.0 OptionPack の場合)\Winnt\System32\inetsrv\adminsamples\mkwebdir.vbs
にWSH のサンプルがあるが、VC++ で同じ事をやるにはどうすれば良いかわからん。

と言ったところです。


359 名前:デフォルトの名無しさん :2001/04/04(水) 17:34
CMapStringToObとCObListを両方継承たいのですが
できますか?

360 名前:デフォルトの名無しさん :2001/04/06(金) 00:59
簡単なDOSプロンプトラッパーを作ろうと思っています
例えばボタンを押したらDIRコマンドを発行。という具合です
で、VIEWにDOSプロンプトの結果を反映させたいのですが
DOSプロンプトの文字列を受け取る方法はあるでしょうか?

361 名前:デフォルトの名無しさん :2001/04/06(金) 18:36
>>360
popen じゃ駄目?

362 名前:デフォルトの名無しさん :2001/04/08(日) 01:48
                Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                ( ・∀・)<  ここ、あんまし賑わってないね。
             _φ___⊂)__ \_______________
           /旦/三/ /|
        | ̄ ̄ ̄ ̄ ̄|  |
        |熊本みかん|/

363 名前:dll :2001/04/12(木) 23:37
dllの作り方がいまいちよくわからないです。(SDKで)
dll参照するソフト作るとしますが、
始めに新規作成で空のdllつくります。
次にdllのコードを入力し、ビルドしますが、
ここで、実行するexeを聞かれますが、
まだ、本体作ってないのでキャンセルします。
そうすると、libファイルが作成されませんがどうしてですか?
defファイルは自分で新規作成テキストを.defで保存すればよいのでしょうか?
ちなみにVC6をつかってます。
どうぞよろしくおねがいします。

364 名前:デフォルトの名無しさん :2001/04/13(金) 03:29
>>363
defファイルを使うやり方もあるが、説明が面倒くさいので、
↓でも見てやってみてちょーだい。
http://tools.geocities.co.jp/SiliconValley-SanJose/2089/@geoboard/19.html


365 名前:デフォルトの名無しさん :2001/04/13(金) 23:46
ユーザーが登録できるコールバック関数が30個程度ある
CのライブラリをC++でラップする必要があるんですが、
単純にMyLibクラスのvirtualメソッドにすればいいんでしょうか?

366 名前:>365 :2001/04/13(金) 23:52
知りたい事がよくわからんが、既にコールバック関数をユーザーに
公開してる時点でC風のインタフェースにするしかないと思うんだが・・。

367 名前:デフォルトの名無しさん :2001/04/14(土) 03:19
>>366
そーでもないよ

368 名前:デフォルトの名無しさん :2001/04/14(土) 16:08
他のプロセスのWin32API呼び出しを乗っ取るにはどうしたら良いですか?
たとえばMessageBoxを派手にしたりCreateFileを監視したいのです。
日本語の詳説やサンプルのソースファイルが見られる場所はないですか?

369 名前:デフォルトの名無しさん :2001/04/15(日) 00:48
>>368
CreateRemoteThreadでdllを刷り込ませたり、
レジストリに常駐DLLとして登録したり、いろいろ方法あるけど?

370 名前:デフォルトの名無しさん :2001/04/15(日) 00:52
すみません、VC用のソケット&TCP/IP関連のリンク集はありませんでしょうか?

371 名前:はいよ(藁 :2001/04/15(日) 01:29
http://www.infoseek.co.jp/Titles?col=JW&qt=VC%CD%D1%A4%CE%A5%BD%A5%B1%A5%C3%A5%C8%A1%F5TCP%2FIP&lk=noframes&qp=0&nh=10&svx=100600

372 名前:超初心者 :2001/04/15(日) 01:39
将棋をつくろうと思って
子windowに将棋盤を書こうと思い
Rectangle()を使っているのですが、
書けません。
メインwindowには描画できるのですが・・・
どうやったら描けるのでしょうか?

自分としてはhdc,hwnd,creatwindow()の辺り
の知識がほとんどないので、
その辺に問題があるのかなとおもっていますが・・・


373 名前:デフォルトの名無しさん :2001/04/15(日) 01:43
>>371 あががが

374 名前:なまお :2001/04/15(日) 08:45
僕のサイトにC言語会話講座と言うのを作ったので、見にきてください!

http://web.kyoto-inet.or.jp/people/namao/index.html

375 名前:368 :2001/04/15(日) 10:04
CreateRemoteThreadはNT用なのでパスして常駐DLLを使いたいのですが
レジストリへの登録とはどこになにを書き込めば良いのでしょう?
ポインタでも構わないのでご存じの方よろしくご教示くださいです。。
検索しようにも適切なキーワードが分からずサパーリです。

376 名前:デフォルトの名無しさん :2001/04/17(火) 22:41
ビットマップリソースの一部を切り取ったCBitmapオブジェクトを作るには
どうしたらいいんですか?


377 名前:デフォルトの名無しさん :2001/04/17(火) 22:59
ロードしてDCを付けて新しくBitmap作ってそこにコピー。

378 名前:デフォルトの名無しさん :2001/04/18(水) 00:02
「Bitmapにコピー」ってどうやるんでしょうか。
CBitmapクラスにそんな関数はないみたいですが…

379 名前:デフォルトの名無しさん :2001/04/18(水) 00:06
>>378
CreateBitmap
ヘルプ見れ
それからWindowsのbitmap操作は色々と面倒だぞ
DIBに直して自分で弄った方が良いかもな

380 名前:379>378 :2001/04/18(水) 00:09
あ、コピーはbitbltね
メモリDC作ってそこから転送


381 名前:378 :2001/04/18(水) 00:18
BitBltってDCからDCへビットマップを転送する関数ですよね。
そこからどうやってCBitmapに移動させるんでしょうか…
ビットマップボタン作りたいんですけど。

382 名前:379>381 :2001/04/18(水) 00:36
ボタンをサブクラス化してWM_DRAWITEMで自分で描画
CBitmapは知らん。つーか忘れた。
codeguru行くか、'BitmapButton'で検索すれば?

383 名前:379>381 :2001/04/18(水) 00:40
あ、サブクラス化じゃなくてOwnerDrawね。

384 名前:379>381 :2001/04/18(水) 00:49
http://www.codeguru.com/

385 名前:639 :2001/04/18(水) 15:43
GetPrivateProfileInt()はWindowsCEでは、有りません。
GetPrivateProfileInt()と同じ働きをするように
他の何かでどうやってやれば構築できるのか
教えてください。

386 名前:デフォルトの名無しさん :2001/04/19(木) 19:31
AfxExtractSubStringって関数のことで質問ですが、
ソース中で
CStringのGetBufferSetLength(n)やってるんですが
こういう場合は、
ReleaseBuffer(n)しなくてもいいんですか?


387 名前:デフォルトの名無しさん :2001/04/19(木) 19:50
今VisualC++買うのってどうですかね?
.NETまで待った方がいいですか?

388 名前:デフォルトの名無しさん :2001/04/19(木) 21:47
GetBufferSetLength は ReleaseBuffer しなくても良い。
もちろん、GetBufferSetLengthに渡した文字列長が正しい
と仮定した場合。将来のバージョンではどうだか知らん。

ReleaseBuffer の役割は、文字列長のセットと、末尾への
'\0' の付加だから。


389 名前:376 :2001/04/20(金) 02:00
こんな風にしてみたんですが、エラーが出て動きません。

CBitmap bmp,paibmp;
CDC memDC,paiDC;

bmp.LoadBitmap(IDB_PAI);
memDC.SelectObject(&bmp);
paibmp.CreateBitmap(41,66,1,8,NULL);
paiDC.SelectObject(&paibmp);
memDC.BitBlt(100,200,41,66,GetDlgItem(IDC_KONG1)->GetDC(),0,0,SRCCOPY);

いくらいじってみてもうまくいきません。一体どうすればいいんでしょうか。助けてください。

390 名前:>389 :2001/04/20(金) 03:22
うまくいかないって言われてもなあ・・
結局、初心者向けページやcodeguruとか見に行って自分で調べるしかないと思うよ。
基本的なビットマップ操作はcodeguruとかのWebサイトでサンプル沢山揃うと思うけど。
あとは似た処理をしてそうなソース付きのフリーウェア落としてきて解析するとか。
最初から全部自作するのは凄い手間だから、完動するサンプルソースや
ライブラリから拡張していったら?

391 名前:>389 :2001/04/20(金) 03:23
うまくいかないって言われてもなあ・・
結局、初心者向けページやcodeguruとか見に行って自分で調べるしかないと思うよ。
基本的なビットマップ操作はcodeguruとかのWebサイトでサンプル沢山揃うと思うけど。
あとは似た処理をしてそうなソース付きのフリーウェア落としてきて解析するとか。
最初から全部自作するのは凄い手間だから、完動するサンプルソースや
ライブラリから拡張していったら?

392 名前:>389 :2001/04/20(金) 03:23
うまくいかないって言われてもなあ・・
結局、初心者向けページやcodeguruとか見に行って自分で調べるしかないと思うよ。
基本的なビットマップ操作はcodeguruとかのWebサイトでサンプル沢山揃うと思うけど。
あとは似た処理をしてそうなソース付きのフリーウェア落としてきて解析するとか。
最初から全部自作するのは凄い手間だから、完動するサンプルソースや
ライブラリから拡張していったら?

393 名前:デフォルトの名無しさん :2001/04/20(金) 03:24
うへえ3重カキコ・・

394 名前:デフォルトの名無しさん :2001/04/20(金) 17:06
ヘタレでございます、
ツリーコントロール使い、エクスプローラもどきを習作しているのですが
ドラッグアンドドロップ時のイメージが上手く作成できませぬ。

色々探したのですがドラッグアンドドロップについて
記載した所が探し出せませんでした
何方かご存知でしたら、
また、この件を解説しているサイトがありましたらお教え願います

参考までに、現在マウス周りのコードは
void CMyTreeCtrl::OnBegindrag(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
m_pDragFlag=TRUE;//ドラッグモードON
SetCapture();
m_prevCursor = SetCursor(NULL);
m_DragImage.BeginDrag(0, CPoint(0,0));
m_DragImage.DragEnter(this, pNMTreeView->ptDrag);
*pResult = 0;
}

void CMyTreeCtrl::OnLButtonUp(UINT nFlags, CPoint point)
{
if(m_pDragFlag==TRUE){
m_pDragFlag = false;
ReleaseCapture();
m_DragImage.DragLeave(this);
m_DragImage.EndDrag();
SetCursor(m_prevCursor);
m_prevCursor = NULL;
}
CTreeCtrl::OnLButtonUp(nFlags, point);
}

void CMyTreeCtrl::OnMouseMove(UINT nFlags, CPoint point)
{
if(m_pDragFlag==TRUE){
m_DragImage.DragMove(point);
}
CTreeCtrl::OnMouseMove(nFlags, point);
}

という感じにしております。


395 名前:教えてください :2001/04/20(金) 17:34
動物に関するデータを入力すると、
そのあと入力された数字に応じて
データを表示するプログラムなんですが
動きません。どこがだめか教えてください。

/*動物園*/
#include <stdio.h>
#define number 10
struct zoo{

char syurui;
char namae;
int nenrei;
int taijyu;
}
main()
{
struct zoo doubutu[number];
int n,i,j;
printf("何種類か入力してください\n");
scanf("%d",&n);


for (i=0;i<n;i++){

printf("動物の種類を入力してください\n");
scanf("%s",&doubutu[i].syurui);
printf("そいつの名前も入れてくれ\n");
scanf("%s",&doubutu[i].namae);
printf("年はいくつやねん\n");
scanf("%d",&doubutu[i].nenrei);
printf("そいつ何キロやねん\n");
scanf("%d",&doubutu[i].taijyu);

}

printf("何番目にすんねや\n");
scanf("%d",&j);

j=j-1;

printf("%s\n",&doubutu[j].syurui);
printf("%s\n",&doubutu[j].namae);
printf("%d\n",doubutu[j].nenrei);
printf("%d\n",doubutu[j].taijyu);

}

詳細きぼ〜ん

396 名前:添削人 :2001/04/20(金) 18:48
まずデータ構造に問題あり。
zoo::namae は1バイトのデータしか格納できない。

char namae[256];//のように適当な配列にするか

char* namae;//のようにポインタにして
         //適宜メモリの確保と解放をやるべし。


397 名前:教えてください :2001/04/20(金) 19:03
ありがとうございました。
[数字]にすることにより、問題解決しました。
また、わからない事できたらかきこしますので
よろしくお願いします。

ありがとうございました。

398 名前:教えてくだっさい :2001/04/21(土) 21:02
タスクマネージャーもどきを実験用に作っているのですが
ほかのアプリのウィンドウ(なぜかフォルダウィンドウはOKです)のアイコンがGetIcon()で取得できません。
ためしにWM_GETICONメッセージに反応してアイコンハンドルを返す
プログラムを作って実験すると取得できます。
またSpy++で適当なアプリのウィンドウを調べてみるとちゃんとWM_GETICONに
反応しているようです。
タスクマネージャーやタスクバーはどうやってアイコンを取得しているのでしょうか?
教えてください。



399 名前:>398 :2001/04/21(土) 21:17
多分、SHなんとか関数

400 名前:400 :2001/04/22(日) 06:00
キリ番get

401 名前:教えてくだっさい :2001/04/22(日) 16:19
>399
情報ありがとうございます!

402 名前:デフォルトの名無しさん :2001/04/23(月) 12:39
CStringなんて移植性は下がるわ動作は遅くなるわたまにメモリ壊すわで最悪だから絶対使うなと言われたんですけど、そんなにひどいんですか?
すげー便利だと思って使いまくってたから愕然としたんですが、俺は今までとんでもない事をやってたんでしょうか。

403 名前:デフォルトの名無しさん :2001/04/23(月) 12:51
ソース読め>>402

404 名前:394 :2001/04/23(月) 13:35
なんか自己解決出来ました、
当初、BeginDragで
イメージ作ってくれてるのかと思ってたんですが
よくよく考えたらツリーと関係結んでないことに気づき
イメージ作ってから表示したら一発で出てくれました。
阿呆すぎる、、、、


405 名前:デフォルトの名無しさん :2001/04/23(月) 17:33
ボリューム名ってなんですか?

406 名前:デフォルトの名無しさん :2001/04/23(月) 17:39
入門者です。素朴な質問です。
VCプログラマって基本的にMFCを使用しているのですか?



407 名前:デフォルトの名無しさん :2001/04/23(月) 17:53
人それぞれだよ。

408 名前:デフォルトの名無しさん :2001/04/23(月) 18:01
>>406
最初はMFCなぞ使ってはならん。コンソールアプリを作って楽しむべし。
AppWizardなんてもっての他だ。
コンソールで一通り遊んだら、MFCを使って遊ぶべし。それが一通り終わった頃には
AppWizardが生成したソースも難無く読めるであろう。
頑張って遊ぶがよし。最初から気合入れると疲れるぞ。遊ぶ気持ちを忘れずにな。

409 名前:デフォルトの名無しさん :2001/04/23(月) 18:05
いきなりですが質問です。

class a
{
public:
void (*pmemfunc)();
};

class b
{
public:
b();
int retdata();

a adef;
};

b::b()
{
adef.pmemfunc = retdata; // エラー
}

このような関数を渡す処理を行おうとすると、型キャストのエラーが出ます。これを解消する方法はないでしょうか?

410 名前:RIP_MAPIRO :2001/04/23(月) 20:19
>>409
関数へのポインタへの型チェックは、明確にしなければならない。
この場合2通り考えられる。
1) void (*pmemfunc)(); -->int (b::*pmemfunc)();

2) void (*pmemfunc)(); -->void (b::*pmemfunc)();
int retdata(); --> void retdata();

戻り値が void と int を混在させる必要がある場合素直に別の関数と
割り切ってそれぞれ作るしかないでしょう。


411 名前:デフォルトの名無しさん :2001/04/24(火) 00:23
なぜWM_PAINTメッセージではBeginPaint関数を使わなければ
ならないのでしょうか?GetDC関数では駄目なのでしょうか?
もしかして有効化と関係あるのでしょうか。


412 名前:デフォルトの名無しさん :2001/04/24(火) 01:04
GetDCでもいいよ>441


413 名前:409 :2001/04/24(火) 08:51
>>410
ありがとうございます。で、すいません。質問のとき、intとvoidを混在させてしまいました。使用しているのはvoidです。ところで、もう一つよろしいでしょうか。

class a
{
public:
void (b::*pmemfunc)();
};

の状態で、pmemfuncが実際の関数を指しているのか調べるために、コンストラクタでNULLを入れて、ある関数中で

スコープ:a
if (pmemfunc != NULL) pmemfunc();

とするとコンパイラエラーが出ました。これはどういうことなんでしょうか。



414 名前:デフォルトの名無しさん :2001/04/24(火) 09:47
GetVolumeInformation() //ドライブのボリューム名の取得
を使わずに同じ働きをする関数を探しています。
そのようなものってありますか?


415 名前:RIP_MAPIRO :2001/04/24(火) 13:04
>スコープ:a
ということは class a の メンバ内ということですな。

さて例えば関数へのポインタ
void (*Hoge)();
と宣言された Hoge をコールするときは
(*Hoge)();

ということは
すくなくとも pmemfuncをコールするときは
(*pmemfunc)();
とせねばならないことはよろしいか?

しかしこれでもエラーが出る。
なぜなら b::*pmemfunc と宣言されているので class b の実体から
参照されなければならないことになる。
よって この場合 class a にメンバ変数 class b へのポインタを用意
してやってそれからコールする。

例えば以下のように
class a
{
public:
  a(){
    pmemfunc = NULL;
    m_Pointer_b = NULL;
  }

  Call_pmemfunc(){
  if(m_Pointer_b != NULL && pmemfunc != NULL ){
  (m_Pointer_b->*pmemfunc)();
  }
  }

  void (b::*pmemfunc)();
  b* m_Pointer_b;
};

class b
{
public:
  b(){
  adef.pmemfunc = retdata;
  adef.m_Pointer_b = this;
  }

  void retdata();

  a adef;
};


416 名前:デフォルトの名無しさん :2001/04/24(火) 15:06
>>411
ウィンドウに無効な領域(書き直すべき領域)があって、
ほかにこれといったメッセージがないときに、
GetMessage すると、WM_PAINT が帰ってきます。

BeginPaint, EndPaint をしないと、永遠に WM_PAINT が
着続けて、そのたびに再描画していると無駄に CPU パワーを
食ってしまいます。

417 名前:413 :2001/04/24(火) 16:48
>>415
ありがとうございます。
ついでにもう一つ。上記例で、クラスaから派生されたクラスの関数を渡したい場合には、そのクラス名がわからないと無理なんでしょうか。これからの拡張性を考えると、親クラスだけがわかっていて子クラスがわからない場合でも子クラスの関数アドレスが渡せると便利だと思うのですが…。というか、それができないと困る場合が…。


418 名前:教えてください :2001/04/24(火) 18:43
解き方がまったくわかりません。
だれかサンプル作ってください。

1、入力ファイル
 1、データを格納する配列数は100.
 2、データには「連番、社員NO、部署番号」が存在する。
2、読み込んだデータを社員NOと部署でソート(昇順)する。
 1、第一ソートは部署番号
 2、第二ソートは社員NO
 3、ソート方法は各自で調査、決定する。
3、ソートした結果を画面に出力。

ファイルサンプル ソート結果イメージ
1,2154,556     4,3365,55
2,857,102   3,559102
3,559,102 2,857,102
4,3365,55 1,2154,556
5,3398,556 5,3398,556

このような物なのですが、関数を使って解きたいのですが。
誰かよろしくお願いします。
回答、きぼ〜ん


419 名前:教えてください :2001/04/24(火) 18:45
418です。
最後のところがうまく表示できなかったんですが
よろしくお願いします。

420 名前:デフォルトの名無しさん :2001/04/24(火) 19:08
>>413
そういう用途ならば、メンバ関数ポインタなど使わず、
インターフェースクラスをつくって、そのポインタを
貰いましょう

421 名前:ななし :2001/04/24(火) 20:23
dllを使って、システム全体の
キー入力を監視するプログラムを作ってます。
そこで、hook使ったのですが、
hookだと監視はできます。
文字の入力ができません。
これを回避する方法はありますか?


422 名前:デフォルトの名無しさん :2001/04/24(火) 20:23
412,416さん有難うございます。GetDC関数でもよいとの事ですが
WM_PAINTメッセージ処理の中にGetDCをBeginPaintの代わりに
書くと、プログラムがおかしな状態になります。そこでGetDCの前に
ValidateRect関数でクライアント領域を有効化すると、上手く描画
できます。これはナゼ
なんでしょうか?

423 名前:416 :2001/04/24(火) 21:57
>>422
ネタ?
416を読み直してもわからないようなら、もう一度聞いて。


424 名前:RIP_MAPIRO :2001/04/24(火) 23:31
>>417

>クラスaから派生されたクラスの関数を渡したい場合
質問の流れからすると
"クラスbから派生されたクラスの関数を渡したい場合"
のような気がするが・・・。

どのような実装を目指しているのか、いまいちつかみ所が
分からなくなってきた。ただ言えることは Cライクな C++
にはまりそうな気がする。今一度 設計を検証することを
オススメする。
 もし他人のクラス群の拡張なら、思い切ってクラス設計を
一からやり直した方が速いかもしれない。



425 名前:412>422 :2001/04/25(水) 00:42
そりゃ、ValidateRectで全部有効化すりゃメッセージは来なくなるよ。(苦笑
で412だけど、あれ、適当。すまん。つーか言葉が足りなかったみたいね。
WM_PAINT処理するならBeginPaint/EndPaintは呼ばなきゃだめだよ。
その中でGetDCは別に呼んでも構わないよ、って412を解釈してね。
あとはもう説明面倒だから416さんにでも聞いてね。

426 名前:デフォルトの名無しさん :2001/04/25(水) 00:49
>>424 RIP_MAPIRO様
ぢつは…ワタクシもともとDelphi使いでして。MFCをDelphiライクにコンポーネントクラスで使えるといいなぁと思っていたのです。そのため、
CEdit (継承 -> ) TEdit
CButton (継承 -> ) TButton
などとして、プロパティを使ってアクセス性の高いクラスを作っていたのです。その目的のうちの一つとしてイベントハンドラを渡せると良いなと思いまして。
そこで、TNotifyEventクラスを作りまして。これは、
void (*OnButtonClick)();
などのメンバ関数を持っています。
このTNotifyEventクラスとCEditなどのMFCクラスとを多重継承させてTEditクラス等を作ってみたのです。MFCクラスの親CWndクラスのDefWindowProcメンバを使用してメッセージ分岐処理を行っています。ところが、CFrameWndクラスを継承して作ったメインウィンドウクラスにOnButton1Click()メンバを作り、
Button1.OnButtonClick = OnButton1Click;
などとやりたかったのですがスコープの問題でうまくいかなかったのです。
実際に、これらVCLもどきはライブラリとしてまとめると再利用性があるかと思ったのですが、前回の解決方法ではうまくいきません。

そういう目的があったのですが…説明不足で申し訳ありませんでした。

427 名前:デフォルトの名無しさん :2001/04/25(水) 01:02
>422

例えば、ウィンドウ上にダイアログがあって、そのダイアログが消えると、描画しなければいけない空白がウィンドウ上にできる。
こういうのを無効領域っていうの。
この無効領域があると、WM_PAINTが自動的に発行される。
WM_PAINTがきたときにこの無効領域を有効化しないと、無効領域が残ったままなので、416の言うようにWM_PAINTがずっと発行され続けて表示がおかしくなってしまう。
無効領域を有効化する方法は3種類。
1、BeginPaint()を呼ぶ
2、ValidateRect()、ValidateRgn()を呼ぶ
3、WM_PAINTを処理しないで、そのままDefWindowProc()を呼ぶ。
の3つ。WM_PAINTがきたときは、この3つのうちどれかを実行しないと表示がおかしくなる。
422のケースで、ValidateRect()を呼んでうまくいったのは、2を実行していたから。

普通は、「無効領域がある」=「描画しなければいけないところがある」ってことなので、BeginPaint()で描画と有効化を一度にやる。
それと、BeginPaint()は「無効領域以外の部分は描画できない」という特徴があって無駄な描画が減るので、ちらつきが少なくなるよ。



428 名前:デフォルトの名無しさん :2001/04/25(水) 02:27
>>426
delphi流のメソッドポインタですか。
一応C++でも不可能じゃないけど、あんまり綺麗には書けない
(のでdelphiに戻ったほうがよい(笑))と思ったもんでした。

以前なんかの折に書いた落書きが以下です。
有能な人が書いたら遥かに綺麗になるのかも知れないけど。
つーか書いてください優秀なかた(T_T)

そういやメソッドポインタって、JavaとJ++の戦争のネタの一つでしたよね(笑)。
面白い概念だとは思いますよ。うん。

CServerがDelphiでいうコンポ、CClientがForm(笑)のつもりです。

template <class MethodServer> //MethodServerてのは「メソッドを持ってる奴」ってなニュアンス
class CMethodPointer { //この型をメソッドポインタと呼ぶのってもしかしてdelphi流でしょか?
private:
typedef void (MethodServer::*Method)();
MethodServer *receiver;
Method method;
public:
void set(MethodServer *rcv, Method mth){receiver=rcv; method=mth;}
void exec(){(receiver->*method)();}
};

#include <stdio.h>

class CServer {
public:
void f1(){puts("f1");}
void f2(){puts("f2");}
};

class CClient {
public:
CMethodPointer<CServer> mp1;
};

int main()
{
CClient cl;
CServer sv;

cl.mp1.set(&sv, &(CServer::f1));
//これは出来れば勘弁願いたい書き方だ。目の前にある変数(sv)の型をなんで再び
//人間様が書かんとならんのだ?
cl.mp1.exec();

cl.mp1.set(&sv, &(sv.f2));
//これがお洒落だなあ。これ通るのってC++標準準拠なんでしょか?
//ホントはdelphiみたいに第一引数不要ならば嬉しいが、それは仕方ないつーことで。
cl.mp1.exec();
}

429 名前:RIP_MAPIRO :2001/04/25(水) 09:47
>>426
なるほど。Delphiを使ったことはないけど、”MFCをコンポーネントクラスで使える
といいなぁ” には共感できる。私の場合そういう包括的なアプローチはあきらめて
オートメーション機能を使っている。細かいことをやりたいときはATL&COMを使う。

>メインウィンドウクラスにOnButton1Click()メンバを作り、
>Button1.OnButtonClick = OnButton1Click;
>などとやりたかったのですがスコープの問題でうまくいかなかったのです。
PreTranslateMessage のオーバーライドで解決する問題では?


430 名前:デフォルトの名無しさん :2001/04/25(水) 10:53
>>428
親切なレスありがとうございます。
ただ、できれば今後アプリを作る中で楽したいので、結局現在以下のような手段で手を抜いております。

(1) TNotifyEvent中のメソッドポインタは、TButtonなどの親クラス(CButton)のさらに親クラス(CWnd)型で宣言しておく。
void (CWnd::*OnMouseMove)();
void (CWnd::*OnLButtonDown)();
等のように。

(2) TForm(ウインドウクラス。派生元はCFrameWnd)の実装を持つ、イベントドリブン用のメソッドは、普通にクラス内で宣言する。
class TMainForm : public TForm
{
...
TButton Button1;
void OnButton1MouseMove();
};

(3) このままだと、実際にイベントハンドラに実装関数を渡すときのキャストが面倒
スコープ TMainFormの関数中
Button1.OnMouseMove = (void (CWnd::*)())OnButton1MouseMove;
なので、defineマクロを使って誤魔化す…(<-ここがダメダメ)
#define NEFUNC (void (CWnd::*)())
この場合はスコープTMainFormの関数中
Button1.OnMouseMove = NEFUNC OnButton1MouseMove;
ですみます。

…やり方はちょっとセコイですけど、一応今後は楽にメッセージ処理が行えるなぁと思っています。ただし、残念ながら出来るだけ多くのメッセージをTNotifyEventクラスで処理させようとすると、Switch処理で馬鹿みたいに処理が長くなって、処理速度の低下につながるなぁとも思っているんですけど。ま、でも、そこまで大した損失じゃありませんよねぇ?(CのSwitch処理の機構はイマイチわからないのですけど。アセンブラクラスではGoto命令みたいな処理をやっているだけでしょ?選択肢が増えてもあまり関係ないような気もしますけど)

>>429 RIP_MAPIRO様
色々と何度もありがとうございます。
ただ、コンポーネント化という観点からは、PreTranslateMessageのオーバーライドでは全く問題解決にならないような気がするのですが…。ようするに、違う処理を行うボタンを貼り付けるたびに、そのそれぞれを新たなクラスとして継承・オーバーライドをする必要があるわけですよね。それとも、私の考え方違いなのでしょうか。よろしくご教授ください!

431 名前:デフォルトの名無しさん :2001/04/25(水) 11:35
WindowsCEでリソースのVersionのProductNameを取得したい。
でも
GetFileVersionInfoSize()して
GetFileVersionInfo()して
VerQueryValue()して取得する。
という操作はCEでは、
GetFileVersionInfoSize()、
GetFileVersionInfo()、
VerQueryValue()の3つともサポートしていない
ので使えません。
どのようにして取得すればいいですか?
教えてください。


432 名前:デフォルトの名無しさん :2001/04/25(水) 12:17
>>430

まぁ、メソッドポインタ型の変数が
字義どおりのメソッドへのポインタ自体だけじゃなく
対応するインスタンス(のthis)をも含んでくれている、
というのがdelphi系の美しさの肝なので、
それと同じに書けないという意味では
標準C++であれを真似るのは微妙に辛いですね。

というか、(C++で出来ないゆえに)メソッドポインタが知られていない、
それゆえdelphiのメリットを理解してもらえない、という悪循環が、
信者(笑)としては残念に思うところ。

イベントプロシジャの仕掛けは、メジャー(?)な言語の多くでは
直接サポートされていないので、色々なGUIツールキットは
それぞれいろいろなやり方で苦心していますね。
unix畑で流行している「Gtk」とか「Qt」とかの
イベントプロシジャの実現方法は、横目で見ておく
(=本屋で立ち読みとか(ぉ))と参考になるかも知れません。
ちなみにGtkは対象言語が生Cなので、解決策も一番安直です(笑)。
QtはSLOTとかいう概念を使う(マクロで実現してる)んだっけか。
他にもツールキットって随分たくさん有るんで、眺めると吉かも。
#そして結局、従来型言語では不便だ、という結論に至る…かも(笑)

Javaは、アダプタObject(のクラス)をいちいち作って介在させるんでしたっけか?
あれはComponent本体のClassをいちいち派生させなくて済む
という意味では旨いんですが、アダプタInstanceの所有権つまり
いつ誰がアダプタをdeleteするか?で、ガベコレのない言語の悩みに突き当たるっぽい(^^;

ところで、少し前に出た奴ですが、

>このTNotifyEventクラスとCEditなどのMFCクラスとを多重継承させてTEditクラス等

多重継承はちょっと違うんでないですか?
コンポーネントはEventオブジェクトを「所有」すべきだと思うのですが。
たとえば同じ型のEventを同時に複数持ちたくなったら、
継承じゃまずいのは確かですよね?
Edit1.OnClick
Edit1.OnDblClick
みたいな感じ。
所有させておいて、明示的に(=区別して)名前で呼び出すのが良いと思います。

>出来るだけ多くのメッセージをTNotifyEvent
>クラスで処理させようとすると、Switch処理で馬鹿みたいに処理が長くなって

あれれ?なんでそんなこと(=caseの嵐)になるんでしょう?
そんなことにならないのがイベントプロシジャの味噌だと
思っていたのですが…違いましたっけ???



433 名前:RIP_MAPIRO :2001/04/25(水) 12:24
>>430
思いつきだけど。
PreTranslateMessageで親ウインドウ(以下"親")から子ウインドウ(以下"子")へ
メッセージを再配分する訳で、親のデータメンバに子のHWNDやら
HINSTANCE等の情報を動的にリストに確保してやれば良いのでは。



434 名前:デフォルトの名無しさん :2001/04/25(水) 12:34
>メッセージを再配分する訳で、親のデータメンバに子のHWNDやら
>HINSTANCE等の情報を動的にリストに確保してやれば良いのでは。

それってもしかして、
なんぼインスタンスの情報を持たせても、
それぞれの「挙動」の違いを表現できない、
ってことだったりしませんか?



435 名前:元Delphi使い :2001/04/25(水) 13:28
>>432
いえいえ。TNotifyEventクラスは、それぞれのメッセージに対応するイベントプロシジャへのポインタを持っている状態であるんです。まだ、メッセージを調べ始めたばかりなので数は足りないのですが、今現在の状態ではTNotifyEventクラスは以下のような定義になっています。
class TNotifyEvent
{
public :
TNotifyEvent();

void (*WMMouseMove)(int state, CPoint mousepos);
void (*WMDestroy)();
void (*WMLButtonDown)(int state, CPoint mousepos);
void (*WMLButtonUp)(int state, CPoint mousepos);
void (CWnd::*WMLButtonClick)();
void (*WMRButtonDown)(int state, CPoint mousepos);
void (*WMRButtonUp)(int state, CPoint mousepos);
void (*WMRButtonClick)();
void (*WMCreate)();
void (*WMSetFocus)();
void (*WMKillFocus)();
void (*WMVScroll)();
void (*WMHScroll)();
void (*WMKeyDown)(WPARAM wParam);
void (*WMKeyUp)(WPARAM wParam);
void (*WMChar)(char getk);
void (*WMLButtonDblClk)(CPoint mousepos);
void (*WMRButtonDblClk)(CPoint mousepos);
void (CWnd::*WMButtonClick)();

LRESULT WM_SwitchExecute(UINT message, WPARAM wParam, LPARAM lParam);

CWnd* NotifyEventParent;

protected :
CPoint pm_ClickCursor,pm_Mouse;
BOOL pm_BTNState;
};
で、たとえばボタンコントロールの場合は、
CButton、TNotifyEventを多重継承の形で継承してTButtonを作っています。
class TButton : public CButton, public TNotifyEvent {...};
ここで、TButtonはDefWindowProcメソッドをオーバーライドしています。
このDefWindowProc中で、
TButton::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
WM_SwitchExecute(message, wParam, lParam);
CButton::DefWindowProc(message, wParam, lParam);
}
と、TNotifyEventのWM_SwitchExecuteを呼び出し、そのWM_SwitchExecuteは
TNotifyEvent::WM_SwitchExecute(UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_MOUSEMOVE :
pm_ClickCursor = pm_Mouse;
pm_Mouse.x = lParam & 0xffff; pm_Mouse.y = lParam >> 16;
if (WMMouseMove != NULL) WMMouseMove(wParam, pm_Mouse);
break;
case WM_DESTROY :
if (WMDestroy != NULL) WMDestroy();
break;
...
};
}
とやっております。現在はこれと430の方法で動かせるのですが。前回言ったswitch文が長くてどーたらというのは、上記WM_SwitchExecuteの部分です。また言葉足らずでもうしわけない・・・。

436 名前:元Delphi使い :2001/04/25(水) 13:31
すんません、補足です。
まだ変更作業をはじめたばかりなので、ほとんどの関数ポインタが(*...)()という表記になっていますが、実際は全部(CWnd::*...)()なる形になります。もうしわけない。

437 名前:default :2001/04/26(木) 00:19
フックで、HookProcから
ウィンドウの方に返すには
どうしたらよいですか?

438 名前:デフォルトの名無しさん :2001/04/26(木) 00:20
おういぇい!

439 名前:デフォルトの名無しさん :2001/04/26(木) 00:55
>>438
イエーイ☆

440 名前:デフォルトの名無しさん :2001/04/26(木) 02:45
フック!

441 名前:デフォルトの名無しさん :2001/05/05(土) 14:15
当方、VC6でプログラムを作成しています。
ところがReleaseビルドしたものをVC上で動かすと異常終了するようになりました。
DEBUGビルドした物はちゃんと動くし、Releaseビルドでも直接起動すればちゃんと動くのですが、
ReleaseビルドしたのをVC上で動かすと不正なアドレスのメソッドを呼び出しているみたいで
落ちてしまいます。
DirectXを使っているので実行中にアドレスを確認することが出来ないんですが、
この原因はVCのバグ以外にどんなのが考えられるのでしょうか?

442 名前:RIP_MAPIRO :2001/05/05(土) 14:32
ポインタ変数やらオブジェクトを初期化していないでいきなり参照した。

443 名前:デフォルトの名無しさん :2001/05/05(土) 19:30
船長

444 名前:デフォルトの名無しさん :2001/05/05(土) 19:59
MFCとSDKだとSDKから勉強したほうが良さそうみたいですが
SDKの本って出版されてるんですか?
ちょっとした本屋には無くて
やっぱり秋葉原のデッカイ本屋とかじゃなくちゃ駄目ですかねぇ?

445 名前:初心者 :2001/05/05(土) 20:57
SYSTEM_INFOを使ってプロセッサータイプを取得しよう
としたのですが、K6-2がpentiumと認識されてしまいます。
もっと正確にプロセッサーを調べるにはどのようにしたらよろしいのでしょうか?

446 名前:デフォルトの名無しさん :2001/05/05(土) 21:32
>>441
直接起動だとたまたま動いてるだけでどっかにバグが残ってんだろ。

>>444
そこらの本屋にいくらでも置いてあるっす。

447 名前:444 :2001/05/05(土) 22:51
>>446
ぎゃー
VC系の本は全部MFCです

448 名前:デフォルトの名無しさん :2001/05/05(土) 23:44
>>445
http://www.google.com/search?num=30&hl=ja&safe=off&q=CPU+%94%BB%95%CA+VC
こんなん出たぞ。

>>447
ハーバート・シルトやペトゾルドの本探して見れ。

449 名前:ぽっぽ :2001/05/06(日) 00:09
モニターの解像度を640×480に強制的に変えるにはどうすればいいんですか?

450 名前:ぽっぽ :2001/05/06(日) 00:51
放置しないでよ・・・age

451 名前:>450 :2001/05/06(日) 00:53
「モニターの解像度を640×480に強制的に変える」で検索してね。

452 名前:ぽっぽ :2001/05/06(日) 00:54
そんなもん検索しても出てくるかボケ逝け!

453 名前:ぽっぽ :2001/05/06(日) 00:55
黄金厨逝って良し!

454 名前:デフォルトの名無しさん :2001/05/06(日) 01:03
「VisualC++ モニター 解像度 640×480 強制的に変える」で検索してね。

455 名前:ぽっぽ :2001/05/06(日) 01:10
出ねーよ。クソッ騙された!答えれる奴はいねーのか?
厨房板か!ここは?

456 名前:ぽっぽ :2001/05/06(日) 01:21
下がってるぞ

457 名前:デフォルトの名無しさん :2001/05/06(日) 01:26
騙されてる騙されてる。(w
いや、でも「解像度の変更」とかで引っかかる気がするけどなあ。

458 名前:デフォルトの名無しさん :2001/05/06(日) 01:27
454を少し変えたら出たよ。

459 名前:ぽっぽ :2001/05/06(日) 01:30
出たんなら教えろ。けちんぼがーーー!
もう今日は寝る。また明日あげまくったる

460 名前:デフォルトの名無しさん :2001/05/06(日) 01:38
面白い人だ。

461 名前:デフォルトの名無しさん :2001/05/06(日) 01:38
ALT+CTRL+DEL押してみれ。

462 名前:デフォルトの名無しさん :2001/05/06(日) 02:50
「ぽっぽ」って某野党党首の俗称?

463 名前:445 :2001/05/06(日) 07:15
>>448
サンキュです。

464 名前:つねに名無し :2001/05/06(日) 12:12
最近VC++でSTLって奴を勉強しはじめた。

しかし、コンパイル時によくわからんワーニングがでまくりやがる。

h:\program files\microsoft visual studio\vc98\include\xtree(118) : warning C4786: 半角文字が大杉って怒られたから略す : 識別子が '255' 文字に切り捨てられました (debug 情報内)。
とか、
warning C4786: こっちも略す: デバッグ情報で識別子が 255 文字に切り捨てられました。
とかなんだけど、これってなに?俺の使用方法が間違ってるん?
設定が悪い?VC++がわるい?MSがわるい?

465 名前:つねに名無し :2001/05/06(日) 12:15
ちなみにソースはこれ。

#include <map>
#include <string>

using namespace std;

main() {
   map<string, long> Event;
   printf("意味無し");
}

VC++は6.0でSP5まで入れてある。

466 名前:デフォルトの名無しさん :2001/05/06(日) 12:52
>>465
おまえが悪い
なんか前にもこんなのがあった。二番煎じ
>わからない人
全角スペースのわかるエディターに貼ってみて。

467 名前:デフォルトの名無しさん :2001/05/06(日) 13:45
>>465
ワーニング娘。
プ

きっと「STAR WARS」も「すたーわーず」と読むんだろな。

468 名前:デフォルトの名無しさん :2001/05/06(日) 14:43
>>464
VC++って、ものすごい投げやりなWarning吐くんだな...
シラナカッタヨ.....

469 名前:デフォルトの名無しさん :2001/05/06(日) 15:16
466はアホか?
全角インデントは、書いた奴が読みやすくしようとしただけだろ。

とりあえず、このスレで聞く前にgoogleに聞け。
http://www.google.com/search?q=STL+%8E%AF%95%CA%8Eq+%8Cx%8D%90&btnG=Google+%8C%9F%8D%F5&hl=ja&lr=lang_ja

470 名前:デフォルトの名無しさん :2001/05/06(日) 15:20
つーか、がいしゅつだからどのスレに書いてあったか探そうかと思ったけど、
面倒だったんでな。スマンね。

471 名前:つねに名無し :2001/05/06(日) 16:11
お、出ないようになった
さんくす

472 名前:デフォルトの名無しさん :2001/05/06(日) 17:40
テキストボックスにファイルの内容を16進で表示するのは?
まったくわからん。だれか教えて。(ウイザードでつくってからわからない)

473 名前:デフォルトの名無しさん :2001/05/06(日) 17:45
なにがわかんないのかぜんぜんわかんねーや。
1.ファイルを読む方法がワカンナイ
2.16進数の並びにする方法がワカンナイ
4.テキストボックスに表示する方法がワカンナイ

あ、俺はどれもワカンナイから答えられねーや

474 名前:デフォルトの名無しさん :2001/05/06(日) 17:46
3が抜けた
まーいーや

475 名前:デフォルトの名無しさん :2001/05/06(日) 18:04
3が気になる。自社ビルに4階がないくらい気になる。
海外のホテルで444号室があった以上に気になる。

476 名前:スーパービギナー :2001/05/06(日) 21:16
C言語なんですけど。

本で「べき関数を行う関数」をやってるんですが、このプログラムの
意味がわかりません。

int beki(int a,int b)
{
int i,ans;

ans=1;
for(i=1; i<=b; i++){
ans=ans*a;
}
return ans;
}

何で
  ans=ans*a
でべき関数ができるのかわかりません。それにiの範囲を指定してるのに
iを使っていなくていきなりansが出てくる。これも謎です。
どなたか解説してくれませんか?

477 名前:デフォルトの名無しさん :2001/05/06(日) 21:43
>>476
たとえば、2の3乗っていうと、2*2*2 と2を3回かけるのね。
a=2, b=3 で、iが1,2,3と増えると、ループを3回回って、
2が3回掛け合わされるわけ。

って、これはVC++の質問じゃねーじゃん。
俺っておひとよし?

478 名前:デフォルトの名無しさん :2001/05/06(日) 22:12
どこのスレだっけ?
ついこの前、x^nは1にxをn回かけたものって説明があったよね。
理論的には違うんだろうけど、x^0=1の説明の仕方としてはうまいと思った。

479 名前:スーパービギナー :2001/05/06(日) 22:34
iの意味ってなんですか?

480 名前:デフォルトの名無しさん :2001/05/06(日) 22:36
sqrt(-1)

481 名前:デフォルトの名無しさん :2001/05/06(日) 22:48
>480
虚数やん(w

482 名前:SAGE :2001/05/06(日) 22:55
>>479
ループした回数のカウント用。

483 名前:デフォルトの名無しさん :2001/05/06(日) 23:17
sqrt(-1)=NaN

484 名前:デフォルトの名無しさん :2001/05/07(月) 00:41
>>479
まずforループの使い方を勉強した方がいいと思われ。

485 名前:デフォルトの名無しさん :2001/05/07(月) 02:58
>>477
か〜な〜り〜おひとよし

forループの使い方もそうだけど、べき関数が何を行うのか分かってないような気がするぞ

486 名前:デフォルトの名無しさん :2001/05/07(月) 05:57
よくインスタンスという言葉がでてきますけど
なにを意味しているのが良くわかりません。
どなたか教えてもらえないでしょか。

487 名前:デフォルトの名無しさん :2001/05/07(月) 06:38
VC++で作ったソースを全部まるまるMOにコピーして、別のパソコンに移して
そこで編集しようと思ったのですが、「メンバ自動表示」の機能が
まったく動作しなくなってしまいました。
修復方法があれば教えていただきたいです。

488 名前:デフォルトの名無しさん :2001/05/07(月) 06:59
>>479

>>482にもあるけど、forループでは、昔からカウント用に
変数 i を使うのよ。慣習的に。
i が使用済みのときは j, k, l... と続く。

もちろんカウンタの値に意味を持たせたいときは、ちゃんとした
変数を使うけどね。

489 名前:デフォルトの名無しさん :2001/05/07(月) 07:01
>>487
左側のウインドウ?

490 名前:デフォルトの名無しさん :2001/05/07(月) 07:08
>>479
個人的には
initiation(名)開始
で納得してる。
初期値=0でループって意味で。
適当だけどね

491 名前:487 :2001/05/07(月) 07:11
>>489
たとえばCStringだったら、

CString buffer;
buffer.

ってピリオド入力したらリストが表示されるじゃないですか。
あれが消えちゃったんです。
どうにか修復できないとやりずらくてかないません…

492 名前:デフォルトの名無しさん :2001/05/07(月) 07:29
>>491
ツール > オプション > エディタタブ > ステートメントの入力オプション
の設定はどう?

493 名前:デフォルトの名無しさん :2001/05/07(月) 09:24
VC++5.0とか・・・

いやだって、6.0になって感動した記憶が・・・・

494 名前:487 :2001/05/07(月) 10:02
>>492
全部チェック入ってます。

>>493
VC++6.0にsp5だったかな?おそらく最新のサービスパックつけてます。
つけるまえからの問題だったので関係ないとは思いますが…

495 名前:デフォルトの名無しさん :2001/05/07(月) 11:34
>>479 >>490
FORTRANの名残じゃない?
あれはI,J,K〜Nとかの真中あたりの変数名はデフォルトで整数で
ループカウンタに良く使ったらしい。

でなんでデフォルトで整数だったかと言うと
数学の行列とか数列でAij とか A0,A1〜An とか添字で良く使う文字
だかららしい。

496 名前:デフォルトの名無しさん :2001/05/07(月) 12:39
char a[10]; char b[10];
a[0]='H';
bの配列に文字列として16進表示で代入する。
厨房なのでわかりません。
HELP ME。

497 名前:デフォルトの名無しさん :2001/05/07(月) 12:52
>>479 >>490 >>495
iterator の i じゃなかったっけ。

498 名前:デフォルトの名無しさん :2001/05/07(月) 13:21
>>496

sprintf(b, "%X", n);

499 名前:デフォルトの名無しさん :2001/05/07(月) 13:39
>>497
そのとーり

500 名前:デフォルトの名無しさん :2001/05/07(月) 21:42
>>497
FORTRANのとき、interger変数は i,j,k 辺りをよく使うので、
その名残だと思いこんでただ、オイラぁ。

そうじゃなかったのかハ。


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