[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/05 22:03 / Filesize : 248 KB / Number-of Response : 984
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★初心者にVisual C++を教えるスレ★ Part32



1 名前:デフォルトの名無しさん mailto:sage [2008/10/31(金) 12:16:11 ]
Visual C++入門者・初心者からの質問を、
お兄ちゃんお姉ちゃん達が優しく、時には厳しく回答してくれるスレッドです。

■質問するにあたって
・エラーや警告のときはエラーメッセージを書きましょう。
・開発環境も書きましょう、特にWindowsForm、MFC、Win32アプリケーションの区別。
・できるだけ具体的に。

質問の仕方については次のページが大変参考になります。
www.hyuki.com/writing/techask.html

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

過去スレ、関連スレなどは>>2-5辺り。

796 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 05:29:15 ]
CreateWindowから前の命令についてMSDN引きながら
どういう値が戻るのか、渡すのが正しいのか確認しなよ
それも出来ないならエスパーが来るまで2時間程寝たら?
今のテンパってる状態では何かやってもうまくいかないさ

797 名前:デフォルトの名無しさん [2009/01/31(土) 05:35:25 ]
<例>cin >> a >> b >> c;
scanfを使って一行で表すにはどうしたらいいですか?

798 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:38:18 ]
まずGetLastError()をだな

799 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:44:20 ]
>>795
GetLastError();

800 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 10:48:18 ]
じゃ、俺も
GetLastError()


801 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:29:08 ]
プロジェクトをテンプレートから作成するとき
空のプロジェクトとWin32コンソールアプリケーションとでは
どこがどのように異なるのでしょうか。
VC++は2008 Expressです。

802 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:40:57 ]
質問です。
初心者でもひろってくれる会社はないですか?

803 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 16:43:21 ]
>>801
Win32コンソールアプリケーションだとmain関数入りのソースファイルが初めから追加済み。
空のプロジェクトは本当に空っぽ。

804 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 17:13:58 ]
自分でプロジェクト作って見ればいいだけだろ
お前のVC++は2008 Expressは飾りか?



805 名前:デフォルトの名無しさん [2009/02/01(日) 13:39:52 ]
すいません、昨日の明け方カキコしたものです。ちょっと前まで寝てました。
なんでCreateWindow()でNULLが返るのか分かりました。WinProc()のWM_CREATEの中で
変なことやってました。早く寝るべきだったス。
ありがとうございました。


806 名前:デフォルトの名無しさん [2009/02/01(日) 13:46:36 ]
>>802
ないです。

807 名前:デフォルトの名無しさん [2009/02/01(日) 13:47:54 ]
>>797
int a, b, c;
scanf("%d%d%d", &a, &b, &c);

808 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 19:23:23 ]
>>802
求人サイトで、未経験者可の会社さがせ。

809 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:02:25 ]
けどそういう会社ってブラックな所多いよね。

810 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:38:39 ]
地元で自宅通勤できるならデジドカでもおkだけど、
県外に出てまでデジドカにはなりたくないな。

ところで情報工学科に受かったが、入学前の間このままVCで遊んでいればおk?

811 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 21:47:15 ]
何もしなくても問題ないと思うけどね
TOEICとか英語の資格取る勉強とかすれば?って気がする

812 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:19:10 ]
スレチなのに回答Thanks!
確かに、何も知らない人にも最初から教えてくれるはずだからな。

813 名前:デフォルトの名無しさん [2009/02/01(日) 22:44:30 ]
>>810
私立の情報工学科なんて専門学校と同じだろ?


814 名前:デフォルトの名無しさん mailto:sage [2009/02/01(日) 22:52:43 ]
国立だとどうなの?



815 名前:デフォルトの名無しさん [2009/02/01(日) 22:55:19 ]
国立でも旧帝以外なら屑

816 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:13:57 ]
ダイアログコントロールのプロパティ[Visible]をfalseって裏では何を設定してるんですか?

817 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 01:21:52 ]
英語と苦手だったら数学の復習でもしてれば?
後は仕様書きちんと書いてからソフトを作ってみると良い経験になるかな

818 名前:デフォルトの名無しさん [2009/02/04(水) 01:03:58 ]
いままで、動いていたプログラムが
サービスパック入れたとたん120個エラー。
しかも触ったことも無いヘッダファイルから・・・
 
・・・・orz

こういうことって良くあるんでつか?

819 名前:デフォルトの名無しさん [2009/02/04(水) 01:34:26 ]
VC+++MFCって画面の作り方がさっぱりわかりません

ダイアログベースにするとしょぼいコントロールが数個あるだけで・・・
ドキュメントビューにすると、全く画面が作れないし・・・

どうやってつくるのか、いいHPあったら教えてください

820 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:59:41 ]
質問させてください。

数値のデータが列挙された Excelデータがあります。内容は、IDと、00 や、 02など
見た目では分かりにくいデータです。

Windows SDKを使用して、Excelの値の意味を画面表示することが目的のプログラムを
作成しようと調査しています。

そこで、Accessのデータベースと、Excelのパラメータを比較して画面出力する処理を
考えていますが、そもそもWindows SDKを使って、mdbと接続できるのでしょうか?

821 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 02:26:06 ]
Windows SDKとは関係ありません。
バイナリファイルに自分でアクセスする処理を作って下さい。

822 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:03:19 ]
生APIの海の世界へようこそ 君が今まで居た場所は池にすぎない

823 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 08:27:33 ]
いや、mdbと接続っていうならバイナリアクセスじゃなくて
com使ってexcelやaccessと接続するんじゃないの

office オートメーション

あたりでのキーワードでググってみたら?

824 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 16:43:22 ]
自分はADO使うんだと思った。



825 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 17:29:12 ]
VC++ならDAOでも ADOとDAOは用途似てる上に略式名がふざけすぎていると思うw

826 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 20:33:51 ]
>>819
ダイアログアプリにして
ぺたぺたコントロールを貼り付けていく

827 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:18:03 ]
確かにDialogベースアプリはしょぼい概観。
SDIとかMDIはめんどくさいしほとんど使う価値無し。

最近のアプリ(ウイルスソフトとか)って概観がWebページみたいな感じじゃないですか?
ああいうのってどうやって作るんだろ。
以前DirectXを使ってボタンを描画するライブラリとか見たことあるけど。


828 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:25:07 ]
スキン 貼り絵

829 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 21:55:11 ]
>>828
そんな感じなの?
ふーん。


830 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 11:13:48 ]
Diableベースアプリに見えた

831 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:10:28 ]
VS2008でMFCアプリ作ってみたら、すごいことになってたな。

832 名前:デフォルトの名無しさん mailto:sage [2009/02/05(木) 22:27:41 ]
SP1のスケルトンだなw

833 名前:デフォルトの名無しさん [2009/02/06(金) 00:08:05 ]
>>831
確かに!
.NET不要じゃね?て思っちまった

834 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 03:55:01 ]
クラスをまたがる処理がゴミゴミしてきたのでグローバル変数にしようと思うんですが、
なるべくコードの量を減らしたいので、今、すべての.cppでincludeしてあるstdafx.hを使ってなんとかしたいです。

まずCMainFrameをグローバル変数にしたいのですが、
// stdafx.h
extern CMainFrame* g_pMainFrame;

// MainFrame.cpp
#include "stdafx.h"
CMainFrame* g_pMainFrame;
CMainFrame()
{
 g_pMainFrame = this;
}

MainFrame.cpp内でグローバル変数を宣言しているのにexternするのは変化もしれませんが、
すべてのファイルで共有するのでこれでエラーが出ないようにしたいんです。
どうすればいいでしょうか?



835 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 09:03:48 ]
プリコンパイルヘッダー使ってるならstdafx.h使うのは無理じゃない?
あまりそれ使うのはお勧めしないが、
MainFrame.cppだけプリコンパイルヘッダーはずしてstdafx.hインクルード前に#define入れて
#ifdefでextern宣言飛ばすようにするとか。

836 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:21:44 ]
>>834
#define CxxxApp::GetMainWnd() g_pMainFrame

CMainFrame* CxxxApp::GetMainWnd()
{
return DYNAMINC_DOWNCAST( CMainFrame, m_pMainWnd);
}

837 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:25:17 ]
DYNAMINC_DOWNCAST → DYNAMIC_DOWNCAST

class CxxxApp
{
public:
CMainFrame* GetMainWnd();
}

838 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:29:10 ]
いかん。

#define CxxxApp::GetMainWnd() g_pMainFrame → #define theApp.GetMainWnd() g_pMainFrame


839 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:36:29 ]
MFC使ってるのに少しぐらいコードの量減らしたってほとんど意味ない

840 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 10:45:30 ]
>まずCMainFrameをグローバル変数にしたいのですが、

ってあるからそれ以外にもあるのだろうね、大量にw

841 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 14:32:49 ]
そうなんです、大量にあるんです。
コードの量を減らすのは見やすいようにするためなんですが、なるべく同じ関数は2度と呼び出さなくてもいいように
確保しておきたいんです。ループの中とかでも頻繁にクラス間のメンバ参照を使うので馬鹿にできないんです。
全ファイルにインクルードするのが面倒というか、増えていくファイルで自動で追加されるstdafx.hにglobal.hをインクルードしておくだけにしたいんです。

で1行は必ず自分のポインタを格納したグローバル変数をもう一度externするのをさけたいんです。
#defineで既にexternされている場合か、宣言が既にある場合はその行だけ飛ばすにはどうかけばいいんでしょうか?


842 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:22:23 ]
CMainFrameはたとえが悪かったな。AfxGetMainWndとかあるしな。
global.cpp をつくり変数はそこで定義すればいいじゃない。

よくやる手段としては、ヘッダファイルで
#ifdef EXTERN
#define EXTERN extern
#endif
とかやっといて、cpp1つだけインクルードの前に#define EXTERNとかやる。
stdafx.hを使うのであればmそのcppはプリコンパイルヘッダーを使わない設定にしないとならない。

843 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:22:49 ]
>>841
>>836 以降を実行しろ。グローバル変数になんぞする必要もない。

844 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:23:01 ]
#ifdef EXTERN じゃなくて#ifndef EXTERN だった



845 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:30:44 ]
グローバルはCWinApp派生クラスに一任だぜ 
WindApp派生クラスのヘッダファイルにextern theAppがあるだろ?

846 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 15:55:21 ]
もしかしてexternって、書いたファイルでその宣言を使える用にするんじゃなくて
externが書いてあるファイルをインクルードしておけば、どのファイルからでも使えるようになるんですか?

847 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:03:01 ]
まずインクルードのこと、翻訳単位について勉強だな

848 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:16:01 ]
すまん、本をもう一度読んでからレスを読み返してみるよ
みんなありがとう

849 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:29:21 ]
わかりました。グローバルファイルを別に作る必要すらなかったです。
externの意味を間違えていたのが原因でしたすいません!

// .hのクラスの外(グローバル領域)
extern CMainFrame* g_pMainFrame;

// .hのクラスの中
CMainFrame* g_pMainFrame;

// .cppのCMainFrameのコンストラクタ
g_pMainFrame = this;


850 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 16:41:10 ]
やばい振り出しに戻った

851 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 18:12:17 ]
そもそもグローバル変数にしなきゃならんような設計が間違い

852 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 19:59:56 ]
中途半端にコードだすから・・・
何度こういうケースを見たことか。

853 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 21:51:31 ]
VC++ 6.0 使ってます。
スレッドを生成するのに、JavaのThreadクラスのようなものは無いのでしょうか?

854 名前:デフォルトの名無しさん [2009/02/06(金) 21:52:58 ]
CThread



855 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 22:19:20 ]
MFCごときで作るアプリなんざ、グローバル変数使ったって全然もんだいない。
じゃんじゃん使え。CWinAppの派生クラスに押し込めるとか、そんな糞めんどくさいことするな。
あとアクセス関数とか全然必要ないよ。
全部変数はパブリック。楽で良いぞ。

856 名前:853 mailto:sage [2009/02/06(金) 23:19:37 ]
>>854
ありがとうです。
CThreadはCWinThreadを継承して自分で作るってことですか?
調べてみたらこんなのしかなかったんですが、この方法でよいのでしょうか・・・?
www.tri-field.com/progtips/tips04.html
hp.vector.co.jp/authors/VA014436/prg_memo/windows/vctips/039.html
www.edita.jp/h1ro/one/h1ro8125407.html

857 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:41:56 ]
_beginthreadexつかえ。

858 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:52:15 ]
物凄く初歩的かつ大雑把な質問なのですが、
システムの処理上sqrtやcos,sinをかなり使っていて、
これらの処理が重いということは知っていたのですが、
「最近のPCだと、もちろん重いことには重いがそれほど四則計算と変わりない」と聞きました
実際のところはどうなのですか?

859 名前:デフォルトの名無しさん [2009/02/06(金) 23:54:55 ]
最近のマシンで動作する3Dゲームを見れば分かる。
アレだけたくさんのポリゴンを計算し、それらの表面の光沢を表現し
その膨大な演算を一瞬にしてこなしているだろ?
だから早いんだよ



860 名前:デフォルトの名無しさん mailto:sage [2009/02/06(金) 23:57:03 ]
確かにそうですね。
最近は2次元の計算作業なんて多少無理しても大丈夫なレベルになってるんですね。
ありがとうございます。

861 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 00:03:24 ]
>>860
自分のための処理であるのなら実際に自分が使用する環境で実測してみることをお勧めする
処理速度や計算機リソースをどの程度消費するかなどは結局のところ実際に計ってみないと議論できない面がある
実際に行いたい処理から規模をスケールダウンして実測してみてそこから外挿してそれが無理な処理か大丈夫なレベルか判断

862 名前:デフォルトの名無しさん [2009/02/07(土) 00:17:32 ]
計算機なんて20年ぶりに聞いたw


863 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 04:53:42 ]
FORTRAN屋みたいな奴がいるなw

864 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:16:09 ]
VC2008で操作ミスってソースウィンドウのタブやスペースが
”→”、”・”と表示されるようになったんですが、
元に戻すにはどうしたらいいんでしょうか?



865 名前:デフォルトの名無しさん [2009/02/08(日) 00:24:55 ]
メニューバー→編集→詳細→スペースの表示


866 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:25:25 ]
ageスマン

867 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:25:49 ]
>865
直りました。
ありがとうございます。

868 名前:デフォルトの名無しさん [2009/02/08(日) 20:03:10 ]
VC++9を使いはじめたものです。
タブを押すと押しただけどんどんタブが追加されていくんですが、
これをタブをインデントをそろえるために使えませんでしょうか?
キーボードをEmacsタイプにするのは、ほかのキーバインドもEmacs風になってしまうので、
やめたいです。
よろしくお願いします


869 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:29:42 ]
逆に考えるんだ。
「VSのやり方に合わせよう」と考えるんだ。
みんなそうしているよ。

870 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 20:30:13 ]
そこだけ設定抜きだして入れりゃいいじゃんか

871 名前:デフォルトの名無しさん [2009/02/08(日) 20:36:23 ]
>>870
どうやるんスか?

872 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:37:14 ]
これをタブをインデントを

873 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 21:51:12 ]
>>871
ユーザー設定のコマンドに全部設定あるだろ。
EMACSでやってる欲しい設定だけ拾ってキーに設定するんだよ

874 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:24:54 ]
タブデント!



875 名前:デフォルトの名無しさん [2009/02/09(月) 00:08:29 ]
初心者です。
VC6.0のFormViewで色々実装しています。

ドキュメントクラスのSerialize関数がメニューの[開く][上書き保存][保存]
からしか呼び出されません。

上記のものを消してしまい、後で追加したいのですが何も考えずに追加すると
Serialize関数が呼び出されません。一見[開く]などとたの項目とでは特に
違いがなさそうなのですがSerialize関数を呼び出すにはどうすればよいのでしょうか。


876 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:55:03 ]
追加したコマンドIDは消す前と同じかえ?

877 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 09:58:45 ]
別に新規で作って見てみたら?
それでわからなかったら、Serializeにブレークポイント置いておいて
止まったら呼び出し履歴見てみれば。

878 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 15:54:51 ]
VC++6.0のダイアログベースで作成しているのですが
元のダイアログをAとし、別のダイアログBを作成し、AからBにDoModalを行った後、
Bのダイアログのリストビューのアイテムをダブルクリックした時に、
Aのダイアログにもどり、Aにあるスタティックテキストをそのダブルクリックされたアイテムの
名前に変更したいのですが非常に苦戦しております、、

自分が考えていたのはアイテムがダブルクリックされたときに、
アイテムをグローバル変数に突っ込んで CDialog::OnOK();を実行し
元のダイアログに戻った時にデータを突っ込んでUpdateDataをかけようと思っていたのですが、
CDialog::OnOK();で元のダイアログが閉じられたあとにどこに行っているのかがさっぱりで
処理を突っ込めませんでした。

CDialog::OnOK();の後どこにいくのか、また他になにか良い方法はないか
よろしくおねがいします。

879 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:15:37 ]
OnOK後はDoModalから返ってくるだろ。
Bのパブリックメンバーにしておいて、DoModalがOK返してきたら
AからBのそのメンバー見ればいいじゃんかよ。

880 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:40:04 ]
>>879
あー、言われて見直して10分悩んで見直したら出来ました。
全然頭が回ってないですね自分。

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

881 名前:デフォルトの名無しさん [2009/02/13(金) 01:53:54 ]
windowsでC++の勉強を始めたのですが、Std::coutに出力してもどこにも
出力が出ません。どうすれば表示されますか?

882 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 02:15:57 ]
コンソールアプリケーションのプロジェクトを選べ

883 名前:デフォルトの名無しさん [2009/02/13(金) 02:42:29 ]
ありがとうございます。
windowsアプリケーションを選ぶときは、どうすればいいですか?

884 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 04:15:21 ]
windowsアプリケーションを選べばいんじゃね?



885 名前:デフォルトの名無しさん [2009/02/13(金) 05:44:00 ]
MessageBox()を使えばいいよ。

886 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 10:33:06 ]
>>878です。
先程のプログラムでAからBにDoModalしたのちに、BのDoDataExchangeの最後に、
thread_param param;
param.instance = this;
param.pParam = 0;
m_Thread = AfxBeginThread(thread_entry,¶m,THREAD_PRIORITY_NORMAL);

と実行してスレッドを作成しようとするとエラーが出てプログラムが強制終了してしまいます。
ボタンにして画面が出た後に実行すると出来るのですが、画面に入った後に自動的に実行したいのですが、
どのようしたらよいでしょうか?

887 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 12:24:08 ]
>>886
スレッドにローカル変数のアドレス渡してるのがマズい。
作成されたスレッド側がparamを参照しようとした時に
スレッドを作成した側が既にスコープを抜けてparamが破棄されてる可能性がある。

888 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 13:33:46 ]
>>887
できました!
的確なご指摘ありがとうございました!

889 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 12:21:07 ]
vc2008 で Intellisense の自動更新を無効にする方法知りませんか?

890 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 14:55:38 ]
Visual C++ 2008 Express Edition
Windoes XP Pro SP3
C++/CLI使用

