mcrblog

vcpp-ml

2000年12月

31

[vcpp 00049800] Re: スクリーンセーバーで画像を使いたい

こんにちは、KHSMKです。

On Sun, 31 Dec 2000 01:42:12 +0900
Burubon <f...@mb.infoweb.ne.jp> wrote:
[vcpp 00049792] スクリーンセーバーで画像を使いたい

> 画像をスクリーンセーバー上で表示できれば
> いいなぁと思っています。
> リソースに取り込んで、PatBlt()関数等で描画している
> のですが、なんだか滅色してしまっていて上手くいかな
> いです。

減食、はなんでだろ?
リソースにビットマップを追加したからといって、
別に減色はされないと思うけど....。
あと、「PatBlt()関数等」とあるけど、BitBltも
含んでると思っていいのかな。

基本的には、単純にリソース読みこんでBitBltで問題はないはず。
リソースから読みたくなかったら、LoadImageを使って
ファイルから読むのが、簡単な手かな。

JPEGファイルを読みたかったりしたいのであれば、過去ログに
いっぱいその手の話題はあるはずです。

----
k...@mbg.sphere.ne.jp
31

[vcpp 00049798] Re: リッチエディットでの印刷

Kengo Jinnoさん、メールありがとうございます。
西井傑 @ 静岡です。

神野さん、お返事ありがとうございます。

>|    fr.hdc = hdc;
>|    fr.hdcTarget = hdc;
>
>の処理が抜けているように思えますが、どうでしょうか?

上記のご指摘通り、デバイスコンテキストのハンドルを指定していなかっっただけでした。
お手数をおかけして申し訳ございませんでした。


さらに、「リッチエディットでの印刷」について、みなさんに質問があります。
フレームワークを利用し、
1.印刷時におけるフォントの変更
2.ファイル名をヘッダ領域に印刷
3.用紙のサイズにあわせた印刷
を行いたいと思っています。

現段階では1、2はクリア出来ているのですが、
3番が何ともし難い状況です。

FORMATRANGE に値を設定し、プリンタ、印刷用紙の大きさに
関わらず印刷したいと思っているのですが、
望むように動いてくれません。

例えば、複数ページ印刷で、印刷用紙をA4→B5に変更したときときです。
「印刷プレビュー」で見ている限り、
用紙はB5になっているようなのですが、テキストの1ページ分が
A4のときと同じになっているのです。

(上記のような内容で理解していただけますか?)

1ページ分のテキストの出力量はFORMATRANGE を設定しただけでは
駄目なのでしょうか?
もしそうだとしたら、どのようにしたらいいのでしょうか?

ちなみに、FORMATRANGEの部分を削除しても、
CRichEditView::OnPrint(pDC, pInfo);
がある限り同等の動きをしました。


下に、ソースの一部を載せておきます。
よろしくお願いします。


--------------------------------------
FORMATRANGEの設定はOnPrepareDC() で行っています。
値は「猫でも・・・ 第137章」とおなじです。

C***View::OnPrint() //C***View はCRichEditViewの派生クラス
{
if(fr.chrg.cpMin < fr.chrg.cpMax)
{
LONG lNextMin = RCtrl.FormatRange(&fr, TRUE);
pInfo->m_nCurPage;
pDC->StartPage();
RCtrl.DisplayBand(&(fr.rc));
fr.chrg.cpMin = lNextMin;
pDC->EndPage();
}
CRichEditView::OnPrint(pDC, pInfo);
}
---------------------------------------

ご教授いただけたら幸いです
------
西井傑
q...@ipc.shizuoka.ac.jp
31

[vcpp 00049797] カレットの大きさが変です

こんにちは,森川です
以下のようなコードを書きましたが
下キーを押すとカレットが下に下に延びていきます
なぜなんでしょうか?
関係ありそうなコード↓
void CEditHTMLView::OnKillFocus(CWnd* pNewWnd)
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
DestroyCaret();
CScrollView::OnKillFocus(pNewWnd);
}

void CEditHTMLView::OnSetFocus(CWnd* pOldWnd) 
{
CScrollView::OnSetFocus(pOldWnd);
// TODO: この位置にメッセージ ハンドラ用のコードを追加してください
CreateSolidCaret(2,m_TextHeight);
SetCaretPos(m_CaretPos);
ShowCaret();
}
void CEditHTMLView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
// TODO: この位置にメッセージ ハンドラ用のコードを追加するかまたはデフォルトの処理を呼び出してください
CPoint ptTop=GetScrollPosition();
switch(nChar)
{
case VK_UP:
if (m_CaretPos.y>0)
m_CaretPos.y-=m_TextHeight;
else if (ptTop.y>0)
{
ptTop.y-=m_TextHeight;
ScrollToPosition(ptTop);
}
break;
case VK_DOWN:
if (m_CaretPos.y<(m_sizeWnd.cy-m_TextHeight))
m_CaretPos.y+=m_TextHeight;
else if (ptTop.y<(m_sizeTotal.cy-m_sizeWnd.cy-m_TextHeight))
{
ptTop.y+=m_TextHeight;
ScrollToPosition(ptTop);
}
break;
case VK_LEFT:
if (m_CaretPos.x>0)
m_CaretPos.x-=m_TextWidth;
else if (ptTop.x>0)
{
ptTop.x-=m_TextWidth;
ScrollToPosition(ptTop);
}
break;
case VK_RIGHT:
if (m_CaretPos.x<m_sizeWnd.cx)
m_CaretPos.x+=m_TextWidth;
else if (ptTop.x<(m_sizeTotal.cx-m_sizeWnd.cx))
{
ptTop.x+=m_TextWidth;
ScrollToPosition(ptTop);
}
break;
}
SetCaretPos(m_CaretPos);
CScrollView::OnKeyDown(nChar, nRepCnt, nFlags);
}
31

[vcpp 00049796] SDKでMFCにおけるペインの作成

加藤歓隆です。お世話になります。

自作のウィンドウ用ライブラリで
MFCのペインを実装したいのですが、簡単に行かないようなので
知恵をお借りしたいと思います。

ペインを表示することになる親ウィンドウの(以下Frame)
クライアント領域内において、子ウィンドウ1、ペイン、
子ウィンドウ2が左から順に横に並ぶことを考えます。
(以下、それぞれLeft、Right)

Left、Rightそれぞれには枠やメニューは用いないとします。
するとFrameがペインを描画することになりますが、
どういった方法で行えば良いでしょうか。

DrawEdgeを試してみましたが、フラグ設定が複雑なためか、
満足な外観が得られませんでした。
31

[vcpp 00049795] Re: 配列 ポインター 関数

 藤田です。

Subject : [vcpp 00049769] 配列 ポインター 関数
>From   : 浅野 ゆう <a...@hotmail.com>
Date : Sat, 30 Dec 2000 17:18:21 +0900
Message-Id : <O...@hotmail.com>

>こんなのがあるとします。◎がついている
>部分に質問です。これはなぜ*をつけなくても
>いいのでしょうか?
>buf[0]=*buf
>buf[1]=*(buf+1);と考えるからですか?

 [] はポインタのみに使える後置演算子で、そのポインタが同じ型の一次元
配列を指しているものとして、配列中の指定位置の要素が演算結果となりま
す。
 ですから、スカラー型のポインタに対して使った場合、配列中の値そのもの
が式 foo[...] と置き換わります。なので、上のように考えて差し支えありま
せん。

-- 
藤田光秋(ふじたみつあき)
mailto:f...@pluto.dti.ne.jp
記事検索
Amazon.co.jp
  • ライブドアブログ