トップページ⇒tech
1001コメント328KB

VisualC 相談室【8】

レス数が1000を超えています。これ以上書き込みはできません。
0001いさましいおsageの女の子NGNG
VisualC++関連の話題を扱うスレッドです。

前スレ
http://pc.2ch.net/test/read.cgi/tech/1017843192/l50
0002デフォルトの名無しさんNGNG
萌えない
0003デフォルトの名無しさんNGNG
     ____
    /∵∴∵∴\
   /∵∴∵∴∵∴\
  /∵∴∴,(・)(・)∴|
  |∵∵/   ○ \|
  |∵ /  三 | 三 |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |∵ |   __|__  | <  >>1 Visual C って何
   \|   \_/ /  \_________________
     \____/
   ______.ノ       (⌒)
  //::::::::|-、 ,-/::::::ノ ~.レ-r┐
/ /:::::::::::|  /:::::ノ__ | .| ト、
| /:::::::::::::::| 〈 ̄   `-Lλ_レ′
レ::::::::::::::::::|/::: ̄`ー‐---‐′
0004デフォルトの名無しさんNGNG
関連スレ
C Builder相談室 Part3
http://pc.2ch.net/test/read.cgi/tech/1016065855/
0005デフォルトの名無しさんNGNG
VC++スーパービギナー編買え
0006デフォルトの名無しさんNGNG
>>5
そんなもの買うな!
俺がおまえらのためにVC++の本を執筆してやる!
0007デフォルトの名無しさんNGNG
「小学生に1から教える Visual C++.NET」児童教育シリーズ
熊谷 紳助 (著) 翔泳社 ISBN: 4156215470
0008デフォルトの名無しさんNGNG
そんな本があるのか、鬱だ
0009デフォルトの名無しさんNGNG
>>7
おまえは無い。あっても言うな。
0010デフォルトの名無しさんNGNG
>>7
紀伊国屋で見かけたが、分厚いハードカバーだぞ。
読むのも大変だが、小学生じゃ持つだけでも大変だ。
0011デフォルトの名無しさんNGNG
>>8以外信じないってば。
0012デフォルトの名無しさんNGNG
>>10
マジメに小学生までプログラミング人工が広がっていくことが鬱でしょうがない
0013デフォルトの名無しさんNGNG
割れ小学生は、実際使ってる。
0014デフォルトの名無しさんNGNG
数年後には義務教育にCプログラミングが導入
0015デフォルトの名無しさんNGNG
そりゃー、ない。
0016うんこまんこNGNG
C言語でゲームを作ろうと思うんだけど
ウィンドウに線を引いたり色を塗ったりする方法がわかりません。
どうしたらいい?
0017デフォルトの名無しさんNGNG
c言語だけじゃ出来ません
0018うんこまんこNGNG
VCで出来ないの?
0019デフォルトの名無しさんNGNG
>>16
LineTo
0020うんこまんこNGNG
>>19
ヘッダーは?
0021デフォルトの名無しさんNGNG
windows.h
0022うんこまんこNGNG
>>21
どうもありがとう
0023うんこまんこNGNG
USBに繋いだコントローラを使ってゲームを作りたいんだけど
どうしたらいい?
0024デフォルトの名無しさんNGNG
>>23
DirectInput。
調べてもわかんなかったらここで質問して。
鬱だ氏のう DirectX 2
http://pc.2ch.net/test/read.cgi/tech/997101556/
0025デフォルトの名無しさんNGNG
ダイレクトX?
VCとダイレクトXって同じなの?
0026デフォルトの名無しさんNGNG
って言うかダイレクトXって何?
0027デフォルトの名無しさんNGNG
あ、25と26は俺です。
0028デフォルトの名無しさんNGNG
あらかじめ設定されたピクセル値のbmpファイルだけしか読み込めないようにするには
BITMAPINFOHEADER使えば良いのかな?

その際にFileDialog使っちゃダメそうだな。自分で作れと。
0029デフォルトの名無しさんNGNG
意味不明
0030仕様書無しさん (O_O)/NGNG
そうやって、
やる気のある人と、やる気の無い人を一緒くたにするのは素人の証拠。
何ひとつ作り出せない人は、憎しみだけを作り出し、
憎しみしか作り出せない人間は、他人の生産性までをもとことん下げる。
やる気がある人間はその限りではない。
0031デフォルトの名無しさんNGNG
HSPスレかと思ったYO!
0032デフォルトの名無しさんNGNG
Visual C相談室になってから一気にレヴェルが下がっていませんか?
0033仕様書無しさん (O_O)VNGNG
>>28
ListViewです。>FileDialog
LPITEMIDLIST取れます。>FileDialog
牡丹桜花イベントあるはず。>FileDialog
0034OperaテストNGNG
自分の生産性が低いのを人のせいにしたがってる人がいますね(・_・)
0035OperaテeテXテgNGNG
ばけばけ?
0036仕様書無しさん (O_O)VNGNG
却下(W
0037仕様書無しさんNGNG
>>28
そういう事する時はJava使え
0038デフォルトの名無しさんNGNG
_UNICODEでコンパイルすると__FUNCTION__が使えなくなります?(VS.NETにて)
0039デフォルトの名無しさんNGNG
前スレでも質問したんですが、レスが無かったものでもう一度。
VC++.NET standardにはC++ Language Referenceの日本語版は
付いていないのでしょうか。
explicitやtypename検索しても英語しか出てこないもので。
それとも、設定が変で出てこないだけでしょうか?
0040デフォルトの名無しさんNGNG
MSDNのトピックの設定が日に日に可笑しくなっていき、現在では全て同じになって
しまいましたが、どうすりゃ良いんでしょう?これ。
0041デフォルトの名無しさんNGNG
ドラッグアンドドロプしたいのです。
それでコントロールのプロパティでドラッグアンドドロップを許可したのに、クラスウィザードのメッセージ一覧に出てくれないのです。
どうやるですか?
0042デフォルトの名無しさんNGNG
>>41 クラス情報タブのメッセージフィルタを「ウインドウ」に設定。
0043デフォルトの名無しさんNGNG
>>40
次のMSDNを待って、届いたらインストールしなさい。
004441NGNG
メッセージフィルタを「ウィンドウ」に設定したくても、
灰色になってて設定できませんでした。
厨房向けのソフトでむりやり変更したら、VC++が落ちました。痛いです。
ダイアログアプリだからダメなのでしょうか?
0045デフォルトの名無しさんNGNG
>>44
あきらめて自力で
0046デフォルトの名無しさんNGNG
>>40
ああ、設定が狂ってくるという意味ね。
楽しそうで良いではないかと思ったよ。
0047デフォルトの名無しさんNGNG
ツールバーに大きめのテキストボックス埋め込みたいんですが、どうすればいいですか?
0048デフォルトの名無しさんNGNG
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数:105420人 発行日:2002/05/020

どもども、ちょっぴりワキガのひろゆきですー。
いやぁ、もうすぐですねー、谷澤動物病院の裁判の判決ですー。。。

おいらはいつものとおり、
「投稿者がわからないので勝手に削除は出来ない」
「勝手に削除したら投稿者に訴えられてしまうかも知れないから削除は出来ない」
との主張を繰り返してきたんですけど、裁判官てば実に冷ややかな目でおいらを見るんですよー。。。
その上、
「削除出来ないんじゃなくてするつもりがないんじゃないですか?」
「悪質な書き込みをむしろ売り物にしてるんじゃないですか?」
「発信者を特定出来るようにようにしてから屁理屈を語ったらどうですか?」
なんて嘲りの笑みを浮かべながら言うんですよー。。。
本当に憎らしい奴ですー、、うぅうぅ、、

ところで、谷澤動物病院てば、おいらのことを訴えてから客が2割も減ってしまったそうですー。。。
おいらのことを訴えると被害が余計に拡大するってことですね。。。えへへ。。。

んじゃ!
0049デフォルトの名無しさんNGNG
VC++ でコンパイルするときに、
MFCを使用すると、
(プリコンパイルヘッダを使用すると?
 よくわからないけど。)

#include "stdafx.h"

までの全ソースコードを無視するらしいのですが、
どうしてでしょうか?
移植を行うときなどにとても不便ではないかと思うのですが……。
0050デフォルトの名無しさんNGNG
>>49
#include "stdafx.h"
を先頭に置けばいいやん
005149NGNG
>>50

「移植」のとき等に不便だと思うわけです。
別の環境で書いたソースコードを再利用するときに、ファイルにいちいち #include "stdafx.h" を付け加えなければならないわけですよね?
あと、開発したソースコードを別の環境でも再利用するとしたら、"srdafx.h" のないところに移すわけだから、#include "stdafx.h" を削除しなければなりませんよね?
(たとえ関連クラスがMFCを使用していないものだとしても……。)

と思ったわけですが、どうでしょう……。
0052デフォルトの名無しさんNGNG
>51
別の環境で書いたものを使う時には、プリコンパイルヘッダを使わないようにする。
別の環境に持っていく時は、空のstdafx.hでも作っとけ。
0053 NGNG
VCに直接関係ないのですが、
VCを入れたら、IEなどでエラーが発生した場合、
デバックが始まってしまうのですが、これを行わないようにするにはどうしたらよいのでしょうか?
0054デフォルトの名無しさんNGNG
>>53 ツール→オプション→デバッグ→ジャストインタイムデバッグ
0055 NGNG
>54
サンキュー!!!

しかし、チェック外したけど駄目でした・・・。ふぅー。
0056デフォルトの名無しさんNGNG
デバッグして、サイト運営者に報告してやれば、そのうち
でなくなるぞ。
0057デフォルトの名無しさんNGNG
>>51
PCHを使わなければいいだけでは…?
0058デフォルトの名無しさんNGNG
>>53
IEのインターネットオプション>詳細設定>スクリプトのデバッグがどうたら
0059デフォルトの名無しさんNGNG
他スレ(MFCの方)でちょっと関連する話が出てたのですが、スレ違いみたい
なんでこっちで質問します。

mfc42.dllを使用するかMFCのスタティックライブラリを使用するかは選択
できるみたいですが、Cのランタイム?のmsvcrt.dllの扱いっていうのは
どうなのでしょうか?
作成した実行ファイルの中をダンプしてみるとmsvcrt.dllという文字列
が存在するので使われているようなのですが、外部DLLに完全に依存しない
実行ファイルというのは作成できるのでしょうか?
もしかしたら、msvcrt.dllが存在しない32bitWindows環境は存在しない
から気にしなくてもいいとか?
0060デフォルトの名無しさんNGNG
扱い(VC6)
プロジェクト→設定→C/C++→使用するランタイムライブラリ
で選択できる。

> 外部DLLに完全に依存しない実行ファイルというのは作成できるのでしょうか?

kernel32.dllは必ず使うことになるから、OSが提供するDLLを含めるかどうかでその
答えは変わる。mfcのdllやmsvcrtのdllはOS提供ではないと言っていいと思う。
006159NGNG
>>60
失礼、書き方が悪かったですね。
「VC++6.0提供の外部DLLに依存しない...」に訂正。
レス、ありがとう。
0062デフォルトの名無しさんNGNG
教えてもらえるか全く未知数なんだけど、相談に乗ってください。
VBで「Dim WithEvents obj???? 〜」って宣言すると、COMコンポーネントの
イベントを受け取れるじゃないですか。
このコンポーネントをVCで動かそうとしています。
VBで出来る事がVCで出来ないわけがないと思っていましたが、いわゆる
インタフェイスクラス側のインプリメントは簡単に出来るんですが、
イベントハンドラ側がうまく実装できません。
タイプライブラリを指定して同コンポーネントのクラスを自動生成させた
のですが、ヘッダファイル上でプロトタイプを確認すると、「引数の型が
あいまいでメンバを実装できません」みたいな表示がされて、イベント
ハンドラが加えられていません。ここでひとつ質問。

1、vテーブルが存在するものとしてviatual宣言の上メンバ関数を書き加えて
意味があるのでしょうか。

そこからイベントをキャッチする場合、

2、生成されたクラスを派生させて、イベント割り当て関数をオーバーライド
すれば、イベントをキャッチできるのでしょうか?

インタフェイス側のクラスはCoRegisterClassObject関数でハンドシェイク
出来ましたが、イベントハンドラ側は「クラスがない」といった風なエラー
が発生します。

3、COMコンポーネントの設計の問題でしょうか?それともクライアント側の
コーディングの問題でしょうか?それとも他に?

COMコンポーネント側もある程度ソースレベルでの融通が効きます。
以上3点の解決について知恵をいただければと思います。
よろしくお願いします。
0063デフォルトの名無しさんNGNG
 今までおもにJava使ってきたんですけど、都合によりVC++を使うことになりました。
そこで,MFCを勉強していたんですが、Win32 APIをほとんど知らないせいか
まったくわけがわかりません。
 そこで、VC++で利用できるよいGUIのクラスライブラリがあったら教えていただけないでしょうか?
できれば、Win32 APIの知識がなくても理解できて、Javaのクラスライブラリに似ているのがいいのですが。
0064デフォルトの名無しさんNGNG
MFCしか・・・
0065デフォルトの名無しさんNGNG
Managed C++にすれば?
APIを知らずに書けるツールキットでマトモなのは
QTやGtkとかあるけど、全然Javaっぽくないし。
0066デフォルトの名無しさんNGNG
俺はMFCから入ったけど初めのうちはWin32APIの知識って無くても
できるんじゃ・・・
0067デフォルトの名無しさんNGNG
>>66
メソッドなどがほぼそのままAPIをラップしただけなので
MFCの知識≒APIの知識となる
0068デフォルトの名無しさんNGNG
>>67
いや、だからWin32API自体使ったこと無くても
MFCメンバ関数使えばできるだろうと。
というか>>63はWin32APIやMFCというよりWindowsプログラミングが
わからないんじゃ?
Win32APIやMFCはリファレンス読めば使えるわけだから。
006963NGNG
たくさんのレスありがとうございます。
UNIXでCの通信系プログラムを経験した後、Javaにうつったので
Windowsプログラミングの経験はまったくありません。
やっぱり覚悟を決めてWindowsプログラミングの基礎から勉強するしかなさそうですね。

しかしMFCってすごく使いにくいように思うんですけど、慣れると使いやすいんですかね。
0070デフォルトの名無しさんNGNG
お仕着せのはお気楽にできるが、
色々こったものを作ろうとすると、MFCの枠からはみ出た
コードを書かなければいけなくなる。
0071デフォルトの名無しさんNGNG
IDC_RADIO1というIDでラジオボックスを作っているのですが、
これを操作するためには例えば
RADIOBOXというクラスで
RADIOBOX radiobox1,radiobox2
としたradiobox1というものが必要だと思うのですが、これがソースのどこを捜しても見当たらないのです。
ラジオボックスの操作方法等でアドバイスください。
007263NGNG
Class Wizardでメンバ変数タグをクリックして変数の追加じゃだめですか?

俺もここらへんでずいぶん悩みました。へたにリソースエデイタで
コントロール追加するよりコードで追加したほうが早そうなきがするんですが
皆さんはどうされてますか?
0073デフォルトの名無しさんNGNG
VC++で何を作ればいいですか?
0074デフォルトの名無しさんNGNG
作りたいものがありません。
プログラムがしたいのです
0075デフォルトの名無しさんNGNG
>>74
自分で作るものぐらい自分で考えれや……
しかたない、とりあえず練習問題がある入門書を買って
練習問題解きまくれ。
007649NGNG
>>52 >>57
対処法はわかるのですが、なんでこのような仕様にしたのかなーと思いまして。何か深い理由があるのかと。
とはいえ、アドバイスありがとうございました。
0077デフォルトの名無しさんNGNG
>>72
ラジオボタンだと先頭の1個しか変数作らせてくれないという罠
(だから2個目以降は手作業でコピペ)。

ちなみにわざわざ変数を作らなくても、IDを使って
GetDlgItem(IDC_RADIOBUTTON1)->ほげほげ
とかで何とかなる。
0078デフォルトの名無しさんNGNG
>何か深い理由があるのかと。
それ以前に取り込んだヘッダの仕様が変わって、
#defineされた定数値が変更になったりすると矛盾が生じるから
0079デフォルトの名無しさんNGNG
VS.NET での話なのですがWM_TIMERとかのメッセージ処理をGUI的(ClassWizard的)に
管理するにはどうしたらよいのでしょう?
いまは良く分からんのでMESSAGE_MAPに直書き・・・
0080デフォルトの名無しさんNGNG
Visual C++でデータベースアプリを作るとしたら何を使うのが一般的でしょうか?
やっぱりADO?参考になる資料が見つからなくて困ってます。
0081デフォルトの名無しさんNGNG
80
*.mdb+ADOのときはATLオブジェクトウィザード(データアクセス)で生成させた
コードをそのまま書き換えて使えると思います。
(DAOの方が速いらしいのでまだ使ってますが。)
0082デフォルトの名無しさんNGNG
変更できるサイズがあらかじめ決まっている
ダイアログとかツールバーってありますよね。
VCのドッキングウィンドウとか。
あれはいったいどうやって作っているんでしょうか。
0083デフォルトの名無しさんNGNG
ツールバーの状態(ドッキング位置など)をファイルに保存するには
どうすれば良いのでしょうか。
0084デフォルトの名無しさんNGNG
>>83
GetWindowRect
WritePrivatePrifileString
or WriteFile
0085デフォルトの名無しさんNGNG
>>84
それだと復元時に親ウィンドウが移動してるとツールバーの位置がずれませんか。
あとツールバーのフローティング状態、表示/非表示の状態も
保存しなければならないと思うのですが。
008683NGNG
CControlBarのメンバ関数を使う。
座標はクライアント座標になっていると思うので、大丈夫と思う。
0087デフォルトの名無しさんNGNG
>>84,86の方法はツールバーごとにAPIまたはメンバ関数を呼び出す
ものですが、CFrameWnd::SaveBarStateのように
一度呼び出しただけでウィンドウに使われている複数のツールバーを
取得するにはどうすればよいのでしょうか?
0088デフォルトの名無しさんNGNG
CFrameWnd::SaveBarStateを使う
0089デフォルトの名無しさんNGNG
任意のファイルに保存したいってゆってるべや
0090デフォルトの名無しさんNGNG
>>86
GetWindowRectはスクリーン座標だよ
0091デフォルトの名無しさんNGNG
ヴァカばっか。

>>82
WM_GETMINMAXINFO
009262NGNG
ATL COM コンポーネントのイベント取得についておうかがいをたてたもの
ですが、方法がわかりました。
ありがとうございました。
009383NGNG
GetWindowRectで座標を保存し、DockControlBarにその座標を与えてドッキングを
復元しようとすると、例えば以下のように2つのツールバーが二段になってるとき、

--------------------
| バー2
--------------------
| バー1
--------------------

バー1→バー2の順で保存すると、バー1→バー2の順で復元したときに
二段に復元されません。
なぜなら、バー1を復元しようとしたときにはまだバー2が存在していないため、
バー1は一段目へドッキングされてしまうからです。
0094デフォルトの名無しさんNGNG
>>83 CDockState っていうのはどうよ?
0095デフォルトの名無しさんNGNG
CDockStateのソース見たらかなりいろんなこと保存してる。
GetWindowRectやIsFloatingどころの話じゃないよ……
0096デフォルトの名無しさんNGNG
CStringの偽物のようなクラスを作っていて、
CStringと同じように、
"operator const TCHAR*() const;"というオペレータにて、
クラスの内容(文字列)を返すようにしています。

 大抵、目的の動作をするようになったのですが、

CLieString csData;
csData="Mona";
sprintf( "data=[%s]", csData.operator const TCHAR*() ); /*これは行けます*/
sprintf( "data=[%s]", csData );  /*これは駄目です*/

 というコードだけ、%sが正しく変換されません。
sprintfが、クラス内のバッファをアクセスするための
方法について、教えて頂けると嬉しいです。
0097デフォルトの名無しさんNGNG
CStringのソース見れば?
0098デフォルトの名無しさんNGNG
printf系は可変長引数(引数に型無)だから、キャストを明示しないと(const xxx *)に
変換されない。

蛇足
sprintf()はASCII or MBCSだから(TCHAR *)でなく(char *)
UNICODEを使うときはswprintf()
TCHARのときは_stprintf();
009983NGNG
CDockStateのm_arrBarInfo内にコントロールバーの情報が入ってて、
この配列のサイズ及びインデックスがバーの数及びドッキングの順番になると思い
ツールバーが2つドッキングされたウィンドウでm_arrBarInfo.GetSizeを
実行してみるとサイズが7。
あとの5つは何バーなんだ(;´Д`)
0100デフォルトの名無しさんNGNG
ツールバー2個+ステータスバーの分で計3。しかしまだ4つも謎のバーが。
010196NGNG
>97
 元々、殆どCStringと変わらない仕様でしたので、
CStringを参考にしながら作っていました。
ただ、非MFCなので、それ自体の派生に出来ませんでしたが。

>98
 TCHARは、(私の環境では)charに変換されているはずです。
とはいえ、自信が無かったのでconst char*にしてみましたが、
やっぱりダメでした。

 printfの引数が形無しなのが根元にあることは分かっているのですが、
その形無し引数に対して、クラスの実態を書いた場合、
クラスのデータメンバの始めが送られたりするのかな・・と邪推しています。
0102デフォルトの名無しさんNGNG
任意のファイルに保存したいなら一時的にCWinAppの
m_pszProfileName<−名前違うかも
を書き換えちゃえば? たしかこれを見てるんだよね。
0103デフォルトの名無しさんNGNG
101
文字列クラス stringClassObject("hogehoge");
に対して
sprintf(buff, "%s", (const char *)stringClassObject );
と書くのは仕方の無いことと思われ。

MFCが使えないの環境ならSTLのstringクラスを使うべきでは?車輪の再発明すぎ。
実習か何かで文字列クラスを作っているなら別だが・・・。
0104デフォルトの名無しさんNGNG
>>101
CStringのソースと見比べれば、何でCStringで出来て、自作のクラスで出来ないかわかるはず。
可変長の引数渡しの仕組み知ってればの話だけど。
010596NGNG
>103
単に文字列を扱うだけだと、stringにしたのですが、
CStringやstringに無いメソッドを色々追加しなければならなかったので、
勉強も兼ねて自作していた次第です。

 その後、sprintfの引数を取っている所で止めてみたのですが、
やはり入力クラスそのもののアドレスが行っている感じがする事と、
CStringのデータメンバは文字列ポインタ1つだけだという事と、
自作クラスの方は、現時点で3個のデータメンバを持つ事まで確認出来ましたので、
その情報から、CStringが如何にして、
printfに直渡しをしているのか?というのを知れればと思います。
010696NGNG
>>104
 随分長くアセンブラ屋だったので、
C(C++)に関しては素人です。
0107デフォルトの名無しさんNGNG
勉強を兼ねてエディタを作ってるんですが、
無限アンドゥってどうやって実装するんですか?
0108デフォルトの名無しさんNGNG
>>107
リスト構造で操作を記録
010996NGNG
一度MFC使用プロジェクトを作って、
CString csTemp;
long lSize = sizeof( csTemp );

 とすると、4bytesとなりました。

非MFC環境と、MFC環境の両方で、

class CTest
{
 char *m_pchData;
}
-----
CTest csTest;
long lSize = sizeof( csTest );

 とすると、8bytes となってしまいました。

クラスの先頭=データメンバ先頭という考え方?でも、
何故自前のクラスに 4bytes が付加されてしまうのか疑問に思い、
とりあえず、CTestとCStringの相違点として、

CString側
~CString();
-------------------
CTest側
virtual CTest();

 となっていましたので、とりあえず"virtual"を外してみた所、
sizeof CTest も4bytes になりました。

 printfの問題は、多分これで正しくでるようにはなりますが、
何も分からない状態でやった為に、技術的後ろ盾が無く、
単に"超危険なコード"と化しているように思います。(^^;
011083NGNG
えー、一人でごちゃごちゃやってますが…
新しく作ったCDockState派生クラスに、CDockStateと
その中で使われてるプライベートクラスCControlBarInfoの
ソースを参考にiniファイル読み書き用
メンバ関数を追加することで一応できました。
読み書きはPrivateProfile系APIでやってるので、これを
レジストリAPIに変えたレジストリ読み書き用関数も用意すれば
バーの状態の保存先をファイル/レジストリに切り替えられるクラスが
できてなかなか満足です。
いろいろレスくれたおまえらにありがとうと言いたい。
小一時間言い続けたい。
0111sageNGNG
VC++で使えるJTableみたいなものはありませんか?
0112デフォルトの名無しさんNGNG
ん
0113デフォルトの名無しさんNGNG
C#、C++雑談スレッド
http://pc.2ch.net/test/read.cgi/prog/1023178697/  
0114デフォルトの名無しさんNGNG
メニューアイテムでアクセラレータキーもいっしょに書いてある場合、
(hogehoge\tCtrl+H みたいに)
SetDefaultItemすると、表示がおかしくなってしまうんですが
どうしたらいいでしょうか?
0115デフォルトの名無しさんNGNG
すいません、オーナードロー使ってたんで、
その関係かもしれないです。
0116デフォルトの名無しさんNGNG
for (i=a=b=0;i<100;i++){}
この場合iの初期価値はいくらになるの?
0117デフォルトの名無しさんNGNG
>>116
なんでそういう疑問をもったか、そのあたりの説明をききたい。
0118116NGNG
>>117
cのコードの移植してるから。

なんかどうも多重ループになるっぽいんだけど。
cじゃあこういう書き方普通なの?訳分からん。
0119116NGNG
んー、なんかi=0と一緒の結果になるみたいだなあ。
i=0と等価なのかな?違うのかな?等価ならなんで
こんな書きかたしてるんだろ。意味あるのかなあ。
0120116NGNG
分かった!
i=0;
a=0;
b=0;
と同じ意味なのか!

違ってたら突っ込みキボン。
0121デフォルトの名無しさんNGNG
i = a = b = 0 → i = (a = ( b = 0))と等価
0122デフォルトの名無しさんNGNG
すいませ〜ん。
MFC使ってリストビューにファイルをドラッグ&ドロップしたいのですが
わかりません。方法教をえてください。または、それについて書いてあるHP等教えてください。
0123デフォルトの名無しさんNGNG
http://216.242.20.51/wi/pa/
0124ゆう ◆7WEVo9uA NGNG
>>122
俺も前めちゃ困った。
おれはCListCtrlを派生して
OnDropFilesにコードを実装してる。
間違ってたら修正求む。
0125デフォルトの名無しさんNGNG
俺はOLEドラッグ&ドロップ用のCOleDropTarget派生クラスを作っておいて、
ダイアログのOnInitDoalog()やViewのOnInitialUpdate()で
m_DropTarget.Register(this);
とかやるとD&D可能になるようにしてる。
0126デフォルトの名無しさんNGNG
ATL3.0なんですが、QueryInterfaceをフックしたいので、
COM_MAPにCOM_INTERFACE_ENTRY_FUNCマクロで
フック用スタティック関数を登録したのですが、
全然反映されません。
というかCOM_INTERFACE_ENTRY_XXXの実体である
static const _ATL_INTMAP_ENTRY _entries[]が
どんなにCOM_INTERFACE_ENTRY_XXX追加しても変わらない、
固定されたままなのです。どなたか助言ください。
一応確認は、↓のコードを書いてブレークポイントで見てます。
const _ATL_INTMAP_ENTRY* a = _GetEntries();
a++;
a++;
0127126NGNG
すいません、解決しました。
お騒がせしました。
0128デフォルトの名無しさんNGNG
飛ばされました。
VC++でプログラミングしているのですが、
ActiveXを登録・削除する方法がまったくわかりません。
わかる方はおられますでしょうか?
0129デフォルトの名無しさんNGNG
regsvr32 xxx.dll
regsvr32 /u xxx.dll
0130デフォルトの名無しさんNGNG
いえ、ocxのほうです。
それから、プログラム上で登録したいのですが…。
0131デフォルトの名無しさんNGNG
regsvr32、ソースあるだろ。
ocxだって、dllの別名にすぎないんだし。
0132デフォルトの名無しさんNGNG
これって結局fixされたんですか?

http://japan.cnet.com/Enterprise/News/2002/Item/020215-3.html?il
0133デフォルトの名無しさんNGNG
ヘッダーのなかで、
extern float *my_allocf();
のように宣言されていて、
mainの中で以下のように使用されているのですが、、
rr = my_allocf(n_split);

で、Cのプログラムでは、ちゃんと動いたんですが、
VC++(ダイアログベース)に組み込んだとたん、このようなかんじで使用していた関数が全てエラーを吐くようになったんです。
エラーは、
「関数が不正な1個の実引数をともなって呼び出されました。」
と出ます。とにかく全ての関数に出ます。
なにがいけないのでしょう?

----------------------
さらに、別の関数でも、
float t05(n) ←n定義されていない識別子です。
int n;     ←関数の定義が間違っています。
{ }
のように使用されている関数では、上記右のようにエラーが出ます。これは、.hでは宣言されていません。
ひとの作ったプログラムなので、わけがわかりません。
Cではうごいたんですが、、、助けてください。

0134デフォルトの名無しさんNGNG
float t05(n)
int n; ←予期せぬEOFがハケーンされました。
{}
こんなのも出る始末。Cプログラムでは、
メインとなる.c
ヘッダーファイル.h
インクルードされている 関数の書いてある.c
の3つで、
それらを忠実にインクルードして、メインとなる.c中のmainの内容を
ダイアログのOnButton(){ ココ }にコピペしたのですが、、
なにがおかしいのでしょう?

宣言などは、Dlg.cppの一番上。
main以外のものは、OnButtonの直前にコピペ。
としました。
0135ノーマットNGNG
すいません。課題頑張ってる中のモノです。
チョット分からないので教えて下さい。

円周率って、#define PI 3.14って感じで与えないとダメなんでしょうか?
元々定数で用意されてますか?
0136デフォルトの名無しさんNGNG
float t05(int n)
{}
に直すヨロシ

extern float *my_allocf();
と宣言されてるのも
extern float *my_allocf(int n);
に直す

あと #include "..." を
extern "C" {
}
で囲む。

いくらなんでもこぴぺだけで動くと思わないほうがいいとおもう
0137デフォルトの名無しさんNGNG
>>136
ありがとうございます。。
とりあえずやってみます。
0138デフォルトの名無しさんNGNG
>>135 math.h で M_PI が定義されている、って書こうと思ったけど、
VC では M_PI は見つからなかった。gcc にはあった。
0139デフォルトの名無しさんNGNG
>>136
すみません、 それは、ヘッダーファイルの中において、
extern "C" {
#include "..."
#include "..."
#include "..."
  :
}
とするということでしょうか?
それとも、.cなどにあるexternにも全てに行うのでしょうか?
0140ノーマットNGNG
>>138
じゃ、自前で定義しておきます。
ありがとうございました。
0141139NGNG
netで少し調べて、なんとか、コンパイル通るところまでは いけました。
ありがとうございました!!♪
0142デフォルトの名無しさんNGNG
どうしても詰まっていた事があったので、お伺いしたいのですが。

MDIのプログラムで、ダイアログをDoModal命令で表示したのですが、
実行時にダイアログを動かすと親ウインドウから外に出てしまいます。
設定でチャイルドにもしてみたのですが、そうすると画面が固まってしまって・・

親ウインドウ内にダイアログを完全に閉じ込める方法はないでしょうか。
0143デフォルトの名無しさんNGNG
何でそんなことをしたいのか理由を書いてみ?
0144デフォルトの名無しさんNGNG
VC++のエディタで::や.や->を使ったときに出るメンバの表示が
できなくなっちゃったんですがどうすれば直りますでしょうか?
0145デフォルトの名無しさんNGNG
>>144
VCを終了させてから、プロジェクト内の 拡張子ncb のファイルを消してみる

おれは、これでばっちり直ったけどなぁ。原因はいまだ不明。
0146デフォルトの名無しさんNGNG
>>144
私の辞書には2通りの過去スレメモがある。
できた方で報告よろしく。

1,一旦VCを終了させ、 clwファイルを削除してからそのプロジェクトを
再度開き、 ClassWizardを起動して内部情報を再構築。

2,ワークスペースに表示されなくなったクラスのヘッダファイル(****.h)を
メモ帳か何かで開いて内容を書き替えずに保存する(つまりファイルのタイムスタンプを変える)。
すると消えたクラスが復活する。(clwファイルは消さない方がいいような気がする)
0147146NGNG
おっと、レス中に145さんの書き込みが…。
あっしの方は違う気がしてきたぜ(゚∀。)アヒャヒャ スマナイ
0148145NGNG
>>146 も十分試す価値あり。
どちらもやってみることをおすすめしますです。



俺のときはMFCとSDKの関数が全部出てこなくなって激しく鬱・・・。
必死に検索したらでてきたYO!
0149144NGNG
ncb削除をやったところ直りました!ありがとうございました!
>>145さん,>>146さんの解決法は永久保存します!
0150デフォルトの名無しさんNGNG
>>142
フォームビューにすれ
と使いもしないで言ってみるテスト。
0151デフォルトの名無しさんNGNG
>>135
VC7では
#define _USE_MATH_DEFINES
#include<math.h>
やれば使える。
0152151NGNG
M_PIね
0153デフォルトの名無しさんNGNG
132 :デフォルトの名無しさん :02/06/09 22:24
これって結局fixされたんですか?

http://japan.cnet.com/Enterprise/News/2002/Item/020215-3.html?il
0154デフォルトの名無しさんNGNG
ソースから実行するときなんですけど、
一度実行して、そのままソースには手をつけずに
再度実行した時に、全cppをコンパイルしてしまいます。
昨日までは問題なくできていただけに原因が全く解らないです。
誰か解る方がいましたら教えて下さい。
0155デフォルトの名無しさんNGNG
>>154
HDDに住む子人さんは、時々ソースのバグを修正したりします。
0156154NGNG
>>155 子人さんというのがよく解らないのですけどどういう意味なんですか?
ただ、今は時々じゃなくて毎回手をつけていないソースもコンパイルしてしまいます。
0157デフォルトの名無しさんNGNG
・間違ってリビルドを選択している
・自分でも気がつかないうちにソースを触ってしまっている
0158154NGNG
>>157 実行時にはctrl+F5でしていますから
リビルドにはなっていないと思います。
実行の方も何回かやっていますけど、うまくいかないです。
ソースの方も気をつけて実行していますけど、
駄目です。
アウトプットの所ににも
”スキップ中... (関連する変更は検出されませんでした)”
とでてきますし、ソース自体には変更はないと思うのですけど。
0159デフォルトの名無しさんNGNG
>>154
俺も昔そうなったことがある。
で、全ファイルのタイムスタンプを、タイムスタンプ変更ツールで、変更した
ら正常になった。なんかの拍子に、ファイルのタイムスタンプが矛盾した状態
になったのかも。
0160154NGNG
直りました。皆さんありがとうございました。
>>159 ご指摘通り時間の関係でした。
パソコン本体の時間がなぜか80年になっていたので
ソースとの時間の矛盾が原因でした。
1つ勉強になりました。


0161こまった君NGNG
データを読み込んで、グラフを描画するようにしているんですが、
データが長いと、ピクチャがいっぱいになってしまいますよね。
で、今は、端までいくと、また一から白紙にして描画するようにしているんですが、
それだと、過去のが見れないですよね。
で、いっぱいまで行ったら、スクロールバーでぐりぐりと戻れるようにするにはどうすればいいでしょうか?
↓こんな感じです。
┏━━━━━━━━━━━┓
┃                ┃
┃                ┃←グラフを描画
┃                ┃
┣┳━━┳┳━━━━━┳┫
┗┻━━┻┻━━━━━┻┛←スクロールバー

でなおかつ、このグラフから、クリック&ドラグでデータ範囲を指定→なんらかの形でプログラムに送るなんてことはできるでしょうか?

0162デフォルトの名無しさんNGNG
>>161
「スクロールバーのコントロール張ればいいだけじゃん」
と思ってしまうのだけど…
0163デフォルトの名無しさんNGNG
プロファイリングのやり方を教えていただけないでしょうか。
一応、設定で「プロファイルを行う」にチェックは入れているのですが、
どうやって結果を見るのかわかりません。
あれこれ検索もかけてみたのですが、
どうやって結果を見るのか結局調べがつきませんでした。

簡単な説明で構いません。
宜しくお願いします。
0164デフォルトの名無しさんNGNG
あげげ!!
0165デフォルトの名無しさんNGNG
>>163
検索不足。まず、チェック自体がたぶん入ってないよ。ここの2番目、サイトに感謝して見てきなされ。
http://www.google.com/search?num=20&hl=ja&q=%83v%83%8D%83t%83@%83C%83%8B%81@VC&lr=lang_ja

あとはビルド>プロファイル。結果は実行終了後、デバッグウィンドウに出力される。
0166163NGNG
>165
すみません、出来ました。
ありがとうございます。
お手数おかけしました。
0167デフォルトの名無しさんNGNG
BCCだったら問題なくコソパイルできるのに
VC++だと

hellowin.obj : error LNK2001: 外部シンボル "__imp__PlaySoundA@12" は未解決です
Debug/HELLOWIN.exe : fatal error LNK1120: 外部参照 1 が未解決です。

とエラーがでてしまうのですが。なぜ?
0168デフォルトの名無しさんNGNG
winmm.lib
0169デフォルトの名無しさんNGNG
プロジェクトの設定でオブジェクト/ライブラリモジュールにwinmm.libを追加。
0170デフォルトの名無しさんNGNG
>>168
それがどうなのですか?
わかりません。教えてください。おながいします
0171デフォルトの名無しさんNGNG
>>169
ありがとうございますた。
0172デフォルトの名無しさんNGNG
被ってたが役には立ったか・・というかライブラリの追加の仕方もシランのか。
0173デフォルトの名無しさんNGNG
ヽ(`Д´)ノ ウワァァァン
追加の仕方わからないよ
0174デフォルトの名無しさんNGNG
BCCで作成した.exeファイルを実行するとちゃんとウインドウ表示されるのにVC++で
作成したexeファイル実行しても何も表示されないのですが。
でもCTRL+ALT+DELを押すと実行されているのです。
終了しようとすると応答なしとか言われるし。なぜですか?
ソース貼らないとダメっすか?
0175デフォルトの名無しさんNGNG
おまえの書いたソースがbccに依存しまくっているだけ
0176デフォルトの名無しさんNGNG
いや、他人が書いたBCCのソースだろう。絶対。
0177デフォルトの名無しさんNGNG
漏れは「プログラミングWindows95」とかいう糞分厚い本に載ってるソースを書いてる
だけなのですが。しかもその本ではVC++を使用しているとか書いてあるし。
0178デフォルトの名無しさんNGNG
ちなみにこれです
ttp://www.ascii.co.jp/pb/book1/shinkan/detail/1322774.html
0179デフォルトの名無しさんNGNG
たぶん、写し間違い
0180デフォルトの名無しさんNGNG
>>173
MSDN
リンカ オプションの設定
0181デフォルトの名無しさんNGNG
95とMeではWindowsプログラミングに違いはないですよね?
0182デフォルトの名無しさんNGNG
イパーイある
0183デフォルトの名無しさんNGNG
ソースは載ってるけどVCの設定については詳しく書いてないからね
0184デフォルトの名無しさんNGNG
>>182
Σ(゚д゚lll)エッ!?マジッスカ?
それじゃ、漏れが勉強してる本は意味ないの?
0185デフォルトの名無しさんNGNG
今はそれの第五版がでとるよ。
0186デフォルトの名無しさんNGNG
でもとりあえずBCCでは問題ないのにVC++でできないってことは
僕は間違えてないと思うんですけどね…
VC++のセテーイがわるいのかな?
0187デフォルトの名無しさんNGNG
ソースどっかに晒せ。

#ソース晒し用に、freeなSourceForgeアカとか取ったりして・・
0188デフォルトの名無しさんNGNG
#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static char szAppName[] = "HelloWin" ;
HWND hwnd ;
MSG msg ;
WNDCLASSEX wndclass ;

wndclass.cbSize =sizeof(wndclass);
wndclass.style =CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc =WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszClassName = szAppName ;
wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION) ;

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName,
"The Hello Program",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);

ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg);
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
0189デフォルトの名無しさんNGNG
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;

switch (iMsg)
{
case WM_CREATE :
PlaySound ("hellowin.wav",NULL, SND_FILENAME | SND_ASYNC) ;
return 0;

case WM_PAINT :
hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

DrawText (hdc, "Hello, Windows Me!",-1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd, &ps) ;
return 0 ;

case WM_DESTROY :
PostQuitMessage (0);
return 0;
}

return DefWindowProc (hwnd, iMsg,wParam, lParam) ;
}
0190デフォルトの名無しさんNGNG
人の話を聞かない奴がいるな
0191デフォルトの名無しさんNGNG
>>186
つーか、一番疑わしいのがあんた自身。
間違えて無いというのなら、打ち込み終わった後に一切エラーでなかったか?
0192デフォルトの名無しさんNGNG
あぁ、最初に載ってるプログラムだね
0193デフォルトの名無しさんNGNG
ウチじゃ普通に動くが?
0194デフォルトの名無しさんNGNG
>>190
すみません。でも余り長くないので。
>>191
エラーは一切出ません。
0195デフォルトの名無しさんNGNG
>>189
wndclass.lpszMenuName
を設定し忘れてる
つーか構造体使うときははじめにZeroMemoryしる!

RegisterClassExもCreateWindowもGetMessageもエラーチェックしてないし。
んなもん応答無しになって当然だ。
0196デフォルトの名無しさんNGNG
>>195
すみません…
僕が馬鹿ですた。
>wndclass.lpszMenuName
。を設定し忘れてる

まさにこれです。
きちんと動きました。
しかし、それ以外にも指摘していただいてますが
もう間違ってないと思います。
エラーチェックとかよく分からないのですが。
0197デフォルトの名無しさんNGNG
確かあの本に
「本中ではエラーチェックは省くけど本当はちゃんとやってね」的
文章があったと思われ。
0198デフォルトの名無しさんNGNG
分かりますた。
ありがとうございますた
0199デフォルトの名無しさんNGNG
独自のファイルフォーマット作って、
リード/ライト出来るよう作ったんですけど。
全てのデータがシ−ケンシャルアクセスだけど
WriteFile/ReadFileで主にアクセスする単位はDWORD程度。
これって効率悪いですか?
メモリは食うけど、一端メモリ上でデータ列を構築して
一気にアクセスした方がいいですか?
ファイルサイズは1M〜500KBぐらいです。
0200デフォルトの名無しさんNGNG
>>199
WriteFile/ReadFile効率はよく知らないけど、
1Mの程度のサイズなら、オンメモリで処理しても
いいんじゃない?
0201デフォルトの名無しさんNGNG
ファイルマッピング使えば?
0202デフォルトの名無しさんNGNG
既出orFAQかもしれませんが、
ListViewコントロールで行全体をハイライト(選択反転)にする
方法で、オーナー描画を使う方法はMSDNに載っていますが、
それ以外にもっと簡単な方法はないのでしょうか?

どこかのstyleのオプションでできたような記憶があるのです。
VBとかVCLだと簡単にできるんだろうけどなぁ
0203デフォルトの名無しさんNGNG
いいこと言った
0204デフォルトの名無しさんNGNG
>>202
LVS_EX_FULLROWSELECT じゃないの?
検索で一発で出てきたよん。
http://hp.vector.co.jp/authors/VA016117/listview.html
0205デフォルトの名無しさんNGNG
>>204 さんくす

いや、調べても出てこなかったんだよ。
せめてMSDNで「ListView AND 行全体」ぐらいでヒットして欲しかった。
0206デフォルトの名無しさんNGNG
日本語版MSDNでも英語ページだからな<ListViewコントロール拡張スタイル
0207199NGNG
>>200-201
ファイルマッピングで組み直しました。
ありがとうございました。
0208こまった君NGNG
以前、スクロールバーのことで質問したものです。
スクロールの入れ方はわかったんですが、
ピクチャとの関連付けのやり方がわかりません。
スクロールバー関数によって、取得したスクロールの現在位置をピクチャに反映するんでしょうか。。。
ピクチャに描画する関数と、スクロールバーの関数が別々なのに、
そんなことできますか??

どこかに説明しているページなどありませんか??
やりたいことは、
ピクチャに画面に表示しきれないぐらいのながーいグラフを描画して、
スクロールバーによって、移動させながら後で見るということがしたいのですが、、
0209デフォルトの名無しさんNGNG
>>208
スクロールバーの分解能とピクチャの分解能を合わせてスクロールバーの変化で現在位置を
取得してピクチャの描画範囲を設定してあげるって感じじゃないの?
0210こまった君NGNG
>>209
すみません。
えーと、ちょっと説明させていただきマスト、
↓ここで、最初のスクロールバーの位置を設定してます。で、
BOOL C●●Dlg::OnInitDialog()
{
//スクロールバーのイニシャル設定
CScrollBar* s=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR1);
s->SetScrollRange(0,255);
s->SetScrolPos(0);
return TRUE;
}
そして、
void CMyadDlg::OnButton5()
{  } の中で、ピクチャに描画されるようになっているわけです。
その後に、
void CMyadDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{  } という関数がくるわけですが、ボタン5で描画されたグラフをスクロールするたびに描画するのは大変時間がかかります。
描画されたグラフを覚えておいて、スクロールによって、再描画っていう風にはできませんか?

仮想的なピクチャの幅を0〜1024ピクセルの大きさに設定して、
最初実際に画面に表示されるのは、【0〜200ピクセル/1024ピクセル】
スクロールによって、仮想的なピクチャのうち200-400の部分を表示する。とか、そういったことはできないでしょうか??駄文すみません。
0211デフォルトの名無しさんNGNG
そのためのCompatibleDC,そのためのBitBltダ
0212こまった君NGNG
>>211
ありがとうございます。
仰ってる意味がよくわかりませんが、ちょっと調べてみます。

もう一つ質問です。
プログラムを実行すると、
子ウインドウが表示され、そこにグラフを描画するようにしたのですが、
子ウインドウは立ち上がるんですが、向こうが透けたようになって一向に描画されずに(というか描画されるべきウインドウもきちんと描画されず、処理が追い付いていないようなかんじ)、
プロセスが修了してしまいます。
リソース不足などのときになるような症状です。
これでは、グラフを見ることすらできません。
処理→描画のコード自体は間違っていないはずなんですが、、

また、プログラム実行中に×をクリックして修了しようとすると、
このプログラムは応答していませんとなりますが、これで普通なんでしょうか?
0213デフォルトの名無しさんNGNG
お前はホントにこまった君だな(藁
向こうが透けたようになって一向に描画されずに、というのは
お前が組んだ描画ロジックが全く機能していないからだ。
どっかからクライアント描画のちゃんとしたサンプルを探してきて勉強してくるように。
0214こまった君NGNG
>>213
了解です。クライアント描画ですね。
その線でもうすこし勉強してみます。。
教えて君すまそです。
しかし、こうも右も左も分からないと、ちょっとしたヒントが非常に助かります。
では、胃ってきます。
0215デフォルトの名無しさんNGNG
前から作ってみたいと思ってたのですが
一度しか見ることのできない画像を作成するソフトって
作ること可能なんでしょうか?
一度見たらレジストリあたりに記録して
二度目以降のプレビューを防いで。
そこで気になってるのはPrintScreenを
使用できないようにすることってできませんか?
これが無理ならこのソフト作ろうとすること自体が
間違いなので。。
というかもう既にそんなソフトあったりしますか?
調べてみたのですがわからなくて書き込みました。
よろしくお願いしますl。
0216デフォルトの名無しさんNGNG
不可能。
絵を再現するデータが存在する限り、どこかに抜け道はある。
勿論、暗号と同じで極端に解読が難しいという物なら出来るだろうけど、
確実に1度しか見れないようにするのは不可能。
0217デフォルトの名無しさんNGNG
>>216
レスありがとうございます。
そうですね、
キージェネとか存在することが証明ですね。
言い換えると、、
解読が並に難しくて且つ、
そんなにメジャーにならなくて、
公にクラックされることがなければ
ある程度目的通りの物は作ること可能ですか?
わかりにくい分ですみません。
いけますか?

0218デフォルトの名無しさんNGNG
↑
意味なくageちゃいました、
ごめんなさい。
0219デフォルトの名無しさんNGNG
>>215
一度見たら消しちゃう。
PrintScreen対策としては、OpenClipboardしっぱなしにして独占。
0220デフォルトの名無しさんNGNG
>>219
その程度じゃ簡単に対策できちゃうから無意味。
0221デフォルトの名無しさんNGNG
テキストファイルに個人コード(4桁)日付(yyyyMMdd)時間(hhmm)と
連続で保存さているところから、
コンボボックスに個人コード、リストボックスに日付がデータとしてあって
2つのIDを使って日付をとってくる方法がわからないので、
教えていただきたいです
0222デフォルトの名無しさんNGNG
Priority上げて全部ひったくるとか。
0223デフォルトの名無しさんNGNG
>>221
わけわかめ。IDって?
0224デフォルトの名無しさんNGNG
4桁の数字だろ
0225デフォルトの名無しさんNGNG
>2つのIDを使って日付をとってくる

何処の日付をとってくる?
0226デフォルトの名無しさんNGNG
このスレは、>>221を読解するスレになりました。

えー、まずtxtで保存してあるデータファイルに、4桁の個人コードと
日付(yyyyMMdd)、時間(hhmm)が連続して書き込まれているらしい。

そして個人コード(コンボボックス)、日付(リストボックス)の項目がある
らしいのだが、ここにあるデータがファイルのものなのか、それとも別の
何かなのか、我々には解明できなかった。時間の項目が無いのも不可思議だ。

次に……出た!謎の2つのID!!ID第一の候補として個人コードが
挙げられるが、では2つ目は?直前に出た日付の事だろうか?
しかし、この2つのIDは日付をとるのに使われるらしい。では時間のこと?
おお、なんというどんでん返し!!つか分かんねぇよ(゚∀。)アヒャヒャヒャヒャ
0227デフォルトの名無しさんNGNG
エディットボックスのよこに、スピンボタンを加えました.
最初はうまくうごいたんです。
で、
メンバ変数に変数を加えて、そのあとm_spn1.SetRange( , );などで範囲と初期値を
設定したんですが、
メンバ変数などを加える時になにかへんなところをおしてしまったのか、、エラーが
でて、というか、コンパイルビルドは通り、実行すると、
なにも反応なし、
デバッグモードでひらくと、
もういっちばん最初で、
00000001 ???
error: シンボル"this"が見つかりません
というエラーがでて、一番最初の00000001を矢印がさしています。
もうわけがわかりません。
spinボタンを消して、元通りにしてもどうにもなりません。
なにがいけないのでしょう?
ちなみにバックアップをとっていないのです。
こうなったらおわりですか?
0228デフォルトの名無しさんNGNG
>>221
http://forums.belution.com/ja/vc/000/073/39.shtml
0229デフォルトの名無しさんNGNG
>>227がんがれ。
0230227NGNG
一からやってみて、どこがおかしいのか、突き止めました。

スピンボタン追加→数値の自動表示・自動関連付け・右端にチェック
これだけならうまくタブオーダー一つ前のeditを操作できたのですが、
次、スピンボタンにメンバ変数spn1を追加して、初期値&レンジを設定しようと、
次の■のように追加したのですが、
OnInitDialog(){
(中略)
// TODO:特別な初期化を行うときはこの場所に追加してくだちい
■ m_spn1.SetRange(1,9);
■ m_spn1.SetPos(5);
return TRUE; }
そうしたとたん、ビルド後アプリがまったく立ち上がらなくなってしまうんです。
ちゃんと本の通りやったんですがね、、、
0231227NGNG
というか、どうやら
ヘッダーファイル内に、
CSpinButtonCtrl m_spn1;
CSpinButtonCtrl m_spn2;
がのこってると、だめみたいです。消すとアプリも起動します。
このままじゃ初期値等が設定できません。
どうしよ。。
0232デフォルトの名無しさんNGNG
テキストファイルに個人コード(4桁)日付(yyyyMMdd)時間(hhmm)と連続で保存さているところから、個人コードをコンボボックスに表示して日付をリストボックスに表示します。データは構造体で持っています。

同じ個人コードは表示しないようにするための比較方法を教えていただきたいです。
うまく取得できた個人コードから日付をとってくる方法もわからないので教えていただきたいです。
つぎに個人コードと日付(個人コード)の2つのデータ(ID)から時間を取ってくる方法を教えてください。

私が作ったものではテキストファイルから個人コードは読み込めたのですが、
同じ個人コードが混じってしまっているので省きたいです。
ちなみにソースも記載したほうがよろしいのでしょうか?
0233227NGNG
新規作成でダイアログベースで同じやり方で作ってみたらちゃんとレンジ&初期値設定できましたよ。
なんでかなー。もうなきそうです。
0234227NGNG
CSpinButtonCtrl m_spn1;
この宣言をOninitDialog()内から、
cppの一番上(なんもないところ、まじ最初)に持って行ったらできました。なんで?どうして?つーか、こんなんしていいの?
というか、原因がわからないので、非常にすっきりしません。
どなたか、なんかアドバイスください。
0235デフォルトの名無しさんNGNG
>>227
・m_spn1が実際のスピンボタンコントロールに関連付けられていない
・CSpinButtonCtrl m_spn1; の位置については、「スコープ」という言葉がある
0236デフォルトの名無しさんNGNG
popen並に簡単に使えるAPIないですか?
0237デフォルトの名無しさんNGNG
>>236
MessageBeepが簡単に使えます
0238松NGNG
質問があります。
よろしくお願いします。
クライアント領域にツールバーを作成したのですが、
それにコントロールと同じようにツールチップを割り当てると
うまくいかず、全て同じツールチップになってしまいます。
この解決策を知っている方がいたら情報いただけないでしょうか?
0239助けて下さい!NGNG
waveファイルに信号処理(FIR)をかけて別のwaveファイルに出力するプログラム
は出来てるんですが、wavに書き出す前に試聴出来るようスピーカから音が出る
ようにしたいんです。出来上がったwaveファイルの再生については組めるんですが
全然解りません。どんな些細なヒントでもいいので教えていただけないでしょうか?
0240デフォルトの名無しさんNGNG
239
waveOutWrite()あたりを検索してくれ。

再生データがバッファ1つに収まる範囲なら大して手間かからんと思う。
無限再生なんかで、システム側からwaveOutProcをよばれて、データを切れ目
なく供給する部分が結構低レベルで面倒。高レベルのAPI使ったほうが楽。
0241239NGNG
>240
ありがとうございます。WAVEFORMATEX?なんて使おうとしてました。
さっそくやってみます。
0242239NGNG
あ、どちらにせよこの構造体は必要なんだ…。
0243デフォルトの名無しさんNGNG
>>232
まだよくわからん、まさかネタ?(w
内部データのIDと外部ファイルのIDを比較して一致した時だけ
何かしらのの時刻を取ってきて何かしらの領域に格納するの?

取り敢えず入出力をハッキリせえよ。脳内で語りすぎ(w
0244232NGNG
>>232
232です。
IDはコントロールIDのことです。説明不足でした。
ちなみにデータ例は
45672002061810001800
12342002060209001725
45672002052909002200
こんな感じです。
表示上では
個人コードが4567
日付が2002/06/18
時間1が10:00
時間2が18:00
個人コードと日付から時間をとってきたいのです。
ちなみに同じ個人コードある場合は
エディットボックスには
2002/05/29
2002/06/18
と2つ表示させいです。
0245デフォルトの名無しさんNGNG
お前みたいに仕様をはっきり説明できないやつは何やっても無駄。
0246デフォルトの名無しさんNGNG
>>244
>>245じゃないけどホントにわからん(w

>45672002061810001800
>12342002060209001725
>45672002052909002200

これ自体が何を表してるのかはわかったけどさ、

>個人コードと日付から時間をとってきたいのです。

これの意味がわからん。
例えば上の例なら4567というIDをもったデータが1行目と3行目にあるわけだけど
単にIDの部分を比較して、データが重複してるかどうかを判断したいの?
それなら行毎の先頭4バイトを読み込んでstrcmpで比較していくだけだと思うけど。
0247232NGNG
個人コードと日付が合致するものの日付を取得して
時間1、時間2をそれぞれをSetWindowText()でエディットに表示させるのが
最終目的です。

1.初期処理でテキストファイルからすべての個人コードを
コンボボックスに挿入。(同じ個人コードは表示しない)
2.コンボボックスから個人コードを選択し、
個人コードに対する日付をリストボックスに表示させる。
3.最後にリストボックスから日付を選択して、
時間1、時間2をエディットに表示させる。

以上です。これでわかってもらえなかったら諦めます…
0248デフォルトの名無しさんNGNG
データ列: personal_code date time
と言う構造で、 personal_codeとdateからtimeを取得したいってこと?
0249デフォルトの名無しさんNGNG
>>247
とりあえず、インターフェース(コンボボックス、リストボックス)と
ロジックを分離して考えよう。
0250デフォルトの名無しさんNGNG
>>247
個人コードと日付が合致って

45672002061810001800 の

456720020618 ここまでの事?

で、日付は

45672002061810001800 の

20020618 で 時間1、2は

10001800 でOK?

で、これデータ自体がテキストファイルになっていて
それを読み込んで構造体に格納するまでは作ってあるって事?
要は何処まで進んでるのかがわからないんだけど(w
0251232NGNG
ちなみに個人コード、日付、時間1、時間2は構造体にしています。
typedef struct tagData
{
long lCode;//個人コード
long lDate;//日付
short nTime_1;//時間1
short nTime_2;//時間2
} Date;
こんな感じです。
0252デフォルトの名無しさんNGNG
>>247
ますはそれぞれ構成する要素を別々の配列に格納しておいて、

個人コードをコンボボックスへ追加する際には既にコンボボックス内に同じデータが
あったらはねるって感じでいれてく。

日付は現在選択されている個人コードと一致するコードを配列内から検索して
一致したらその位置の日付を追加していく。

時間は現在選択されてる個人コードと日付データが一致した位置の時間データを
それぞれエディットボックスに表示してやる。

こんな感じかい?
0253デフォルトの名無しさんNGNG
説明の下手さにイライラしてきた。寝る。
0254232NGNG
>>252
そのとおりです。
うまく説明していただいてありがとうございます。

日付をとってくるときって
GetWindowText()で個人コードをとってきてやればいいのでしょうか?
どうもわかりません。
0255デフォルトの名無しさんNGNG
>>254
生API使いですか?
MFC使ったほうが楽じゃないですか?
0256デフォルトの名無しさんNGNG
>>254
それで良いんじゃない?
それかコンボボックスへ登録したインデックス順に別の配列へ
IDそのものを入れておいても良いと思うけど。
0257デフォルトの名無しさんNGNG
>>254
>>256の続き。

あとコンボボックスならGetCurSel()とGetLBText()でなんとかなるんじゃないかな。
0258デフォルトの名無しさんNGNG
VC++でもプリンタ設定でもモード選択が多岐に渡る場合、凸の形をしたページ
が重なっているダイアログが出てきて凸の上の部分でページを選択させるよう
になっているが、あの様なプログラムをVC++で書く時はどうすればいいの?
一般に紹介されているダイアログだと単層構造のものしかできない。
0259デフォルトの名無しさんNGNG
>>258
タブコントロール
0260デフォルトの名無しさんNGNG
>>258
プロパティシート、プロパティページを調べれ
0261258NGNG
どうもです。助かりました。
0262デフォルトの名無しさん NGNG
Win2000でメモリ書きかえるときってGetWindowThreadProcessIdと
OpenProcessとWrite/ReadProcessMemoryだけで可能ですか?
0263デフォルトの名無しさんNGNG
マルチ死ね
0264デフォルトの名無しさんNGNG
代入文だけで可能です
0265デフォルトの名無しさんNGNG
あげ
0266デフォルトの名無しさんNGNG
子ウインドウを作る方針でやろうとしたのですが、(↓のような方法で)
if( GetDescendantWindow(ID_CHILD1) == NULL ) {
CWnd* s_window = new CWnd;
pv_window -> Create( NULL, "子ウインドウ",
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CRect( p_left, p_top, p_right, p_bottom ), this, ID_CHILD1 );
CDC* smallDC;
samllDC = s_window-> GetDC();
・・
元のダイアログウインドウより大きくはできないですよね.
元のダイアログウインドウと無関係にぐりぐり移動させられるウインドウを生成する方法はどうやればいいんでしょう?

#あらかじめ作ってあるリソース(ダイアログウインドウ)を呼び出す関数などはあるんでしょうか?
0267デフォルトの名無しさんNGNG
↑の変数名ひとつ間違えてます。
s_windowのところ。質問の本質ではないですが、一応。。
0268デフォルトの名無しさんNGNG
>>266
リソースで作ってあるダイアログを表示したいなら
そのダイアログをCDialogに結び付けて表示元のウィンドウクラスで
そのダイアログのメンバ変数(例えばm_Dlg)作ってm_Dlg.ShowWindow( SW_SHOW )で
出るんじゃない?ダイアログクラスのコンストラクタでcreateする必要が
あったような無かったような・・・・。
0269デフォルトの名無しさんNGNG
プログレスバーの中に “58%” などといった文字列を、一部の色を反転させて表示する場合、
どのようなインプリメントをするのがスマートなんでしょうか?

メモリDCに文字列を書いて BitBltで合成することで、それらしいものを作ってみましたが、
Codeguruなどを見てみると、クリッピングリージョンを駆使したものが紹介されていました。

BitBltのパフォーマンスは環境に大きく左右され、負荷も大きいと聞いたんで、やっぱ
クリッピングリージョンを使った方一般的なんでしょうか...?
0270デフォルトの名無しさんNGNG
>負荷も大きいと聞いたんで
いつの時代の話だ(ワラ
0271デフォルトの名無しさんNGNG
>>268
ダイアログのメンバ変数を作る方法がわからないんですが..
0272デフォルトの名無しさんNGNG
>>271
リソースエディタでダイアログ作ってそのダイアログを右クリックしてクラスウィザードで
CDialogに結び付けてあげる。
0273デフォルトの名無しさんNGNG
Visual c++.Net使ってて、アイコンリソースを追加(インポート)したいのですが、なんだかうまくいきません。
(リソースの追加をしても何にも起こりません。)
VCの右側のリソースビューのところには、(赤い×印つきで)ほかのエディタで開く、という奇妙なものが表示されています。
しかも、クリックしても何にも起こりません。
今のところ、リソーススクリプトをメモ帳なりで編集して無理やりインポートしているのですが、どうしたらいいのでしょう?
あと、これ関連でアイコンリソースのリソースIDが変更できません。
これまた、どうしたらいいでしょう?
0274デフォルトの名無しさんNGNG
>>273
VC6しか知らないのだが、リソースビューのツリーのアイコンのところを右クリックできない?
0275273NGNG
>>274
そう、今までVC6使ってたから、そのつもりでやったら、できんのよ。
誰か、情報キボンヌ。
0276デフォルトの名無しさんNGNG
DLLエクスポートの序数を自分で管理するには
普通DEFファイルを用いると思うんですが
あるVC++のプロジェクトでは、DEFファイルが無いのに
序数を任意の数にしているみたいなんです。
何かやり方があるんでしょうか?
0277デフォルトの名無しさんNGNG
>>276
リンカの/EXPORTオプション?
0278276NGNG
>>277
ごめんなさい、
自分の勘違いでした。
0279デフォルトの名無しさんNGNG
IEにGoogleツールバーのようなものを取り付けるプログラムを
作成したいのだが、サンプル載ってるページはありませんか?
0280デフォルトの名無しさんNGNG
>>279
Googleで検索すれば見つかります。
0281デフォルトの名無しさんNGNG
#pragma pack( [ [ { push | pop}, ] [ identifier, ] ] [ n] )

これの意味が理解できずにMSDNライブラリで調べてみたところ、

>この構文を使うと、プログラムの別の構成要素が pack プラグマでパッキングした
>別の配置を指定しているときに、プログラムの構成要素を単一の翻訳単位にまとめることができます。
>push を使うと、その時点のパッキングの値が記憶されます。

この場合、パッキングというのは、ある構造体などをnバイトに収めるように
するということなのでしょうか?
028270NGNG
>>281
とりあえず...
> #pragma pack(n) を使い、n に 1、2、4、8、16 を指定すると、構造
> 体の 2 番目以降のメンバはメンバの型のサイズと n バイト境界の小さ
> な方に置かれます。
だけ覚えておけばいい。あとの構文は必要なった時に使えばいい。

それでもわからなければ「パディング」とか「アライメント」とかの言葉
をぐぐってみそ。

それでもわからなければ、まだ pack なんて必要ないんだよ。無視しとき
な。
0283デフォルトの名無しさんNGNG
>>281
お前には移植考慮無しのpack(1)がお似合いだ。
0284デフォルトの名無しさんNGNG
ドラッグでエリアを選択するような機能を作っていますが、
void CPainDlg::OnMouseMove(UINT nFlags, CPoint point)
{
if(nFlags == MK_LBUTTON)
{
CClientDC DC(this);
DC.SelectStockObject(NULL_BRUSH);
DC.Rectangle(m_from.x,m_from.y,point.x,point.y);
・・・
こんなかんじで、マウスのドラッグに合わせて長方形を描画してるんですが、
これだと、通過した位置まで全部に長方形が描かれてしまいます。
あくまでプレビューで長方形の位置を見ながらそこには描かず、最終的にOnLButtonUpした地点までの長方形のみを描きたいのですが、どうすればよいのでしょうか?

中を塗りつぶすというのは下の絵が消えてしまうので無しです。
0285デフォルトの名無しさんNGNG
>>284
DrawFocusRect
0286厨房NGNG
C言語をフリーのソフトでコンパイルするのない?
0287デフォルトの名無しさんNGNG
>>286
gccで検索しろ。
0288デフォルトの名無しさんNGNG
スタックを使わずに逆ポーランド電卓作りたいんですが
switchやfor程度で作れる単純なソースお願いできないですか?
ちなみに自分で作ってみたら、
#include<stdio.h>
#include<stdlib.h>

int main()
{
char data[100];
int suuji = 0;

printf("逆ポーランド記法による計算をします\n");
printf("\n");
printf("計算したい数字を入力してください->");

scanf("%s", data[suuji]);

switch(data[suuji])
{
default:
break;
case '+':
data[suuji] = data[suuji] + data[suuji];
break;
case '-':
data[suuji] = data[suuji] - data[suuji];
break;
case '*':
data[suuji] = data[suuji] * data[suuji];
break;
case '/':
data[suuji] = data[suuji] / data[suuji];
break;
}

suuji = atoi(data);

printf("\n");
printf("合計は%dです\n", data[suuji]);

return 0;
}
余裕でエラーでした。
0289284NGNG
>>285さんありがとうございました!!できそうです。
で、move内で以下のようにしていますが、
・・・
SetRect( move_rect, m_from.x, m_from.y, point.x, point.y );//新しい位置情報を取得
CClientDC DC(this);
DC.SelectStockObject( NULL_BRUSH );

DC.DrawFocusRect( move_rect_last );//前回の場所に描画指示して消す!
DC.DrawFocusRect( move_rect );//新しいのを描画
SetRect( move_rect_last, m_from.x, m_from.y, point.x, point.y );前回の位置情報を記憶
・・・
DrawFocusRectは同じ位置にもう一度描画すれば消せるとのことで、やってみているんですが、消えないんです。
どこがおかしいのでしょうか?
0290デフォルトの名無しさんNGNG
>>288
まず、スタックを使わない理由を聞かせてくれまいか。
0291デフォルトの名無しさんNGNG
>>290さん
簡単に言うとスタックがまだわからないからです・・・
色々調べてみてスタック使えばすぐにできるようなんですが
範囲外なので不必要なんです。
で、かわりの配列でなんとかしたいわけです。
0292デフォルトの名無しさんNGNG
配列をスタックとして扱っているだけでわ・・

数値をdataに積んでいるでねーし、
演算子も、スタックから取り出しているわけでもねーし、、
0293デフォルトの名無しさんNGNG
>>288
感動的なまでに無茶苦茶ですね・・・
スタック以前に基礎からやり直したほうがよくないですか?
0294デフォルトの名無しさんNGNG
基礎からというよりその基礎を今やってる最中なんですが・・・
0295デフォルトの名無しさんNGNG
>>294
勘で書かずにわからない部分やあやしい部分は参考書を見て書きましょう。
0296284NGNG
|_・)ソォーッ
>>289はいかがなものでしょう?
0297デフォルトの名無しさんNGNG
>>296
後は自力で
0298284NGNG
ヒー
0299288NGNG
その通りですね・・・
グラフィック専攻なので1冊も参考書買ってませんでした。
明日にでも買って見てみようかと思います。
0300デフォルトの名無しさんNGNG
CDC* pDC=p->GetDC();
CRect r; //ピクチャの領域サイズをrに取得
p->GetClientRect(&r);//ピクチャの領域サイズをrに取得
とした場合、
r.leftとr.top
は常に0ということなんでしょうか??
 /(0 , 0)
┏━━━━━━━━ウインドウ━━━┓
┃   /(r.lft , r.top)
┃  ┌──────────┐
┃  │     ピクチャエリア 
┃  │
┃  │ですよね?で、r.left=0だとすると、
┃  │
 ←→ この部分
ピクチャエリアの始点の間隔はどのようにあらわされるのでしょう?
0301デフォルトの名無しさんNGNG
今度シリアル受信専用のアプリケーションを作る予定なのですが、
相手側が不定期に送信してくる場合、受信側ではタイマなどで定期的に
受信するようなスレッドを常に起動しておくような形で良いんでしょうか?
またその場合送信データを受信バッファで受け取った際、
[STX]データ[ETX][STX]データの途中・・・ ← ここまでしか取れないような
状況になりそうな気がするのですが、その場合データの成形は
アプリケーション側でやってあげなければいけないんでしょうか?
0302デフォルトの名無しさんNGNG
大麻などで定期的に受信っていうか
スレッドでずっと受信用にreadfileで待っておく。そんでなんか受信したらどっかにバッファリングして
メッセージで本スレッドに通知してまたすぐreadfile。そういうずっとreadfileするスレッドをつくっておきます。
0303デフォルトの名無しさんNGNG
>>302
成る程ですね。
要は受信割り込みの代わりをスレッドにやらせるって感じですか。
ありがとうございました、やってみます。
0304デフォルトの名無しさんNGNG
あ、聞き忘れましたが、

[STX]データ[ETX][STX]データの途中・・・ ← ここまでしか取れないような
状況になりそうな気がするのですが、その場合データの成形は
アプリケーション側でやってあげなければいけないんでしょうか?

これに関してはどういった感じでしょうか?
0305デフォルトの名無しさんNGNG
>[STX]データ[ETX][STX]データの途中・・・ ← ここまでしか取れないような
>状況になりそうな気がするのですが、その場合データの成形は

ええ。なりますよ。

短時間ならスレッドで処理してもいいし、
アプリの方で電文として完結するところで切り出しても良いんじゃないですか?
0306デフォルトの名無しさんNGNG
>>300
GetClientRect(&r1); ClientToScreen(&r1); GetWindowRect(&r2);
とでもして、r1とr2の差分を取ってみ。
あと、変な言葉を発明せずに素直にクライアント領域と呼べ。

>>289
move_rect_leftをメンバ変数かstatic変数にしる。
0307デフォルトの名無しさんNGNG
>>305
やはりなりますか・・・わかりました。
ありがとうございます。色々聞いてしまって申し訳ありませんでした。
0308306NGNG
>300
考えてみりゃ GetWindowRect(&r1); で十分だな。
>289
move_rect_last の間違いだな。
>306
もう寝な。
0309デフォルトの名無しさんNGNG
すみません、うまく伝わらなかったみたいです。
┏(0,0)←スクリーン座標で━━スクリーン(モニター)━━━━┓
┃
┃   /(0 , 0)←クライアント座標において
┃  ┏━━━━━━━━ウインドウ━━━┓
┃  ┃   /(r.lft , r.top)
┃  ┃  ┌──────────┐
┃  ┃  │     ピクチャエリア 
┃  ┃  │
┃  ┃  │クライアント座標から見たピクチャの始点座標の位置を
┃  ┃  │ 知りたかったわけです。
     ←→ この部分
という意味でした。
0310デフォルトの名無しさんNGNG
>>309
やっぱりよくわからん。ピクチャエリアって何?
クライアント領域のことを言ってるなら>>306だし、
ウィンドウに貼りつけたコントロールなら>>308。
いずれにせよ、両方ともスクリーン座標に直して
引き算すりゃ答えは出るだろ。
0311デフォルトの名無しさんNGNG
+−−−−−−−−−−−−−−−−+
|myapli.exe             _□×|
+−−−−−−−−−−−−−−−−+
|ファイル 編集 ・・・             |
+−−−−−−−−−−−−−−−−+
|                        |
|                        |
|                        |←クライアントエリア
|                        |
|                        |
+−−−−−−−−−−−−−−−−+
0312デフォルトの名無しさんNGNG
>>310
ピクチャエリアと書いているものは、
CWnd* h = GetDlgItem( IDC_PICT1 ) ;//ピクチャ1
CDC* pDC = h -> GetDC() ;
CRect rect_pict1 ; //ピクチャの領域サイズをrect_pict1に取得
などという場合のピクチャのことなんです。
ここで、目的は、
【マウスをクリックした位置が、ピクチャ1のどの位置であるかを取得したい。】ということだったんですが、

この場合、マウスの位置は、
void CPainDlg::OnLButtonDown(UINT nFlags, CPoint point)
の中で、( point.x, point.y )によって取得すると、クライアント領域からの位置になっていて、
それがピクチャのどのぐらいの位置?というのを知るために、
クライアント内でのピクチャの左端の座標、 =(つまり上図の差分部分)
を知る必要があったんです。
0313デフォルトの名無しさんNGNG
>>312
んだからGetWindowRectとかで何とかすればよいのではないのか。
0314デフォルトの名無しさんNGNG
VC++でASSERTを使うときに,しなくてはけない事を教えてください(ヘッダーをインクルードするとか)。
0315デフォルトの名無しさんNGNG
CRTDBG.H?
_ASSERT と、アンダーバーが必要。
0316デフォルトの名無しさんNGNG
>>312
ClientToScreen(&point);
GetDlgItem(IDC_HOGE)->ScreenToClient(&point);
0317デフォルトの名無しさんNGNG
Aと言うクラスからBというクラス内のマルチスレッド用関数をスレッド起動する事は可能ですか?
実行すると一応動くのですがスレッド終了時にメモリリークがなんたら〜といったメッセージが
アウトプットに表示されてしまいます。原因としては何が考えられるでしょうか?
0318デフォルトの名無しさんNGNG
メモリリークがなんたら〜 が起きているから。
0319デフォルトの名無しさんNGNG
A::func()
{
B.beginethread();
}
ですか?
0320デフォルトの名無しさんNGNG
プログラム初心者なんですが
クラスのオブジェクトを必要に応じて順次作っていくにはどうすればいいのでしょうか?
0321デフォルトの名無しさんNGNG
newしてください。
0322デフォルトの名無しさんNGNG
Windows2000Sp2+VisualC++6.0で、
ATLCOMウィザードで空のプロジェクトを作って
コンパイルするとTLBファイルが生成されます。
それをOLE/COMオブジェクトビューアで見ると
アクセス違反でプロセスが落ちるんですよ。
元からある他のTLBだと大丈夫です。
何が問題なんでしょうか?
レジストリが壊れてとか?
0323デフォルトの名無しさんNGNG
>>322
> アクセス違反でプロセスが落ちるんですよ。
> 何が問題なんでしょうか?
アクセス違反だろ。
0324323NGNG
意地悪言わないでよ。
つーかレジストリが怪しいよな、やっぱ。
は〜再インストはイヤだぁ〜。
0325デフォルトの名無しさんNGNG
>>319
A:Func
{
B myB;

AfxBeginThread( myB::Func, &myB, THREAD_PRIORITY_NORMAL );
}

って感じです。
0326デフォルトの名無しさんNGNG
>>325
それじゃA::Funcを抜ける時にmyBがあぼーんされる。
newで作ってどっかに大事にしまっておけ。
0327デフォルトの名無しさんNGNG
>>326
ああすいません、間違えました(汗

B myB;

はAのヘッダにメンバ変数として登録してあります。
0328デフォルトの名無しさんNGNG
クラスのメンバ関数をスレッド関数にして問題があるかどうかわからないが
普通はスレッドは普通の関数にすると思う。

0329デフォルトの名無しさんNGNG
同じクラスの他のオブジェクトのメンバをメンバ関数で使いたいときは
どうすればいいですか?
0330デフォルトの名無しさんNGNG
CFoo a,b;

aのメソッドでbのデータメンバを変更するって事ですか?
0331デフォルトの名無しさんNGNG
CFooというのがわかりませんが
そんな感じです
0332デフォルトの名無しさんNGNG
class CFoo{
    func(CFoo *p){
        p->・・・    //←ここで好きなように使う
    }    
}

main()
{
    CFoo a,b;
    
    a.func(&b);
}
とか。
0333デフォルトの名無しさんNGNG
C#を購入しました。
64MBのメモリでは厳しそうなのでバルクの128MBメモリも購入しました。
PCにメモリを挿したのに認識しません。
それどころか起動しません。
メモリの規格はあっています。(多分)
バルクってのがマズかったですかね?

とりあえず64MBのメモリで諦めます。
メモリ不足でPCが逝ったら僕も逝きます。
0334デフォルトの名無しさんNGNG
ふーん
0335デフォルトの名無しさんNGNG
>>333
つーか強引にVCに話を繋げるなよ・・・・・・(w
0336デフォルトの名無しさんNGNG
>>332
なるほど、ポインタを使うんですか
ありがとうございます
0337デフォルトの名無しさんNGNG
>>332
・・・はメンバ関数でも大丈夫でしょうか?
0338デフォルトの名無しさんNGNG
>337
パブリックなメンバなら関数でもデータでもダイジョウブだけど。
ちなみに設計としてはかなりヤバイでしょ。こういうのをチカラワザと言います。
0339デフォルトの名無しさんNGNG
C#でウィンドウ表示するだけのプログラムを作ったんですが
それだけで100MB以上のメモリを消費しています。
(VisualStdio + 作ったプログラム)

死ぬほど遅いです。
マジで逝きそうです。
何とかしてください。

ところでC#って.Netのプログラムしか作れないんですか?
普通のプログラム作るにはVC6.0を使えってことですか?
0340デフォルトの名無しさんNGNG
メモリを増設して、CPUを強化すればいいじゃん。
0341デフォルトの名無しさんNGNG
C#スレ行け
0342デフォルトの名無しさんNGNG
CでHello, World表示するだけのプログラムがでかすぎるって
大昔に叫んでたやつがいたな。
0343デフォルトの名無しさんNGNG
>>338
なるほど、、、いまクラスの勉強しようとおもって
行列のクラスをつくってるんですよ(死ぬほど適当ですが)
そこで行列同士の掛け算をするときにオブジェクトをオブジェクトで呼び出せたらと思ったんですが
そういう関数はメンバにしないほうがいいのでしょうか、、、
0344デフォルトの名無しさんNGNG
>>343
スレ違いやね。このスレじゃなくて、C++相談室で取り扱う話題だ。
まあ姉妹スレのよしみで答えてやるけど、掛け算をやりたいんなら、
その行列クラス用のoperator*()をオーバーロードするのが定石。
誰からも認められる、operator*()の正当なオーバーロードのやり方は、
Effective C++ と More Effective C++ を買って読めば分かる。買え。
0345 NGNG
>>344
ここはVC専門すれだったのですか、、、いま気づきました、、申し訳ない

、、、なるほど、そういうことやるのに適したのがあるのですか
今度見てみます

0346デフォルトの名無しさんNGNG
配布されているDLLを利用したWinコンソールアプリをVC++で作っています。
DLLのAPIが、呼ぶたびにstdoutに文字を吐きまくってうざったく、
それを黙らせたいのですがつまってしまいました。。

APIを呼ぶ時だけstdoutをコンソール以外(できれば"nul")につないで、
処理が戻ってきた時(自分がメッセージを吐きたい時)にstdoutとコンソールを
つなげなおせばよいかなと考えました。
とりあえずfreopenを使ってstdoutを別ファイルにつないでみたのですが、、
stdoutをコンソールにつなぎ直す方法がわかりませんでした。(苦笑

「自分のメッセージはstderrに出力」以外にうまい方法はありませんか?
0347デフォルトの名無しさんNGNG
kage.dll方式で、Console系APIを
つぶしてしまえ。
0348デフォルトの名無しさんNGNG
>>347
kage.dllって2ちゃんねるブラウザのやつですよね。
でも調べてみてもコンソール関係の情報を見つけられませんでした。。
申し訳ないのですけど、ぐぐる用キーワードかURLあたりだけでも教えて頂けませんか?
0349デフォルトの名無しさんNGNG
アプリ終了時にAafxBeginThread()等で起動したマルチスレッドを終了させたい場合は
特になにもしなくてもいいんでしょうか?たまにkernel32でエラーが起こりましたといった
メッセージが表示されたりするんですが別の問題ですか?
0350デフォルトの名無しさんNGNG
WaitFor*Object(s)で待機せよ
0351デフォルトの名無しさんNGNG
>>346
GetStdHandleで保存
SetStdHandleでNULLでどうだ?
0352デフォルトの名無しさんNGNG
>349
スレッド自信がループから抜け、関数としてリターンさせる。
そのためにはメインスレッドからイベントオブジェクトをシグナルさせてやる。
スレッド側は>350の言うような方法で終了イベントやその他のイベントを待つことができる
0353デフォルトの名無しさんNGNG
>>350
>>352
なるほど、ありがとうございます・・・と言いたい所なんですが正直難しそうですね(^^;
今HELPを見てみたんですが良くわかりませんでした。
それっぽい説明のあるHPなどがありましたら教えていただけませんか?
0354デフォルトの名無しさんNGNG
スレッドに終了イベント(volatileのフラグでもイベントでも)を送って、
受け取ったスレッドは自殺。

んで、メインスレッドでシグナル状態になるまで待機
(スレッドハンドルにWaitForSingleObjectとか)
0355デフォルトの名無しさんNGNG
MSDNのサンプルmtrecalc
http://msdn.microsoft.com/code/default.asp?URL=/code/sample.asp?url=/MSDN-FILES/026/001/503/msdncompositedoc.xml
0356kazNGNG
はじめまして、VCの初心者なんですが、プッシュボタンやコンボボックスをプログラムの
起動中に無効化(グレーアウト)にするにはどうしたらいいでしょうか??
MSDN探してても見つからなくて・・・
0357デフォルトの名無しさんNGNG
6.0ならリソースエディタで対象のボタンなどの
コントロール上で右クリック->プロパティで
無効化、みたいなチェックボックスなかったっけ?
ちょっと記憶があいまい。。

またはEnableWindow()かな。
0358kazNGNG
ありがとうございます!!ですけど、EnableWindowで普通の無効化はうまくいきそうですが、
ボタンを押されて処理の途中、ボタンを使い手に触らせないという意味での無効化は
どうやらできないようです.
ボタンが押されて、OnButton関数が始まります。OnButtonの最初で無効化を使用します。
それからOnButton内で処理が始まります.処理には待機中の状態があって、ボタンの見た目
は無効化されていても、待機中の状態の時に無効化されているボタンをさわるとまた処理後、
最初から処理を開始してしまうのです.どうにかならないでしょうか??
0359デフォルトの名無しさんNGNG
>>358
PeekMessage()調べてみてYO!
0360デフォルトの名無しさんNGNG
>>359 VB厨どっかいけ >>358 BeginWaitCursor, EndWaitCursor あたりをキーに探せ。 MFCつかってるならCWaitCursor でもいいけどね。
0361359NGNG
>>360
VB使ったことないのに・・・(´・ω・`)トホホ

BeginWaitCursor()(EnableWindow()でも良いけど)を呼び出す前に
さらにイベントがPOSTされたらどうすれば良いでしょうか?
ボタンを連射した時とかね。
BeginWaitCursor()が呼び出されるまで「絶対に」POSTされないって
言い切れる?
0362デフォルトの名無しさんNGNG
やれるもんならやってみろ。

peekmessage自前でするアプリでおかしな動きをしないのは見たことないが。

スワップがりがりのノートや異常に重いアプリを動かしてるような環境なら
二度ポストされるかもね。
そのときは、二度処理するのがイベント駆動アプリとしては正しい姿だろう。

0363kazNGNG
みなさん、いろいろアドバイスありがとうございます!!
とりあえず、いろいろ勉強してみて試してみます。また問題があれば
また、後ほど、、
0364359NGNG
>>362
>やれるもんならやってみろ。
よくやってますが。

>peekmessage自前でするアプリでおかしな動きをしないのは見たことないが。
ハァ?何でおかしくなるの?普通のAPIだよ?
メッセージキューを扱うのが特別だと思ってるの?
CでAPIのみ使ってプログラミングしたことある?

>そのときは、二度処理するのがイベント駆動アプリとしては正しい姿だろう。
マジデスカッ!! 前提覆すなよっ!
・・・あんたがプロのプログラマじゃなかったら許す。

0365デフォルトの名無しさんNGNG
Aと言うプロジェクトで作ったMFCからの(コントロール)派生クラスを、
新しく作ったBのプロジェクトで使おうと思ったのですが、ダイアログエディタで
ダイアログへコントロールを置いてそのコントロールをクラスウィザードで
メンバ変数に結び付けようかと思ったらそのクラスが選択できませんでした。
クラスビューではクラスとして認識されているのですが何か他にやらなければ
ならない事があるのでしょうか?
0366デフォルトの名無しさんNGNG
スピンボタン付きのエディットボックスで,
m_spn3.SetRange(2000,2020);
m_spn3.SetPos(2002);
のように西暦を指定しているのですが,
どうしても2,002と表示され,2扱いになります.
このような症例に覚えのある方はいらっしゃいますか?
ちなみに,エディットボックスの定義で,
CほげDlg::CほげDlg(CWnd* pParent /*=NULL*/)
: CDialog(CほげDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CMyadDlg)
m_edit1 = _T("");
m_val1 = 0;
m_edit2 = _T("2002");
・・・のようにしていますが,,,
これが原因??でもなんで2,000なんてなるんだろう...たすけてください.
0367デフォルトの名無しさんNGNG
>>366
スピンのスタイルをみれ。
0368デフォルトの名無しさんNGNG
>>362
(゜д゜;)ポカーン・・・
0369デフォルトの名無しさんNGNG
WindowsXP VisualC++6.0professionalです。
ファイルをコンパイルすると以下のようなエラーが出てしまいました。
error LNK2001: 外部シンボル "__CrtDbgReport" は未解決です
fatal error LNK1120: 外部参照 1 が未解決です。
色々コメントアウトしたりしてifstreamの部分が問題だということが
分かったのですが、なにかおかしなところがあるのでしょうか?。

std::ifstream in_file(path, std::ios::in|std::ios::binary);
// open失敗
if(in_file.bad()) return false;
//ファイル形式のチェック
char identifer[3];
in_file.read(identifer, 3);
if(strcmp(buffer, identifer) != 0)
eturn false;
in_file.close();
// close失敗
if(in_file.bad()) return false;
return true;

またios::nocreateをこのように入れようとすると
>std::ifstream in_file(path, std::ios::in|std::ios::binary|std::ios::nocreate);
error C2039: 'nocreate' : 'basic_ios<char,struct std::char_traits<char> >' のメンバではありません。
となってしまいます。何かおかしな部分があるのでしょうか?
ios::inとios::binaryは全く問題無いようです。
どうかよろしくお願いします。
0370デフォルトの名無しさんNGNG
TVITEMのpszTextメンバはconstじゃないんですが、
一時変数やconst文字列をキャストして渡すのはダメなんでしょうか?

MSDNには編集されると書いてあるようなのですが、
スタック変数を渡しても文字列が破損される気配がないので、
内部でコピーが作成されているのかなと思うのですが。

実際のところ、どうなのでしょうか?
0371デフォルトの名無しさんNGNG
>>370
SetするのもGetするのも同じ構造体を使う都合上、非constになっているだけと思われ。
漏れはいつもconst_castして突っ込んでいるけど、心配ならコピーして渡すよろし。
0372デフォルトの名無しさんNGNG
>>367
ありがとうございました.解決しました!!
どうしてあんな機能がデフォルトでついてるのかと思いました..
0373デフォルトの名無しさんNGNG
>どうしてあんな機能がデフォルトでついてるのかと思いました..
それがMSぢゃないですか・・と言ってみるテスト
0374デフォルトの名無しさんNGNG
すみません,
GetTotalSecondsの逆を教えていただけますか?

CTime→ GetTotalSeconds → 総秒
総秒 → [    ?     ] →CTime
0375デフォルトの名無しさんNGNG
>>374
GetTotalSeconds()って、CTimeSpanのメンバ関数やん。
0376374NGNG
>>375
そうですね,でもCtimeから差を求めて,CTimeSpanに代入して,
CTime tm1;
CTimeSpan tsp1;
long ttm;
tts = tsp1.GetTotalSeconds(); //で総秒をゲットできる
のように総秒数を求めることができますよね??
この逆に,
long time_sum;//秒数
などから,
Ctime tm2;とかに変換する方法はありますか?
0377デフォルトの名無しさんNGNG
>>376
CTime( time_t time );
コンストラクタに↑こんなのがあるから、time_sumをそのままぶち込めばOKなんじゃない?
1970年1月1日を基点にした時刻になるよ。

(「時間の間隔」を「時刻」に変換するってのがよく分からんけど)
0378デフォルトの名無しさんNGNG
>>376
値を入れるだけなら普通に代入できるけど、
CTimeは
「0時間0分0秒」から始まってるわけじゃない。
0379あいNGNG
携帯のデータを破壊するウイルスさがしてます。
0380533NGNG
教えてください。
Explorerの右クリックメニューに項目を追加し、処理を割り当てたいのですが
やり方が分かりません。

HKEY_CLASS_ROOT\*\shellで別アプリを起動するしか無いのでしょうか?
これしか方法が無いとした場合、モーダル起動?(モーダルダイアログ表示時の
親子関係の様な物)は可能でしょうか?

具体的には、Explorerでファイルの右クリックメニューに「メモ帳で編集」的な
項目を追加し、そのメモ帳が終了するまで起動元のExplorerを操作できなくしたい。
と考えています。(実際は「メモ帳」部分が独自処理になります)

分かりにくくて申し訳ありませんがよろしくお願いします。

0381デフォルトの名無しさんNGNG
Visual C++で使える正規表現ライブラリに心当たりありませんか?
GNUのやつをコンパイルしようとしてもうまくいかないのです....
0382デフォルトの名無しさんNGNG
rubyとか、perとか、Pythonとかのを流用すればいいやん。
0383デフォルトの名無しさんNGNG
>>381
boostのregex。
http://www.boost.org/
使い方。
http://www.s34.co.jp/cpptechdoc/article/regexpp/
0384374NGNG
現在求めていることは,
CTime jikan1(2000, 1, 1, 12, 0, 0);
で,2000年01月01日12時00分00秒に設定したとして,
2000年01月01日12時00分00秒から300000秒後の日付を知りたいということなんです.

ctime()を使うとすると,
struct tm *jikan2;という形ですよね?

そもそもどうして
CTime jikan1(2000, 1, 1, 12, 0, 0);
struct tm *jikan2;
などを時間を計算する複数の方法があるのが意味がわかりません.これらは互換性はないんでしょうか?
0385デフォルトの名無しさんNGNG
>>384
プログラミング暦何日(または何時間)くらいですか?
0386374NGNG
>>385
( ゚д゚)ポカーン
0387デフォルトの名無しさんNGNG
>>384
ヘルプでCTimeのところを読んでみなよ。
時刻に時間を足せるって書いてあるじゃん。
0388デフォルトの名無しさんNGNG
>>386
> などを時間を計算する複数の方法があるのが意味がわかりません.

この発言はそう思われても仕方ないと思われ
0389デフォルトの名無しさんNGNG
>>384
jikan += CTimeSpan( 0, 0, 0, 30000 )
0390374NGNG
みなさんありがとうございます.
弱冠プログラム暦3ヶ月の新まいでう.
ご回答ありがとうございました.
0391デフォルトの名無しさんNGNG
>>381
http://www.hi-ho.ne.jp/babaq/bregexp.html
0392デフォルトの名無しさんNGNG
やむを得ない事情から、とあるdll内にあるコールバック関数を使っています。

ところが、この呼ばれたコールバック関数から、クライアント側の関数や変数を
操作しなければならないという、いかんともしがたい窮地に追い込まれています(´Д⊂

dllのソースはあるのですが、大幅な変更をしてはいけないという…。
なにか良い知恵がありましたら、どうかお授け下さいませ…。
0393デフォルトの名無しさんNGNG
>>392
たしか、DLLとEXEで共通の変数にアクセスする方法はあるよ。
おれは、もう寝なきゃならないから、がんばって検索してください。
0394デフォルトの名無しさんNGNG
>>392
グローバル変数のようにアクセスする方法は知らないので
EXE内の関数を呼んで変数のアドレスをゲットしよう!
と言っておく
0395392NGNG
お二人とも、さっそくのレスありがとうございます(*´Д`)
>>393
#pragma data_seg(".shared")
やや、これですね!やた、変数はどうにかなりそうです。
>>394
えっとえっと…dllからexeの関数を呼ぶ方法が……。
393さんの方法を使うとしても、関数などのポインタを直接渡すのは、
アドレス空間が違うから無意味ですよね…。クライアントのウィンドウハンドルだけ
共有して、SetWindowLongとかに埋めておく、みたいな感じで宜しいのでしょうか?
0396デフォルトの名無しさんNGNG
>>395
普通に関数のポインタ渡せない?
0397デフォルトの名無しさんNGNG
ふつー、dllはexeと同じアドレス空間に配置されると思うが。
0398392NGNG
>>396 >>397
レスありがとうございます。

あー、あたしってば情けない(´・ω・`)
どうも挙動がおかしいと思ったら、グローバルフック用のdllだった
みたいです…ううう、みなさん、ほんますんませんです(*/ω/)

今大急ぎで適当なdll作ってやってみたら、皆さん仰るとおりなんの問題もなく
上手く行きました。(蛇足ながら一応グローバル&&GetWindowLong版の方も成功しました)

夜遅くにお騒がせしてすいませんです。重ね重ね皆様に感謝です。
0399デフォルトの名無しさんNGNG
358がMFCのMLにポストしたね。
ここはどうやら役に立てなかった模様、残念
0400デフォルトの名無しさんNGNG
>>358はマルチスレッドでなんとかならんのかね?
0401デフォルトの名無しさんNGNG
MFCのMLを見る限りではpostmessageの勉強をするということで決着したみたいだな。
0402kaz(358)NGNG
すいません。別にこっちが役に立たなかったわけじゃないです。
ただ、API使ったこと無かったんで、今更、MFCで教えてくださいとは
書きづらかっただけです。ほんとすみません。
0403デフォルトの名無しさんNGNG
windows上のvisual applicationの開発では
visual c++とc++ builderのどちらが素早く開発しやすいですか?
0404デフォルトの名無しさんNGNG
>>403
慣れてる方。
0405デフォルトの名無しさんNGNG
どちらも初めての場合は?>>404
0406デフォルトの名無しさんNGNG
安い方。
お金を貯める時間が短くてすむ
0407デフォルトの名無しさんNGNG
もう持っていたら?>>406
0408デフォルトの名無しさんNGNG
>>407
インストール時間が短い方。
インストール済みなら起動が早いほう。
0409デフォルトの名無しさんNGNG
VC++のスレで聞くことが間違ってるという指摘はあえてしないのか?
0410デフォルトの名無しさんNGNG
>>407
だったら、両方入れてちょっと使って見りゃいいじゃん。
いいかげんウザイから、もう来るな、ぼけ。
0411デフォルトの名無しさんNGNG
このスレには
両方使って開発した経験のある人はいないということでOK?
0412デフォルトの名無しさんNGNG
>>411
はいはい、OK だよ。どうでもいいから、氏んでてくれ。
0413デフォルトの名無しさんNGNG
APIベース(自分でwin main作る)プログラムでMFCも使うこと出来ますか?
たとえばinclude何々とかすれば使えますか。
ファイルダイアログ とか CString とか 便利なもんで。
なにとぞ御教授おねがいします。
0414デフォルトの名無しさんNGNG
すいません、これどういう意味ですか?

x>0?y:0
0415デフォルトの名無しさんNGNG
z=x>0?y:0で 
x > 0 なら z = y
x > 0 では無いなら z = 0

ちがったっけ?
0416デフォルトの名無しさんNGNG
if(x>0){z=y;}else{z=0;}
ってことですね?
ありがとうございました。

MSDNに載って無いのなんでなんだろう。
0417デフォルトの名無しさんNGNG
>>414 おねがいします
0418デフォルトの名無しさんNGNG
三項演算子で検索汁
0419414=416NGNG
>>417
?
0420デフォルトの名無しさんNGNG
まちがえました >>413 です 質問しにきたのに、質問答えちゃいましたよもう。
0421414=416NGNG
みなさんどうもありがとうございました。
0422デフォルトの名無しさんNGNG
>>413
出来る。
afx.hじゃなく、ウィンドウを使うときは、AfxWinInitするとよし。
0423デフォルトの名無しさんNGNG
>>422 御教授ありがとうございます。 ではまた
0424デフォルトの名無しさんNGNG
VC6なんですが、以下がコンパイルできません。
class Base {};
class A : public Base {};
class B : public Base {};

bool b = true;
Base* p = (b)? new A : new B;

「AはBに変換できません」というようなエラーメッセージがでます。if文使えばまあ
いいんですが、1行で収めたいんです…。
なんとかならんもんでしょうか? ちなみにgccではコンパイルできました。
0425デフォルトの名無しさんNGNG
ベースのデストラクタをvirtualにしる!
0426425NGNG
いや、違う。
VCの参考演算子のバグか?
0427425NGNG
いや、違う。
2項目と3項目は変換できないといけないようだ。
0428425NGNG
いや、違う。
まてよ・・・
いや、違う。
もしかして・・・
0429デフォルトの名無しさんNGNG
static_cast<Base*>(new A) : static_cast<Base*>(new B);に汁
0430デフォルトの名無しさんNGNG
Base* p = (b)? static_cast<Base*>(new A) : static_cast<Base*>(new B);
長!
0431デフォルトの名無しさんNGNG
規格じゃ3項演算子の3項目から2項目への変換があるか、
または同じ型でなければコンパイルできないはず。

A* p = (b) ? new A : newB;

この例を見れば分かるでしょ
0432425NGNG
いや、違う。
おそらく・・・
いや、違う。
そうか!
















いや、違う。
0433デフォルトの名無しさんNGNG
VisualCじゃない質問ばっかり
C++じゃん
0434424NGNG
gccではコンパイルできたのでVC特有の動作かと思ったんですが、
>>431
をみて納得しました。たしかにコンパイルできませんね。
あたりまえですが、gccでもこれはダメでした。
Base* p = (b)? new A : new B;
がgccでコンパイルできるのはgccが三項演算子の解釈を拡張しているんでしょう。
みなさんありがとうございました。
0435なつかしの関数電卓NGNG
VC++ コンパイル時オプション指定パラメータのドキュメント探してます。
MSDNは高くて持っていないので、その他で乗っているもの探しています。
どうしても再帰でプログラム書かなければならないので、
スタックを多くしたいのです。
0436デフォルトの名無しさんNGNG
cl /?
0437デフォルトの名無しさん NGNG
さっき間違えてC++で訊いてしまったらこちらへ誘導されました。
自分まだ林氏のスーパービギナー編を一通りやっただけのペーペー初心者です。
今、エディットボックス3つと四則演算ボタンを配置しただけの簡単な電卓を作ろうとしていて、
�@ed1と2に値を入力
�A「+」とか「-」とかを押す
�Bed3に答え(浮動小数点型)が表示
という風にしたいのですが、
出だしはCString ssでは駄目なのかとか、
またm_ed1を1項、2を2項と定義付けるにはどう記述するのかからして分りません。
ヘルプや言語リファレンス本で調べてもいまいち・・(あまりに初歩だから載ってない?)。
学校の一室にしかソフトが入ってないので(自前で買うには高い)直接いじれる日時が限られてるし・・どなたか教えて頂けないでしょうか。
0438437NGNG
あ、ここもVC++とはチョト違うんですね・・すいません気をつけます(汗
0439デフォルトの名無しさんNGNG
計算する為のトリガが「+」や「−」なんだから、まずキーをアプリケーションで
受け取るためにはどうすればいいのか考えよう&ネットで調べてみよう。
エディットボックスの読み書きはスーパービギナー編にも載ってたはず。
MSDNのCEditのクラスメンバを調べてもいいし。
0440デフォルトの名無しさんNGNG
今までFORTRANを使用していて最近VCを始めたんですけど
VCでクラス内でのグローバル変数ではなくプロジェクト内の
すべてのクラスからアクセスできるグローバル変数は
どこでどのようにして宣言すればいいのでしょうか?

基本的なことで申し訳ありませんがよろしくお願いします。
0441デフォルトの名無しさんNGNG
>>431
> 規格じゃ3項演算子の3項目から2項目への変換があるか、
> または同じ型でなければコンパイルできないはず。
何でそう言う制約が必要なんだろ ?
A *p = (b) ? new A : new B;
がダメなのは、b = FALSE の時に A *p = new B; となるからダメなのはわかる
けど
Base *p = b ? new A : new B;
なら、Base *p = new A; と Base *p = new B; なんだから別に問題ないと思う
けど。不思議じゃ...。
0442デフォルトの名無しさんNGNG
>>441
A *p = ( (b) ? new A : new B );
0443441NGNG
>>442
何が言いたい ? A *p = ( (b) ? new A : new B ); がダメなのはわかっ
てるぞ。
0444デフォルトの名無しさんNGNG
厨房の香り漂う...
0445デフォルトの名無しさんNGNG
あー、すまそ。Base*でもいいよ。
括弧内が先に評価されてそこで返値が決定される必要がある。
0446441NGNG
>>445
あ〜〜〜、なるほど言われてみりゃ 括弧内 の評価が終わった時に一応
返値の型決めないといけないからか...。これぐらいなら共通の型を見つ
けるのも難しくないだろうけど多重継承バリバリだとコンパイラも大変だ
わな。サンクス、一つ勉強になったよ。
0447デフォルトの名無しさんNGNG
>>440
変数、定数専用のcppとhを用意して必要なクラスでincludeすれば良いべ。
0448デフォルトの名無しさんNGNG
>>447
>変数、定数専用のcppとhを用意して必要なクラスでincludeすれば良いべ。
ということは

class GlobalVal
を作ってメンバ変数にグローバルで扱いたい変数を定義するということですか?
その場合cppには特にメソッドをいれなくてもいいんですよね?
とりあえず存在だけしていればいいということですか?

なんか質問ばかりですみません。
0449デフォルトの名無しさんNGNG
クラスはいらない。

実装.c
int global_val;

使用者.c
extern int global_val;

これでOK
0450440NGNG
ん? 考えてて思ったんですが、
グローバル変数を格納するクラスを作ってもどこでインスタンスを作るかに
よってグローバルに扱えないことないですか?

たとえば今、それぞれ4つのcppとhファイルがあるんですけど
それらすべてで扱いたいグローバル変数を格納したクラスのインスタンスは
どこで生成すればいいですか?

結局インスタンスを生成したソースの中でしか使えないってことでは・・・。

どうなんでしょう?
よろしくお願いしますm(_ _)m
0451440NGNG
すいません、かぶってしまいました。
449さん回答どうもありがとうございます。

もう一度試してみます(^^)
0452デフォルトの名無しさんNGNG
Visual C++ .NET Standardで作ったものって配布可能でしょうか?

MSのサイトを探してみたのですが、特にNGという情報が載って
いなかったので。
0453デフォルトの名無しさんNGNG
>>452
NGだったらStandardなんて名前は付けないと思う・・・
0454デフォルトの名無しさんNGNG
>>453
ありがとうございます。

・6.0Std.よりも安い
・コンパイラの最適化も省かれている

ので、もしかしたらと思っていたのです。今から買ってこようかな。
0455デフォルトの名無しさんNGNG
商用不可。BorlandのPersonalと同じ
0456デフォルトの名無しさんNGNG
>>451
>>449さんの言ってる事に>>447のを加えると、

実装.c
int global_val;

実装.h
extern int global_val;

使用者.c
#include "実装.h"

って感じ。グローバルのものは全部一括して.cと.hに突っ込んじゃう。
0457452NGNG
>>455

ぐぅ、商用不可でしたか。
キャッシュバックキャンペーンもあるし、かみさんに内緒でPro.を
買おうかな。C♯もさわってみたいし。
0458デフォルトの名無しさんNGNG
糞シェア作って公開するんじゃねぇ
0459452NGNG
C++.netのPro相当のエディションがあればなあ…

>>458
期待に添えないのですが、シェアウェアを作る予定はないのです。
0460デフォルトの名無しさんNGNG
いらねぇソフトやるよ
http://pc.2ch.net/test/read.cgi/software/1025311611/

このスレの24がVS.NET Proパッケージを\5kで譲ってくれるらしい。
0461デフォルトの名無しさんNGNG
関連付けの修復ってできませんか?
再インスコするしかないのかな...
0462デフォルトの名無しさんNGNG
>>461
変更する前に、元の関連付けを退避させておくしかないんじゃない?
0463461NGNG
>>462 あ、VisualStudio(VC6ですが)の関連付けです。
0464デフォルトの名無しさんNGNG
画面モードの変更について質問です。
GetDeviceCaps(GetDC(NULL),VREFRESH)でリフレッシュレート
が取得できますが、NTのみとMSDNにかいてあります。
それ以外のOSでは戻り値は不定なんでしょうか?

後、アプリ終了時にWM_DESTROYメッセージが送られてきたところで
ChangeDisplaySettings(&old_dev_mode, 0)を呼び出して
画面モードを変更しているのですが失敗してしまいます。

何かご存知の方おられましたら教えてください。
0465デフォルトの名無しさんNGNG
VisualCスレとVisualC++スレがあるんだが
こちらは主にSDKを扱っているということなのだろうか
0466デフォルトの名無しさんNGNG
>>465
向こうはMFC専用だから、こっちはそれ以外と思ってた。
Win32APIスレは別にあるけど。
0467デフォルトの名無しさんNGNG
>>465
ここがVC++の本流スレ。(スレ立てた人が ++をつけるの忘れただけ)

「VisualC++(MFC限定)相談室」はタイトルどおりMFC限定です。
「初心者にVisual C++を教えるスレ」は最初はネタスレだった(w
今では初心者スレとして機能しているが。
0468デフォルトの名無しさんNGNG
VC++でSTL使うとやたらと警告が出ます。
具体的には
c:\program files\microsoft visual studio\vc98\include\xtree(120) : warning C4786:
'std::_Tree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,
std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::set<std
::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::
basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<
std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::_Kfn,st
d::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,st
d::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >
> >' : 識別子が '255' 文字に切り捨てられました (debug 情報内)。
c:\program files\microsoft visual studio\vc98\include\set(33) : コンパイルさ
れたクラスのテンプレートのインスタンス化 'std::_Tree<std::basic_string<char,std::char_traits<ch
ar>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::all
ocator<char> >,std::set<std::basic_string<char,std::char_traits<char>,std::alloca
tor<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocato
r<char> > >,std::allocator<std::basic_string<char,std::char_traits<char>,std::all
ocator<char> > > >::_Kfn,std::less<std::basic_string<char,std::char_traits<char>,
std::allocator<char> > >,std::allocator<std::basic_string<char,std::char_traits<c
har>,std::allocator<char> > > >' の参照を確認してください
d:\develop\aaa\aaadlg.h(61) : コンパイルされたクラスのテンプレートのインスタンス化 'std::se
t<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<
std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::alloc
ator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' の
参照を確認してください

となります。なんですかこれ??
0469デフォルトの名無しさんNGNG
アゲます。↑よろ。
0470デフォルトの名無しさんNGNG
>>468
STLを#includeしてる直前にpragma入れろ

#pragma warning(disable:4786)
0471デフォルトの名無しさんNGNG
>470
ありがとうございます。
この警告は無視しても良いって事ですよね?
0472デフォルトの名無しさんNGNG
WTLの質問です。
class MyTool :
 public CWindowImpl<MyTool, CToolBarCtrl>
{
public:
 DECLARE_WND_SUPERCLASS(NULL, CToolBarCtrl::GetWndClassName())
 BEGIN_MSG_MAP(MyTool)
 END_MSG_MAP()
};

としたクラスを使っているのですが、破棄したときに
CWindowImplRootクラスのデストラクタのassertに引っかかってしまいます。
たとえば、CWindowImpl<MyTool, CAxWindow>のように、他のクラスから継承した場合は
引っかからないのですが、どうしたらいいでしょうか?
0473デフォルトの名無しさんNGNG
VC++のリソースエディタでビットマップを編集しているのですが、
透明色の設定の仕方が分かりません。
どうやったら良いんでしょうか?
0474デフォルトの名無しさんNGNG
VisualStudioで書いたダイアログベースプログラムは、
同じくVisualStudioのインストールされたPCでないと起動しないんですか?

これを回避するには、MFCやめてSDKかなんかで書くしかないんでしょうか?
0475デフォルトの名無しさんNGNG
>>473
リソースエディタはアイコンじゃないと透明色は使えないよ。
0476デフォルトの名無しさんNGNG
>>474
>同じくVisualStudioのインストールされたPCでないと起動しないんですか?

そんなことないよ。

0477474NGNG
>>476
早速の回答ありがとうございます。
僕の作ったダイアログベースのアプリケーションが、
VSのインストールされたPCでないと起動しないんですが、
なにが問題だと考えられますか?
なにか特殊なファイルをつかっちまってるんでしょうか?
0478デフォルトの名無しさんNGNG
>>477
MFC以外のことが原因なのでは?
MFC使うとMFC42.DLLが必要になるけど、
Win98以降のOSなら、標準で入ってるし。
0479デフォルトの名無しさんNGNG
使ってるはず。
静的リンクとか言うオプションがあるはず。それにしる
0480474NGNG
”静的リンク”というやつですね。
それは新規作成時にセティーングするものでしょうか。
よくわかりませんが、ちょっと調べてみます。ありがとうございます。

VS入ってないと使えないなんて、あふぉみたいなアプリケーションですからね。とほほ。
0481デフォルトの名無しさんNGNG
ツールバーを右揃えで作りたいのですが、うまい実現方無いでしょうか?
現在、サブクラス化してWM_SIZEメッセージでインデントを挿入しているのですが、
コレだとリサイズの時に激しくちらついてしまいます。
0482デフォルトの名無しさんNGNG
>>480
MFC42.DLLは再頒布可能だよ。
スタティックリンクはProfessionalおよびEnterprise Editionsじゃないとサポートされてない。

それより、デバッグ版なんじゃね?
MFC42D.DLLとかDがくっついてる。
こっちは再頒布不可ね。
0483デフォルトの名無しさんNGNG
マルチスレッドのプログラムで「使用するランタイムライブラリ」
のとこにあるマルチスレッドとマルチスレッド(dll)ってどうちがうのですか?

dllつくるときはマルチスレッド(dll)のほうかとおもてたら、新規プロジェクト
でWin32 DLL を選択したときデフォルトでただのマルチスレッドになってて
あれ?とおもたのです。
0484デフォルトの名無しさんNGNG
MSVCRTを使用するか、libcmtを使用するかの切り替え
0485デフォルトの名無しさんNGNG
VisualC.NETのクラスビューの質問なんですが。
一つのソリューションで作ってるプログラムの
バージョン(具体的には1.0と1.1)の
プロジェクトを管理してるのですが。
クラスビューの1.1の方の関数、例えばMoveTaskTray()を
ダブルクリックすると
1.0の方のMoveTaskTrayにジャンプしてしまいます。
また、関数によってはちゃんと1.1に飛べる場合もあります。
どうしたらいいのでしょうか?
また、同じ関数を二階ダブルクリックすると
一度目は1.0,二度目は1.1へとジャンプする場合もあります。
.ncbファイルと.clwファイルを削除すると
クラスビューを再構築できると聞き、やってみたのですが
直らなかったです。
よろしくお願いします。
0486デフォルトの名無しさんNGNG
↑
補足です。
1.1のMoveTaskTrayにジャンプしたい場合
1.1の.cppが開いている場合
ちゃんと飛べるようです。
逆に開いてなければ
1.0と1.1どちらへジャンプするかランダムです。
よろしくお願いします。
0487デフォルトの名無しさんNGNG
AppWizardを使い、基本クラスをCFormViewにしてプロジェクトを
作りました。ボタンを張り付けてそのBN_CLICKEDのメッセージを
CMainFrameのほうで取りたいんだけどうまくいきません。

ClassWizardのメッセージマップでクラス名の
プルダウンボックスにCMainFrameを指定して関数を追加したけど
そこを通ってくれないみたい。
なんで?

何がしたいかっていうとCFormView上のボタンを押したときに
アプリケーションを終了させたいのでCMainFrameの
DestroyWindow()を呼びたいの。

他にいい方法ってあります?
0488デフォルトの名無しさんNGNG
>>487
フォーム側でボタンメッセージを受け取ったらそこで
AfxGetMainWnd()->SendMessge( WM_CLOSE );
で駄目かい?
0489デフォルトの名無しさんNGNG
SetTimerで発生するイベントは、
他の関数内を実行している時でも
割り込み的にSetTimerの関数が実行されるのでしょうか?
それとも、実行中の関数から抜けるまで
プールされるのでしょうか?
どなたかご教授お願い致します。
0490487NGNG
>>488
できました。
ありがとうございます。

AfxGetMainWnd()なんて知らなかった・・。
0491デフォルトの名無しさんNGNG
>>489
いろんなところに質問してないで、自分で試したほうが早いと思われる。
最後の引数に関数ポインタを指定すればその関数が直接実行される。
NULLなら WM_TIMER が飛んでくる。
0492デフォルトの名無しさんNGNG
>>489
割り込み処理はしないよ。
実行中の関数が終了するまでは、
メッセージは保留状態。
0493デフォルトの名無しさんNGNG
コモンダイアログの質問なんですが、GetOpenFileNameやGetSaveFileNameで出てくるファイルダイアログのリストビューの形式を変えるにはどうしたらいいのでしょうか?
デフォルトはLVS_LISTになっているので、これを最初からLVS_REPORTに変えておきたいのですが。
ウィンドウスタイルを直接変更してもファイルリストが正しく更新されないため表示がおかしくなるだけでした。
0494デフォルトの名無しさんNGNG
SDKでのリストビューのサブアイテムの編集ができません。
何か知っている方おられましたら、教えてください。
0495デフォルトの名無しさんNGNG
自前でedit貼り付けてください。
0496デフォルトの名無しさんNGNG
>>492
本当にありがとうございます。
0497449NGNG
以前グローバル変数について質問したものです。
こちらで回答を頂いて早速試したところうまくいきました。
しかし、自分で作ったクラス(ここではCBlockというクラスを生成しました。)
をグローバルに扱うことができずにいます。

今は
実装.cpp
int totBlk;
CBlock blk[10];

とし、
使用者.cpp
extern totBlk;
extern blk[10];
:   :
:   :
blk[totBlk]=CBlock();

としていますがコンストラクタを呼ぶ時に
使用者.cpp内ではblkがCBlockのクラスであることを認識していない
というコンパイルエラーがでます。

そこで
extern blk[10]; → extern CBlock blk[10];
と明示してやると今度はそのアプリ(現在はRhinocerosというCADソフトのプラグインを製作中)が強制終了
されてしまいます。

web等で調べてこのようにしたのですが何か文法的な間違いを犯しているでしょうか?
理由をご存知の方がいらっしゃったらどうかアドバイスを頂けないでしょうか?
よろしくお願いいたします。

それでは失礼します。
0498NDRNGNG
>>494
一列目のやつならそのままでもOKだけど、2列目以降の場合はeditをCreateWindowして貼り付けないと
どうしようもない。
自分で頑張ってコントロールをこさえよう。

MFCだったらこのあたり結構楽にできて再利用できるんだけど(w。
0499デフォルトの名無しさんNGNG
WTLの方が再利用性高いです
0500NDRNGNG
>>499
いゃん。

まぁ、ウィンドウクラスを作ってしまえば良いわけですが。
0501デフォルトの名無しさんNGNG
再利用と言う点では、コンポーネント化が徹底しているVCLが最強。
0502デフォルトの名無しさんNGNG
VCLじゃ、クライアントから親クラスを変更したり出来ないので、
柔軟な取り回しができん。
0503デフォルトの名無しさんNGNG
ステータスバーを表示領域を変更しようと思って
indicators[]を変更した後、CMainFrame::OnCreate()に

int iPart[2] = {50, -1};
m_wndStatusBar.GetStatusBarCtrl().SetParts(2, iPart);

を書いたんだけどうまくいきません。
SetParts()はどこで呼び出せいいのでしょう?
0504NDRNGNG
>>503
???
んなまどろっこしい方法使わなくても

m_wndStatusBar.SetPaneInfo(0,ID_SEPARATOR,SBPS_NORMAL,50);
m_wndStatusBar.SetPaneInfo(1,ID_SEPARATOR,SBPS_STRETCH,0);

を使えばいいのに…
0505503NGNG
>>504
おっしゃるとおりのやり方でできました。
どうもです。
0506デフォルトの名無しさんNGNG
0507デフォルトの名無しさんNGNG
VisualStudioのワークスペース、プロジェクトとは何ですか?
実はいまウイザードとか使わずにソースとヘッダを追加して
プログラムを書き始めたいのですが、
1.ワークスペースを作る
2.ファイルを追加する
3.書く
の順番で良いですか?
0508デフォルトの名無しさんNGNG
>>507
プロジェクト1個でexeとかdllとかが1個作れる。
ワークスペースにはプロジェクトを1個以上入れて、まとめて管理できる。
まあ、普通はプロジェクトが1個だけ入ったワークスペースを作って、
そこでお仕事すればよいと思われ。
0509デフォルトの名無しさんNGNG
どうもです。
0510デフォルトの名無しさんNGNG
キャスト演算子をオーバーライドすると
クラスビューで$S1()とかいう名前になってしまいます。
書き方がまずくてそうなってしまうのですか?
operator T*();

U::operator T*()
{
}
みたいに書いてます。
0511デフォルトの名無しさんNGNG
>>510
そういうもの。
クラスビューはC++を全部知ってるわけではない。
自分を信じれ。
0512デフォルトの名無しさんNGNG
サンクス!
0513デフォルトの名無しさんNGNG
xmlをC++で読んだり書き込んだりする方法が
詳しく書いてあるHPor書籍など教えてくれませんか?
今日仕事中5時間捜したが↓くらいしか見つからず…
ttp://www.cqpub.co.jp/hanbai/books/18601.htm
あとこの本使えますか?
0514デフォルトの名無しさんNGNG
VC++でoo4oが使いたいのですが、どこかに解説されているHPありませんでしょうか?
0515デフォルトの名無しさんNGNG
Oracle
0516デフォルトの名無しさんNGNG
>>515
さんくす
0517デフォルトの名無しさんNGNG
VC++でShift-JISからUnicode(UTF-8)に文字列を変換するにはどうしたらいいのですか?
MultibyteToWideCharはWin95でうまく動かないので…。
0518デフォルトの名無しさんNGNG
#include "stdafx.h"
#include "oracl.h"

int main(int argc, char* argv[])
{
ODatabase odb("ExampleDB","scott","tiger");

return 0;
}

コンパイルもできて実行もできるのですが、なぜかつながりません。
どこが悪いのでしょうか?
0519デフォルトの名無しさんNGNG
95でも、utf-16への変換はうまくいくだろ。
なら、utf-16<->utf8の変換くらい自分でも書けるだろ。
0520518NGNG
OStartup()が必要みたいです。
でも、例外エラーがでちゃいました。うーん。
0521デフォルトの名無しさんNGNG
>>519
やっぱそっちの方がいい?
ちょっと効率悪いかなって思ったんで。
0522517NGNG
ってどうやったらいいんですか?
0523518NGNG
#include "stdafx.h"
#include "oracl.h"

int main(int argc, char* argv[])
{
OStartup();
ODatabase odb("ExampleDB","scott","tiger"); //ここで例外発生
OShutdown();
return 0;
}

なんで?
Oracleクライアントが複数バージョン入ってるからかなー
7,8,8i



0524デフォルトの名無しさんNGNG
.netが主流になろうとしている今、あえてMFCを勉強
されているのはどのような理由があるのでしょうか?
スレ違いかもしれませんが、ぜひ教えて頂けないでしょうか。
0525518NGNG
>>524
いえ、MFCというわけではないです。C++でoo4oが使いたいなと。
0526518NGNG
>>524
あ!
自分あてじゃないくて、ALLに対してですね。誤解しました。すまそ。
0527517NGNG
なんどやってもメモ帳で保存したものとバイナリが微妙にちがってきます。
何かおかしなところがあったら教えてください。

変換元:buf
変換後:ret


wchar_t wszBuf[LEN];
MultiByteToWideChar(CP_ACP,0,buf,100,wszBuf,LEN);
char *r;
unsigned short *p;

for(p =(unsigned short *)&wszBuf, r = ret; *p != '\0'; p++){
if(*p<=0x7F){
*(r++)=(char)*p;
}else if(*p>= 0x80 && *p<=0x7FF){
*(r++)=(*p%0x40)|0xC0;
*(r++)=(*p&0x3F)|0x80;
}else{
*(r++)=(*p%0x1000)|0xE0;
*(r++)=((*p&0xFC0)%0x40)|0x80;
*(r++)=(*p&0x3F)|0x80;
}
}
*r = '\0';
0528デフォルトの名無しさんNGNG
メモ帳はBOMもutl8に混ぜると聞いたことがあるが、
それではないのか?
0529デフォルトの名無しさんNGNG
.NETは主流にはなり得ないが。
0530デフォルトの名無しさんNGNG
>*(r++)=(*p%0x40)|0xC0;
>*(r++)=(*p&0x3F)|0x80;
*p & 0x3f と *p % 0x40 は同じ値になるような気がする。
0531デフォルトの名無しさんNGNG
>>527
何故ビットシフトを使わないの????
0532517NGNG
ほかのDLL使うことで解決しました。
どうもでした。
0533NDRNGNG
>>517
W95でUNICODE→UTF8の変換は上手く逝かないよ。
MSDNにも載ってた。

…というよりnkf使って解決済みかYO(w。
0534517NGNG
DLL使おうと思ったけど、>>531さんのいうとおり、ビットシフト使ってみた。
とりあえずバイナリが一致するようになったのでいけたかなって感じです。
まだわからないけど…。

*(r++)=(*p>>6)|0xC0
*(r++)=(*p&0x3F)|0x80;
}else{
*(r++)=(*p>>12)|0xE0;
*(r++)=((*p&0xFC0)>>6)|0x80;
*(r++)=(*p&0x3F)|0x80;
0535デフォルトの名無しさんNGNG
>>529 .NETは主流にはなり得ないが。
へ?ということは結局C++へ回帰しちゃうんですか?
0536 NGNG
ちょっと教えてほしいんですが。
MFCを使わずにダイアログのアプリを作ろうとしたら、ダイアログのリソースIDを"IDL_DLG"のように""でくくらないとうまく動きません。
どぼして?
0537デフォルトの名無しさんNGNG
MAKEINTRESOURCE
0538デフォルトの名無しさんNGNG
>>536
resource.hかなんか作って
#define IDL_DLG 100 //適当
これをrcとソースと両方でincludeした上で >537
0539 NGNG
ハンドルとリソースIDってなんで分ける必要があるんでしょう。
どっちも一意の値ならひとつでいいのでは?
0540デフォルトの名無しさんNGNG
ハンドルはWinAPI、リソースIDはMFCのフレームワーク内での識別子なのでは?
0541デフォルトの名無しさんNGNG
ATOMもGUIDも一意の値ですが、何か?
0542 NGNG
>>540
でもフレームワーク使わなくても、リソースIDは存在するよ。
0543デフォルトの名無しさんNGNG
ハンドルはウインドウズに管理されているオブジェクトの識別子
リソースはモジュールの中に保存してある、ローカル資源で、
リソースIDはその識別子。
リソースIDでリソースを特定して、そこからウインドウズで扱える形式のデータに
変換したりすることで、実際に使えるようになる。

メモリにロードされたプログラムのプロセスハンドルと、
ディスクに保存されたファイルのファイル名みたいな関係。
0544 NGNG
なるほど、なんとなくわかったよ。
ありがとう。
0545デフォルトの名無しさんNGNG
1 :デフォルトの名無しさん :02/06/02 10:53
c言語でWindowsプログラムがしたいです
でも何を作っていいかわかりません。
アドバイスお願いします

25 :デフォルトの名無しさん :02/07/06 21:44
http://www.sci.toyama-u.ac.jp/~iwao/Scheme/scheme.html
0546(,,・Д・)NGNG
すいません!VCでよく言われるスレッドってなんですか?(,,・Д・)
できれば使い方を教えてください!教えて君ですいません。
0547デフォルトの名無しさんNGNG
ユーザーインターフェースはボタンやら描画やらで常に忙しい。
だが重たい処理もやらなければならないとしよう。
重たい処理もユーザーインターフェースと一緒にやると画面が固まったりする。
どうすればいいか?
バックグラウンドで処理をしてくれるヤシが居ればいい。
そうするとユーザーインターフェースは自分の処理に専念できる。
その裏で動いてくれるヤシ、それがスレッドだ

0548デフォルトの名無しさんNGNG
age
0549デフォルトの名無しさんNGNG
すみません、VC++のSDKで、かちゅーしゃのように画面を三分割するには
どうすれば良いのですか。
0550デフォルトの名無しさんNGNG
WinSockを使えるように、Visual Studio.NET(Visual C++)に設定したいんですが・・・
どうすりゃいいのか、さっぱり。
0551デフォルトの名無しさんNGNG
MDIのアプリケーションを作っているのですが、
新規に子ウィンドウを開いたときに 「アクティブにならない」
というようなことって可能でしょうか?
(マウスでクリックしたときはアクティブになるようにしたい)


CREATESTRUCT構造体のstyleでWS_DISABLED
とか設定しちゃうとそれ以降アクティブにすることも出来ない・・・

どなたか、お願いします。m(__)m
0552デフォルトの名無しさんNGNG
別ファイルで作ったクラス
MyClassをドキュメントクラスで宣言しようとします。

ドキュメントクラスのヘッダファイルで
:pubric
MyClass* NewClass;
と宣言して
Viewクラス内で
GetDocument()->NewClass->(メンバ関数);
とやるとメモリ関連のエラーが出てしまいます。

ドキュメントクラス内で宣言したクラスのメンバにアクセスする方法を教えてください。
0553デフォルトの名無しさんNGNG
CListCtrlで1行に複数行いれたいのですが、
やり方ありますか?
0554だれかこたえてやれよ。NGNG
>>549
質問の意図がよくわからんが、
http://www.kumei.ne.jp/c_lang/sdk2/sdk_117.htm
みたいなことか?

>>550
#include <winsock2.h>//またはwindock.hね
#pragma comment(lib, "wsock32.lib")//リンクライブラリの指定
をソースに埋め込め。

>>552
わかってると思うけどpublicな。MyClass* NewClassだとポインタの
宣言で実体はまだ生成されてない。*をなくして
MyClass NewClass;
GetDocument()->NewClass.(メンバ関数);
にするかnew汁。っつーかC++を学べ!

>>553
意味がよくわからん。行の挿入か?
0555デフォルトの名無しさんNGNG
C + SDKでダイアログベース。
テキストボックスの背景色を変えるには?
文字はSetWindowTextで設定できました、だけど。
0556555NGNG
>文字はSetWindowTextで設定できました、だけど。
設定じゃなくて表示だった。
0557だれかこたえてやれよ。NGNG
リッチエディットコントロールなら
EM_SETBKGNDCOLOR
があるべ。
0558555NGNG
ただのエディットコントロールなんです。
0559555NGNG
リッチエディットコントロールだったとして、
EM_SETBKGNDCOLORは、このメッセージを受け取ったときに処理するのか
それともSendMessageするってことですか?
0560デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=%E3%82%A8%E3%83%87%E3%82%A3%E3%83%83%E3%83%88%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%80%80%E8%89%B2&ie=UTF-8&oe=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0561ハイバンド名無しNGNG
こんちは、ちと相談です。

現在、ビットマップを読みこんである処理をしたのち、表示および保存を
行う、というプログラムを作成したいのです。そこで「猫でもわかる〜」さんのページに
近いものがあったためパク…いや参考にしているのですが、ビットマップというか
外部ファイルの読込保存自体が初めてです。

GetOpenFileNameでダイアログ作成とユーザーの選んだファイルのアドレスをOPENFILENAME構造体に取得、
CreateFileでファイルの雛型?の作成、
ReadFileで実際にビット列を読みこんだバッファの先頭アドレス取得、
みたいな流れで大筋はあってますか?

とまあ、そちらは置いておいて、こちらが本題なのですがReadFileで取得したバッファ内のビット列を
R[x][y],G[x][y],B[x][y]という様に扱いやすい形に落としこみたいんですが、
具体的にどうすればいいのでしょうか?

先頭から8ビットずつずらしながらその8ビットを配列に入れていく、という形に
なると思うのですが…VCに直接関係の無い質問で恐縮っす。
0562ハイバンド名無しNGNG
ちなみに
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_170.htm
具体的にはこの項を参照してます…。
0563ハイバンド名無しNGNG
どうやらストリームなる概念が必要なのですね。
恥ずかしい事に初耳な概念でした。

もしかして
for (y=0;y<SizeV;y++)
for (x=0;x<SizeH;x++)
for (ch=0;ch<3;ch++)
*szBuffer >> bitmap[ch][x][y];

みたいな感じの記述でいけるのでしょうか?
0564デフォルトの名無しさんNGNG
(´-`).。oO(大いなる勘違をいしてそうだな…)
0565デフォルトの名無しさんNGNG
http://isweb18.infoseek.co.jp/computer/gmusoft/doc/bmp.html
ビットマップファイルの構造を学習すべし。
0566デフォルトの名無しさんNGNG
サービスプログラムを作成中なんですが、
サービスからダイアログを表示することって出来ますでしょうか?

ログオン状態であれば、MFCアプリケーション(DLL)経由で
画面上にダイアログを表示できましたが、
(デスクトップとの対話を許可する、という設定が必要)
非ログオン状態ではなにも表示されませんでした。
(ログオンした瞬間に画面に出てくる)

MessageBoxを使えば非ログオン状態でも画面にメッセージを
出せるのは分かったのですが、見た目のカスタマイズに
限界があるので、独自のダイアログを表示したいのですが・・・。
参考になるような情報をどなたかご教示下さい。
よろしくお願いします。
0567ハイバンド名無しNGNG
>>564
いやぁ、お恥ずかしいばかりです…。
出きればその勘違い部分を指摘してほしいんですが、恐らく
それを指摘するのも馬鹿馬鹿しいほどの根本的な勘違いなんでしょうね。
まあ、おまえ勘違いしてるぞ、って指摘だけでも助かりました。

>>565
おお、これは?熟読してみます。
おふたかたありがとうございます。
0568デフォルトの名無しさんNGNG
ははぁ〜ん、さてはみんな初心者スレかWin32APIスレに流れて
このスレの存在を忘れてるな?
0569デフォルトの名無しさんNGNG
DAT落ちかと思ってますた。
0570デフォルトの名無しさんNGNG
VC++ Standard Edition 4.0で作ったプログラムを友人に渡すと
MFC40D.DLLがありませんといわれます。
そのDLLを渡してsystemにいれてもらってもいわれます。

何が原因でエラーになっているんでしょうか?
MFC40D.DLLって何してるDLLなんでしょう???
0571デフォルトの名無しさんNGNG
>>570
ビルドがデバッグバージョンじゃないでしょか?
リリースビルドならMFC40.DLL に相当するものだと思う。
0572デフォルトの名無しさんNGNG
デバッグ版は配布しちゃダメだよ
0573デフォルトの名無しさんNGNG
>>571
そうです。デバッグバージョンです。
Standard Editionだとリリースモードでビルトできないです^^;

たいしたプログラムでないのですが、ちょっと友人にやってもらいたいのですが、
なにかいい方法はないのでしょうか?
それになんでsystemに用意しておいても見つからないと言われるのでしょう??

0574デフォルトの名無しさんNGNG
>>573
なぜリリースビルドできないのかよくわかりませんが、
それを解決する方が先決な気がします。

>572の通り、MFCx0d.dll は再配布できないですしね。
まあ、一番確実なのは、テスト環境にもVC++を入れてもらう(w
0575デフォルトの名無しさんNGNG
>>573
MSVCRTD.DLLも入れてみたら? あんまりおおっぴらに配っちゃダメよ。
VCも売り物だからね。高い金払ったEnterpriseEditionなんかと一緒だと、商売上困る。

それと、MFCはあきらめて、フリーのライブラリを探すなり、自作するなり、
SDKだけで作るなりすればこんなことに煩わされずに済むよ。
0576デフォルトの名無しさんNGNG
スタンダードだってリリースビルドできるだろ。
0577デフォルトの名無しさんNGNG
>>576
そうだった。勘違いしてた。
できないのはMFCのスタティックリンクだった。
0578_NGNG
Emacsのc-macro-expandコマンドのようなマクロ展開を
VCで見るにはどうすればいいしょうか?
0579デフォルトの名無しさんNGNG
ある関数を、呼び出し個所によって、インライン展開/非展開 を明示的に
指定したいのですが、どうすれば良いんでしょか?(VC6)
0580デフォルトの名無しさんNGNG
店でVC++5エンタープライズが1万円で売っていました。
今ならVC++.netを買いだと思いますがどうでしょうか。
でも.netのプロフェッショナル版は高いからなー、学生
じゃないし学生の知り合いもいないからアカデミックは買えないし
0581デフォルトの名無しさんNGNG
>>579
inline void hoge_inline(){
  // なんかする
}

void hoge(){
  hoge_inline();
}
0582gessiNGNG
VC code編集中にメッセージボックスの書き込みが多いので
ALT+M とかで Messagebox(NULL,"","",NULL) をすぐペーストできると
ありがたいんですが,可能ですかね.

あと数行まとめて選択して,ALT+/ とかで全部コメント化は可?
0583579NGNG
>>581
それは知ってるんですが。

void hoge_inline(){
 // なんかする
}

void hoge(){
 ...
 hoge_inline(); //ここはインライン展開させる
 ...
 hoge_inline(); //ここはインライン展開しない
 ...
}

みたいに、呼び出し側でインライン展開/非展開を制御できませんか?
という質問です。
0584デフォルトの名無しさんNGNG
>>582
マクロで VBA(?)書いて、カスタマイズ→キーボードの“マクロ”で、
キーボードに、その機能を割り振れば可能。

Sub TemplateMsgBox()
'DESCRIPTION: メッセージボックステンプレート
 ActiveDocument.Selection = "Messagebox(NULL,"""","""",NULL)"
End Sub

選択範囲のコメント化はサンプルマクロに入ってるよ。
0585デフォルトの名無しさんNGNG
>>583
ちげーよ。

inline void hoge_inline(){
 // なんかする
}

void hoge(){
 hoge_inline();
}

void hoge(){
 ...
 hoge_inline(); //ここはインライン展開させる
 ...
 hoge(); //ここはインライン展開しない
 ...
}
って意味。
0586gessiNGNG
>584

さんきゅ やてみる
0587579NGNG
>>585
あ、なるほど。関数名で分けるしかないんですね。THANX。
0588デフォルトの名無しさんNGNG
XPでVC6++起動して不具合おこすのは漏れだけですか?(´д⊂
0589デフォルトの名無しさんNGNG
再インスコしてそれでもダメならOSを2000とかに汁
0590デフォルトの名無しさんNGNG
例外処理 (初回) は ww1.exe (KERNEL32.DLL) にあります: 0xC0000005: Access Violation。

こういわれたら何を直せばいいんですかね.
0591ふぁんふぁん大佐NGNG
暫くこのスレに住みつきますのでヨロシクです。
0592デフォルトの名無しさんNGNG
>>590
変数の初期化とか実体の無いクラスにアクセスしてみたりとか。
0593デフォルトの名無しさんNGNG
>>590 とりあえずステップ実行してみるとか
0594デフォルトの名無しさんNGNG
やてみます
0595デフォルトの名無しさんNGNG
VC++の入門書を探しているのですが、良い本を選ぶ自信がありません。
良い本を紹介してもらえないでしょうか。

ちなみに、C、C++の知識はあります。

それと『はじめてのVC++6.0』技術評論社を半分読みました。
この本は、プログラム例で使われているクラスや関数の説明が、
詳しくされていないために、汎用性のある知識が得られないと思ったのでやめました。
0596ふぁんふぁん大佐@NGNG
>>595
こらこら最後までやりなさい
0597デフォルトの名無しさんNGNG
>ちなみに、C、C++の知識はあります。

だったらなぜ今更入門書が欲しいんだ?
そもそも、知識があるってどの程度だ?
0598あNGNG
>595
上級者の方々にどう言われるか分かりませんが、
私は
著者 山本 信雄
タイトル プログラミング学習シリーズ VisualC++
というのをオススメします。
三巻構成で、
1巻:SDK
2巻:Classについて(C++知ってるならいらないかも,でも全くいらないとはいえないかも)
3巻:MFC解説

全部やれば基礎は固まると思います。
私はこれ使いました。
0599あNGNG
>595
あっ、↑はVC++=MFC
として話しを進めました。
0600デフォルトの名無しさんNGNG
どうでもいいが、専門書はなんでMFCのかいせつしかしないんだ?
APIなどかぞえるぐらいしかない
0601デフォルトの名無しさんNGNG
>>600
んじゃー、API数えてください。
非公開の者だけでも3桁あったような。

>>595 詳しくされていないために、汎用性のある知識が得られないと思ったのでやめました。
「ぼくちゃん置いてけぼりにされて寂しい」
って事なら、あんたは向いてないからそろそろ人生をシャットダウンすべき。
分からないことは調べる癖を付けろ。
0602ふぁんふぁん大佐@NGNG
APIの方が実は簡単なんだわな・・
設計がしっかりしてないとどうしようもなくなるが
0603デフォルトの名無しさんNGNG
>>600
MS からAPI本はたくさんでてると思うが・・・・
0604デフォルトの名無しさんNGNG
レスどうもです。

>>597
C、C++の文法の知識はあります。
VC++の入門書を読みたい理由は、
ウインドウズでGUIプログラミングをやりたいからです。

>>598
どうもです。その本を探してみますね。




0605デフォルトの名無しさんNGNG
>>604
他のプラットフォームでの経験は?

入門本が欲しいわけ?
それとも、関数の解説が網羅されてるリファレンスが欲しいわけ?

前者なら投げ出した本をやり遂げろ。
後者ならMSDNをオンラインで見てくるか、プログラミングWindowsをそろえるべし。
0606デフォルトの名無しさんNGNG
>604
「猫でもわかるプログラミング」で検索かけれ。
本買う必要なくなってくる。
0607デフォルトの名無しさんNGNG
VC++で複数人数でひとつのソフトを作るにはどのようにしたらよいでしょうか?
0608あNGNG
>606
その方法って(猫)よく聞くけど、
他の言語で一通り分かってる人なら
そうかもしれないけど、
C++一本の人が
あれを見ながらスキルをあげていくっていうのは
実際効率悪いことこの上ないと思いますよ。
ネットで勉強できるなら本なんて一冊も
買わなくていいと思いますし。。
0609みなしごハッチNGNG
スズメバチ駆除 ビーバスターズ
 http://ww41.tiki.ne.jp./~mikihiro9649/
0610デフォルトの名無しさんNGNG
>>608
同意。
猫はわかってる人がサンプル集として使うのが正解。
チュートリアルには向かないと思う。
0611デフォルトの名無しさんNGNG
CSocketやCAsyncSocketについて詳しく解説している本はありませんか?
0612デフォルトの名無しさんNGNG
Visual C++.NETに関する質問です。
作ったアプリケーションを実行すると、
下のような説明がこれひとつだけじゃなくて、
もっといっぱいダァーっと出るのですが・・・

'CppWin32.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。

DLLファイルが読み込まれるのは、まぁ誰だって理解できますよ。

問題はシンボルです!

シンボルってなんすか?普通、読み込まれないものなんですか?
逆にどういう時に読み込まれるものなんですか?
0613梅宮の辰ちゃんNGNG
シンボルッ、シンボルッ!男のシンボルゥ〜♪
0614デフォルトの名無しさんNGNG
ListBoxの各行に画像を貼り付けるにはどうしたらいいんですか?
0615デフォルトの名無しさんNGNG
>>612
MSのサイトからデバッグシンボルを落としてきて
インストールすれば表示が消える。
0616デフォルトの名無しさんNGNG
>>615
そういう問題じゃないってば( ´ー`)y-~~

シンボルってなんすか?普通、読み込まれないものなんですか?
逆にどういう時に読み込まれるものなんですか?
0617デフォルトの名無しさんNGNG
>>616
キミには必要のないものだから知らなくていい。
0618梅宮の辰ちゃんNGNG
誰も俺のグレートなミュージックが
分かるものがいないのか、、、
悲しいぞ、なぁ松方よ
0619デフォルトの名無しさんNGNG
>>616
答えてやるから消えてくれ

>シンボルってなんすか?
クラックやデバッグを助けるための目印
具体的にはデバッグ中にAPI名が分かるようになる

>普通、読み込まれないものなんですか?
あれば勝手に読み込む

>逆にどういう時に読み込まれるものなんですか?
あれば勝手に読み込む
0620デフォルトの名無しさんNGNG
CDialogに描画したいとき、どんなほうほうがありますか
0621デフォルトの名無しさんNGNG
>>614
CListCtrlか。CImageListをセットできるみたいですが、表示できるのは CWinApp::LoadIcon で
取得したアイコンなんですね。32x32のjpeg画像を表示することはできないんでしょうか。
0622デフォルトの名無しさんNGNG
>>621
IDR_XXXを動的に生成できるか?ということか?俺は知らんけど。
0623デフォルトの名無しさんNGNG
なぁみんな、落ち着いて問題点を整理して質問しようじゃないか。
0624621NGNG
ほんとですね、、すみません。
0625621NGNG
とりあえず近いものがみつかりました。::LoadIcon() はいろいろな方法で読み込めるので大丈夫そうかな、、
ttp://www.mindcracker.com/mindcracker/c_cafe/tree/load_tree_images.asp
0626デフォルトの名無しさんNGNG
>>620
OnPaint(WM_PAINT)でもためしてみたら
0627デフォルトの名無しさんNGNG
>>614
オーナー描画・オーナードロー・WM_DRAWITEMとかで調べてみ
0628デフォルトの名無しさんNGNG
>>627
ありがとうございます。
また質問なんですが、jpegを扱うには、MFCのCImageクラスを利用すればいいのでしょうか?
0629デフォルトの名無しさんNGNG
>>628
CImageListのこと?
アイコンかビットマップしか使えないような気がする。

jpeg使うなら IPicture で楽に使えるケースもある。
www.codeguru.com/bitmap/index.shtml にいってみたら
0630デフォルトの名無しさんNGNG
初心者ですが
VisualC++関連でおすすめの本はありますか?
Cはわかります
C++は勉強中です

2ちゃんねるブラウザつくりたいです

よろしくおねがいします。
0631デフォルトの名無しさんNGNG
>>628
CImageでいけるよ
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vcsample/html/vcsamSimpleImageSample.asp
↑を参考にしてね
0632あNGNG
>630
おい、お前過去ログ読んでから質問してるよな?
たった、30さかのぼるだけじゃないの?
つまり↓こういうことだ。

>595
>598
>599
>604
>605
>606
>608
>610

過去ログの見やすい2chブラウザ作ってちょうだいね。
0633デフォルトの名無しさんNGNG
Microsoft Visual C++ .NETで、VC++の本にのってたコード

int APIENTRY WinMain(……)
{ MSG msg;
 :
 :
 :
 return msg.wParam;}

一応動きはするのですが、
[ 'return' : 'WPARAM' から 'int' に変換しました。データが失われて〜]
と、警告が出てくるのですが、何故でしょうか?
0634あNGNG
>633
>[ 'return' : 'WPARAM' から 'int' に変換しました。データが失われて〜
   ↑
これが原因だろ?
WPARAMからintに変換したからだよ。
WPARAMとはなにかよく考えてみればわかるよ。
int a=1;
long b=2;
b=a;//可能
a=b;//データが失われて〜
0635あNGNG
>634
ちょっと今手空いてるし、
せっかくだから調べ方を教えてあげるよ。
まず、VCのコードの中にどこでもいいから「WPARAM」って書いて
マウスを合わせてちょっと待ってみる。
すると「typedef UINT_PTR WPARAM」って出るでしょ?
じゃ次は「UINT_PTR」て書いて同じ事してみよう。
「typedef unsigned int UINT_PTR」って出たでしょ?
つまりあなたが>634でしたのは
int型の返り値なのにunsigned intを返したわけで、
int a=10;
unsigned int b=10;
a=b;//←これはデータが欠ける
というわけ。
暇だから細かめに言ってみたよ。
わかった?
0636デフォルトの名無しさんNGNG
>>634-635
何か、随分参考になりました。ありがとうございます。
理由は、よく解ったんですが、
何でそういう物を返すことに、なってるんでしょうか?
0637あNGNG
>636
おれSDKよくわかってないけど、
今本開いて確認したら、
俺のも return msg.wParam;
になってるみたい。
気になったのでVCで
Win32アプリケーション
で自動で作成したコード見てみたら
retrun (int)msg.wParam;
てな具合にキャストしてあった。

なんでかと言われるとわからんが、
とりあえずint にキャストしとけば問題ないよ。
0638630NGNG
それ
よさそうだなとおもってたけど
やっぱそれか
0639デフォルトの名無しさんNGNG
#include <windows.h>

の下に必ず

#include <stdio.h>と書いてしまう俺は馬鹿ですか?
0640デフォルトの名無しさんNGNG
>>639
#if defined(WIN32)
#include "windows.h"
#endif

ついでにこうしとけ(w
0641デフォルトの名無しさんNGNG
>>631
ありがとうございました!
0642デフォルトの名無しさんNGNG
>>635
>マウスを合わせてちょっと待ってみる。

これっていつまで待っても一向に表示されない時があるよね。どうしてだYO!
0643デフォルトの名無しさんNGNG
VC++6.0のインテリセンスについて質問です。

STLの std::vector<CFoo*> クラスをpublicで継承したクラス CFoos があるとして、
iteratorを使ってすべての要素にアクセスするとします。
CFoos::iterator i;
などのように宣言した i についてインテリセンスは働くのでしょうか?
例えば i->... などのようにCFooクラスの要素にアクセスしようとしてもメンバが表示されないんですが…

>>642
>マウスを合わせてちょっと待ってみる。
俺は気が短いのでさっさとF12押しますw
0644デフォルトの名無しさんNGNG
>>643
働かない
0645デフォルトの名無しさんNGNG
つまらない質問ですがよろしいでしょうか?
クラスウィザードでメンバ変数編集してOK押すと
毎回「class wizardはファイル名なんたら.tmpをなんたら.cppへ変更できません。
このファイル名を手動で変更するとデータの損失を防ぐことができます。
しかし、いくつかの変更は失われる可能性があります。」って出て
cppファイルがなくなっちゃうのです。で、いちいちtempからコピーしてきてるのですが。
何でこんなエラーがでるのでしょうか。
ちなみに、WinXPでVC6.0でサービスパック5もあててます。
おながいします。
0646デフォルトの名無しさんNGNG
crypt 使いたいのですが、どのライブラリにあるんでしょうか?
0647デフォルトの名無しさんNGNG
すいません。オブジェクト指向ってナンですか?
100文字以内でお願いします
0648デフォルトの名無しさんNGNG
>>647
おまえの頭では理解できない代物。
0649デフォルトの名無しさんNGNG
>646
UFC-crypt
で探してみそ。
アメリカ(うろ覚え)のサイトから落とすとヤバイらし
いけど、、
0650デフォルトの名無しさんNGNG
mktrip に同梱されてる模様。
0651デフォルトの名無しさん NGNG
>>647
レゴダイヤブロック
飛行機で城がつくれれば君もきっと認められるよ
0652デフォルトの名無しさんNGNG
相変わらず初歩的なプログラムしかかけないや、、
クラスを自作して簡易データベースを作成中でっす、、
0653デフォルトの名無しさんNGNG
DLLを使って解凍するプログラムを書いてます。
関連付けを設定して、
書庫をダブルクリックした場合、
コマンドラインに
ショートファイルネーム(あってるかな?)がついて
exeが起動されるのはわかるのですが、
ショートファイルネームからロングファイルネームに
変換するいい手はありませんか?
exeからは起動元パスが、
C:\Directoryt1\File.txt から起動したら
C:\Direc~~1\File.txt
のように見えてしまい困っています。
どうすればいいでしょうか?
0654デフォルトの名無しさんNGNG
>>653
Win32APIにGetFullPathNameというのがあるけど。
http://www.microsoft.com/japan/msdn/library/ja/jpfileio/html/_win32_getfullpathname.asp
0655653NGNG
>654
ありがとうございます。
言われたバびょの近所に
GetLongPathName
というのも見つけました。
これでいけそうです。
以前ショートファイルネームから
ロングファイルネームへの変換はできないと
聞いていたので、こういう関数はないと思ってました。
ありがとうございます。
0656デフォルトの名無しさんNGNG
久々にプログラム組んでみたらウィンドウのメニューバーが表示されなくなった。
あれってWNDCLASSのlpszMenuNameに作ったメニューのID指定するだけだったよな?
他のサンプルと見比べたりMSDN見たりしてもわからない・・・。
何でメニュー表示されないかわかる香具師求む。
0657デフォルトの名無しさんNGNG
>>656
MAKEINTRESOURCE マクロ
0658657NGNG
あれ? 関係ないかも
0659デフォルトの名無しさんNGNG
めっちゃ関係無いよ・・・・(´д⊂
0660デフォルトの名無しさんNGNG
>>659
あきらめてCreateWindowのHMENU指定して
(´-`).。oO(つーか、あきらめたのは俺か…)
0661デフォルトの名無しさんNGNG
昔作ったファイルならメニューつき、
新規に作るとメニュー無し・・・。

何を忘れてるんだ(;´Д`)
ソースコードはほぼ一緒なのに(´д⊂
0662デフォルトの名無しさんNGNG
MAKEINTRESOURCEだって。
0663デフォルトの名無しさんNGNG
diffしる!
0664fuNGNG
例外処理 (初回) は ww1.exe (KERNEL32.DLL) にあります: 0xC0000005: Access Violation。
ってのが下記の nn=UpdateWindow( hWnd);で発生するんですが何が悪いんでしょうか.
ちなみに nn の返り値は1で正常終了なんですけどね.
//ウィンドウの生成
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{hInst = hInstance;
hWnd = CreateWindow(szClassName,"for debug:",
WS_OVERLAPPEDWINDOW|CS_DBLCLKS,0,0,30,30,NULL,NULL, hInstance,NULL);
if (!hWnd)
return FALSE;
ShowWindow( hWnd, nCmdShow );
int nn;
nn=UpdateWindow( hWnd);
0665デフォルトの名無しさんNGNG
>>664
単に、UpdateWindowところで起こっただけで、
原因はWM_CREATEハンドラの中とか?
0666デフォルトの名無しさんNGNG
VC++6で、Outlookの設定をいじるプログラムを作りたいのですが、
レジストリをいじらないとだめですよね?

 特にPOPやSMTPの設定の場所を探しているのですが、レジストリに
見つけられません。

HKEY_CURRENT_USER\Identities\[適当な番号]\Software
\Microsoft\Outlook Express

あたりがニアピンかな・・と探してるのですが・・・どなたか知恵を貸して
ください
0667デフォルトの名無しさんNGNG
お前がいじりたいのは、
Outlookの設定なのか、Outlook Expressの設定なのかと小一時間
0668デフォルトの名無しさんNGNG
>>666
他のアプリのレジストリをいじるのはイクナイ!!
0669656NGNG
WNDCLASSw;
w.cbClsExtra= w.cbWndExtra= 0;
w.hbrBackground= (HBRUSH)GetStockObject( WHITE_BRUSH );
w.hCursor= LoadCursor( NULL, IDC_ARROW );
w.hIcon= LoadIcon( NULL, IDI_APPLICATION );
w.hInstance= hInstance;
w.lpfnWndProc= WndProc;
w.lpszClassName= "lpszClassName";
w.lpszMenuName= MAKEINTRESOURCE("IDR_MENU1");
w.style= CS_HREDRAW | CS_VREDRAW;
RegisterClass( &w );
HWNDhWnd= CreateWindow( "lpszClassName", "てすつ", WS_OVERLAPPEDWINDOW, 0, 0, 300, 150, NULL, NULL, hInstance, NULL );
何か間違ってますか?(´д⊂
0670デフォルトの名無しさんNGNG
ネタだと信じたい。
> w.lpszMenuName= MAKEINTRESOURCE("IDR_MENU1");
0671デフォルトの名無しさんNGNG
そらメニュー表示されないわな
0672デフォルトの名無しさんNGNG
"lpszClassName"というクラス名も微妙にイヤだな。
0673656NGNG
(;´Д`)人 ごめんなさいごめんなさいごめんn(
マジです。つかレス前に自分で気づきますた。

でも
w.lpszMenuName = "IDR_MENU1";
とか書けなかったっけ?(´д` ;)
これで無理ぽかったからMAKEINTRESOURCE("略になったんだが(´д⊂
0674デフォルトの名無しさんNGNG
仮に IDR_MENU1 がメニュー名なら
w.lpszMenuName = "IDR_MENU1";
でも メニューIDなら
w.lpszMenuName = IDR_MENU1;

後者は整数値をポインタ型に代入することになるので
通常は MAKEINTRESOURCEマクロを使って型変換する。
0675デフォルトの名無しさんNGNG
.netでMFC使って作ったら
mfc70.dll と
msvcr70.dll
が起動するのに最低限必要と聞いたのですが、
当然.VC.NETインストしたら入ってると
思うのですが、
このdllは一般ユーザーが
入手するのはどの機会なんでしょうか?
例えばIE6と一緒にインストされる、とか
そういう情報です。
ご存知の方よろしくお願いします。
0676デフォルトの名無しさんNGNG
.NET FrameworkのRuntimeかSDKをいれないとダメ
0677675NGNG
>676
>.NET FrameworkのRuntime
っていったら
普通のユーザーはWindowsUpdateですよね。
必要動作環境がえらく大げさになりますね。
めんどくさ。。
情報ありがとうございました。
0678デフォルトの名無しさんNGNG
>>676は勘違いしてない?
managedの話じゃないから.NET Framework再頒布パッケージ(またはSDK)
は関係ないよ。
0679デフォルトの名無しさんNGNG
>>678
それ以外にMSからは配布されてない。
ランタイムパックとかでvectorに登録する人物も現れてない

って意味で言ったんだが。
0680デフォルトの名無しさんNGNG
いやだから.NET FrameworkのRuntimeかSDK入れてもmfc70.dllは
インストールされないから意味ないってことなんだけど。

ぐぐれば配布してる人は現れてる。
0681デフォルトの名無しさんNGNG
なんで自分で配布せぇへんの?
0682デフォルトの名無しさんNGNG
アプリケーションやデスクトップに作ったショートカットを
実行させるためのショートカットキーを自分のアプリに割り当てたいんですが、
そういうAPIってありますか?
0683デフォルトの名無しさんNGNG
>>682
IShellLink::SetHotkey
0684デフォルトの名無しさんNGNG
ダイアログのことでお聞きしたいんですが、
ダイアログをDoModalしたら、
一番若いタブオーダーのエディットボックスの
文字列が選択された状態で表示されるので
気持ち悪いです。
例えばタブオーダー1がパスを表示する
エディットボックスで、DoModalされた時に
文字列が入ってる場合、
開くと文字列が反転して表示されます。
こういう時の
解決方法はどうすればいいでしょうか?
とりあえずOKボタン(IDOK)を
OnInitDialog()でSetForcusしてみましたが、
全然的外れでした。
0685名無しサンプリング@48kHzNGNG
レジストリ操作で質問なのですが…
SHGetValue()
でキーの文字列を取得しようとしているんですが
一回目は成功するんですが、2つ目のキーの取得に
失敗してしまいます。原因さっぱりわかりません。
何かご存知方、いらっしゃいませんでしょうか?
0686684NGNG
>685
Return Values
Returns ERROR_SUCCESS if successful, or a nonzero error code defined in Winerror.h otherwise. You can use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag to retrieve a generic description of the error.
↑エラーコードからわかるんじゃない?
0687デフォルトの名無しさんNGNG
>>684
タブオーダーを変える。
またはOnInitDialogでSetFocusしてFALSEをreturnする。
0688684NGNG
>687
ありがとうございます。
無事解決しました。
どこで見たのかと思ってたら
自動で作成されたコメント文に書いてあったんですね。
助かりました。
0689デフォルトの名無しさんNGNG
こんにちは。WM_KEYDOWNについて質問させてください。

ドロップダウン式のコンボボックスをサブクラス化しました。
(ちゃんとCOMBOのCHILDのHWNDをとっています)
コンボボックスから1つ選ぶか書き込むかして、その後ENTERを押したら次の動作に移るようにしたいのですが
システムキー(VK_TAB, VK_RETURN, VK_ESC)だけはWM_KEYDOWNにメッセージを送ってくれません。

調べたところシステムキーは別の方法で監視しなければならない様子。
ですがどのサイトを見てもMFC(すいません。MFCについてはよくわからないのですが)らしきもので
コードを打っています。
非MFCではVK_RETURNなどは監視できないのでしょうか。
メッセージ待ちのプログラムのため、GetKeyStateはなるべく使いたくないのですが

//IPコンボのサブProc
LRESULT CALLBACK SubIPComboProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
switch(message){
case WM_KEYDOWN:
return 0L;//ここにF9で印をつけてデバッグモードで起動。確かめました
case WM_CHAR:
return 0L;
}
return (CallWindowProc((long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long))IPComboProc, hWnd, message, wParam, lParam));
}
0690デフォルトの名無しさんNGNG
それらのキーは、ダイアログボックスに逝ってると思われ
0691689NGNG
>>690
お返事ありがとうございます。
SPY++を使って調べたところ、リターンを押すたび

ダイアログボックスには
WM_COMMAND wNotifyCode=1
が

コンボボックスの子供ウインドウであるEDITボックスには
WM_KEYDOWN wParam=VK_RETURN

が流れているようです。
でも何故かEDITに流れるWM_KEYDOWNを捕まえられません。
(色々なサイトを見る限り、やはりシステムキーは普通には捕まえられないもよう)

WM_COMMAND wNotifyCode=1
を捕まえて処理しようかとも考えたのですが、本質を調べるかぎり
あまりよろしい方法では無いように思えました。
最後の手段として考慮しておきます。

なんとかEDITに流れるWM_KEYDOWNを捕まえられないものでしょうか…
0692デフォルトの名無しさんNGNG
>>691
  case WM_GETDLGCODE:
    return DLGC_WANTALLKEYS;
0693デフォルトの名無しさんNGNG
void Test(LPCTSTR);
こういう関数があったとして、
CString cs="Test文字列";
Test(cs);
引数にCString型を直接渡すのはいけないのでしょうか?
Test((LPCTSTR)cs);
とすべきでしょうか?
かなり前に直接CString型を渡すと
operatorが呼ばれないから、とか聞いた覚えがあるのですが、
昔の話しなのでどこで見たのかわからなく、忘れてしまったので困ってます。
つまり
Test(cs);
これは駄目でしょうか?
0694デフォルトの名無しさんNGNG
> Test(cs);
> これは駄目でしょうか?

OK。
0695694NGNG
>694
あっそうなんですか、
今までLPCTSTRに渡す時は欠かさず
キャストしてました。
全部修正しなくちゃ。。
ありがとうございました。
0696693NGNG
>695
すみません、名前間違えました。
>695は私です。
0697デフォルトの名無しさんNGNG
明示的にキャストしているのをわざわざ
直す必要も無いがする
0698LPCTSTRへのキャストNGNG
ただし、CString::Format()や printf系みたいな可変引数リストをとる関数に
CStringを渡すときは明示的な LPCTSTRキャストが必要、とMSDNにあるね。
0699デフォルトの名無しさんNGNG
テキストエディタっぽいものを作りたいのですが、
アドバイスお願いします。

編集画面で、スペースや、タブ、改行、EOFなんかを見えるように
記号で表示する機能を、なるべく少ない労力で実装するには、
どうするのが良いでしょう?
何か参考になりそうなことがあれば、お教えください。
0700デフォルトの名無しさんNGNG
>>699
EDITコントロール使うの?
それとも自分で全部作るの?
MFC使うの?

いや、700とりたかっただけなんだがな
0701デフォルトの名無しさんNGNG
>>700
うーん。MFCは使おうと思うんですが、
(リッチ)エディットコントロールは使って可能であれば、
使いたいです。
というか、何から調べていけばいいのやら、
わからないという状態です。
これを実現しているソフトって、
普通は、全部自前で処理しているんですかね?
0702700NGNG
>701
ヽ(´ー`)ノ 700トレタウレシーナ
0703デフォルトの名無しさんNGNG
>>702
ヽ(´ー`)ノオメデトウ
というか、RichTextコントロールの後ろの親ウィンドウに、
描画するとそれっぽく見える気がするけど、
それでいいのかしら?
0704700NGNG
>>703
ヽ(´ー`)ノ ワーイ、アリガトウ
わかんないからここでもいってみたら
http://www.codeguru.com/editctrl/index.shtml
http://www.codeguru.com/richedit/index.shtml

>というか、RichTextコントロールの後ろの親ウィンドウに、
>描画するとそれっぽく見える気がするけど、
http://www.codeguru.com/richedit/Overlay.shtml
にてるね(多分、よくみてないし)
0705デフォルトの名無しさんNGNG
>>704
サンキュ。
でも、スマヌ。
やってみたら普通にRichEditコントロールに描画できました。
0706デフォルトの名無しさんNGNG
>>705
         ./;;;;;;;;;;;;;;;;;;;;∧;;;;;;;;;/>;;;;;;;;;;;;;;、;;;;iヽ.
         ./;;;;;;;;;;;;;;;;;;;;;;;;;/ i;;;;;;;/´ \;;;;;;;;;;;;;;|;;;ヽ.
 |l ====   /;;;;;;;;;;;;;;;∧;;;;/′ !;;;;/.‐''~,;;'\|,, \;;;;;;;;;ヽ.
 i| ,,,,     // /;;;;/  |;/,,,~ 'V  i|゜   .|l .゙'>;; ヽ;i、
 .|! '''''==  /  .i;;;;ノ ;´″ .)      ゙\,,,ノ"  .|.] .|;;;l
   =||=!!;;,   /;;/ .゙'-=-"           .i ゙,,ノ;;;;;
    |i "   /´|      .,,,.--''''“゙゙゙~i、    「´;;;;;;;;;;
  ||      ヽ,.|    r'"゙`      .゙i、  /;;;;;;;;;;;;;;;
  .l|,/ll .//     ゙|   .|         ヽ,,/´;;;;;;;;;;;;;;;;;
  ||/ ヽ="      `\,,,,,|       ._,,/;;;;;;;;;;;;;;;;;;;;;;;
   ii          :|;;;;\ .._,,,.--イ'''゙゙`/、;;;;;;;;;;;;;;;;;;;;;
   |レ='''"       .|;;;;;;;; ̄;;;;;;;;,/..!、,/:::|''\;;;;;;;;;;;;;;;;;
  <<    o Oo   |;;;;;;;;;;;;;;;;;ノ i:::::゙゙゙:::::::::|  \;;;;;;;;;;;
   ゙''====  ●   |;;;;;;;;;;;;/ |::::::::::::::::::::|   \;;;;;;;

0707デフォルトの名無しさんNGNG
http://techtips.belution.com/ja/vc/0012/
上記にあるサンプルを組み込んでビルドすると、
 'SPI_GETFOREGROUNDLOCKTIMEOUT' : 定義されていない識別子です。
と言うエラーメッセージが出ます。

#include "WINUSER.H"を追加してビルドしても改善されません。
WINVERの値を調べたところ0x0400となっていたので、これが原因だと
思っています。

以上までの背景から下記のどちらかを行いたいのですが、どのように
すればいいのでしょうか?
 1.WINVERの値を0x0500以上に変更する。
 2.その他の方法で上記エラーメッセージを回避する。
開発環境はWinMe+VC6です。
0708デフォルトの名無しさんNGNG
ハァ?

> 1.WINVERの値を0x0500以上に変更する。
> 2.その他の方法で上記エラーメッセージを回避する。

試してみればいいじゃん
0709デフォルトの名無しさんNGNG
>708
どのように試せばいいのかよくわからなかったので、、、
#defineWINVER 0x0500
#include "WINUSER.H"
こうしても
ソース中の
int a = WINVER;
の値は0x0400となってしまいました。
0710707NGNG
もう少し詳しい情報を
1.VC6++の新規作成でMFCを使用したダイアログベースのアプリを
 作成中。
2.707のサンプルを組み込んだのは"CxxxxDlg"
3.#define WINVER 0x0500を試したのも"CxxxxDlg"
4.int a = WINVER;を試したのはOnInitDialog関数内
以上のような状況です。
0711デフォルトの名無しさんNGNG
_WIN32_WINNT
0712デフォルトの名無しさんNGNG
プロジェクトの設定かstdafx.hの戦闘で定義しろ
0713707NGNG
>712
これで上手くいきました。
どうもありがとう。
0714デフォルトの名無しさんNGNG
コンボボックス自体の高さ(展開時の高さではない)って変えられないのでしょうか?

これでは変わらない↓
SetWindowPos( hCombo, NULL, 0, 0, x, y, SWP_NOMOVE | SWP_NOOWNERZORDER );

エディットコントロール(ID=1001)の高さ変えてもだめですた...
0715デフォルトの名無しさんNGNG
VC++で、Web上のファイルのタイムスタンプを取得するのはどうやるんですか?
0716デフォルトの名無しさんNGNG
httpで公開されているファイルなら、ヘッダの
Last-Modifiedでも見なさい。
0717デフォルトの名無しさんNGNG
>>714
フォントの高さに合わせられるんじゃないの?
それか、オーナードロー。
0718デフォルトの名無しさんNGNG
>>714
っていうか何でそんなことしたいのか理解できねえ。
0719デフォルトの名無しさんNGNG
Win32API質問箱にも書いたのですがレスがつかないので、
こちらにも書かせてもらいます。

スレッドを使うLIBをDLLから間接的に呼び出しているのですが、
クライアントが終了すると、(DLL_PROCESS_DETACHに制御が移る前に)
LIBのスレッドがクリーンナップを経ずに強制終了してしまいます。

クライアント ==> DLL ==> LIB
DLL in
LIB in
クライアント in
クライアント out <<-- ここでLIBのスレッドが強制終了
LIB out
DLL out

スレッドを使っているLIBを安全にDLLから呼び出す方法はありますか?

もう一つ、クライアントでMFCを使っていると、LIBで確保しているメモリの
誤リーク検出をして、非常に鬱陶しいので、こっちもお願いします。
0720デフォルトの名無しさんNGNG
>>719
そのLIBには作ったスレッドを終了させる関数は用意されていないの?
LIB作ったやつに聞いたほうがいいと思うけど
0721699NGNG
>>699です。
再描画が必要になるつど、表示している文字の位置を全て計算しなおして、
デバイスコンテキストを取ってクライアント領域に描画していく方法では、
重すぎてダメでした。
もし、似たようなことを実現しているソースをご存知の方は、
お教えください。
今の方法を効率化していくしかないでしょうか?
0722デフォルトの名無しさんNGNG
>>721
もう少し詳しく何をやっているか書いた方がアドバイスしやすいと思われ。
その説明じゃ内部処理が重いのか描画が重いのかすら分からん。
0723デフォルトの名無しさんNGNG
>>721
emacsもvimもsakuraもソース公開されてるぞ
0724699NGNG
>>722
すみません...
コントロールはリッチエディットコントロールを使っています。
描画自体は、単純なドットとかで試しているので
重くはないと思います。
(別にスペースなどのキー入力を取って、
一字ずつ描画したりもしてみましたが、こちらは軽いです。)
リッチテキストコントロールのGetCharPosで、
文字位置を取得して全て描画するようにしているのですが、
多分これがまずいと思います。
配列に文字の座標を記録して、
必要のある分だけ配列に記録した座標を変更する
という方法を試そうかと思っているのですが、
どうも、発想から間違えている気がして相談しました。
スペースなどのフォントを自作して、その部分だけ、
入れ替えて誤魔化すとかできないかなとかも考えているのですが。
うーん...
>>723
ありがとうございます。探してみます。
0725デフォルトの名無しさんNGNG
え?リッチエディット使ってるのか?
>>723で紹介したのは全部自前で作ってる奴だ。
0726699NGNG
>>725
いえ。参考になります。
楽だと思ってリッチエディットで始めたのですが、
コントロールの機能自体と自作部分とで二重に描画することに
なるし、融通が利かなくて全然楽じゃないので、
中途半端に既存のコントロールを利用するより、
初めから作った方が良いかもしれません。

ちょっと、自分のサイトを更新するのが面倒で
ツールを作ろうと思っただけなのですが、
ますます面倒な深みにはまってる次第です...
0727722NGNG
>>724
俺もクライアント領域に自分で描画してやってるのかと思ったぞ。
リッチエディットでどこまでできるかは知らんけど、最終的に本格的なものを
考えているのならコントロールに頼らずに作るしかないと思われ。
0728699NGNG
>>727
紛らわしい書き方で、すみませんでした。
リッチエディットだと、
大きいファイルを読むと辛そうとか、不都合が多そうなので、
自作の線で行ってみます。
お二人とも、ありがとうございました。
0729デフォルトの名無しさんNGNG
>>728
まぁ、挫折しない程度にほどほどに。
ソースが簡単でわかりやすいエディタといったらUranusがある
たしかNoahの作者が作ってたものだとおもうから、検索してさがして。
ものすごく小さい(バイナリもそうだけど、ソースが)ので、
最初に見るのには良いと思う。
0730デバッガのデバッグ?NGNG
Microsoft Visual C++ .NET(スタンダード)で、

int _tmain(int argc, _TCHAR* argv[])
{
unsigned char a;
a = 130;
printf("%d\n", a);
return 0;
}

のプログラムでprintfの前でブレイクして a の値を
デバッガで表示させると、0 ってでる。
printfの実行結果はもちろん、130。
a の値が 60 とか、200だとデバッガでもちゃんと表示される。
なんでやねん!!!
0731デフォルトの名無しさんNGNG
>>730
まあ落ち着け
0732デフォルトの名無しさんNGNG
>730
混合モードでどうなってるか見てみたら?
0733デバッガのデバッグ?NGNG
a = 200んとき;
00411C80 mov byte ptr [a],0C8h
a = 130んとき;
00411C80 mov byte ptr [a],82h
で、これ実行するまえは両方共ごみがはいってて
この行実行後、a = 130 んときは、ローカル変数の
ウィンドウが 0 って変わる。200んときは200。
おそらく、デバッガの表示だけのバグかと思うんやけど、
どう実装したら、こんな不思議なバグが盛り込めるんだ?
こんな変なの俺のんだけ?
0734デフォルトの名無しさんNGNG
マイクロソフト サポート技術情報 - JP452156
[VC70] 符号なし char型変数に代入された値 130 がデバッガで正しく表示されない

この資料は以下の製品について記述したものです。
・Microsoft Visual C++ .NET Standard

【現象】
例)
int _tmain(int argc, _TCHAR* argv[])
{
 unsigned char a;
 a = 130;
 printf("%d\n", a);
 return 0;
}
このようなプログラムで printfの前でブレイクし、a の値をデバッガで
表示させると、0 と表示されます。printfの実行結果は "130"です。
a の値が 60 や、200 など 130以外だとデバッガでもきちんとひょうじされます。

【状況】
マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。
0735デフォルトの名無しさんNGNG
Q456479 : Visual C++ .NET デバッガの表示問題に関する修正プログラム
ダウンロード サイズ: 312kB

この修正プログラムによって、MSVC++.NETのデバッガで符号なし char型
変数に代入された値 130 がデバッガで正しく表示されないという問題が修正
されます。今すぐダウンロードして、130が表示されるようにしてください。
0736デバッガのデバッグ?NGNG
【注意事項】
 但し、上のパッチを投入しても131は正しく表示されません。
 131を表示させるには Q456480 を参照してください。

笑)
どーやら 0x81〜0x9f の範囲やとあかんみたい。
で、ウォッチウィンドウの中で
(WORD)a
とかすると、ちゃんと130で表示される。
ますます、どーゆー実装してるか謎だな、VC++.NET
0737デフォルトの名無しさんNGNG
> どーやら 0x81〜0x9f の範囲やとあかんみたい。
ShiftJISで…対応する文字がない範囲だなぁ。
0738デバッガのデバッグ?NGNG
をぉ、なるほど。たしかにデバッガは対応する文字も表示するなぁ。
で、対応する文字がなかったら、値もなかったことにするのか(ーー#
0739デフォルトの名無しさんNGNG
int使うべきところでcharを使うのがどうかしている。
0740デフォルトの名無しさんNGNG
unsigned char でなく,BYTEを使いなさいってこった
0741デバッガのデバッグ?NGNG
>739
730のコードは、単に分かりやすいようにサンプル示しただけ。
もしや、整数はすべてintって思い込んでる?

>740
BYTEなんて標準の型やないねんから、使うかどうかは、その時しだいだろ。
それに、BYTEでも結果はいっしょだぞ。

どーせ、突っ込むなら、>737のような、鋭い突っ込みを。
0742デフォルトの名無しさんNGNG
>>741
> もしや、整数はすべてintって思い込んでる?

なぜこんなレスをするのかわからん。
0743デフォルトの名無しさんNGNG
VisualStudio.NetでコンパイルしたらDX8.0aのサンプル(チュートリアルの三角形がくるくるまわるやつ)が正常に動きませんが、VC++6.0でコンパイルすると正常に動きます。なぜですか?
0744743NGNG
8.1のをlib/includeディレクトリに移したら直りました。どうも。
0745デフォルトの名無しさんNGNG
VCで質問です。
デバッガ上で関数からリターンするときに戻り値を無理矢理trueからfalseにしたりできますか?
0746デフォルトの名無しさんNGNG
>>745
できるっす
0747デフォルトの名無しさんNGNG
>>745
関数から戻った直後にクイックウォッチにある戻り値を書き換える
(整数なら)eaxを書き換える

お好きにどうぞ
0748デフォルトの名無しさんNGNG
>746-747
ありがとう
0749デフォルトの名無しさんNGNG
mciSendCommand使ってMIDI再生してるんですけど
音量とテンポなどをかえるにはどうすればいいんですか?

0750デフォルトの名無しさんNGNG
MCIは各種のストリームメディアを統一的に扱うためのインターフェースなので
それぞれでの細かい制御はできない。やるんなら低レベルオーディオAPI使うか
DirectMusicを使え。低レベルオーディオならmidiOutOpenあたりでぐぐってみれ。
0751デフォルトの名無しさんNGNG
テンポなら変えられるぞ
0752デフォルトの名無しさんNGNG
BOOLとboolの違いとは…
0753デフォルトの名無しさんNGNG
>>752
BOOL たぶん4バイト
bool たぶん1バイト
0754デフォルトの名無しさんNGNG
>>753
出直せ
0755bloomNGNG

http://www.leverage.jp/bloom/start/
0756デフォルトの名無しさんNGNG
BOOLってCでも使えるようにWindows.h辺りが勝手に定義してる
だけじゃなかったっけ?(適当)
0757デフォルトの名無しさんNGNG
>>756
Cでも使えるように、という意図かどうかは知らないけど、
そんな感じ
0758デフォルトの名無しさんNGNG
別スレにて同じ質問をしたのですがまったくレスがつかなかったので
申し訳ないのですがこちらでも質問させてください。

StyleXPのようなソフトを作成しようとしております。
そこで手始めとしてシステムファイルの置き換えを行おうとしているのですが
OSのシステムファイル保護が働いてしまい、うまくいきません。
OSはWinXP Proで開発環境はVC++.NETです。

今まで試してみたのは、Administratorでログオンした後レジストリの
HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Winlogon に
SFCDisable を追加して DWORD値を 1 にした後

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce に
置き換えたいシステムファイルをコピーする実行ファイルを記述してから
再起動を行ったのですがやはり元のファイルに戻されてしまいます。

どのような手順を踏めばシステムファイルを置き換えることができるのでしょうか?
0759デフォルトの名無しさんNGNG
dllcache内のファイルを先に置き換える
0760699NGNG
>>729
レス遅くなりましたが、ありがとうございます。
まだ画面表示部分しかとりかかってませんが、
自前で処理する方がかえって楽なようです。
実はC++歴が一ヶ月程度なので、いい練習にもなりそうな気配です。
0761デフォルトの名無しさんNGNG
VC++6.0のnamespaceにバグがあると思うんですが、どう言う条件で露呈するんでしょうか?

後、.NETでは直っているのでしょうか?
0762デフォルトの名無しさんNGNG
入門者なのですが

winAPI関数を利用して、YES NOクイズを作る。

Messageboxをつかって作るとあるのですが

どう造ればいいのかわかりません
おしえてくれませんか?
0763デフォルトの名無しさんNGNG
>>762
いや。
0764あNGNG
>762
>winAPI関数を利用して、YES NOクイズを作る。
>Messageboxをつかって作るとあるのですが
どこで見たか知らんけどあるというからには
あるんだろう。
書いてある通りやってみたら?

int iRet=MessageBox("君可愛い?","質問",MBICONSOP MBYESNO);
if(iRet==IDYES)
   MessageBox("付き合ってください!!");
else
MessageBox("・・・・・・");

こんな感じなのかなぁ。


0765デフォルトの名無しさんNGNG
>>759
レスありがとうございます。
試しに RunOnce に
dllcache と System32 のファイルを置き換えるバッチファイルを登録してみたのですが
書き換わってくれませんでした。
どうやら思った以上に難しそうです...
0766デフォルトの名無しさんNGNG
>>765
system/readonly/hiddenを解除したか?
0767デフォルトの名無しさんNGNG
>>761
friend 演算子の振る舞いがおかしかったりする時があったような。
SP 当てたら直ったような。
0768デフォルトの名無しさんNGNG
VC6sp5 のデバッガで $S〜 っていう変数が突然出現するんですが、何ですか?
0769デフォルトの名無しさんNGNG
>>766さん
各属性を解除してみたところdllcacheは無事に置き換えができました。
しかし肝心のSystem32のファイルが使用中ファイルになってしまっているようで
上書きコピーができませんでした。
ただ、やり方はわかりましたので色々なページを参考にしてこれからやっていこうと思います。
どうもありがとうございました。
0770デフォルトの名無しさんNGNG
>768
operator
0771デフォルトの名無しさんNGNG
VC++6.0Proでプロファイラを使いたいんですが、使えません。
プロジェクト設定>リンク>一般>の所にある「プロファイルを行う」
のチェックボックスをチェックチェックしても、OKボタンを押した瞬間に
「プロファイルを行う」の文字列が「インクリメンタルリンクを行う」に
変化してしまいます。

そのままビルドしても、プロファイラを使おうとしたら「プロファイラを行う設定でビルドされてません云々」
となってしまいます。
0772デフォルトの名無しさんNGNG
>>771
確かコンパイルオプションのところに /profile を追加すればできたと思います。

便乗して質問なんですがVC++.netでプロファイラはどうしたら使えますか?
0773デフォルトの名無しさんNGNG
>>771
マウスで選択するのを諦めてホットキー(Alt+E)を押せばいい
0774デフォルトの名無しさんNGNG
>>771 VC6のバグ
0775デフォルトの名無しさんNGNG
VisualC++ 6.0 です。
自作スタティックリンクライブラリ(クラスライブラリになります)を作成して、
それを他から使うということをやろうとしてます。
ワークスペースの新規作成のときに「Win32 Static Library」を選んでやってます。

作成する自作クラスを Aとして、さらにそのAが内部で使う自作クラスをBとします。
当然 A.cpp B.cpp そして A.h B.h を作りますが、作成されるのは A.lib ですよね。

そしてライブラリを使用する側は A.lib A.h B.h をプロジェクトに入れる
ことになると思いますけど、ヘッダを一緒のファイルに書いたりってのはダメですか?
一つの *.lib に対して *.h が二つってのが何かスマートじゃない気がするんです。
0776デフォルトの名無しさんNGNG
>>775
べつにいいんじゃないの。(1つでも2つでも)
C.hを作ってそのなかに
 #include "A.h"
 #include "B.h"
って、書いて使うときはC.hだけインクルードするでもいいけど
0777デフォルトの名無しさんNGNG
>>775
A.hでB.hをincludeすれば良いんじゃないのかと…。
0778デフォルトの名無しさんNGNG
>>776-777
あぁ〜すみません言葉足らずでした。
>>777のように書いてるから、ライブラリ使う側は
A.hだけインクルードすればいいんです。

「使う側のプロジェクトに、二つのヘッダーファイルを用意させる」
というあたりがちょっと気になってるんです。
俺はあまり経験ないから変なこと気になってるだけで、
普通そんなもんだよ、ということならそれはそれでいいんです。
0779デフォルトの名無しさんNGNG
>>778
ヘッダーファイル自体はプロジェクトに追加する必要は無い。
0780775NGNG
>>779
あぁ気付きませんでした。ビルドするとき同一ディレクトリに
入れてあればいいんですね。では気にせずこのままやります。
答えてくれた方々、どうもありがとうでした。
0781デフォルトの名無しさんNGNG
ダイアログベースでファイラーみたいなものを作ってます。
それで、CListViewコントロール(レポート形式)にある項目を、ドラッグ元に出来るように
したいのですが、どのような手順が必要でしょうか?
0782デフォルトの名無しさんNGNG
libname.h

#include "a.h"
#include "b.h"
0783781NGNG
それらしいものをみつけました…が、リストビューのLVN_BEGINDRAGで
記述して見ましたが、だめでした。

CSharedFile sf(GMEM_MOVEABLE|GMEM_ZEROINIT);

DROPFILES df;
df.pFiles = sizeof(DROPFILES);
df.pt.x = 0; df.pt.y = 0; df.fNC = FALSE; df.fWide = FALSE;
sf.Write(&df,sizeof(DROPFILES));

sf.Write("\0",1);
char path[_MAX_PATH];
strcpy(path,"C:\\test.file");
sf.Write(path,strlen(path)+1);

sf.Write("\0",1);
HGLOBAL hMem = sf.Detach();

COleDataSource *pSource= new COleDataSource;
pSource->CacheGlobalData( CF_HDROP , hMem);
DROPEFFECT result = pSource->DoDragDrop();

delete pSource;
0784デフォルトの名無しさんNGNG
リストビューにラストオペレーションしたいのですが、やり方を知っている方がいたら教えてください。
よろしくお願いします。
0785784NGNG
すみません。誰もわからないのでしょうか?
0786デフォルトの名無しさんNGNG
>>784
ラストオペレーション???
その操作をしたら、アプリが強制終了する・・・とか?
0787デフォルトの名無しさんNGNG
リ ス ト ビ ュ ー 最 後 の 作 戦
0788デフォルトの名無しさんNGNG
>>787
カコイイ!!
0789デフォルトの名無しさんNGNG
DestroyWindow(hwndListView);
0790デフォルトの名無しさんNGNG
>>787
主語が違うので、意味が全然違う
0791デフォルトの名無しさんNGNG
struct {
 char a1;
 char a2;
 char a3;
 char a4;
 int  i;
}

と

struct {
 char a1;
 int  i;
 char a2;
 char a3;
 char a4;
};

ではメモリのとられ方が違いますが、やはり意図的に上の方を書いたほうがいいのでせうか?
0792デフォルトの名無しさんNGNG
>>791
> ではメモリのとられ方が違いますが、やはり意図的に上の方を書いたほ
> うがいいのでせうか?

やりたいことによる。
0793791NGNG
>>792
下の方を意図的に使う理由ってあるのでしょうか?
0794デフォルトの名無しさんNGNG
(´-`).。oO(なんで char a1,a2,a3,a4; て書かないんだろう…)
0795デフォルトの名無しさんNGNG
(´-`).。oO(なんで配列つかわないんだろう…)
0796791NGNG
>>794
あくまでも質問の意図をわかりやすくするため

>>795
あくまでも質問の意図をわかりやすくするため
0797デフォルトの名無しさんNGNG
>>793
ファイル上のデータがそう言う配置になっていて、直接読み書きしたい時
等。まあ、パディング等のいやらしい問題があるので、VC なら
#pragma pack() を使う必要があるかも。

プログラム中でしか使わないなら、下の方を積極的に使う理由はないと思
う。
0798デフォルトの名無しさんNGNG
>>796
(´-`).。oO(なんで >>794, >>795 って書かないんだろう…)
0799デフォルトの名無しさんNGNG
バッファローマンまではまだいいが、サンシャインマンはどう見ても人間じゃないと思うのだが。
どうだろう、みんな
0800デフォルトの名無しさんNGNG
今だ!800番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0801デフォルトの名無しさんNGNG
今だ!801番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0802デフォルトの名無しさんNGNG
>791
下の方を意図的に使う理由を強引に考えれば、
「ちょうどintにあたる部分が4Byte境界にあって、1バスサイクル得する可
能性がある場合。」
かな?
ただこんなこと気にしてC使うんだったら、アセンブリ言語使った方が簡単。
実質、下を使う理由は無いと考えていいと思う。
0803デフォルトの名無しさんNGNG
> 「ちょうどintにあたる部分が4Byte境界にあって、1バスサイクル得する可
> 能性がある場合。」

でもVCのデフォルトのままならどちらも4Byte境界にあるわな。
意図的に半端な境界に置かない限り。
0804デフォルトの名無しさんNGNG
>803
うそです。
0805802NGNG
俺は >803 の言うとおり、4Byte境界にしか配置されない。
ホントのところはどうなのかな。
802は間違いかも。
0806デフォルトの名無しさんNGNG
MFCを利用したソフトをVC.NET Proで
スタティックリンクしてexeを作成したいのですが出来ません。
確認したいのですがスタティックリンクするとmfc70.dllとmsvcr70.dll、無しで
VC.NETで作成されたソフトが動くんですよね?他のdll使わなければ。
ソリューションエクスプローラで該当のプロジェクトを右クリック->プロパティを
開いて、全般->MFCの仕様の項目で
「スタティックライブラリでMFCを使用する」
を選択しているのですが、それでコンパイルしても実行側PCで
前述の二つのDLLを要求され起動できません。
どこが間違っているのでしょうか?
それともスタティックリンクというもの自体をなにか勘違いしているのでしょうか?
ほんと困り果てています、ご指摘お願いします。
0807デフォルトの名無しさんNGNG
>>802-805
VC++ では、構造体のアライメントは「いずれかのメンバの最大のアライ
メント要件に合わせる」となっているから、普通に使っている限りは a1
は4バイト境界に配置される。更にディフォルトでは、最大7バイトま
でのパディングを行うから、下の例では a1 の後ろに3バイトのパディ
ングが追加されて、i も4バイト境界に置かれるので、>>802 のような
ことは起こらない。ただし、#pragram pack(1) とか、コンパイラオプ
ションの /Zp とかを使って、かつポインタをキャストしてわざと変な
ところに配置すれば >>802 のような事を起こすことは可能。
0808デフォルトの名無しさんNGNG
>>806
実行側がWin95とか。
0809806NGNG
>808
いや、そんなことはないです。
困ってます。。
0810デフォルトの名無しさんNGNG
デバッグ側だけ設定して実行してるのがリリース側とか。
0811デフォルトの名無しさんNGNG
>>809
実行側がMacとか。
0812806NGNG
>810-811
やっぱり設定あってますよね。
プロジェクトの設定ダイアログの
プレビュー撮って来ました。
見てもらえませんか?
http://www.geocities.co.jp/SiliconValley-Oakland/1693/a.jpg

これでビルドしたら起動側でmfc70.dllいらないはずですよね?
↓が上のプレビューの設定のままビルドしたやつです。
もしよかったら起動だけでいいので試していただけませんか?
Win2k上で試しましたがやはりmfc70.dllを要求され起動できませんでした。
http://www.geocities.co.jp/SiliconValley-Oakland/1693/test.lzh
なんでなんだろう。。
0813811NGNG
俺に対してのレスでも有るのか、、
ちょっとびっくり。
話は変わってexeを直接実行するのは、ちょっと抵抗あるんじゃないかな?
0814デフォルトの名無しさんNGNG
>>812
DependencyViewer で覗いた感じ、
MSTFUNC12.DLL (CBrowseForDirectory とか COutFile なるクラスが入ってる模様)
にリンクされてて、そのDLLがmfc70.dllを必要としているようだが。
0815806NGNG
>813
すみません、あまり深い意味はないです。
確かにそうですね、exeは怖いですものね。
でもこうするしか方法が思いつかなかったんですよ。
プレビュー見ていただいて解決することが
一番の望みなのですが。
私自信あまりテストしていただける人、環境がないので
なにか勘違いしてるかもしれません。
一応弁護しておくとexeですが悪意のあるコードは
書いてないです。
よろしければ、、お願いいたします。
不可でもなにか確認事項などあれば
アドバイスいただければ幸いです。
0816806NGNG
>814
目からうろこが落ちたかのような衝撃を受けています。
確認してきます!
0817806NGNG
>816
確かにMstFunc12.DLLが作成する際の
設定がスタティックリンクになってませんでした。
そこで>812のプレビューと同じように
変更し、リビルドしたのですが、
結果は変わりませんでした。
絶対これだと思って喜んでいたので残念です。
ちなみにMstFunc12.DLLをスタティックリンクに変更した際、
/MDオプションをつけろ、とエラーが発生したので
つけました。
ほんとなんでなんでしょう。
0818デフォルトの名無しさんNGNG
まず実行側の環境書こうよ。
0819デフォルトの名無しさんNGNG
あ、すまん2kでも動かないのか
0820デフォルトの名無しさんNGNG
Wizardで作ったスケルトン(コードは変えない)を、今回と同じ設定でビルドして動かしては?
それが動かなければ設定に原因があるし、それが動けばコードに原因があるってことで。
0821806NGNG
>820
そうですね、そういう方法思いつかなかったです。
今やってみたのですが、
1.ダイアログアプリ単体をスタティックリンク
成功(mfc70.DLL無しで起動)
2.自作したDLL(MstFunc12.dll)と暗黙のリンク
失敗(起動側でmfc70.dllを要求される)
でした。
MstFunc12.DLLの方の設定は使う側と同じで
MFCの使用欄は「スタティックライブラリでMFCを使用する」
が選択しています。
よくわかってませんがスタティックリンクする設定に変更すると
/MDオプションをつけろ、という警告が出たので/MDオプションを付けるよう変更しました。
MstFunc12.DLLは自作したよく使う関数、クラスなどをエクスポートしています。
SHBrowseForFolderなどをラップしたクラスなどです。
なぜMstFunc12.DLLはMFCライブラリとスタティックリンクする設定に
なっているのにいざ使用するときになるとmfc70.dlllを要求されるのでしょうか?
逆にどんなコードを書けばスタティックリンクしてるのにmfc70.dllを要求されるのでしょうか?
心当たりでも構いません、みなさまよろしくお願いします。
0822デフォルトの名無しさんNGNG
MSDNのMFC DLLより(VC6だけど)

メ モ MFC を共有 DLL またはスタティック ライブラリのどちらで使用するかは、
[プロジェクト設定] ダイアログ ボックスの [一般] タブで設定します。
ただし、拡張 DLL は、MFC の共有 DLL バージョンで使用するように設計されています。
このため、拡張 DLL に対しては、この設定を変更しないでください。

0823デフォルトの名無しさんNGNG
MSDNより/MDは「DLL使いますよ」というコンパイラオプションだから、そのDLLが原因だろうね。
その自作DLLはMFC拡張DLLかな?これもMSDNよりDLLを使うように設計されてるから、
設定でスタティックリンクにしても「DLLを使え(/MDをつけろ)」と怒られたのでは。
結果的に/MDをつけてビルドしたからDLLを要求されて当然、と。
0824806NGNG
>822-833
わかりやすい解説ありがとうございました。
私のレベルではすんなり納得できる内容ではありませんが、
つまりはMFC拡張DLLの場合はスタティックリンクできない、
というふうに理解しておきます。
回避方法としては、MFC拡張DLLとして作られた
今のDLLを通常DLLとして作成しなおすことで
回避できそうなのでそっち方面で作業を進めていきたいと思います。
非常に助かりました。
ありがとうございました。
0825806NGNG
様々なアドバイスくださった方々ありがとうございました。
たった今mfc70.dllなしで起動できました!
今まで出来なかった原因は
>822-823さんの言われていたとおりで
>824に書いたとおりMFC拡張DLLから
通常DLLに変更したら無事解決しました。
ありがとうございました!
0826デフォルトの名無しさんNGNG
無効領域が発生してWM_PAINTがキューに入れられた後、WndProcにWM_PAINTが送られる前に、
VaidateRectで無効領域をすべて有効化したとしたら、WM_PAINTはWndProcに送られずに、キューから削除されるのでしょうか?
0827 NGNG
>>826
WM_PAINTはキューに入るわけではないので、そのような動作はしない。
0828826NGNG
>>827
ProgramingWindowsによればWM_PAINTはメッセージキューに送られると書いてありますが。
0829デフォルトの名無しさんNGNG
WM_PAINTは来る。
0830826NGNG
>>829
すみません。できれば内部的な動作も教えていただけるとありがたいのですが。
0831NONAMENGNG
来るんじゃないの?
つーか実験しる。
0832デフォルトの名無しさんNGNG
WM_PAINTだけはキュー内での処理がちょっと特殊だから
>>827は勘違いしていたとか。
0833デフォルトの名無しさんNGNG
>>830
WM_PAINTで描画した内容が更新リージョン内であれば反映されるけど、
更新リージョンが存在しないので、結果が表示に反映されないだけ。
0834 NGNG
>>832
具体的な実装を知らなくても別に構わないけどね。

ttp://msdn.microsoft.com/library/en-us/dnwui/html/msdn_getpeek.asp
ttp://www.codeproject.com/system/simpletime.asp
0835デフォルトの名無しさんNGNG
自前のコントロールのスタイル設定を標準と同じように
WS_〜といっしょに指定したいのですが、
どのビットを割り当てても良いのかさっぱりわかりません。
どこかに資料内でしょうか
0836デフォルトの名無しさんNGNG
ツリービューコントロールのどの項目が選択(クリック)されたか
知る方法がわからなくて困ってます
WM_NOTIFYやTreeView_HitTestあたりを調べてみましたが、うまくいきません
どなたか教えてください
VC6.0,SDKです
0837826NGNG
みなさん、返答ありがとうございます。
もうひとつだけ聞いてもいいでしょうか?

WM_ERASEBKGNDは、無効領域ができてWM_PAINTがWndProcに送られる前にWndProcに送られますが、
このメッセージはキューに入れられるのでしょうか?
それともWM_PAINTが送られるときに発生して送られるのでしょうか。
知っている方がいたら教えてください。よろしこ。
0838826NGNG
追加質問です。

UpdateWindowはキューにWM_PAINTがあるかどうか見て、あるときにWndProcに送るのでしょうか。
それとも無効矩形があるかどうかで判定し、あるときはWM_PAINTを送る。メッセージキューにあるWM_PAINTは無効矩形がなくなったのでOSによって消される。
どちらが正しいのでしょうか。それともほかの動きをしているのでしょうか。
知っている方がいたら教えてください。お願いします。
0839デフォルトの名無しさんNGNG
何かがあれば模しなければWM_PAINTと無効領域を登録する
更新領域が無くなってもWM_PAINTは破棄されない。
0840デフォルトの名無しさんNGNG
>>836
項目が選択されたというイベントを取りたいならTVN_SELCHANGED
今なにが選択されているか知りたいならTreeView_GetSelection
0841デフォルトの名無しさんNGNG
>>835
下位16ビット。
0842デフォルトの名無しさんNGNG
>>837
BeginPaintの中からSendMessageされる。
0843デフォルトの名無しさんNGNG
>>841
ありがとう!
0844デフォルトの名無しさんNGNG
>>840
レスサンクスです!早速やってみます
0845デフォルトの名無しさんNGNG
自分で作ったライブラリ(*.lib)を使うとき、いちいちプロジェク
ト作るたびに追加するのが面倒です。
プロジェクトの新規作成のときにデフォルトで自分のライブラリを
参照するようにできませんか?
0846デフォルトの名無しさんNGNG
#pragma comment(lib,〜)
を*.hに書けばいいような
0847デフォルトの名無しさんNGNG
画像処理でHough変換のプログラムがうまくかけません
助けてください
0848デフォルトの名無しさんNGNG
で?そのレスだけでどうしろと?
0849デフォルトの名無しさんNGNG
マルチなので放置して。
0850デフォルトの名無しさんNGNG
今回managed C++でwindowsアプリケーションを作成しているのですが、
Formが起動する前に、DOS窓が開いてしまいます。
このDOS窓が開かないようにするにはどのようにすればよいのでしょうか?
0851デフォルトの名無しさんNGNG
DLLの中にCStringなどのクラスを内部で使用している
クラスを作成しました。
動作環境としてCStringなどのクラスを使用することは
何らかの制限がかかるのでしょうか?
つまりめんどくさいなどの理由で用意されているクラスを
多様しないの方がいいのか?という疑問です。
また、作成時スタティックリンク、ダイナミックリンク
どちらにしても動作環境は変らないのでしょうか?
作成したDLLを使用する際、VBで使うことも考えているのですが、
CStringとか使ったらVBで使えないようなイメージがあります。
そういうこと解説しているページ、その他アドバイスなどいただけませんか?
よろしくお願いします。
環境はVC.NETです。
よろしくお願いします。
0852デフォルトの名無しさんNGNG
まじめに聞いてるつもりなの?
0853851NGNG
>852
いたって真面目なのでご教授いただけないでしょうか?
よろしくお願いします。
0854851NGNG
どうやら初心者スレへ移動した方がよさそうなので
移動します。
板汚しすみませんでした。
0855デフォルトの名無しさんNGNG
質問が多すぎる。答えるのが面倒。だからだ。
0856デフォルトの名無しさんNGNG
ダイアログベースのプログラムで、右クリックしたときに
ポップアップメニューを表示させたいんですけど、
チェックボックスとかはClassWizardで見る限り
右クリックのメッセージを受け取ることが出来ませんよね?
こんなときは、どうしたら右クリックでポップアップメニューを表示できるようになるんでしょうか?
0857デフォルトの名無しさんNGNG
>>856
体調が悪いのですが答えさせていただきます。
WM_RBUTTONDOWNのメッセージの処理から呼び出せばすむだけかと。
0858856NGNG
>857
体調が悪い中申し訳ありません。

それはつまり、ダイアログクラスに送られた
WM_RBUTTONDOWNのメッセージを監視すると言う事ですよね?
ですが、その方法ですとアクティブなチェックボックスの
上で右クリックをしてもメッセージがダイアログクラスに送られませんよね?
チェックボックスに関連したポップアップメニューを表示させたいと思っていますので、
アクティブなチェックボックスの上で右クリックした時に
WM_RBUTTONDOWNのメッセージをどこでもいいので受け取る方法を
教えていただけないでしょうか?
0859デフォルトの名無しさんNGNG
>>858
MFCは知らないんだけど、チェックボックスをサブクラス化して
そのメッセージを処理すれば?
ちなみに俺ならWM_CONTEXTMENUを使う。
0860856NGNG
>859
ありがとうございます。解決しました。
WM_CONTEXTMENUの存在を知りませんでした。
もう少しよく調べてから質問するようにします。
0861デフォルトの名無しさんNGNG
CButtonの派生クラスでWM_CONTEXTMENUを処理。
0862デフォルトの名無しさんNGNG
ActiveXコントロールで、ウインドウを作成するコントロールを作るにはどうしたらよいのでしょうか。
Webブラウザ上でそのコントロールを起動し、ブラウザとは別に新たなウインドウを作成し、その中で自分で作成したプログラム結果を表示したいので、よろしくお願いします。
もちろん、開発環境はVisualC++6.0です。
よろしくお願いします。
0863デフォルトの名無しさんNGNG
>>862
どうしたらいいってウィンドウを作ればいいじゃないか。
なにが聞きたいのかがわからん。
0864862NGNG
すみません。もう少し詳しく書きますね。
ActiveXコントロールウイザードで作成されたサンプルプログラムでウインドウを作成するにはどうすればよいのでしょうか。
私は、MFCを用いてコンストラクタでウインドウを作成する自作クラスを作成したのです。
それを外部変数で定義すると、コンパイルはできるのですが、リンク作業で英語のエラーメッセージが発生するのです。
そのため、そのコントロールが動きません。
メッセージマップ:ON_WM_CREATE( )を新たに定義して、その関数内で自作クラスを定義しようしても、MSDNライブラリで定められている関数:afx_msg int OnCreate( LPCREATESTRUCT );の引数をどのように与えればよいのかがわかりません。
どのように作成すればよいのか、考え方を教えていただきたいのです。
0865デフォルトの名無しさんNGNG
>>864
すなおにDelphiつかえよ
0866デフォルトの名無しさんNGNG
>リンク作業で英語のエラーメッセージが発生するのです。
マ板の歴史のなかで、具体的なエラーメッセージを出せなかった
香具師がマトモだった例は少ない。
0867864NGNG
だせないんです。許してください。
想像でいいのでアドバイスお願いします。
0868デフォルトの名無しさんNGNG
>>867 偽者氏ねよ
0869デフォルトの名無しさんNGNG
>>868 = 862
まあまあ、キミがエラーメッセージを出さないから変な偽者がでるんだろ。
0870デフォルトの名無しさんNGNG
1つのプロジェクトでCとC++両方のコードを同時に使用ってできるんでしょうか?
0871デフォルトの名無しさんNGNG
>>870
できます。
0872デフォルトの名無しさんNGNG
>871
ありがとうございました。
もうちょっと方法を調べてみることにします。
0873デフォルトの名無しさんNGNG
どこで聞けばよいのかまよったのですが。
office製品についてくる OLE Controlのライセンスって
どうなっているんでしょうか
office製品を持っていないユーザに再配布出来るものでしょうか?
英文へのポインタでもかまいませんので心当たりがあれば情報をお願いします。
0874デフォルトの名無しさんNGNG
質問
かちゅうしゃの 右下の書き込みがあるところは、なんですか
テキストボックスでしょうか
0875デフォルトの名無しさんNGNG
>>874
ぼくのかちゅうしゃは上下2分割になっているので、右下がどれを指しているのか
わかりませぬ。
spy++でも使えば何か分かるんじゃないですか?
0876デフォルトの名無しさんNGNG
Create で作ったウインドウのメニューに印刷とかファイル保存とかをつける方法を
お願いします。
0877デフォルトの名無しさんNGNG
>>876
AppendMenu
0878876NGNG
>877
早速ありがとう、調べてみます。
0879デフォルトの名無しさんNGNG
ダイアログボックスを作る時、以下の様にして作成してるんですが
DialogBox(NULL,MAKEINTRESOURCE(ABOUT_DLG),hWnd,(DLGPROC)AboutDlgProc);

呼ばれた先の関数にパラメータを1つ増やして(FlgData *FlgIni)以下のようにしているのですが、
LRESULT CALLBACK OptionDlgProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp,FlgData *FlgIni){

DialogBoxの呼び出し側でこのパラメータを渡すのってどうやるのでしょうか?

DialogBox(NULL,MAKEINTRESOURCE(ABOUT_DLG),hWnd,
 (DLGPROC)AboutDlgProc(
  〜,
  〜,
  〜,
  &FlgIni,
 )
);
こんな感じで呼び出すとは思うのですが指定するパラメータがどうもわかりません。(汗
0880879NGNG
すいませんOptionDlgProcとAboutDlgProcを間違えました・・。
本筋とは関係ないので気にしないでください。m(__)m
0881879NGNG
DialogBoxParamを使って出来るようなりました。
お騒がせしました。m(_ _)m
0882デフォルトの名無しさんNGNG
DialogBoxにスタティックテキストを貼り付けているのですが、
プログラムでテキストプロパティを変更する方法が分かりません。
(可視、無効などが設定できるところ)
SendMessage()でやるんでしょうか?
0883デフォルトの名無しさんNGNG
日本語のアプリがあって、ダイアログリソース IDC_DIALOG1があったとします。

IDC_DIALOG1をコピーして ID変えずに「言語:英語(ニュートラル?)」な
ダイアログリソースを用意しておけば、日本語以外の環境で実行したとき、
勝手にそっちが使われるんでしょうか?
0884デフォルトの名無しさんNGNG
>>882
( `Д) <EnableWindow()/ShowWindow()
/(ヘ つ )ヘ 

0885デフォルトの名無しさんNGNG
>>883
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q169483&
0886デフォルトの名無しさんNGNG
おいおい、可視・無効にしたいんじゃなくて、そのプロパティウィンドウで
文字列を設定する方法がわからないって言ってるんだろ?

>>882
[キャプション]に入力する。
0887883NGNG
>>885 おぉ。サンクスコ。
0888882NGNG
>884
うわ・・・こんなに簡単だったんですか!
ありがとうございます。

ついでに質問ですが、ダイアログにフォーカスが移ったときに、
アクセラレーターが使えなくなっちゃうのですが、どうすれば
使えるようになるのでしょうか?
開発環境はWin32SDKです。
0889885NGNG
>>883
日本語版もあったので載せとくね。
http://support.microsoft.com/default.aspx?scid=kb;ja;JP169483
0890デフォルトの名無しさんNGNG
>888
モードレスダイアログ使う。
0891デフォルトの名無しさんNGNG
サービスパック5をDLして実行したんですが,セットアップに使ったファイルを削除しても大丈夫でしょうか?
0892デフォルトの名無しさんNGNG
ライブラリのリンクで困っています。

DLL で動的にリンク、DLL を用いないで静的にリンクをライブラリ毎に
設定することは可能でしょうか?

具体的には、boost の regex 関係のライブラリは静的にリンクし、MFC など
一般的なライブラリは動的にリンクしたいと考えています。

環境は Visual Studio .NET です。
0893デフォルトの名無しさんNGNG
>>892
無理です。
0894デフォルトの名無しさんNGNG
みんな.netか。
さみしいな。
0895デフォルトの名無しさんNGNG
寂しいな…VC6から乗り換えるほどの魅力ってそんなにあるのかね?
0896デフォルトの名無しさんNGNG
まあ、VC6 の template 不備には不満が残る。
0897デフォルトの名無しさんNGNG
>>891
消しても実行には問題ありませんが、再セットアップ時に再ダウンロードする必要があります。
0898デフォルトの名無しさんNGNG
('-`).。oO(なんで char a1,a2,a3,a4; て書かないんだろう…)
0899デフォルトの名無しさんNGNG
>>898
独り言ですか?
つーかそんな変数名はつけるな。
0900891NGNG
>>897
サンクス
もうとっくに削除してしまいましたが
0901デフォルトの名無しさんNGNG
すごい基本的なこと聞いて申し訳ないのですが・・・
VC++ではフォームの継承はできないんでしょうか?BorlandC++では
できたんですが・・・。C#ではできるらしいんですが、VC++ではひょっとして
できない?
0902煽りNGNG
Borland C++Builder ではできたかも知れないが
Borland C++ では素ではできないと思われ
Borland C++ で実現したならその方法で VC++ でもできるかと
0903デフォルトの名無しさんNGNG
VC++で日本語のアプリを作成し、
英語対応するためにダイアログリソースの複製を
英語(U.S.)などで作るとすごく縦長になりますが、
これを日本語と同じような高さにするよい方法があれば
教えていただけないでしょうか?

以下の理由で、英語のダイアログリソースを一つ一つ編集して
高さを調整するという方法は避けたいのです。
 ・英語化するダイアログが多数ある
   →やたらと時間がかかる
 ・右下に表示される座標の値が日/英で違う値になる
   →メンテが困難

よろしくお願いします。
0904デフォルトの名無しさんNGNG
>>903
フォント変えてみそ
0905デフォルトの名無しさんNGNG
903ではないが、英語のダイアログって、フォント何にしとけば良いの?
0906903NGNG
>>902
ありがとうございます。

フォントをArialからMS Sans Serifにかえてサイズを
2ポイントくらい小さくしたら
リソースエディタ上では日本語と同じくらいの
レイアウトになるのですが
実際にビルドして英語OSで動かすと
やっぱり縦長になってしまうのです。
0907903=906NGNG
すみません、誤爆です。
>>902 ではなく >>904 です
0908デフォルトの名無しさんNGNG
>>906
MS PGothicにしてみたらどお?
手でリソースファイルを直さないとダメだけど,これならほぼ同じかと。
0909デフォルトの名無しさんNGNG
あるアプリのダイアログ CBarDialog を書いています。

struct Foo { int x; int y; int z; }; があって、その集合 std::vector<Foo> source; を
CBarDialog内に保持しているのですが、このベクタの内容をダイアログ上のCListCtrl
(か何か)に表示しているとき、画面表示とベクタの内容の同期をとるのに一番綺麗な
方法はどんなのでしょうか? vectorでなくて、MFCのコレクションを使うようにコー
ドを書き換えることは多分可能です。

教えてください。
0910デフォルトの名無しさんNGNG
OwnerData、OwnerDrawする。
同期の必要はない
0911デフォルトの名無しさんNGNG
>>910
OwnerDataでgoogleしてもほとんどhitしないのですが・・
なにか参考になるページへのポインタをいただけませんでしょうか...
0912デフォルトの名無しさんNGNG
>>911
何で OwnerData だけ検索して出ないって諦めるわけ?
0913903=906NGNG
>>908
ありがとうございます。
MS Pゴシックでもダメでした。
ダイアログエディタ上は同じように見えるけど、
英語OSで起動すると縦長になってしまいました。


で、結局いろいろやってみて
Lucida Console
が日本語と一番近いと思われる
レイアウトになったので、これに決めました。

今いじってるアプリは初回起動時に
OSデフォルトのフォントが設定されるようになっており、
ユーザーによるフォントの変更も可能なので
とりあえずはこの内容で問題なさそうです。

みなさん、ありがとうございました。
091415ヶ月いまだ若葉マークNGNG
質問があってまいりました。

他のアプリケーションの持っている変数に値を入れる、もしくは
手に入れることは可能でしょうか?(前者だけでいいです)

読み込み元 : ダイアログベース
他のアプリ : MDIのフレーム式

ぜひともよろしくお願い致ししますm(__)m
0915デフォルトの名無しさんNGNG
VC6 (WIn98SE) でコンソールアプリを動かす時、マウスカーソルがコンソールに
奪われてしまって難儀しているのですが、回避する方法はありますか?
0916 ◆i.HARPeeuc NGNG
>>914
WriteProcessMemory() で他プロセスのメモリを書くけど、普通どのメモリ領域が
目的の変数なのかわからないし、「他のアプリ」 の仕様がわからないなら何も
できないよ。
「他のアプリ」 も自分の作ってるプログラムなら、DDE とかウィンドウメッセージ
とかで通信した方が安全。
0917デフォルトの名無しさんNGNG
>>913
「MS Pゴシック」(日本語)じゃなくて「MS PGothic」(英語)で
やってみた?

これだとダイアログエディタ上では同じには見えなくなるが
動かすと一緒だったりすると思うのだが…

まぁ解決したようならいいか。
0918デフォルトの名無しさんNGNG
>912
厨房だから
0919913NGNG
>>917
今やってみましたが、そのフォントはフォント選択コンボでは表示されなかったです。
rc ファイルを直接編集で指定するのでしょうか?
0920デフォルトの名無しさんNGNG
質問です。

スタティックリンクライブラリを3つ(A.lib, B.lib, C.lib)と作って
C.lib (リンク)→ B.lib (リンク) → A.libという構造をとったら
『warning LNK4006 〜はB.lib(〜.obj)で定義されています。2 つ目以降の定義は無視されます。』
というリンク警告が発生してしまいます。

リンク警告を消す方法を教えてください。
0921デフォルトの名無しさんNGNG
同 じ 定 義 を 消 せ
0922デフォルトの名無しさんNGNG
>>921
920のレスだと思うんですが、回答ありがとうございます。

920の質問、言葉が足りなかったみたいなので補足します。

VC6で発生せず、VC7で発生するバージョン固有の問題です。

A.lib, B.lib, C.libのリンクは、全てライブラリで外部プロジェクトから参照を簡単にするためのヘッダーファイルを
用意し、#pragma comment(lib,〜)とライブラリに使われている全てヘッダーファイルをインクルードしています。
(ヘッダーの先頭に#pragma onceもつけてあります。)

他プロジェクトから使用するときには、ライブラリで用意したヘッダーファイルをインクルードしています。

今回の場合、A.libで作ったクラス(又は関数)をB.libでもC.libでも使っています。

#pragma onceを使っている以上、同じヘッダーファイルを何度インクルードしても、同じ定義が2重定義になるはずが
ないのですが...。
リンカーは直接(.obj)ファイルを参照しているため、「2重定義」と警告を出しているみたいです。

MSDNで書かれている対処方法も一通り試しています。
(MSDNの記述と状況を判断する限り、深刻な問題でもないようなので、気分の問題なのかもしれません。)

コンパイル警告なら#pragma warning(disable:〜)で警告を無視できるのに、リンク警告は警告を無視する方法すら判らないのです。

もちろん、警告を無視するのでなく、警告をなくすほうがベターなのですが。
0923デフォルトの名無しさんNGNG
>922
チミはpragma onceの効能も、libの意味合いも判っていないものと思われる。
・libはdllと違い、所詮はobjが集まっただけのようなものである。
・pragma onceが有効なのは、1翻訳単位である。
よって、複数の翻訳単位の間では、当然定義は多重になりうる。
0924デフォルトの名無しさんNGNG
翻訳って古い言葉だよね。
わかりにくいから使うのはやめてほしい。
知識人ぶってるだけ。
0925デフォルトの名無しさんNGNG
>>924
( ´,_ゝ`)フーン

>>922
どこかで同名の実体が複数作られてるはずだ。絶対。

ヘッダー内に書いていいのは一般的に、型や関数の宣言 (プロトタイプ)
か、inline 化できる定義だけなんだけど、それ以外のもの書いてないよな?

#pragma once は、同じファイルに対して同じヘッダーを 2 回以上読み込む
のを抑止するだけで、書いてある内容を 2 回以上コンパイルさせない機能
ではない。
0926デフォルトの名無しさんNGNG
>923,925
回答レスありがとうございます。

確かに#pragma onceは1個のオブジェクトファイル作った時点で
無効になってしまいますね。

>>923
「スタティックリンクライブラリがオブジェクトファイルの集まり」
ということを忘れてました。

>>925
■A.libを参照しているB.libを作った時点で、A.libとB.libの両方に
同名の実体が出来て、A.libをC.libで使ったもんだから警告になった
のでしょうね。(エラー内容を見ると、そんな感じですので)
■確認してみたところ、ヘッダーファイルに指摘されたようなメンバー
関数・関数宣言をしているところは無いですね。
PS)インライン化している関数はなぜか警告が出ないんですよね。

現状と回答の結果を考慮すると、今のままでも問題ないかなぁ〜。
0927デフォルトの名無しさんNGNG
*
↑
この演算子ってなんて読むの?
0928デフォルトの名無しさんNGNG
>>927
スレ違い。
0929デフォルトの名無しさんNGNG
こめ
0930デフォルトの名無しさんNGNG
>>919
そだよー。って最初に言ったじゃんw
中身は単なるテキストだからメモ帳なりでエディットしる。
0931デフォルトの名無しさんNGNG
コールバック関数のRasDialFunc1()で、メンバ変数/関数を参照する方法はあるのでしょうか?
RasDialFunc1()はstaticで宣言してます。
0932デフォルトの名無しさんNGNG
>>931
何のメンバか知らないけど、RasDialFunc1() を friend にして、アクセスしたい
インスタンスの参照かポインタをグローバルに置けばいいんじゃない?
RasDialFunc1() の定義をいじれないなら、代理のラップ関数でも。
0933デフォルトの名無しさんNGNG
VC6で
#define TBL_SIZE 100
と定義したコードを書いていて、
数学関数が必要になったので、
#include <math.h>
と付け加えたら「TBL_SIZEが再定義されています」
と警告が出るようになった。
math.hを検索してもTBL_SIZEなんて無いし、ヘルプで
見てもTBL_SIZEなんてないし、なんでだろう?

#include <math.h>
の行を消したら警告が出なくなるので、
これが原因であることは間違いないと思う。
0934デフォルトの名無しさんNGNG
>>933
以下コードで再現せず。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define TBL_SIZE 100
int main()
{
char buf[TBL_SIZE];
fgets(buf, sizeof(buf), stdin);
printf("%f\n", sin(atof(buf)));
getchar();
return 0;
}

あなたがおかしいと思っているところ以外の場所に問題があると思われ。
0935デフォルトの名無しさんNGNG
>>934
リビルドしたら出なくなりました。
おさわがせしました。
0936デフォルトの名無しさんNGNG
ActiveXコントロールと普通のコントロールの違いを教えてください。
例えば、ActiveXコントロールのListViewというのはSysListView32に比べて
どういう利点や欠点があるのですか?
0937デフォルトの名無しさんNGNG
VC++.NETなんですが、
C++用のドキュメント自動生成 ツール付いてないのでしょうか?
(c#はあったと思ったんですけど)
0938デフォルトの名無しさんNGNG
VC++勉強しはじめたけど、慣れるのが大変。
おまいらよくこんなもん使えるな。頭が痛くなってくる。
0939デフォルトの名無しさんNGNG
>>938
バファリンないしタイレノールが足りないだけです。
0940デフォルトの名無しさんNGNG
>>937
VC.netの単体製品は判らないけどVS.netではVCに限り、機能限定ながらC#と同じ
ドキュメント自動生成ツール『XMLドキュメント』が使えるよ。
C#のようにコメント作成の補助はなく、全て手動で記述しないと駄目だけど...。
[ツール]-[Webページのビルドコメント]で実行。
.hファイル内で、コメントをつけるといいみたい。

// <summary>ベースクラス</summary>
// <remarks>ベースクラスの解説</remarks>
class CBase {};

// <summary>派生クラス</summary>
// <remarks>派生クラスの解説</remarks>
class CDerive : CBase {
// <summary>メソッド1</summary>
// <param name="arg">引数1</param>
// <returns>戻り値</returns>
// <remarks>メソッドの説明</remarks>
int Func(int arg);
};
0941デフォルトの名無しさんNGNG
>>936
正確ではないけど、こんな感じかな?
☆通常コントロール
    Windowsが用意したGUI部品。
    種類が少ない。(グリッドコントロール等は無い。)
☆ActiveXコントロール
    標準コントロールを使いやすくしたもの。それ以外のものも多数ある。
    種類が豊富。
    メーカーが提供する独自ActiveXコントロールなどもある。
    言語非依存。(COMに準拠してる言語。VB,VC等)
    MSDNヘルプで日本語のヘルプがついている可能性が高い。
     (VBでの使い方だが、基本的な使い方はVCも一緒)
    レジストリに登録されていないと使えない。
     (Win95,WinNTだと、標準でインストールされているActiveXは少なく
     自分でインストールしなくてはいけない場合が多々ある)
    通常コントロールより重たい。
    通常コントロールで出来て、ActiveXだと出来ない処理があるときがある。
ListViewとSysListView32は比べたことはないので、自分で調べてください。
ActiveXになっている場合、大体は標準コントロールより使いやすいはずです。
0942デフォルトの名無しさんNGNG
>>941
> 言語非依存。(COMに準拠してる言語。VB,VC等)
「COM に準拠」 を 「非依存」 と呼んでいいかは疑問。

> MSDNヘルプで日本語のヘルプがついている可能性が高い。
具体的に何のコントロールを指してる?
それは ActiveX に対して一概に通用する?

> 通常コントロールで出来て、ActiveXだと出来ない処理があるときがある。
これって何の処理?
0943デフォルトの名無しさんNGNG
一回コピーしてから,visual c++にテキスト文書のプログラムを貼り付けると,
インテンドが、そろってしまってみにくくなるのですが,元のインテンドにするにはどうしたらいいですか?
0944デフォルトの名無しさんNGNG
>>943
> 一回コピーしてから,visual c++にテキスト文書のプログラムを貼り付けると
意味曖昧。
0945デフォルトの名無しさんNGNG
>>943
Cygwinでも入れてidentでもかければ?
オプション細かく設定しないとなかなかお望みの結果にはならんだろうけど。
0946デフォルトの名無しさんNGNG
>>942
こまかいツッコミですね。
前もって「正確ではないけど」と書いておいたんだけど...

>言語非依存〜
ピュアJava以外でWindowsでGUI開発できるメジャーな開発ツールなら、ほぼ大丈夫だと
思って非依存と書いたけど、まぁJavaの例もあるし正確にはCOM準拠なんで書き足して
おいた。はじめから「COM準拠の言語」なんて書くと難しく感じるんで。

>MSDN〜
ListBox等のコモンコントロールやシェル系のコントロールのヘルプ。
VB6のヘルプと、VCでAPIのCreateWindowで作成する場合に調べるヘルプと比べてみて。
CreateWindowからリンクでたどってみると日本語のヘルプなんて全然無いから。
あとActiveXだからといって日本語で書かれているというわけではない。
古くからあり、よく使われそうなActiveXは日本語化されていることが多いってこと。

>通常コントロールで〜
標準コントロールをラッピングしたActiveXは、全ての操作が公開されているとは
限らないってこと。SysInfoというActiveXは、システム情報を簡単に取得できるけど、
ほんとに欲しい情報はAPIから直接入手する場合が多い。
0947942NGNG
>>946
コモンコントロールのラッパーの事言ってたわけね。
了解。納得した。

でも、ActiveX はコモンコントロールのラップの為にあるわけじゃない。
なのに、いきなり SysListView32 をラッパーと決め付けて、コモンコントロール
との対比をするのはどうかと思うよ。
コモンコントロールとそのラッパーの対比だと、明記してるならともかくね。

あの説明だと ActiveX について誤解を招くよ。
少なくとも漏れは誤解した。
0948デフォルトの名無しさんNGNG
MSDNを2002年1月以降のやつにアップデートしたら
VCでF1検索出来なくなりましたがそういうもんなんですか?
0949デフォルトの名無しさんNGNG
>>948
2002/01 版が無いから何とも言えないけど、ツールのオプションのヘルプシステムは
どうなってる?
0950デフォルトの名無しさんNGNG
関係ないかもしんないけど
2002年1月以降のMSDNには
.Net 専用と書いてあったような気が。。。
0951デフォルトの名無しさんNGNG
VC6は2001年10月版までだよ。
2002年1月は.NET。書いてある。
0952デフォルトの名無しさんNGNG
話しそれるけど
2001年10月版はリンク切れが激しくない?
俺は2001年4月版を使ってる。
0953948NGNG
ありがとうございました。
おとなしく2001年版使っときます。
0954デフォルトの名無しさんNGNG
俺のマシンに入ってるのは
>November 2001 Edition
だな…
0955デフォルトの名無しさんNGNG
それはSDKじゃないかと…
0956デフォルトの名無しさんNGNG
あ、MSDNってSDKとは別にアップデートできる物なのか。
いつもSDKごと入れ替えてたから知らんかった…
0957デフォルトの名無しさんNGNG
有料だがな
0958デフォルトの名無しさんNGNG
次期VS.NETについて
http://www.zdnet.co.jp/news/0211/09/nebt_08.html

>C++コンパイラは、ISOが6年前に設定した標準に初めて大部分準拠する。
>MicrosoftはC++コンパイラについて同標準に90%準拠済みだとしていたが、
>新版では98%近い準拠になる。
0959デフォルトの名無しさんNGNG
次スレの季節。
漏れには立てられない。

次こそはスレタイ 「Visual C++ 相談室」 にしてくれよ。
0960デフォルトの名無しさんNGNG
つーかここって必要とされてるのかな。
初心者用VCスレもあるしWin32APIスレもあるしMFCスレもあるしATLスレもあるし
0961デフォルトの名無しさんNGNG
>>959
新スレ

VisualC++ 相談室【9】
http://pc3.2ch.net/test/read.cgi/tech/1036897197/l50
0962小人NGNG
ダレモイナイ…
0963小人NGNG
1000getスルナライマノウチ…
0964小人NGNG
ランタンタン♪
0965小人NGNG
ランタンタンタン♪
0966小人NGNG
|д゚)……………
0967小人NGNG
2重カキコモ ナンノソノ
0968小人NGNG
ランタンタンタン♪ ランタンタンタン♪
0969小人NGNG
ランタンタン♪ ランタンタン♪
0970小人NGNG
今だ!970番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0971小人NGNG
。。。
0972小人NGNG
ランタンタンタン♪
0973小人NGNG
マダマダサキハトオイ…
0974小人NGNG
フー…
0975小人NGNG
|д゚)……………
0976小人NGNG
ランタンタン♪ランタンタンタンタン♪
0977小人NGNG
ランタンタンタンタンタン♪ ランタンタンタン♪
0978小人NGNG
(;´Д`)……………
0979小人NGNG
ランタンタンタンタン♪ ランタンタンタンタン♪

  ランタンタンタンタン♪  ランタンタンタンタン♪
0980小人NGNG
今だ!980番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0981小人NGNG
|д゚)
0982小人NGNG
ランタンタンタン♪

  ランタンタンタン♪
0983小人NGNG
ランタンタン♪
0984小人NGNG
ランタンタンタンタン♪
0985小人NGNG
ランタンタン♪
0986小人NGNG
ランタンタン♪ ランタンタンタンタン♪
0987小人NGNG
|д゚)…
0988小人NGNG
ランタンタン♪ランタンタンタン♪
0989小人NGNG
モウスコシ…
0990小人NGNG
今だ!990番ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
                  ∧∧       (´⌒(´
            ⊂(゚Д゚ )≡≡≡(´⌒;;;≡≡≡
        ⊆⊂´ ̄ ⊂ソ  (´⌒(´⌒;;
           ̄ ̄ ̄   ズザーーーーーッ
0991小人NGNG
991
0992小人NGNG
ランタンタンタン♪
0993小人NGNG
ランタンタンタンタンタンタン♪
0994小人NGNG
994ゲットズザー。
0995小人NGNG
・・・
0996小人NGNG
|д゚) sage
0997小人NGNG
997.
0998小人NGNG
|ー゚)…
0999小人NGNG
....
1000小人NGNG
               ┌┐                                ●●●
    人          ││                              ●\  ●\
   ノ二\  ナ ゝゝ   V                 ●●●        ●\     ●\
     /   / 乙 つ  O               ●\   ●\      ●\       ●\
                  ●●●        ●\     ●\    ●\       ●\
                 ●\   ●\      ●\      ●\    ●\        ●\
       ●●\     ●\     ●\    ●\       ●\   ●\        ●\
        ●\    ●\      ●\    ●\       ●\    ●\       ●\
        ●\    ●\      ●\    ●\      ●\    ●\     ●\
       ●\    ●\       ●\    ●\      ●\      ●\    ●\
       ●\    ●\      ●\    ●\     ●\        ●●● \
      ●\     ●\      ●\      ●\   ●\           \\
      ●\     ●\     ●\        ●●● \
     ●\      ●\   ●\           \\\
     ●\        ●●● \                              ┌┐ ┌┐
    ●\          \\\      ┣━┳┃┃      ┃          ││ ││
   ●●●\                      ┃   ┃┃┃ ┣┓ ━╋ ━╋  V   V
   \\\\                     ┛     ━┛ ┃   ┏┫ ┏┫  O  O
                     (´´
     /■\    )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。