親ウィンドウで画像ファイルを指定すると、MDIの子ウィンドウで画像を読み込んで表示し、親ウィンドウのズームイン/ズームアウトボタン(またはメニュー)でアクティブな子ウィンドウの画像をウィンドウごと大きくしたり小さくしたりするプログラムを作りました。
子ウィンドウの作成・イメージ読み込み・ズーム処理などを行うクラスと、そのウィンドウをコレクションで複数保持するクラスを作り、クラスライブラリとして作成し、それを親ウィンドウのFormから呼び出す形でプログラミングしました。

複数の画像読み込み、複数の子ウィンドウ表示、ズームイン/ズームアウトなどの処理は正常に動作しています。

この親ウィンドウのメニューに、表示されている複数の子ウィンドウのリストが表示される(一般的なウィンドウメニュー)を追加しました。
方法は簡単で、menuStrip1のMdiWindowListItemプロパティにウィンドウメニューのオブジェクトを代入するだけです(開発環境のプロパティウィンドウから設定しました)。
これも正常に動作して、コードを追加しなくてもウィンドウメニューに画像ファイルを読み込んだ複数の子ウィンドウのタイトルが、メニューに表示されました。

次に続く・・・

891 名前:890 mailto:sage [2009/02/14(土) 14:56:43 ]
ここからが問題です。
子ウィンドウのウィンドウタイトルには、画像のファイル名とズーム倍率が表示されるように作りました。
例:
1つ目の子ウィンドウ「img1001.jpg / 100%」
2つ目の子ウィンドウ「img1002.jpg / 100%」
親ウィンドウのズームイン/ズームアウトボタンを押すと、画像の大きさが変わると同時に、タイトルの倍率の数値も変わります。
例:
1つ目の子ウィンドウをズームインした場合
「img1001.jpg / 120%」
ところが、この状態で親ウィンドウのウィンドウメニューをドロップダウンさせると、ズームインさせる前の状態で表示されてしまいます。

ウィンドウ(W)
1 img1001.jpg / 100%
2 img1002.jpg / 100%

つまり、子ウィンドウのタイトルを変更させても、ウィンドウメニューには反映されません。
しかし、アクティブウィンドウを変えると(別の子ウィンドウをクリックして全面に出すと)反映されます。

例:2つ目の子ウィンドウをクリックした後
ウィンドウ(W)
1 img1001.jpg / 120%
1 img1002.jpg / 100%

やりたいこと:
ズームイン/ズームアウトボタンを押した直後にウィンドウメニューを表示させても、そのウィンドウのタイトルの変更をすぐに反映させたい。

どなたかご教授お願いします。

892 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 15:09:19 ]
開発環境
Microsoft Visual Stdio2008
c++ Windowsフォームアプリケーション
textBox1,textBox2,button1を設置して
button1を押すとBox1のひらがなはローマ字に、ローマ字はひらがなに変換して
Box2に入れるようにしたいのですが、ひらがなからローマ字への変換ができません。
自分なりに考えたプログラムを張るのでアドバイスや、
もっと効率のいい方法がありましたら教えていただけると幸いです。

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
String^str1 = textBox1->Text;
String^str2;
int len,i;
len = textBox1->Text->Length;
for(i=0;len>i;i++){
if(str1[i]=='a'){
str2=str2+"あ";
}
else if(str1[i]=='i'){
str2=str2+"い";
}
else if(str1[i]=='u'){
str2=str2+"う";
////////////////////略/////////////////////
}
textBox2->Text = str2;

}

893 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:05:48 ]
あいうえお以外には使えない

894 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:17:18 ]
>>893
分かりにくくてすいません////略////の部分で上記以外のローマ字からひらがなへの
変換(la li lu kya kyu kyoなど)は終わっています
数字や漢字は変換せずに追加されるようになています



895 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:37:14 ]
子音が重なったら、「っ」変換する処理とかは入ってるのだろうか。

896 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 19:40:28 ]
そういう処理はIMEにまかせて、結果だけ奪え。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<248KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef