こちらを取り組んでいるのですが、昨日 "上手く動くようになった"
と思い、今日実戦投入したのですが、上手く行かない所もあり・・・。
ファンネル - C#ATIA
何かしら手掛かりが得られないか? 探していたらこちらがHit。
Dimension text location while rerouting command - DASSAULT: CATIA products - Eng-Tips
結果的に何の解決にもならなかったのですが、記載されているコードが
どうやらモーダレスなメッセージボックスのようです。
64bitも利用できるようにし、関数化しました。
Option Explicit #If VBA7 And Win64 Then Declare PtrSafe Function MessageBox Lib "User32.dll" Alias "MessageBoxA" ( _ ByVal hWnd As Long, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal uType As Long _ ) As Integer #Else Declare Function MessageBox Lib "User32.dll" Alias "MessageBoxA" ( _ ByVal hWnd As Long, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal uType As Long _ ) As Integer #End If 'WinAPI MessageBox Private Function MsgBoxApi(ByVal prompt As String, _ Optional ByVal buttons As Long = vbOKOnly, _ Optional ByVal title As String = " ") As VbMsgBoxResult MsgBoxApi = MessageBox(&H0, prompt, title, buttons) End Function
使う場合は標準モジュールじゃないとダメだと思います。
VBAのMsgBoxと引数の順番が異なっていたので、一緒にしてみました。
・・・VBAの方はもう2個オプション引数が有るのですが、まぁこの3個で
十分だろうと思ってます。
戻り値もVBAのMsgBoxと同じで恐らく大丈夫でしょう。
実際の使い方は
MsgBoxApi "hoge" MsgBoxApi "hoge", vbYesNo + vbQuestion Dim fuga fuga = MsgBoxApi("hoge", vbYesNoCancel + vbExclamation, "piyo")
みたいに通常のMsgBoxと変わらず使えるのですが、これでは用意してまで
使う意味が有りません。
なので、こんなコードにすると通常のMsgBoxとの違いを感じます。
MsgBoxApi "多分、僕は使わないけどね", vbOKOnly + vbSystemModal, "無責任"
実行するとこんな感じです。
このダイアログを表示したまま、CATIAの操作が出来ます。
恐らく使うことは無いのですが。
本当は、こんな事を知りたかった訳じゃないのに。