2004/3/20 (土) 00:33:33 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3476] ウィンドウ→重ねて表示について&ソース(1)
初めてまして。みなさん。

ネット上で何かフリーのいいエディタはないか色々探していたところ
オープンソースのティストエディタがあるというので
起動してみたら淡い桜色の画面がとても新鮮で素敵でした。
目のアイコンボタンに愛嬌があって面白いなぁとも、思いました。
機能もとてもたくさんあって、使い切れないくらいいっぱいです。
フリーソフトでこんなにできるなんて!!
しかもフリーで使えるなんて!!
オープンソースって
すごいなぁって、改めて思いました。
今はサクラエディタを使ってます。

原作者の「たけ」さんをはじめ、
げんたさん。もかさん。。みくさん。。。
サクラエディタ開発関係者の方々に感謝すると共に
この場を借りて何か言いたい!
という気持ちにもさせられ
こうやって、今、書いているわけです。

素敵なエディタですが、、、
使い始めて少し残念な事がありました。
全体的なインターフェイスです。
機能を順次追加していくために回避不能なのかもしれませんが
一般の人が使うのに、
例えばですが、メニュー検索から検索やブックマークはよく使うでしょうが
ブックマークは下のほうです。「コマンドキーを使え!」と、
言われれば、それまでですが、、、
アウトライン解析は、ほとんど手を出さないように思います。
しかしダイアログ名にあるように「テキスト トピックツリー」
という表示ならヘルプなしでもすぐにポインタが動くように思えます。

「オープンソースなんだからメニューの位置を変えてコンパイラすれば?」
との声もあがりそうですが、それくらいの器量のある方なら
掲示板に要望を書いたりしないかと思います。
少しさかのぼって読みましたが、
いつも手前にサクラエディタを置いておきたい!
他のアプリを差し置いて、デスクトップの手前はいつもサクラエディタ!
素敵なことじゃないですか!
細かいところですが、初心者でも使いやすいインタフェース!
というのを一考願えれば幸いです。m(_ _)m

全ての機能を使ってるわけではないので分かりませんが
かくゆう私もどうしても、最初に、これは使えない。。。。。
という大きな部分と、気づいた点ですが、思ったことがありました。
以下にその旨を書きたいと思います。
項目書きなので、切り離したような言い方は
あらかじめご了承ください。m(_ _)m
また、過去ログが膨大ではっきりいって読んでおりません。
既出であるにせよ、現状の問題点としてとらえています。

2004/3/20 (土) 00:36:48 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3477] ウィンドウ→重ねて表示について&ソース(2)
1■「ツール」から「タブを表示」
 タブ表示の切り替えのインターフェイスについて。
 タブを隠す状態から、複数ファイルを開いていて、メニュー「ツール」→「タブを表示」した場合、
 カレントのウィンドウはタブ表示される。
 しかし、他のウィンドウのタブをクリックして、
 移動すると同時にタスクバーから最初のウィンドウが消える(消えたように見える)、
 移動先のウィンドウはタブ表示でないため、
 最初のウィンドウに戻るには、メニューのウィンドウから選択、もしくは
 アクティブになったウィンドウからもう一度「ツール」→「タブを表示」してから選択しなければならない。
 使うときに最初から最後までウィンドウかタブかのどちらか決めておけばよいのだが、、、。
 タブの機能のインターフェースとして見た場合、使いづらい。
 現状としては初期設定として組み込むだけの方がベターな気がする。
 
 ○案
 メニューから簡易に切り替えができるなら
 「タブを表示」(隠す)の切り替え設定は、開いている全ウィンドウ共通なものとして適用する。
 
2■「ウィンドウ」の「重ねて表示」
 複数のウィンドウを開いたとき
 全てのウィンドウを”見やすく”するために順に並べるわけだが、
 肝心のキャプションが隠れてしまうウィンドウもあり、きれいに並ばない。
 また、タスクバーが上にあると、タスクバーの下にウィンドウが隠れてしまう。
 
3■「ウィンドウ」の「上下に並べて表示」
 タスクバーが上にあると、タスクバーの下にウィンドウが隠れてしまう。
 (なぜか「ウィンドウ」の「左右に並べて表示」はOK)
 
4■タスクバーからのウィンドウ名と実際のウィンドウの配列のとり方の順が違ってる。
 (カレントウィンドウのメニューバーからの選択はOK)
 
5■ウィンドウへの複数のファイルのドラッグ&ドロップはできるが、
 本体(アプリケーション)への複数ファイルのドラッグ&ドロップに対応していない。
 (これは個人的な利便性です。問題ではありません)
 
とりあえず5項目です。
■2に付いて
YAZAKIさんMIKさんGentaさんの修正が行われておりましたが、
微力ながら、全体的な修正ソースをつくりました。
■3に付いては一行のみです。
■4については、ソースをみておりません。m(_ _)m
しかしながら、ウィンドウの方のソースをそのまま持ってくればいいかと思います。
決まった処理のユーザー関数は使いまわしができると、
ファットにならずに、いいのでしょうが・・・

ソースをYahooの方にアップしようかと思いましたが、、、
よくかりません。。。。(汗)
差分の書き方も。。。。よくわかりません(汗)
重ね重ね、すみません。
一部の関数で、短いものなので、ここにはっちゃいます。
ご一考ください。
(なお、全体をみているわけではないで、エクスプローラーの関係が
よくわからないまま書きました・・・ん〜)

2004/3/20 (土) 07:16:35 みく  
INCM1.23a
[3483] RE: ウィンドウ→重ねて表示について&ソース(2)
>タイトル: RE: ウィンドウ→重ねて表示について&ソース(2)
>発言者: ぜん
>1■「ツール」から「タブを表示」

...
> ○案
> メニューから簡易に切り替えができるなら
> 「タブを表示」(隠す)の切り替え設定は、開いている全ウィンドウ共通なものとして適用する。


タブの実装者として、今のところ対応する予定はありません。

2004/3/20 (土) 17:47:17 げんた  
INCM1.23c
[3486] Re: ウィンドウ→重ねて表示について&ソース(2)
>2■「ウィンドウ」の「重ねて表示」
> 複数のウィンドウを開いたとき
> 全てのウィンドウを”見やすく”するために順に並べるわけだが、
> 肝心のキャプションが隠れてしまうウィンドウもあり、きれいに並ばない。
> また、タスクバーが上にあると、タスクバーの下にウィンドウが隠れてしまう。


ぜんさんのコードを参考にして直してみました.
http://members.at.infoseek.co.jp/sakura_editor/snapshot/sakura_2003-03-20_test1.zip
バイナリ+diff差分です.

うちはWinXPなのですが,ぜんさんの方法でもやはり途中のウィンドウが上に来たりしていましたので,ウィンドウを並べるところは別の方法で実装してあります.SetWindowPosが指定ウィンドウの「下」に配置する機能を提供しているのに必死に下から上に並べようとするから無理があるのではないかと思い,一旦すべてのウィンドウの座標を計算したあとで一番上から順番に下に向かって配置するようにしてみました.

ぜんさんの2周目以降右にずらしていく機能も取り込んでみましたが,2周目に行くと1周目のアイコンが隠れてしまいますよね.
左上から各数値(数値の大きいほど上)がウィンドウのアイコン位置として
15
→26
→→37
→→→48
と並び替えられたところを考えてみると,2は5の下に,3は6の下に入ってしまいます.

12
→34
→→56
→→→78
の方が(Windows標準とは違いますが)アイコンがすべて見えていいんではないかと思いますが,どうでしょう?

2004/3/21 (日) 09:42:39 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3488] Re2: ウィンドウ→重ねて表示について&ソース(2)
やはり同時進行は無理がありましたか・・・
計算してから描画というのが普通なのでしょうが、
なるべくオリジナルのソースを壊さないようにと思って加筆いたしました
つたないソースを掲載してすみません。

> の方が(Windows標準とは違いますが)アイコンがすべて見えていいんではないかと思いますが,どうでしょう?
大満足です!!
ありがとうございましたm(_ _)m >げんたさん

2004/3/21 (日) 13:03:37 げんた  
INCM1.23c
[3489] Re2: ウィンドウ→重ねて表示について&ソース(2)
>12
>→34
>→→56
>→→→78
>の方

