エラーを回避する方法

投稿者:アーク 投稿日:2024/01/27(Sat) 22:40:46 No.2905

いつもお世話になっております。アークです。

フォント繋がりでの質問です。
C#が使えないのでPowershellで書きます。

$Location = Get-Location
$file = Join-Path $Location '851tegaki_zatsu_normal_0883.ttf'

$signature = @'
[DllImport("gdi32.dll")]
public static extern int AddFontResource(string lpszFilename);
'@

$type = Add-Type -MemberDefinition $signature `
-Name FontUtils -Namespace AddFontResource `
-Using System.Text -PassThru

$type::AddFontResource($file)

上記スクリプトを実行すると指定フォントがフォントテーブルに追加されます。
フォントファイルはインストールされないので一時的な使用方法です。
フォントテーブルに追加するのでワードパッドやエディタ等で使用可能になります。
これはこれで使い道が有りそうです。

プロデルからも選択はできますが直後にエラーになってしまいます。
エラーを回避して使えるようにする方法が有りますでしょうか。

よろしくお願いいたします。

Re^2: 同梱したフォントの使用

投稿者:アーク 投稿日:2024/01/23(Tue) 21:51:55 No.2904

ゆうとさん、ありがとうございます。

行き成り私が考えていた最終形だったので驚きました。
お蔭様で「AddFontFile」の方も解決しました。
やはり未だメソッドとプロパティの区別がついていないようです。
C#のコードではどちらも「.」なので…。
ドットネット型を習得できたら最強です。

Re: 同梱したフォントの使用

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/01/23(Tue) 19:56:43 No.2903

こんにちは ゆうとです。

インストールされていないフォントを利用する手段があるようですので
ドットネット型の仕様確認も含めて、サンプルコードを作ってみました。

参考にしてください。

https://produ.irelang.jp/bbs/progbbs/forump.php?mode=viewcode&id=101

Re^2: 素材のポインタを取得したい

投稿者:アーク 投稿日:2024/01/22(Mon) 10:38:43 No.2902

アークです。コメントありがとうございます。

〉もう少し具体的な話が分からないと、これ以上の説明はできないです。
今は「System.Drawing.Text.PrivateFontCollection」を試行錯誤中です。
最終的にはリソースに格納したフォントを「AddMemoryFont」で使用したいと考えています。
先ずは「ドットネット型」の理解を深めないと初期段階で堂々巡りです。

Re: 素材のポインタを取得したい

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/01/21(Sun) 21:03:24 No.2901

こんにちは ゆうとです。
お世話になっています。

> 素材リストにある素材を名前などを指定してそのポインタを取得する事は可能でしょうか。
ポインタというのは、アドレス参照のポインタのことでしょうか。
もしそうだとすると、プロデルではポインタを直接扱う手段はないので
「バイナリ配列として取得する」を使うことでネイティブ関数に情報は渡せると思います。
ただこれは実際のAPI関数によって方法が異なりますので、もう少し具体的な話が分からないと、これ以上の説明はできないです。

Re: できたみたいです

投稿者:ten 投稿日:2024/01/21(Sun) 11:14:43 No.2900

あああ、遅くなってしまいました(←完全に諦め切っていた)。

私が「あーもう無理。駄目」と諦め切っている間に、こんなにも様々な方法でのアプローチを・・・ありがとうございます。

かみ応え満点なので、じっくり拝読致します。

素材のポインタを取得したい

投稿者:アーク 投稿日:2024/01/08(Mon) 13:06:17 No.2898

いつもお世話になっております。アークです。

さて、素材リストにある素材を名前などを指定してそのポインタを取得する事は可能でしょうか。
可能でしたらご教示頂けますでしょうか。

よろしくお願いいたします。

できたみたいです

投稿者:アーク 投稿日:2024/01/06(Sat) 22:21:12 No.2897

ten さん、こんばんは。アークです。

未だ完全では無いですができたみたいです。

確認できました

投稿者:アーク 投稿日:2024/01/06(Sat) 19:19:36 No.2896

ゆうとさん、こんばんは。アークです。

確認用のサンプルプログラムありがとうございます。
お蔭様で「押させる」の動作を確認しました。
「!」が問題だったようです。
以前、使われていた「マウスカーソル制御」方式も通らなかったので八方塞の状態でした。
「マウスカーソル!」の様な使い方が在るとは知りませんでした。

お騒がせをしました。<m(_ _)m>

ウィンドウ内だからだと思います

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/01/06(Sat) 17:32:06 No.2895

こんにちは
こちらこそ本年もよろしくお願いいたします。

状況が再現できなかったのですが、おそらくウィンドウ内で試していることが理由だと思います。
「マウスカーソル」設定項目も名前が被っていますので、次のように「!」を使って指定してみてください。

--------
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    初期化開始する
    この実質大きさを{428,394}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    ボタン1というボタンを作る
      その位置と大きさを{161,149,112,34}に変える
      その内容を「ボタン1」に変える
      その文字色を「標準の文字」に変える
    初期化終了する
    この設計スケール比率を{144,144}に変える
  終わり
  ボタン1がクリックされた時の手順
    マウスカーソル!に{500,300}を左ボタンで押させる  
  終わり
終わり
-------

▲ページの先頭へ

- WebForum -