文字がかさならないようにするためには – 固定ページ 4 – プログラミング – Home

文字がかさならないようにするためには
 
通知
すべてクリア

[解決済] 文字がかさならないようにするためには

固定ページ 4 / 4

wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

>プログラムを実行させたんですが文字を表示はできたんですがスクロールバーを
>動かすと
>
>Debug Assertion failed
>program:場所
>file:afxtempl.h
>Line:262
>
>For informaition on haw your program can
>cause an assetion failure,see the visualC++
>decumentation on asserts

>とエラーが出るのですがどういったエラーなんでしょうか?

エラーはでなくなりました。

しかしスクロールバーを動かすと文字がいっぱいでてきて
おかしくなります。


返信引用
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

SDI で作成しているアプリケーションとの事ですので CxxView で表示に関しては扱って
いる事と思いますが、 CxxView は CView 派生ですかそれとも CScrollView 派生ですか?


返信引用
wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

CScrollViewでつくりました。


返信引用
wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

CViewで同じプログラムを作成し実行させたところ
また同じ現象がでてしまいます
画面のサイズを変えるとテキストで表示した
同じものが再描画されてしまいます。


返信引用
スマイル
 スマイル
(@スマイル)
ゲスト
結合: 22年前
投稿: 8
 

void CMyView::OnSize(UINT nType, int cx, int cy)
{
CScrollView::OnSize(nType, cx, cy);

// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
CWnd::Invalidate(TRUE);
}
void CMyView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{

CWnd::Invalidate(TRUE);
}
OnRraw で領域をクリアーするとか


返信引用
wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

>void CMyView::OnSize(UINT nType, int cx, int cy)
>{
> CScrollView::OnSize(nType, cx, cy);
>
> // TODO: この位置にメッセージ ハンドラ用のコードを追加してください
> CWnd::Invalidate(TRUE);

初心者なんでわからないんですがこれは書くのですか
それともなにか追加で表示されるものなんですか?


返信引用
スマイル
 スマイル
(@スマイル)
ゲスト
結合: 22年前
投稿: 8
 

表示メニューのClassWizardからWM_SIZEを選びます。


返信引用
wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

たびたびすいません クラスの追加ですか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

メッセージハンドラの追加です。


返信引用
解決したら
 解決したら
(@解決したら)
ゲスト
結合: 22年前
投稿: 1
 

向こうにも解決策をかいておいてくださいね


返信引用
wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

>void CMyView::OnSize(UINT nType, int cx, int cy)
>{
> CScrollView::OnSize(nType, cx, cy);
>
> // TODO: この位置にメッセージ ハンドラ用のコードを追加してください
> CWnd::Invalidate(TRUE);

できましたが同じ結果がでました。


返信引用
n
 n
(@n)
ゲスト
結合: 23年前
投稿: 159
 

とりあえず、

CArray<CRect,CRect&>& mp // 型はこれでいいのかな?
= pDoc->mp;

という風に関数の最初の方に書く(pDoc->mpの「別名」or「参照」の導入)と、

> pDoc->mp[i]=CRect(pDoc->mp[i].left,pDoc->mp[i].top-pDoc->size2[i].cy, ...

の部分を

> mp[i]=CRect(mp[i].left,mp[i].top-size2.cy, ...

という風に「pDoc->」を省いて書けるので、多少読みやすくできます。
それからCRectにはOffsetRect()というメンバ関数があり、

mp[i].OffsetRect( 0, -size.cy );

と書けばmp[i]をsize.cy分だけ上に移動できます。


返信引用
wen
 wen
(@wen)
ゲスト
結合: 22年前
投稿: 28
Topic starter  

皆様なんとかできました ありがとうございました。


返信引用
固定ページ 4 / 4

返信する

投稿者名

投稿者メールアドレス

タイトル *

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