手動(笑)でイメージだけ作ってみました.
http://members.at.infoseek.co.jp/sakura_editor/snapshot/sakura-cascade1.png
実際にやろうとすると結構計算が面倒くさそうなので,今回はやめておきます.

2004/3/22 (月) 23:55:43 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3491] 重ねて表示_座標計算してみました
イメージ見ました!!
きれい!!
いい!!
計算・・・ちょっと(いや、かなり試行錯誤)面倒でした(汗)
ファイルアップしようとブリーフケースまでいきましたが、、
追加できませんでした。。。ので
こちらにアップしておきた。
http://www.geocities.co.jp/HeartLand-Momiji/6138/dl.html
CEditView-Command_CASCADE-icon-za-test1.txt
座標計算のところだけです。
が!!
私の環境ノートOS-98SEですとシステムリソースが足りなくなり、
14枚くらいしか開けません。。。(汗
一応、画面いっぱいを何度も重ねてもOKな仕様にしたつもりなのですが、確認できません。。。
(滝汗
暇なときにでも見てください。m(_ _)M

2004/3/23 (火) 03:26:35 げんた  
INCM1.23c
[3492] RE: 重ねて表示_座標計算してみました
43枚開いてみました.結論は「惜しい」.
私が難しいと言ったのは,
1. 重ねて表示と同様に縦方向を優先した形に並べようとした
2. 横に並ぶ数が断によって異なる(下に行くほど少なくなる)
からです.残念ながら下の方でウィンドウの右側がはみ出ることがあります.

基本的には縦横とも(画面サイズ−ウィンドウサイズ)/ずらし幅+1のます目で構成された長方形の左下(■)を除いた部分に並べる問題と同じです.

□□□□□□
■□□□□□
■■□□□□
■■■□□□

159□□□
■26A□□
■■37□□
■■■48□
の形で
123□□□
■456□□
■■78□□
■■■9A□
4列目からは一番下の段までは入らないのがわかりますよね.

---
画面サイズとして縦長のケースというのも考えると
□□□□□
■□□□□
■■□□□
■■■□□
■■■■□
■■■■■
どうでしょう?
良いアルゴリズムが思いつきましたか?私は思いついていませんが(汗

2004/3/23 (火) 09:23:59 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3493] Re2: 重ねて表示_座標計算してみました
見直してみました。
条件文の構造体が不充分でした・・・(汗
もうちょい検討してみます。。。

テストありがとうございましたm(_ _)m

2004/3/25 (木) 03:38:23 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3496] 重ねて表示■座標計算の構築
面倒でしたが、なんとなく形になりました。
ウィンドウのサイズをデフォルト値から計算して
調整してあります。
不都合があったら言ってください。
http://www.geocities.co.jp/HeartLand-Momiji/6138/dl.html
■CEditView_Command.cpp_za_test2-3.txt(ウィンドウ重ねて表示座標計算test2-3)
デスクトップ画面半分を限界値としています。
いくつになるのか、さっぱりですが・・・

2004/3/25 (木) 12:21:25 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3497] テスト不可能・・・
私の環境により、テスト不可能ですが、、、
たぶん、、、大丈夫だと思います。。。
げんたさんの発想もあり、
「重ねて表示」は一般のユーザーにも使いやすい
インターフェイスになったと思います。

不具合があったら
適当に修正してもらうと嬉しいです。
ご面倒かけますが、よろしくお願いしますm(_ _)m

これからもがんばってください。

2004/3/27 (土) 10:36:25 げんた  
INCM1.23c
[3503] RE: 重ねて表示_座標計算してみました
>ファイルアップしようとブリーフケースまでいきましたが、、
>追加できませんでした


Yahooにログイン(無ければID取得)→グループに参加
でファイルを書き込めるようになるはずです.

http://members.at.infoseek.co.jp/sakura_editor/developer.html

2004/4/1 (木) 14:21:55 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3513] ありました!!
右上の[ 参加 ] ボタン押した後・・・
キョロキョロ・・・あっちにいったり、こっちにいったり
ヘルプをみたり、、ウロウロ・・
( ̄^ ̄;)んー…なぜ???
画面で一番下にさらに「参加」のボタンがありました!!
(気づかなかった!ってか見えなかった!)
(o_ _)oパタッ・・・
お手数かけました。

と、いうことで
http://groups.yahoo.co.jp/group/sakura-editor/files/Developer/Source/
CASCADE_za-all-wnd_20040330.zip
「重ねて表示」座標計算で全てのウィンドウを表示

アップでけた!!わーい!!
( ̄▽ ̄)oころん♪o(_△_)oころん♪o( ̄▽ ̄)oころん♪

一応イメージ画像はこちらに
http://www.geocities.co.jp/HeartLand-Momiji/6138/dl/CASCADE_image.gif

2004/3/20 (土) 00:41:23 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3478] ウィンドウ→重ねて表示について&ソース(3)-1
修正加筆添削個所は、//crayonzenと示したところです。(大体)

----------------------------------------
------------------------------
アプリケーションバージョン
sakura ver1.4.3.7B
----------------------------------------
------------------------------
ソースファイル
//    $Id: CEditView_Command.cpp,v 1.95 2003/11/15 01:17:17 genta Exp $
----------------------------------------
------------------------------

行 7255 //重ねて表示
void CEditView::Command_CASCADE( void )
{
    int i;

    //タブウインドウ時は禁止    //@@@ 2003.06.12 MIK
    if( TRUE  == m_pShareData->m_Common.m_bDispTabWnd
     && FALSE == m_pShareData->m_Common.m_bDispTabWndMultiWin ) return;

    /* 現在開いている編集窓のリストを取得する */
    EditNode*    pEditNodeArr;
    int            nRowNum = CShareData::getInstance()->GetOpenedWind
owArr( &pEditNodeArr, TRUE/*FALSE*/ );

    if( nRowNum > 0 ){
        HWND*    phwndArr = new HWND[nRowNum];
        int        count = 0;
 
        for( i = 0; i < nRowNum; ++i ){
            //if( ::IsIconic( pEditNodeArr[i].m_hWnd ) ){    //    最小化しているウィンドウは無視。
                //continue;
            //}
            //Mar. 19, 2004 crayonzen カレントウィンドウが2回目のfor文でカウントが反映されない?のでif文を下へ
 
            phwndArr[count] = pEditNodeArr[i].m_hWnd;
            count++;
        }
 
        //    デスクトップサイズを得る
        RECT    rcDesktop;
        ::SystemParametersInfo( SPI_GETWORKAREA, NULL, &rcDesktop, 0 );
 
        int width = (rcDesktop.right - rcDesktop.left ) * 4 / 5; // Mar. 9, 2003 genta 整数演算のみにする
        int height = (rcDesktop.bottom - rcDesktop.top ) * 4 / 5;
        int w_delta = ::GetSystemMetrics(SM_CXSIZEFRAME) + ::GetSystemMetrics(SM_CXSIZE);
        int h_delta = ::GetSystemMetrics(SM_CYSIZEFRAME) + ::GetSystemMetrics(SM_CYSIZE);
        //int w_offset = 0;
        //int h_offset = 0;
        int w_offset = rcDesktop.left; //Mar. 19, 2004 crayonzen 絶対値だとエクスプローラーのウィンドウに重なるので〜
        int h_offset = rcDesktop.top; //〜初期値をデスクトップ内に収める。
        int j = 0; //crayonzen カレント用
        int n = 0; //2度目の描画以降で使用するカウント
        int sw_offset = w_delta; //右スライドの値(暫定)

//(3)-2へつづく

2004/3/20 (土) 00:48:50 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3479] ウィンドウ→重ねて表示について&ソース(3)-2
        for(i = 0; i < count; ++i ){
            if( pEditNodeArr[i].m_hWnd == m_pcEditDoc->m_hwndParent ){ //crayonzen 現在のウィンドウは無視して最後に
                j = i; //最初のウィンドウの値を保存
                continue;
            }
            else if( ::IsIconic( pEditNodeArr[i].m_hWnd ) ){ //最小化しているウィンドウは無視。
                continue;
            }
            else {
                if (w_offset + width > rcDesktop.right || h_offset + height > rcDesktop.bottom){
                    //craonzen 幅のみをみてスライダのカウンタ初期化
                    if (rcDesktop.left + sw_offset * n > rcDesktop.right - width){
                        n = 0;
                    }
                    n += 1;
                    //w_offset = 0;
                    //h_offset = 0;
                    w_offset = rcDesktop.left + sw_offset * n;//craonzen 初期値修正(2度目以降の描画で少しづつスライド・・)
                    h_offset = rcDesktop.top; //
                }
                //::SetWindowPos(
                //phwndArr[i], HWND_TOP,
                //w_offset, h_offset,
                //width, height,
                //0
                //);
                ::SetWindowPos(
                phwndArr[i], 0,
                w_offset, h_offset,
                width, height,
                SWP_NOOWNERZORDER | SWP_NOZORDER
                ); //の方がいいのかな???crayonzen
 
                //ActivateFrameWindow( phwndArr[i] );
                ::BringWindowToTop( phwndArr[i] );//crayonzen API アクティブにする(ウィンドウ)
#ifdef  _WIN32
                ::SetForegroundWindow(phwndArr[i]); //crayonzen & for 32bit API アクティブにする(スレッド用)
#endif
                //::UpdateWindow(phwndArr[i]); //crayonzen
                w_offset += w_delta;
                h_offset += h_delta;
            }
        }

//(3)-3へつづく

2004/3/20 (土) 00:45:00 ぜん  
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
[3480] ウィンドウ→重ねて表示について&ソース(3)-3
        //crayonzen 再計算して最初のウィンドウ
        //if( j == count - 1 ){ // jが最後の場合deltaが加算されないので。と思ったのだが・・・
            //w_offset += w_delta;
            //h_offset += h_delta;
        //}
        if (w_offset + width > rcDesktop.right || h_offset + height > rcDesktop.bottom){
            if (rcDesktop.left + sw_offset * n > rcDesktop.right - width){
                n = 0;
            }
            n += 1;
            w_offset = rcDesktop.left + sw_offset * n;
            h_offset = rcDesktop.top; //
        }
        ::SetWindowPos(phwndArr[j], HWND_TOP, w_offset, h_offset, width, height, 0 );
        ::BringWindowToTop( phwndArr[j] );
#ifdef  _WIN32
        ::SetForegroundWindow(phwndArr[j]);
#endif
        ::SetFocus( phwndArr[j] );//MIKさんに習って一応念のためm(_ _)m

        delete [] phwndArr;
        delete [] pEditNodeArr;
    }
    return;
}


----------------------------------------
------------------------------


行 7367 //上下に並べて表示
void CEditView::Command_TILE_V( void )
{

--略--

行 7406     ::SetWindowPos(
                phwndArr[i], 0,
                //rcDesktop.left, height * i,
                rcDesktop.left, rcDesktop.top + height * i , //Mar. 19, 2004 crayonzen
                rcDesktop.right - rcDesktop.left, height,
                SWP_NOOWNERZORDER | SWP_NOZORDER
            );
 
----------------------------------------
------------------------------

枚数が多いと上手く表示されない事もありました。。。
OS win98SE ノートでやってるので、メモリがきついです。。。
いや、システムヒープだから16bitの方でした。いたし方ありません。
原因は・・・分かりません。。。

みなさん。がんばってくださいね!

2004/3/20 (土) 07:16:44 みく  
INCM1.23a
[3484] RE: ウィンドウ→重ねて表示について&ソース(1)

>一般の人が使うのに、

一般の人って誰?

>例えばですが、メニュー検索から検索やブックマークはよく使うでしょうが

検索はツールバーにあるものを使いますがなにか。

>ブックマークは下のほうです。「コマンドキーを使え!」と、
>言われれば、それまでですが、、、


私はまったく使いませんがなにか。

>アウトライン解析は、ほとんど手を出さないように思います。

私は頻繁に使いますがなにか。

2004/3/20 (土) 14:24:07 げんた  
INCM1.23c
[3485] Re2: ウィンドウ→重ねて表示について&ソース(1)
煽りは放置で.

INCM/CMT
Cyclamen v3.81
[ut:0.020][st:0.010]