win32 c++ everything version 32

2020/09/05 20:51 by yamasyuh68
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
win32 c++ everything
# 機能追加

20/9/5
- ダブルクリックでエディットボックスですべて選択を実装
**この動作ってデフォルトじゃなかったんだなあ・・**

20/8/30
- アクセラレータがうまくいかない理由はなんとなくわかったのでやめた
アクティブになってるコントロールにメッセージが行ってしまってそこで消費されて親に届いていないようだ。コントロールから親に送ればいいんだがいろいろ面倒なのでやめて元に戻した
**ちょっと悔しい( ´∀`)**
- エディットボックスにすべて選択(c+A)を実装

- アイコンつけた

20/8/25
- ESCで終了にしたくてショートカットのアクセラレータを設定したがうまくいかんなあ???


20/7/26 久しぶり
- 起動時にクリップのデータを検索する

# 機能追加
20/6/7 久しぶりにいろいろいじった
- 選択文字列を検索、同整形して検索
- ファイルのサイズ確認、クリップ取得
- pngのコメント取得 
- escで終了~結構難しかった

# 雑文

・64BItアプリにしていて文字列は基本的にwcharでやってますがどうも面倒ですね。データを生で扱うならcharの方がわかりやすい。文字列長もwcslen()は二倍にしてます
・これは単一ファイルをカットするコードです。複数ならファイル名の間に0を一つ入れます。wideなので0を二つ入れます。最後のファイルの終端は0を二つ置くのがルールです。wideだから4つになりますが。
・hGblの方はDROPFILES構造体のサイズとファイル名長と最後のゼロ分だけ領域を確保してます。ゼロでクリアしてあるのでゼロは書き込んでません。ちなみにDROPFILES構造体の長さは20になります。
・ここら辺のデータのセットを正しくやらないとうまくいかない。クリップボードへのデータセットではエラーにならないけど、貼り付けるときに動作しません。私はVisualStudioのデバッガで実際にメモリを見ながら何度か試しました。
・切り取りの際はPreferredDropEffectのデータを2でセットするのがポイントです。クリップボードのデータ形式として標準で用意されていませんのでRegisterしてコードをもらってからセットします。
・ここら辺はc#だと、①DataObjectを作る②これにファイル名をセット③さらにPreferredDropEffectをセット④オブジェクトをClipboard.SetDataObjectする、と言う流れになるみたい。同じ事をcでやれないはずが無いのでいろいろ調べてやっと出来ました。
・ちなみにPreferredDropEffectでセットする2というデータはlittleらしく、2000です。0002とすると失敗します。
・トライしてから成功するまで1週間くらいかかりました ┐('д')┌
メモリをグリグリ直接いじる感じがcっぽくて良いよね。



# ファイルのカット

窓プログラミング
http://hp.vector.co.jp/authors/VA016117/index.html

超初心者の Windows Program(C++)
http://maeda.g2.xrea.com/winc/winc.htm


Shell Clipboard Formats
https://docs.microsoft.com/en-us/windows/win32/shell/clipboard

DROPEFFECT_MOVE をみる

これで検索
clipboard dropeffect


# マルチバイト、シングルバイト
strlen:シングルベース
_mbstrlen: マルチベース
- 文字列の両方の長さの差が文字列に含まれるマルチバイト文字数になる


# c++からc#を使う
http://www.wisdomsoft.jp/375.html

How does files get copy/cut/paste using clipboard operations (ctrl-c /ctrl-v)
https://stackoverflow.com/questions/5016874/how-does-files-get-copy-cut-paste-using-clipboard-operations-ctrl-c-ctrl-v

Thread: Copy or cut files to clipboard
http://forums.codeguru.com/showthread.php?66928-Copy-or-cut-files-to-clipboard

=========================================
クリップボード:OLE クリップボード機構の使用
https://docs.microsoft.com/ja-jp/cpp/mfc/clipboard-using-the-ole-clipboard-mechanism?view=vs-2019



-----
~20/5/6
TCDに送る修正
everyのメモリ開放
everyの項目編集~いろいろ
everyのエラー表示
大きなファイルをパス

-------
20/4/29
- gdi++にファイルを直接渡すと排他制御になってしまう
メモリ上に読み込んでから使う仕様にした、zipの時と同じね
- コメントルーチン実装
バイトオーダーが違ってた。変換のためのマクロを仕入れた
基本はQtのコードを流用
- ほぼQt並みになった、使える
でも大変だった~( ゚Д゚)
win32apiはc、c++では書きづらい
Qtと同じだな
でもQtほど便利ではない┐(´∀`)┌


