VS2005のコンポーネント – プログラミング – Home

通知
すべてクリア

VS2005のコンポーネント


かとん
 かとん
(@かとん)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

こんばんわ。
WinXP VC7.0 MFCで開発しようとしています

VC6.0での
「プロジェクト」-「プロジェクトへの追加」-「コンポーネントおよびコントロー
ル」の挿入はVisualStudio2005ではどこにありますか?

また、ボタンコントロールなどのイベントハンドラの返り値を変更するには
どうすればよいですか?現在すべてvoidになってしまいます。
VC6.0では自分で変更できたのですが、今では変更するとコンパイルエラーになって
しまいます。

ご教授のほどお願いいたします。


引用解決済
トピックタグ
超初心者
 超初心者
(@超初心者)
ゲスト
結合: 23年前
投稿: 139
 

VC6でもイベントハンドラの型は固定じゃないの。
メッセージマップ定義のマクロがキャストしていたのでコンパイルエラーを検出できない
という指摘が昔からあり、それが厳格化されたんじゃないの(推測)。
たまたま今まで動いていただけだと思う。

実際int型の戻り値ってEAXレジスタ渡しだからスタック壊さないし
EAXを無視するか、戻り値とみなすかの違いだけで
たまたま動かすことが出来る。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

超初心者さんの
> イベントハンドラの型は固定じゃないの。
に同意見ですね。
イベントハンドラの関数のプロトタイプは決まっているので
変えてはいけないと思います。
超初心者さんの話からすれば、マクロ定義の所為でコンパイルエラーになって
いなかっただけの話ではないかと思います。
ちなみにイベントハンドラの返り値っていったいどういう使い方をしていたんでしょう。
通常はフレームワークが呼び出すので確認しようが無いと思いますけれど。


返信引用
かとん
 かとん
(@かとん)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

レスどうもありがとうございます。
イベントハンドラは他クラスから呼ぶときに使いました。
本当はやっちゃいけないことですか?

ところで、コンポーネントの挿入はなくなってしまったのでしょうか?


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
 

プロトタイプと違う型での関数呼び出しは、undefined behaviorかな。
やっちゃいけないことだと思いますが。直接関数コールしたということなら、
面倒でもイベントハンドラとは別の関数を作って委譲するべきでしょう。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

> 面倒でもイベントハンドラとは別の関数を作って委譲するべきでしょう。

補足しますと、イベントハンドラの中の機能をごっそり
別に作成した自分でコールする為の関数に移します。
イベントハンドラは、自分で作成した関数を呼び出すようにします。
これでコードは一箇所でイベントハンドラの型を変える必要もなくなります。
というか、普通はこっちの方法で対処します。
ハンドラの関数の型を勝手に変えてしまうとフレームワークの内部で
不都合が起こらないとも限りませんし。
フレームワークがその型にしているのに意味がある場合は
フレームワークが誤動作するかもしれません。

ちなみにVS2005を使っているならVC++8になると思います。
ただし、こう書くよりもVS2005でVC++非CLI MFC使用と書いた方が伝わりやすいです。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ちなみにですが、コンポーネントの追加ですが、

VS2005のHELPでCOMコンポーネントで調べると出てきますが、
メニューのツール-ツールボックス アイテムの選択で出てくるダイアログに
COM コンポーネントのタブがあります。
このタブのリストコントロールにPC内にインストールされているCOMが
全て表示されるので必要なCOMのチェックボックスをチェックすれば、
ツールボックスに表示されると思います。
試して見てください。

「コンポーネントの挿入」という概念そのものが無いようですね。


返信引用
かとん
 かとん
(@かとん)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

レスどうもです。

Visual C++ コンポーネントはないのですか?
ダイアログバーとか、プログレスダイアログとか便利だったのですが・・・。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

見た限りでは見当たりませんね。
私自身、Visual C++ コンポーネントは殆ど使っていなかったので
良くわかりませんけれど、見当たらないと言う事は無くなったんじゃ
ないでしょうか。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました