コントロールの上に、DrawTextで文字を書きたい – プログラミング – Home

コントロールの上に、DrawTextで...
 
通知
すべてクリア

[解決済] コントロールの上に、DrawTextで文字を書きたい


柊太郎
 柊太郎
(@柊太郎)
ゲスト
結合: 17年前
投稿: 8
Topic starter  

DrawTextでのフラグ指定に、DT_PATH_ELLIPSISがあります。(長いPATHの省略表示)
この機能を、エディットボックで実現したいのです。
エディットボックスは、1行のみの表示で、リードオンリー指定なので、くぼみ表示とし
てしか利用していません。
なので、エディットボックすの上に、DrawTextで上書きを・・・と思いましたが、
OnDrawで描画すると、エディットボックすの下に隠れてしまいました。
何かうまい方法を、ご存知の方いませんか。
環境:
Win98、VC++(Ver6.0)、MFCを使用しています。
よろしくお願いします。


引用未解決
トピックタグ
com-a
 com-a
(@com-a)
ゲスト
結合: 23年前
投稿: 11
 

DrawTextだと、オーナードローにしないとダメです。
目的の処理ならば、DrawTextよりPathCompactPathがいいと思います。

# Win98なら大丈夫だと思いますけど、無理ならIE4を入れれば大丈夫かと。


返信引用
柊太郎
 柊太郎
(@柊太郎)
ゲスト
結合: 17年前
投稿: 8
Topic starter  

朝早くの助言ありがとうございます。
早速試してみます。
しばらくは、仕事の関係でアクセスできませんが、他にも助言などありましたら、よろ
しくお願いします。


返信引用
柊太郎
 柊太郎
(@柊太郎)
ゲスト
結合: 17年前
投稿: 8
Topic starter  

助言を頼りに調べた結果次のように解決しました。

#include SHLWAPI.H // PathCompactPath()
#pragma comment(lib ,shlwapi.lib ) // PathCompactPath()

// 表示する関数の中で・・・
PathCompactPathEx( name[1], name[0], 80, '\\' );
m_edt01 = name[1]; // 元はこうでした m_edt01 = name[0];
UpdateData( FALSE );
// このように変更しました。

m_edt01 は、エディットボックスのメンバー変数(CSyring型)
name[0] は、オリジナルのフルPATH
name[1] は、文字数制限後のPATH

PathCompactPathEX を使うことで、エディットボックスが使用できるで、こちらを採
用。

オーナードローに関しても、勉強不足のため解決に至りませんでした。
ウィザードをできる限り使用したプログラム作成を心がけていましたが、このような壁
にぶつかることが多くなってきました。

また、壁にぶつかったときにも、よろしくお願いします。
ありがとうございました。


返信引用
柊太郎
 柊太郎
(@柊太郎)
ゲスト
結合: 17年前
投稿: 8
Topic starter  

すいません・・・
解決なので、閉じます。


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

ちょっと気になったので。

> ウィザードをできる限り使用したプログラム作成を心がけていましたが、
> このような壁にぶつかることが多くなってきました。

ウィザードは定型の操作を簡略化するための手段であって絶対の方法では無いと
思います。VC6のウィザードはソースファイル上での記述にも気を使った仕様に
なっていてそれなりに読めるソースを出力してくれますが、ウィザードでは
記述できない便利な機能がMFCにはありますし、それを利用することでコードの
簡略化も可能になりますからウィザードにこだわる必要は内容に思います。
VC6のウィザードで気をつけた方が良いのはウィザードが触る部分に手入力の
コードが混入するとウィザードに消されてしまう事があることです。
これはソース上に明確にわかる形で明示されていますから記述する時に
気をつければ良いだけです。

VisulaStuio2005のウィザードで作成したプログラムは、変数定義やメンバー関数の
定義がごちゃ混ぜに記述されるので大変読みにくく、DDXを使うケースのように
使った方が明らかに楽な場合でないならウィザードを使わない方が良いこともあります。
最近のウィザードでは追加は出来ますけれど、削除は手動でするようになってますし。

ウィザードはあくまでも省力化の手段でしか無いので基本的にはどのように記述すれば
ウィザードを同じ事が出来るのかを理解して自分で同じ記述ができるようになって
おいた方が良いと思います。IDEの支援機能は正常に動いている時は便利で助かりますが、
状況によってはうまく動かなくなる事もありえます。
そういう場合でも自力でどんどんソースが書けるようになっておく事が望ましいと
思います。


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

ごめん。タイプミス。

VisulaStuio2005ではなくて、VisualStudio2005です。
恐らくわかると思うけど念の為。


返信引用
柊太郎
 柊太郎
(@柊太郎)
ゲスト
結合: 17年前
投稿: 8
Topic starter  

ご指摘、ありがとうございます。
ちょっとした、独り言にアドバイスしてもらえる環境は、すばらしいですね。

アセンブラやC言語で、開発を行っていたころは、自力でコードを作成していたので、
統合環境がうっとうしく思えました。
また、提供されたライブラリなども、ほぼすべて把握できる範囲でした。

しかし、Windowsになるころから、新しい開発環境に付いていけなくなりました。勉強不
足が一番の原因ですね。

決して、自力で書くことを否定しているわけではありません。むしろ、書きたいので
す。

現状は、MFCを使用するために、ウィザードに頼っている状態です。
今後のステップアップに、協力願います。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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