20/4/27
- エクスプローラで開いてファイルを選択、実装
shellでは出来ずCreateProcessを使った
- コメント表示ルーチン実装中
画像表示後再度ファイルを開いてコメントを読むか?
zipも同様、先頭ファイルまでシークすれば共通のコードでいけるな
(zipは画像表示のためにファイルをメモリにロードするのでその時に一緒に読もうと思っていたが、非zipは画像表示後にもう一度画像にアクセスしてコメントをロードするからzipも同じで良いな)


20/4/26
- zipの先頭画像表示実装
メモリ上の画像も表示できるようになったので、高速のビューアもこれで出来るな
- コンボボックスでフィルター切替実装
- ダブルクリックでシェルに渡す実装
- かなり進んできた、残る大きな機能はコメント表示だ
あとメモリの解放、これ結構難しそうだ


20/4/23
- スケーリングをスタティック枠に合わせるように書換
- 引数を受けつけるようにした
GetCommandLineだと全て来るので空白でsplitする必要
ここからはまって上手くいかなくなった
win32を使うって事はc++でなくcで書いた方が良いのかもしれない
std::stringとwchar_t でごちゃごちゃしてきて進まなくなった
win32は独自の型が多くて難しい(-_-)

20/4/22
- 表示できた(・∀・)ノ スタティックにBitmap属性設定必要だった
スケーリングもできた、描画用にGraphicsが必要だった
gdi++ は結構使えるが日本語だとc#のマニュアルしか無い
c++だと文法が違ってあんまり参考にならないので英語だけ
Qtのマニュアルに比べてわかりづらい

20/4/21
- リストで選択した画像を表示したいんだけどうまくいかない
c++のファイル分割とか、まだよくわからん事も理由 
Qtだと簡単にかけたんだがどこが違うのか
- sttaicを配置してそこにHBITMAPをセットしてみたが表示されない
難しい(-_-)

20/4/20
- gdi+を使ってjpgを描画した、ネットのコード通りだが簡単だった
WM_PAINT での描画を前提としてるのでstaticを配置してセットするのとどっちが良いか要検討
まあ両方出来るようにした方が良いよな
- GUIを利用するために.net を落としてみたがやはり出来ない
c#でスケルトンを試したら使えた、起動はQtよりは速いがwin32よりはやはり遅い
このフォームアプリは.net環境でc#専用らしく、c++でも使えたはずだが使わせてないようだ

~ 20/4/19
リストビューにeverythingのデータを表示するまで
リストの操作は簡単で良い、Qtよりも簡単かも
x64にしたためだと思うが全てWcharにしなければならず面倒だった


-------
オブジェクト廃止
http://kaitei.net/winapi/pens-brushes/
GDI++ 使い方
http://atelier-xwe.blogspot.com/2012/11/gdi.html


jpgファイルを拡大縮小表示(32/64bit)
http://yamatyuu.net/computer/program/vc2013/jpgviewm4/index.html

-------
メモリ上に読み込まれたjpgファイルのイメージをGDI+でウィンドウに表示する標準的なソース(32/64bit)
http://yamatyuu.net/computer/program/vc2013/jpgviewmem/index.html


--------
.net があれば良いのか??
http://y-okamoto-psy1949.la.coocan.jp/VCpp/OnVSCpp2019/

---
ウインドウ位置の保存読込
https://www.ruche-home.net/program/tips/window-place

----
第336章 GDI+の基礎 その2 
http://www.kumei.ne.jp/c_lang/sdk4/sdk_336.htm
#include <gdiplus.h>
Gdiplus.lib


      

機能追加

20/9/5

  • ダブルクリックでエディットボックスですべて選択を実装
    この動作ってデフォルトじゃなかったんだなあ・・

20/8/30

  • アクセラレータがうまくいかない理由はなんとなくわかったのでやめた
    アクティブになってるコントロールにメッセージが行ってしまってそこで消費されて親に届いていないようだ。コントロールから親に送ればいいんだがいろいろ面倒なのでやめて元に戻した
    ちょっと悔しい( ´∀`)

  • エディットボックスにすべて選択(c+A)を実装

  • アイコンつけた

20/8/25

  • ESCで終了にしたくてショートカットのアクセラレータを設定したがうまくいかんなあ???

20/7/26 久しぶり

  • 起動時にクリップのデータを検索する

機能追加

20/6/7 久しぶりにいろいろいじった

  • 選択文字列を検索、同整形して検索
  • ファイルのサイズ確認、クリップ取得
  • pngのコメント取得
  • escで終了~結構難しかった

雑文

・64BItアプリにしていて文字列は基本的にwcharでやってますがどうも面倒ですね。データを生で扱うならcharの方がわかりやすい。文字列長もwcslen()は二倍にしてます
・これは単一ファイルをカットするコードです。複数ならファイル名の間に0を一つ入れます。wideなので0を二つ入れます。最後のファイルの終端は0を二つ置くのがルールです。wideだから4つになりますが。
・hGblの方はDROPFILES構造体のサイズとファイル名長と最後のゼロ分だけ領域を確保してます。ゼロでクリアしてあるのでゼロは書き込んでません。ちなみにDROPFILES構造体の長さは20になります。
・ここら辺のデータのセットを正しくやらないとうまくいかない。クリップボードへのデータセットではエラーにならないけど、貼り付けるときに動作しません。私はVisualStudioのデバッガで実際にメモリを見ながら何度か試しました。
・切り取りの際はPreferredDropEffectのデータを2でセットするのがポイントです。クリップボードのデータ形式として標準で用意されていませんのでRegisterしてコードをもらってからセットします。
・ここら辺はc#だと、①DataObjectを作る②これにファイル名をセット③さらにPreferredDropEffectをセット④オブジェクトをClipboard.SetDataObjectする、と言う流れになるみたい。同じ事をcでやれないはずが無いのでいろいろ調べてやっと出来ました。
・ちなみにPreferredDropEffectでセットする2というデータはlittleらしく、2000です。0002とすると失敗します。
・トライしてから成功するまで1週間くらいかかりました ┐('д')┌
メモリをグリグリ直接いじる感じがcっぽくて良いよね。

ファイルのカット

窓プログラミング
http://hp.vector.co.jp/authors/VA016117/index.html

超初心者の Windows Program(C++)
http://maeda.g2.xrea.com/winc/winc.htm

Shell Clipboard Formats
https://docs.microsoft.com/en-us/windows/win32/shell/clipboard

DROPEFFECT_MOVE をみる

これで検索
clipboard dropeffect

マルチバイト、シングルバイト

strlen:シングルベース
_mbstrlen: マルチベース

  • 文字列の両方の長さの差が文字列に含まれるマルチバイト文字数になる

c++からc#を使う

http://www.wisdomsoft.jp/375.html

How does files get copy/cut/paste using clipboard operations (ctrl-c /ctrl-v)
https://stackoverflow.com/questions/5016874/how-does-files-get-copy-cut-paste-using-clipboard-operations-ctrl-c-ctrl-v

Thread: Copy or cut files to clipboard
http://forums.codeguru.com/showthread.php?66928-Copy-or-cut-files-to-clipboard

=========================================
クリップボード:OLE クリップボード機構の使用
https://docs.microsoft.com/ja-jp/cpp/mfc/clipboard-using-the-ole-clipboard-mechanism?view=vs-2019


~20/5/6
TCDに送る修正
everyのメモリ開放
everyの項目編集~いろいろ
everyのエラー表示
大きなファイルをパス


20/4/29

  • gdi++にファイルを直接渡すと排他制御になってしまう
    メモリ上に読み込んでから使う仕様にした、zipの時と同じね
  • コメントルーチン実装
    バイトオーダーが違ってた。変換のためのマクロを仕入れた
    基本はQtのコードを流用
  • ほぼQt並みになった、使える
    でも大変だった~( ゚Д゚)
    win32apiはc、c++では書きづらい
    Qtと同じだな
    でもQtほど便利ではない┐(´∀`)┌

20/4/27

  • エクスプローラで開いてファイルを選択、実装
    shellでは出来ずCreateProcessを使った
  • コメント表示ルーチン実装中
    画像表示後再度ファイルを開いてコメントを読むか?
    zipも同様、先頭ファイルまでシークすれば共通のコードでいけるな
    (zipは画像表示のためにファイルをメモリにロードするのでその時に一緒に読もうと思っていたが、非zipは画像表示後にもう一度画像にアクセスしてコメントをロードするからzipも同じで良いな)

20/4/26

  • zipの先頭画像表示実装
    メモリ上の画像も表示できるようになったので、高速のビューアもこれで出来るな
  • コンボボックスでフィルター切替実装
  • ダブルクリックでシェルに渡す実装
  • かなり進んできた、残る大きな機能はコメント表示だ
    あとメモリの解放、これ結構難しそうだ

20/4/23

  • スケーリングをスタティック枠に合わせるように書換
  • 引数を受けつけるようにした
    GetCommandLineだと全て来るので空白でsplitする必要
    ここからはまって上手くいかなくなった
    win32を使うって事はc++でなくcで書いた方が良いのかもしれない
    std::stringとwchar_t でごちゃごちゃしてきて進まなくなった
    win32は独自の型が多くて難しい(-_-)

20/4/22

  • 表示できた(・∀・)ノ スタティックにBitmap属性設定必要だった
    スケーリングもできた、描画用にGraphicsが必要だった
    gdi++ は結構使えるが日本語だとc#のマニュアルしか無い
    c++だと文法が違ってあんまり参考にならないので英語だけ
    Qtのマニュアルに比べてわかりづらい

20/4/21

  • リストで選択した画像を表示したいんだけどうまくいかない
    c++のファイル分割とか、まだよくわからん事も理由
    Qtだと簡単にかけたんだがどこが違うのか
  • sttaicを配置してそこにHBITMAPをセットしてみたが表示されない
    難しい(-_-)

20/4/20

  • gdi+を使ってjpgを描画した、ネットのコード通りだが簡単だった
    WM_PAINT での描画を前提としてるのでstaticを配置してセットするのとどっちが良いか要検討
    まあ両方出来るようにした方が良いよな
  • GUIを利用するために.net を落としてみたがやはり出来ない
    c#でスケルトンを試したら使えた、起動はQtよりは速いがwin32よりはやはり遅い
    このフォームアプリは.net環境でc#専用らしく、c++でも使えたはずだが使わせてないようだ

~ 20/4/19
リストビューにeverythingのデータを表示するまで
リストの操作は簡単で良い、Qtよりも簡単かも
x64にしたためだと思うが全てWcharにしなければならず面倒だった


オブジェクト廃止
http://kaitei.net/winapi/pens-brushes/
GDI++ 使い方
http://atelier-xwe.blogspot.com/2012/11/gdi.html

jpgファイルを拡大縮小表示(32/64bit)
http://yamatyuu.net/computer/program/vc2013/jpgviewm4/index.html


メモリ上に読み込まれたjpgファイルのイメージをGDI+でウィンドウに表示する標準的なソース(32/64bit)
http://yamatyuu.net/computer/program/vc2013/jpgviewmem/index.html


.net があれば良いのか??
http://y-okamoto-psy1949.la.coocan.jp/VCpp/OnVSCpp2019/


ウインドウ位置の保存読込
https://www.ruche-home.net/program/tips/window-place


第336章 GDI+の基礎 その2
http://www.kumei.ne.jp/c_lang/sdk4/sdk_336.htm
#include <gdiplus.h>
Gdiplus.lib