HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1029
takaリッチエディットコントロールの文字数制限5解決


taka

リンク

2018/10/29(Mon) 14:43:53|NO.85748

下記URL先のリッチエディットコントロールを使用しているのですが,一定文字数を超えると文字を
書き込めなくなってしまいます。
http://hsp.tv/play/pforum.php?mode=pastwch&num=54633

確認したところ,32000文字程度で限界が来てしまうので,下記URLを参考に上限を変更しようとトラ
イしたのですが,実現できていません。
https://docs.microsoft.com/ja-jp/windows/desktop/Controls/em-exlimittext

どなたかご示唆いただけたら幸いです。よろしくお願いいたします。

環境はHSP3.5です。



この記事に返信する


名無し

リンク

2018/10/30(Tue) 21:39:55|NO.85755

投稿ミスっていうか文章を改変しただけですね...
無駄レスすいません。が一応ルールを確認してください。



taka

リンク

2018/10/31(Wed) 14:35:13|NO.85757

削除したつもりでしたが,操作ミスで残ったままになっていました。
御指摘ありがとうございました。もう一方は削除完了しました。



taka

リンク

2018/10/31(Wed) 14:38:42|NO.85758

下記URL先も参考にしたのですが,うまく反映できずです。
http://chokuto.ifdef.jp/urawaza/richedit1.html

どなたかご示唆いただけたろ幸いです。よろしくお願いいたします。



MillkeyStars

リンク

2018/10/31(Wed) 16:13:22|NO.85759

掲示板NO.54672 のスクリプトをちょこっと改造し、リッチエディトの最大文字数を変更してあるサンプルです。
通常 32KB が最大の所、128KB まで拡大しています。

#include "user32.as" #include "kernel32.as" // エファクトの定数 #const CFM_FACE $20000000 #const CFM_BOLD $00000001 ; CFE_BOLD #const CFM_ITALIC $00000002 ; CFE_ITALIC #const CFM_UNDERLINE $00000004 ; CFE_UNDERLINE #const CFE_BOLD $00000001 ; 太字体で表示されます。 #const CFE_ITALIC $00000002 ; イタリック体で表示されます。 #const CFE_UNDERLINE $00000004 ; アンダーラインを引きます。 #const CFM_COLOR $40000000 ; crTextColorメンバとdwEffectsメンバのCFE_AUTOCOLOR値が有効 #const SCF_SELECTION $00000001 ; #const style 0x50b00004 /*WS_CHILD|WS_VISIBLE|WS_BORDER|WS_VSCROLL|WS_HSCROLL|ES_MULTILINE*/ #define EM_EXLIMITTEXT 0x0435 //******************************************************************** onexit*exit // libraryを動的ロード LoadLibrary "RICHED20.DLL" plib = stat // 色操作 objsize 80,20 tx="赤","緑","青" repeat 3 button tx.cnt,*col loop // エファクト操作 tx = "太字","斜体","下線" effvalM = CFM_BOLD,CFM_ITALIC,CFM_UNDERLINE effvalE = CFE_BOLD,CFM_ITALIC,CFM_UNDERLINE pos ,ginfo_cy+5 teff=stat+1 repeat 3 button tx.cnt,*eff loop // フォント操作 fontface = msGothic,msmincho,"メイリオ" pos ,ginfo_cy+5 tface=stat+1 repeat 3 button fontface.cnt,*fon loop // clear pos ,ginfo_cy+5:button "clear",*clr //文字数チェック pos ,ginfo_cy+20:button "size check",*size_check //***************************************************** // リッチエディット作成 pos 80,0 winobj "RichEdit20A","リッチエディットコントロール、書式切替テスト",0,style,ginfo_winx-80,ginfo_winy hwnd_re = objinfo_hwnd(stat) gsel 0,1 Setfocus hwnd_re dim cf2,21 // CHARFORMAT2構造体 //リッチエディトに対して、格納最大文字数変更(変更後 128kバイト)************************************************ sendmsg hwnd_re,EM_EXLIMITTEXT,0,131072 stop //文字数チェック用 *size_check //************************************************************************************************* sdim tmp_txt,1250304 GetWindowText hwnd_re,varptr(tmp_txt),1250304 txt_len = strlen(tmp_txt) dialog "内部文字列は "+txt_len+"("+(txt_len / 1024)+"KB) 文字数です" stop *col // CHARFORMAT2構造体 の 5 番目の配列に テキストの色を 0xBBGGRR で代入 cf2 = 84,CFM_COLOR,0,0,0, 0xFF<<(stat*8) goto *setcharformat *fon // CHARFORMAT2構造体 の 26byte 目に フォント名を poke か memcpyで代入 cf2 = 84,CFM_FACE poke cf2 , 26 , fontface(stat-tface) goto *setcharformat *eff // CHARFORMAT2構造体 の 1 番目に 上書きされるエファクト情報のマスク // 2番目に ソレが有効に成るか無効に成るかを代入 p=(stat-teff) cf2 = 84,effvalM.p,effvalE.p goto *setcharformat *clr // おまけ // 色と、エファクトをクリア。 cf2 = 84,CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE,0,0,0,0 *setcharformat // 選択されている位置に現在のフォーマットを設定する。 sendmsg hwnd_re,0x444 /*EM_SETCHARFORMAT*/,SCF_WORD|SCF_SELECTION,varptr(cf2) SetFocus hwnd_re stop *exit DestroyWindow hwnd_re // エラーを回避するためには、ウィンドウを削除したのちに FreeLibrary plib // freelibraryを実行して 動的確保されたlibraryのポインタを指定する。そうしなければ、ウィンドウを閉じる事が出来ずにエラーの原因になる。 end stop



taka

リンク

2018/11/1(Thu) 09:16:03|NO.85762

MillkeyStarsさん

確認できました。これで解決に至りそうです。
ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.