ページ 33

Posted: 2006年5月03日(水) 19:36
by GTR
セットするときにはどうやれば良いでしょうか?

ABまだ始めて4ヶ月目。
大分慣れてきましたが、命令や関数については、ほとんど知識がありません。

コードのサンプルの提供をお願いします。

Posted: 2006年5月03日(水) 21:10
by Toshi
ヘルプの「Win32API - システム サービス - レジストリ」にある "Reg~" で始まる API を使います。
RegCreateKeyEx でキーを作成し(既に存在しているなら開き)、
RegSetValueEx で値を設定し、RegCloseKey でキーを閉じればいいでしょう。
設定した値を読み込む場合は、RegQueryValueEx を使う必要があります。

追記
なんか場違いな回答をしてしまったと気付きました。すみません。

Posted: 2006年5月06日(土) 19:11
by GTR
レジストリの設定はもう解決いたしました。
しかし、何度も言うようですが、その関連付けされているファイルをダブルクリックすると、そのファイルの内容(ここではテキストファイルの中だと考えてください)を取得してエディットボックスにセットする。
これが私の目標です。

Posted: 2006年5月06日(土) 19:22
by Toshi
「ファイルの内容を取得してエディット ボックスにセットする」というのは以前の投稿に既に答えがありますので、
そこを読み返してみてはどうでしょうか。
ファイルの内容を取得する方法については、その他にも CreateFile API があります。

Posted: 2006年5月06日(土) 19:28
by C1000
あとはサンプルのテキストエディダのファイルを開く部分に取得したファイル名を設定すればエディットボックスにセットできるはずです。
(変数Fileにファイル名が入っている事とします。)

コード: 全て選択


    Dim hEdit As Long
    Dim File  As String  
    Dim hFile As Long
    Dim dwFileSize As DWord
    Dim dwAccessByte As DWord
    Dim FileName[MAX_PATH-1] As Byte
    Dim buffer As BytePtr  
    '-------------------
    ' ファイル オープン
    '-------------------

    hFile=CreateFile(File, GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, _
                     ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    If hFile=INVALID_HANDLE_VALUE Then
        MessageBox(hMainWnd,"ファイルオープンに失敗","エラー",MB_OK or MB_ICONEXCLAMATION)
        Exit Sub
    End If

    'ファイルサイズを取得し、バッファを確保する
    dwFileSize=GetFileSize(hFile,0)
    buffer=malloc(dwFileSize+1)

    'ファイルの内容を文字列変数bufferに読み込む
    ReadFile(hFile,buffer,dwFileSize,VarPtr(dwAccessByte),ByVal 0)
    buffer[dwAccessByte]=0

    'ファイル ハンドルを閉じる
    CloseHandle(hFile)

    '-------------------


    'EditBox1のハンドルを取得
    hEdit=GetDlgItem(hMainWnd, EditBox1)

    'hEditにバッファをセットする
    SetWindowText(hEdit,buffer)

    'バッファを解放する
    free(buffer)

    'hEditにフォーカスをセット
    SetFocus(hEdit)
テストしていないので動くかどうかわかりません。

Posted: 2006年5月06日(土) 21:14
by GTR
前の投稿に答えがあるとおっしゃっていたので、コードを書いてみましたが
コンパイルしてもうまくいきません。

コード: 全て選択

Open "(0,Mid$(buffer,hTop,hEnd-hTop))" For Input As #1
    Input #1,File
    SetDlgItemText(hMainWnd,EditBox1,File)
間違っているところがあると思うのですが、よく分かりません。

それだと

Posted: 2006年5月07日(日) 15:19
by konisi
それだと、(0,Mid$(buffer,hTop,hEnd-hTop))っていう名前のファイルをインプットモードで開けるだけなので、おそらく無理ですよ。

Posted: 2006年5月07日(日) 15:47
by C1000
Openの部分はこうすれば動くと思います。

コード: 全て選択

Open Mid$(buffer,hTop,hEnd-hTop For Input As #1

Posted: 2006年5月07日(日) 17:24
by konisi
それだとカッコの数があってないと思うのだが。

コード: 全て選択

Open Mid$(buffer,hTop,hEnd-hTop) For Input As #1 
では?

あ..

Posted: 2006年5月07日(日) 17:27
by C1000
すいません見落としてました。

Posted: 2006年5月07日(日) 20:13
by GTR
コードをあわせて組んでみましたが、ファイルの一行目のみが表示されました。
最後までは表示されませんでしたが、なぜでしょうか?