約 2,354,334 件
https://w.atwiki.jp/animetable/
temp
https://w.atwiki.jp/os-tempo/pages/13.html
OS-tempoとは? 「30日でできる!OS自作入門(川合秀実氏著)」を読んで、 なぜか昔からOSを作りたいと思っていた僕が、河合氏の「haribote-os」を基盤として 勝手に作り始めてしまった自作OSです。 河合氏に心から感謝! roots OS-tempoの名前の由来は、英語の tempo テンポ、速さ、速度 (『英辞郎 on the Web』より) ではなく エスペラント語(世界共通語)の、 os-tempo 未来(時制), =futuro (『実用エスペラント語小事典』より) です。 技術力はないものの、創造性をもって、長く続くようなOSを作れたらなと思ってつけました。ついでに、「OS」とついているので、縁起も良いかなと思います。
https://w.atwiki.jp/tempest00/pages/43.html
【10年8月13日 Tempest血盟創設】 まるっきり一人からのスタートでした。 ソロ血盟ですねwww完全にw 【10年9月24日 初要塞GET】 俺、モルグ、助っ人の麦の3人でしたw聖者要塞だったねw 【11年5月1日 初城主】 Tempest初の城主となりましたwギランでしたねw クラン員加入の歴史 ※現在残っている血盟員のみを対象に書いてますのでご了承ください。 10年~ 8/24 現在の虎舞竜が加入 9/2 現在のS・セブンが加入 9/6 モルグが加入 9/7 ルサルカが加入 9/8 現在のチョッカーが加入 10/3 現在のフレラが加入 10/5 よるこが加入 11/15 ヒバーナが加入 11/25 アビス・ロジエルが加入 12/20 現在の不神が加入
https://w.atwiki.jp/hondashi/pages/40.html
デフォルトデコーダ無効化 バッチ for Windows 7 X-WORKS.orgさんが公開されている 「圧縮フォルダ無効化 バッチ for Windows 7」を元に Windows7にデフォルトで搭載されているデコーダを 無効化するバッチを作ってみました。 同梱されてるバイナリ及び、バッチファイルの原形、ファイル構造については X-WORKS.orgさん製作です。 http //xworks.org/ また、バイナリを含めての公開の許可を頂き、改めて感謝申し上げます。 使用前の注意 このバッチはデフォルトで入っているデコーダを無効化します。 代わりのデコーダを用意せずに使用すると、 動画が再生出来なくなることがあります。 具体的に言うと、 DVD Video / Mpeg4-AVC(H.264) DVD Audio / AAC Mpeg4-ASP(旧DivX,Xvid) mp3 (呼称の間違いについてはご容赦下さい) この4つを無効化することが出来ます。 スラッシュの前後は同じファイルなので同時に無効化されるということです 例.AACを無効化するとDVD Audioも無効化される DivXH264DecoderやXvid等、 標準のものより高機能だったり使い慣れたものを使いたい でも使えなくて困っている、という人向けです。 ファイル No_Win7_default_codec.zip 使い方 readme.txtと重複しますが 基本的な使い方は 適当な所に解凍する disable.batを管理者として実行 画面の指示に従う 実行時の注意 解凍するのは何処でもいいのですが バッチファイル実行時のcmd.exeは 実行元が32bitだと、cmd.exeも32bit版が起動されてしまい x86 or x64の判定を間違い、レジストリに消し漏れが出来てしまいます。 readme.txtには"デスクトップに配置"としていますが 64bitOSで、32bitのファイラ、ランチャ等を使用している人は注意して下さい。 ※32bitアプリから64bit版を起動できるようにするソフトもあるようです 参考:BlueWoW 備考 VMware上のWindows7 Pro 64bitにて 動画プレイヤーQonohaでテストし 正常動作を確認しましたが このバッチの使用に関しての不具合等には一切責任は持てません。 普通は消すことが出来ないレジストリキーを 強制的・自動的に削除出来るバッチです。 動作を理解し、自己責任の下使用して下さい。
https://w.atwiki.jp/aegisub/pages/14.html
template クラス テンプレートには3つのクラスがあります lineクラス、sylクラス、furiクラス (pre-lineはlineクラス、charはsylクラスに属します) テンプレートは現れる順序に関わらす、lineクラス、sylクラス、furiクラスの順で実行されます。 同じクラスのテンプレートは現れた順に実行されます。 テンプレートが適用されるとカラオケ行の\kタグはfx行に出力されません。(keeptagsを使用しても出力されません) sylクラス、furiクラスのテンプレートではカラオケ行が音節や文字単位に分割して出力されるためカラオケ行内の改行\Nタグは機能しません。 lineクラス(lineとpre-line)のテンプレートは名前を付けることができます。同じ名前のテンプレートはそれら全体で1つのfx行を出力します。 template syl 音節単位でエフェクトをかける場合に適したテンプレートです。 カラオケ行を\kタグで区切られた音節単位に分割してfx行を出力します。 各音節のテキストの前に式を評価したテンプレートのtext欄の内容を追加します。 音節単位に分割して出力されるため、\pos(または\move)タグを使う必要があります。 template char 文字単位でエフェクトをかける場合に適したテンプレートです カラオケ行を文字単位に分割してfx行を出力します。 各文字の前に式を評価したテンプレートのtext欄の内容を追加します。 文字単位に分割して出力されるため、\pos(または\move)タグを使う必要があります。 template furi ルビ付きのカラオケ行を\kタグで区切られた音節単位に分割してfx行を出力します。 各音節(ルビ)の前に式を評価したテンプレートのtext欄の内容を追加します。 音節単位に分割して出力されるため、\pos(または\move)タグを使う必要があります。 template syl furiとすると1つのテンプレートでメインテキストとルビを1度に出力することができます。 template line カラオケ行の分割はされません。 各音節のテキスト前に式を評価したテンプレートのtext欄の内容を追加します。 template pre-line カラオケ行の分割はされません。 行の先頭に式を評価したテンプレートのtext欄の内容が追加されます。 pre-lineテンプレートではnotextは機能しません。 名前付きテンプレート lineとpre-lineテンプレートには名前を付けることができます。
https://w.atwiki.jp/temperace/pages/15.html
Kindlyと前衛狗神が同じ理想像を描いていたため設立 PS向上・指摘・指導ができる環境を創造するギルド【TemperancE】設立。 2010,4/3 親睦ギルド TemperancE 設立 代表者 Kindly(GM) 前衛狗神(OF) 設立メンバー 飛ばない豚(OF) ギルド資産 100000000 ギルド倉庫ID TempE ※Kindlyの所持キャラ(全STR,LV50戦wei299) 2010,6/30 Kindly氏休止中のため、前衛狗神が代理GMに 親睦ギルド SagittariuS 設立 TemperancEⅱだと、ギルド名が長く不可能だったので、ギルド名変更。 ギルド事態はTemperancEのまま。募集もTemperancEでかける。 オフィサーを第一期メンバーから2名任命 モスリン ゼルファー 現在募集はギルドメンバーの紹介のみでの加入。
https://w.atwiki.jp/nicotetsu/pages/80.html
モックアップ製作用に使用するページです。 ご質問、ご意見、ご感想は南西支社まで。 temp/home トップ temp/about ニコ鉄とは temp/latest 新着! temp/company 会社概要 temp/menu メニュー
https://w.atwiki.jp/improper_code/pages/76.html
TempAR ※改造コードツール。 ※CWCとPARのコードエンジンを搭載。 ※CWCheatのdbファイルがそのまま使える。 ※サーチ機能あり ※スクリーンショット機能あり ※UMD Dumper(ISO吸出し機能)搭載 TempAR公式サイト 解説サイト 導入手順チートファイル(DB形式) PAR用のコードファイル(pspar_codes1.bin)を使用するv1.62まで v1.63以降 CF用のコードを使用する 起動方法v1.62以降での起動方法 旧起動方法(v1.61以前) 使用方法コードのグループ化 POPS(PS1)でTempARを使う場合の注意 スクリーンショットを撮る 注意点コードをサーチする場合の注意 TempAR上でコードを追加する場合の注意 公式サイト 作者のブログ: Richard s Blog TempARのページは こちら 解説サイト God is in the details TempAR の使い方 【前編】 TempAR の使い方 【後編】 TEMPAR ※上記のブログで導入からサーチ方まで詳しく書いてあるからおススメ 導入手順 TempAR をダウンロード後、解凍する。・v1.62-3なら「Download TempAR 1.62-3」を・v1.63なら「Betas」から「Download TempAR 1.63 Beta」を選択する。 「seplugins」をメモステのルートにコピーする。 ※他のプラグインを導入済みの場合は、 「game.txt」と「pops.txt」を上書きしないように注意し下記を追記。 ・「game.txt」に「ms0 /seplugins/TempAR/tempar.prx 1」を追記。 ・「pops.txt」に「ms0 /seplugins/TempAR/tempar_lite.prx 1」を追記。 ※PSP Go の内蔵ストレージの場合は「ms0 /」では無く「ef0 /」となる。 ※6.35/6.36PRO の場合は「seplugins」を「plugins」にする必要がある。 それに伴い「game.txt」と「pops.txt」も修正しておく必要がある。 注意) バージョンアップさせる際に、前バージョンのコンフィグファイルを消さないと起動した時に不具合が発生する場合があるらしいので注意。 チートファイル(DB形式) PAR形式のコードを使う場合は「_L」ではなく「_M」をコードの先頭に記述する。 CWCで使用していたDBファイルを流用する場合のやり方は以下の通り。「cheat*.db」のコメ*に適当な数字を追記してから、既存の「cheat.db」と同じ場所にコピーする。 TempARを起動して「PRX」タブに切り替え、「Load cheat file(cheat.db,index1)」までカーソルを移動させる。 右ボタンを押すと「cheat1.db」とナンバーが増えていくので、先ほどコピーしたDB形式のファイルを選択し×ボタンを押す。 「Cheater」タブに移動して、ちゃんとコードが表示されていればOK。 また「cheats」フォルダに「ゲームID.db」という形で保存すれば、ゲーム別にDBを作成する事も可能。 PAR用のコードファイル(pspar_codes1.bin)を使用する v1.62まで 「 PSP用プロアクションリプレイ-更新情報- 」の「最新コードリスト」から「pspar_codes1.bin」をダウンロードする。 PCフォルダ内にある「pspar.exe」に「pspar_codes1.bin」をD&Dする。 すると「pspar_codes1.db」に変換されるので、名前を「cheat*.db」(*には適当な数字を入れる)に変更してTempARのフォルダにコピーする。 v1.63以降 尚、v1.63からはPAR用のコードファイルをそのまま使えるようになったようなので、変換は不要。 ファイル名は「cheat*.bin」(*には適当な数字を入れる)に変更してTempARのフォルダにコピーする。 コードを編集する場合はPCフォルダ内にある「psp-utilities.jar」で編集する事ができる。(他にも別のコード形式の変換なども可能) CF用のコードを使用する 「隔月刊コードフリークAR」に載っているCF用のコードは暗号化されている為、そのままでは使えない。 RITZ CODE にある「PSPコードフリーク用コード暗号化/復号化ツール」で復号してから「_C0」、「_L」、「0x」を付けてCWC形式にすれば使えるようになる。 起動方法 v1.62以降での起動方法 ゲーム起動後、Rボタン+HOME(PS)ボタンを押すと TempAR の画面が表示される。 旧起動方法(v1.61以前) ゲーム起動後、HOME (PS) ボタンを2回押す。(これをやらないと起動しないらしい) 続いて Vol(+) + Vol(-) を押すと TempAR の画面が表示される。 使用方法 TempARを起動すると、チート一覧が表示される。 使いたいチートを選択して「×」ボタンでONにしていく。 最後に「♪」ボタンを押して、コード機能をONにして、TempARを閉じる。 TempARの画面を表示しなくても、ゲーム中に「♪」を押せば任意にON/OFF可能。 また「□」ボタンでコードをONにした場合は、コード機能のON/OFFに関係なくコードがONになる。 コードのグループ化 _C0 CODE GROUP _M 0xCF00000x 0x000000yy x=0:ラジオボタン一つずつしかコードを選択できない。n倍などで倍率を変更したコードを複数用意する場合に便利。 x=2:チェックボックス複数コードを選択できる。同種のコードを一まとめにしたい場合などに便利。 yy=グループ化したいコードタイトル数(コードの行数ではないので注意する。) ※このコード直下にグループ化したいコードを記述する。 ※CWCのコードと併用可能。 POPS(PS1)でTempARを使う場合の注意 ※v1.63以降は変換不要になったので、そのまま使うことが出来る。 POPSで使う場合はTempAR用にコードを変換しないと使えない。変換ツールは「PC」フォルダ内にある。 「TempAR.exe」を起動し、左上にある「CWCheat POPS」にチェックを入れる。 次にその下にあるテキストエリアにCWCで使っていたPOPSのコードをコピペする。 そうすると、右側に変換されたコードが出力される。 あとはテキストエディタにコピペして「ゲームID.db」と保存して「cheats」フォルダに入れる等すれば完了。 また「cheatpops.db」を直接変換したい場合は、右側にある「Convert File」にチェックを入れる。 次に「Input Path 」に変換元の「cheatpops.db」を選択して、「Output Path 」で変換先のファイル名を指定する。 ファイル名は「cheat[No.].db」とすれば、利用しやすいかと思う。※[No.]には適当な数字を入れる(「cheat2.db」等)。 ※コードは8-4の形式で記述しないと、コード変換が正常に行えない。 8-8で記述している場合は、8-4に修正すること。 ○ _L aaaaaaaa dddd × _L aaaaaaaa 0000dddd ※PopsLoader を使用している場合は、初回起動時に正常にコードが読み込まれない場合がある。 その場合は一度ゲームを終了して再度起動すればよい。 ※別のゲームを起動した際に、前に起動したゲームのIDになってしまう事がある。 この場合も一度ゲームを終了して再度起動すればよい。 スクリーンショットを撮る 「SELECT」+「VOL-」でスクリーンショットが撮れる。 保存場所は「ms0 /PICTURE/」にBMP形式で保存される。 注意点 コードをサーチする場合の注意 TempARでコードをサーチする場合、デフォルトではサーチしたコードはPAR形式になる。 もしCWC形式でサーチしたいのなら[PRX]の「Real addressing?」を「False」にする。 TempAR上でコードを追加する場合の注意 コードを追加する場合は[PRX]の「Add new cheat#※ line(s) long」にカーソルを持っていく(まだ選択はしない)。 左右キーを押すと※の数字が増減するので、追加したいコードの行数にする。 追加するコードがPAR形式なら「×(バツ)」ボタンを、CWC形式なら「■(シカク)」ボタンを押す。 すると、入力画面に移るのでコードを追加する。
https://w.atwiki.jp/chikugogawa/pages/164.html
この曲のいろいろな指示からすると意外なことだけど、a tempoがでてくるのはここだけ。 釈迦に説法だろうけど、a tempoは「もとの速さで」の意味。リタルダンドやアチェレランドして速くなったり遅くなったのをちゃんとした速さに戻してやってください、という意味。というわけで「もとの」というのはtempo primoでいうようなだいぶ前の速さではなくて、たまたま速さが変わっていたのをちょっと前に戻すという意味になる。 普通の辞書で” a tempo”を引くと、「遅れずに」とある。別の日常会話の対訳で「いいときに」と訳されているケースも有る。”a”は前置詞で英語の at, to, in に相当する。tempoはtimeに相当する言葉。わからないでもないけどやっぱりちょっとわからない。 と思いながら多少ググって見て、ちょっと目からうろこなわかりやすいお話がありましたので、以下に全文コピー: http //www.ogaki-tv.ne.jp/~ozawa0263/sub2arekore.html#ArekoreTempo イタリア語の tempo と日本語の「速度」は全く概念が違う。イタリア語の tempo は必ず「等速度」の刻みであり、非等速のものは tempo とは言わない。 日本語では等速でないものをも「速度」と称する。そのため「テンポ」と類似発音しても、我々は「速度」的概念で理解する。だから、日本語で「テンポを乱すな・正確なテンポで」等と指揮者が要求するときも、イタリア語なら修飾語抜きの " Tempo ! " または" In tempo ! "で事足りる。 楽譜に、しばしば tempo rubato と書かれることがある。「盗まれた速度で」と大抵邦訳されているが、この直訳では何のことか解らない。「テンポ=等速」の図式が理解できれば、等速が壊される意味であること、つまり演奏者が「自由な速度で演奏せよ」(一般に ritardando することが多い)の意味であることが腑に落ちよう。
https://w.atwiki.jp/lafe/pages/22.html
編集 #if 0//\\ こっちはscriptタグを追加する CComPtr IHTMLElement spScriptElm; spDoc- createElement(CComBSTR(L"script"), spScriptElm); if (spScriptElm == nullptr) return NULL; CComQIPtr IHTMLScriptElement spScript = spScriptElm; spScript- put_type(CComBSTR(L"text/javascript")); spScript- put_text(CComBSTR(strFile)); CComPtr IHTMLElement spBodyElm; spDoc- get_body( spBodyElm); CComQIPtr IHTMLDOMNode spBodyNode = spBodyElm; if (spBodyNode == nullptr) return NULL; CComQIPtr IHTMLDOMNode spScriptNode = spScript; CComPtr IHTMLDOMNode sptempNode; spBodyNode- appendChild(spScriptNode, sptempNode); TRACEIN(_T("javascript追加 正常終了!")); return NULL; #endif #ifdef DEBUG// メニューのデバッグ CMenuHandle menu = hMenuSub; ATLTRACE(_T("メニュー開始↓↓↓↓↓↓↓↓↓↓↓\n")); for (int i = 0; i menu.GetMenuItemCount(); ++i) { CString strText; menu.GetMenuString(i, strText, MF_BYPOSITION); UINT uCmdID = menu.GetMenuItemID(i); if (uCmdID == 0) { strText = _T("――――――"); } ATLTRACE(_T("%s %d\n"), strText, uCmdID); } ATLTRACE(_T("メニュー終了↑↑↑↑↑↑↑↑↑↑↑\n\n")); #endif /** *@fileTabCtrl.h *@briefMTL タブ制御 */ //////////////////////////////////////////////////////////////////////////// // MTL Version 0.10 // Copyright (C) 2001 MB mb2@geocities.co.jp // All rights unreserved. // // This file is a part of Mb Template Library. // The code and information is *NOT* provided "as-is" without // warranty of any kind, either expressed or implied. // // TabCtrl.h Last updated February 12, 2001 ///////////////////////////////////////////////////////////////////////////// // April 10, 2004 minit added some #pragma once #include vector #include "DropDownButton.h" //#include "atltheme_d.h" #include "option/SkinOption.h" #include "DonutPFunc.h" //スキン切り替えとかの機能を入れたので移植性とかかなり損なわれてます。 //ごめんなさい(minit) ///////////////////////////////////////////////////////////////////////////// // CTabButton // CTabButton state flags enum ETcistate { TCISTATE_HIDDEN = 0x01, // standard text state TCISTATE_ENABLED= 0x02, TCISTATE_INACTIVE= 0x04, // select or not TCISTATE_SELECTED= 0x08, // ordianry selected TCISTATE_MSELECTED= 0x10, // multi-selected // event state TCISTATE_PRESSED= 0x20, // mouse pressed TCISTATE_HOT= 0x40, // mouse above item TCISTATE_MOUSEAWAYCAPTURED= 0x80, // mouse away but captured }; ///////////////////////////////////////////////////////////////////////////// // CTabCtrl2 - MTL implementation of Tab Ctrl2 template class T, class TBase = CWindow, class TWinTraits = CControlWinTraits class ATL_NO_VTABLE CTabCtrl2Impl public CDoubleBufferWindowImpl T, TBase, TWinTraits , public CTrackMouseLeave CTabCtrl2Impl T, TBase, TWinTraits , public CThemeImpl CTabCtrl2Impl T, TBase, TWinTraits { public DECLARE_WND_CLASS_EX(NULL, CS_DBLCLKS, -1) private typedef CTabCtrl2Impl T, TBase, TWinTraits thisClass; public // Constants enum _TabCtrl2DrawConstants { s_kcxTextMargin = 7, s_kcyTextMargin = 3, s_kcxGap= 2, s_kcyGap= 2, s_kcxSeparator= 2, s_kcxUpDown = 28, s_kcyUpDown = 14 }; private enum { _nMaxMenuItemTextLength = 100, }; // Data members public CImageListm_imgs; private DWORDm_dwTabCtrl2ExtendedStyle;// TabCtrl2 specific extended styles boolm_bLockRefreshBandInfo;// trueで描写を抑制する int m_nDrawStyle; unique_ptr CTabSkin m_pTabSkin; protected // Constructor/destructor CTabCtrl2Impl(); bool_FindIndexFromCurMultiSelected(int nIndex); void_ResetMultiSelectedItems(); void_DoPaint(CDCHandle dc, LPCRECT lpRect = NULL); void_SetDrawStyle(int nStyle); void_ReloadSkinData(); void_ReplaceFavicon(int nIndex, HICON hIcon); private // Overridables voidOnSetCurSel(int nIndex) { } CString OnGetToolTipText(int nIndex); voidOnDropDownButton() { } public // Attributes DWORDGetTabCtrl2ExtendedStyle() const { return m_dwTabCtrl2ExtendedStyle; } voidSetItemSize(const CSize size); CSizeGetItemSize() { return m_sizeItem; } voidModifyTabCtrl2ExtendedStyle(DWORD dwRemove, DWORD dwAdd); voidReloadSkin(int nStyle); boolInsertItem(int nIndex, const CTabCtrlItem item); voidDeleteItems(CSimpleArray int arrSrcs); boolMoveItems(int nDestIndex, CSimpleArray int arrSrcs); boolSetItemText(int nIndex, const CString str); boolSetItemImageIndex(int nIndex, int nImgIndex); boolSetItemInactive(int nIndex); boolSetItemActive(int nIndex); boolSetItemDisabled(int nIndex); boolSetItemEnabled(int nIndex); // CTabCtrlItem const CRect GetItemRect(int nIndex) const { return m_items.at(nIndex).m_rcItem; } protected boolSetItemUserData(int nIndex, DWORD_PTR dwUser); boolGetItem(int nIndex, CTabCtrlItem item); CTabCtrlItem GetItem(int nIndex) { return m_items.at(nIndex); } public boolGetItemText(int nIndex, CString str); boolGetItemImageIndex(int nIndex, int nImgIndex); boolGetItemUserData(int nIndex, DWORD_PTR dwData); boolGetItemState(int nIndex, BYTE bytData); boolGetItemRect(int nIndex, CRect rc); intGetFirstVisibleIndex(); intGetLastVisibleIndex(); boolAddItem(const CTabCtrlItem item); boolDeleteItem(int nIndex, bool bMoveNow = false); public boolCanScrollItem(bool bRight = true) const; boolScrollItem(bool bRight = true); // Overrides voidOnTrackMouseMove(UINT nFlags, CPoint pt); voidOnTrackMouseLeave(); voidDoPaint(CDCHandle dc); public // Message map and handlers BEGIN_MSG_MAP( CTabCtrl2Impl ) COMMAND_ID_HANDLER( COMMAND_ID_DROPBUTTON,OnPushDropButton) MESSAGE_HANDLER( WM_WINDOWPOSCHANGING,OnWindowPosChanging ) MESSAGE_HANDLER( WM_LBUTTONDOWN , OnLButtonDown ) MESSAGE_HANDLER( WM_LBUTTONUP, OnLButtonUp) NOTIFY_CODE_HANDLER( UDN_DELTAPOS, OnDeltaPos) REFLECT_NOTIFICATIONS( ) END_MSG_MAP( ) LRESULT OnPushDropButton(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL bHandled); LRESULT OnDeltaPos(int /*idCtrl*/, LPNMHDR pnmh, BOOL bHandled); LRESULT OnWindowPosChanging(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL bHandled); bool _MustBeInvalidateOnMultiLine(CSize size); LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bHandled); LRESULT OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bHandled); private void_DrawSeparators(CDCHandle dc, LPCRECT lpRect = NULL); }; ////////////////////////////////////////////////////////////////////// // CTabCtrl2Impl template class T, class TBase, class TWinTraits CTabCtrl2Impl T, TBase, TWinTraits CTabCtrl2Impl() m_dwTabCtrl2ExtendedStyle(TAB2_EX_TRANSPARENT | TAB2_EX_SUPPORTREBAR) , m_nFirstIndexOnSingleLine(0) , m_sizeItem(200, 50) , m_nHotIndex(-1) , m_nPressedIndex(-1) , m_bLockRefreshBandInfo(false) , m_nDrawStyle(SKN_TAB_STYLE_DEFAULT) { SetThemeClassList(L"TAB"); } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits _FindIndexFromCurMultiSelected(int nIndex) { CSimpleArray int arrCurMultiSel; GetCurMultiSel(arrCurMultiSel, false); if (arrCurMultiSel.Find(nIndex) != -1) return true; return false; } // Attributes template class T, class TBase, class TWinTraits voidCTabCtrl2Impl T, TBase, TWinTraits ModifyTabCtrl2ExtendedStyle(DWORD dwRemove, DWORD dwAdd) { DWORD dwOldStyle = m_dwTabCtrl2ExtendedStyle; m_dwTabCtrl2ExtendedStyle = (m_dwTabCtrl2ExtendedStyle ~dwRemove) | dwAdd; if (dwOldStyle != m_dwTabCtrl2ExtendedStyle) { m_nFirstIndexOnSingleLine = 0; _UpdateLayout(); } if ( (dwOldStyle TAB2_EX_ANCHORCOLOR) != (m_dwTabCtrl2ExtendedStyle TAB2_EX_ANCHORCOLOR) ) Invalidate(); } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits SetItemText(int nIndex, const CString str) { if ( !_IsValidIndex(nIndex) ) return false; if (m_items[nIndex].m_strItem == str) return true; m_items[nIndex].m_strItem = str; if (m_dwTabCtrl2ExtendedStyle TAB2_EX_FIXEDSIZE) { InvalidateRect(m_items[nIndex].m_rcItem); UpdateWindow(); } else { InvalidateRect(m_items[nIndex].m_rcItem);// even if layout will not be changed _UpdateLayout();//_UpdateItems(nIndex); } return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits SetItemDisabled(int nIndex) { if ( !_IsValidIndex(nIndex) ) return false; if ( m_items[nIndex].ModifyState(TCISTATE_ENABLED, 0) ) { InvalidateRect(m_items[nIndex].m_rcItem); return true; } return false; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits SetItemEnabled(int nIndex) { if ( !_IsValidIndex(nIndex) ) return false; if ( m_items[nIndex].ModifyState(0, TCISTATE_ENABLED) ) { InvalidateRect(m_items[nIndex].m_rcItem); return true; } return false; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits SetItemUserData(int nIndex, DWORD_PTR dwUser) { if ( !_IsValidIndex(nIndex) ) return false; m_items[nIndex].m_dwUser = m_dwUser; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits GetItem(int nIndex, CTabCtrlItem item) { if ( !_IsValidIndex(nIndex) ) return false; item = m_items[nIndex]; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits GetItemText(int nIndex, CString str) { if ( !_IsValidIndex(nIndex) ) return false; str = m_items[nIndex].m_strItem; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits GetItemImageIndex(int nIndex, int nImgIndex) { if ( !_IsValidIndex(nIndex) ) return false; nImgIndex = m_items[nIndex].m_nImgIndex; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits GetItemUserData(int nIndex, DWORD_PTR dwData) { if ( !_IsValidIndex(nIndex) ) return false; dwData = m_items[nIndex].m_dwUser; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits GetItemState(int nIndex, BYTE bytData) { if ( !_IsValidIndex(nIndex) ) return false; bytData = m_items[nIndex].m_fsState; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits GetItemRect(int nIndex, CRect rc) { if ( !_IsValidIndex(nIndex) ) return false; if (!(m_dwTabCtrl2ExtendedStyle TAB2_EX_MULTILINE) nIndex m_nFirstIndexOnSingleLine) return false; rc = m_items[nIndex].m_rcItem; return true; } template class T, class TBase, class TWinTraits boolCTabCtrl2Impl T, TBase, TWinTraits _MustBeInvalidateOnMultiLine(CSize size) { CRect rc; GetClientRect(rc);//*+++ if (rc.Width() size.cx)// expanding return true; int cxLeft = 0; for (int i = 0; i m_items.size(); ++i) { cxLeft = max(m_items[i].m_rcItem.right, cxLeft); } if (cxLeft != 0 cxLeft size.cx) { return false; } else { return true; } } template class T, class TBase, class TWinTraits LRESULTCTabCtrl2Impl T, TBase, TWinTraits OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bHandled) { TCTRACE( _T("OnLButtonDown\n") ); POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; int nIndex = HitTest(pt); if (nIndex != -1) { ATLASSERT( _IsValidIndex(nIndex) ); if ( (wParam MK_CONTROL) GetCurSel() != nIndex ) { if ( !_FindIndexFromCurMultiSelected(nIndex) ) { if ( m_items[nIndex].ModifyState(TCISTATE_SELECTED, TCISTATE_MSELECTED) ) InvalidateRect(m_items[nIndex].m_rcItem); } else { if ( m_items[nIndex].ModifyState(TCISTATE_MSELECTED, 0) ) InvalidateRect(m_items[nIndex].m_rcItem); } } else { _PressItem(nIndex); SetCapture(); } } return 0; } template class T, class TBase, class TWinTraits LRESULTCTabCtrl2Impl T, TBase, TWinTraits OnLButtonUp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL bHandled) { TCTRACE( _T("OnLButtonUp\n") ); POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) }; if (GetCapture() == m_hWnd) { ReleaseCapture(); int nIndex = HitTest(pt); if (nIndex != -1 nIndex == m_nPressedIndex) { TCTRACE( _T(" change current selelected item\n") ); ATLASSERT( _IsValidIndex(nIndex) ); _PressItem();// always clean up pressed flag SetCurSel(nIndex, true); NMHDR nmhdr = { m_hWnd, GetDlgCtrlID(), TCN_SELCHANGE }; SendMessage(GetParent(), WM_NOTIFY, (WPARAM) GetDlgCtrlID(), (LPARAM) nmhdr); } else { _PressItem();// always clean up pressed flag } } return 0; } // Implementation template class T, class TBase, class TWinTraits voidCTabCtrl2Impl T, TBase, TWinTraits _DrawSeparators(CDCHandle dc, LPCRECT lpRect) { int cy = GetItemHeight(); CRect rect(lpRect); for (int i = 0; i m_arrSeparators.GetSize(); ++i) { CPoint pt = m_arrSeparators[i]; CRectrc(pt.x, pt.y + 2, pt.x + 2, pt.y + cy - 2); if ( lpRect == NULL || MtlIsCrossRect(rc, lpRect) ) { dc.DrawEdge(rc, EDGE_ETCHED, BF_LEFT);// draw separator line } } } /** *@filestdafx.h *@briefinclude file for standard system include files, * or project specific include files that are used frequently, but *are changed infrequently */ #if !defined (AFX_STDAFX_H__19D42987_EAF8_11D3_BD32_96A992FCCD39__INCLUDED_) #define AFX_STDAFX_H__19D42987_EAF8_11D3_BD32_96A992FCCD39__INCLUDED_ #if 1//+++デバッグ用 #define USE_ZEROFILL_NEW//+++ 手抜きで 0 クリアをする new を使う. まだはずさないほうがよさそう... //#define USE_DLMALLOC //#define USE_ORG_UNDONUT_INI//+++ unDonut+ から変わってしまった .ini や拡張プロパティの値をなるべく、オリジナルのunDonutにあわせる場合に定義. //#define USE_MEMORYLOG //+++ donutでのnew,deleteログ生成. //#define USE_ATL3_BASE_HOSTEX//+++ about blankがらみのバグのデバッグで用意. 突き止めたのでatl3用以外で定義する必要なし. //x #define USE_UNDONUT_G_SRC //+++ gae氏のunDonut_g 2006-08-05 の公開ソースより移植した部分を有効にしてみる.(お試し) ...デフォルトで反映しとくのでラベルは破棄. #ifndef NDEBUG //#define _CRTDBG_MAP_ALLOC //+++ 定義するとVCライブラリによるmalloc系のチェック強化... //#define USE_ATLDBGMEM//+++ atldbgmem.h を使う場合... ※include,マクロの依存関係の都合、現状、regexは使用できない状態. #endif #endif // Change these values to use different versions #ifdef WIN64//+++ 64ビット版win は winXp64以降のみに対応. #define WINVER0x0502 #define _WIN32_WINNT0x0502 #define _WIN32_IE0x0603//+++ _WIN32_IE_IE60SP2 #define _RICHEDIT_VER0x0100//+++ 0x200以上(3?)で十分だが、なんとなく #define DONUT_NAME_T("64unDonut") #define DONUT_WND_CLASS_NAME_T("WTL ") DONUT_NAME//+++ 名前かえるとプラグインとかスクリプトでマズイ? #else //+++ 一応、win9xの範囲 //\\2000以降に変更 #define WINVER0x0502 #define _WIN32_WINNT0x0502// XP #define _WIN32_IE0x0603 #define _RICHEDIT_VER0x0100 #define DONUT_NAME_T("unDonut") #ifdef NDEBUG #define DONUT_WND_CLASS_NAME_T("WTL Donut") //+++ 名前かえるとプラグインとかスクリプトでマズイ? #else #define DONUT_WND_CLASS_NAME_T("WTL Donut_DEBUG") #endif #endif #define ATL_TRACE_CATEGORY0x00000001 #define ATL_TRACE_LEVEL 4 #define _WTL_USE_CSTRING #define _WTL_FORWARD_DECLARE_CSTRING #define _ATL_USE_CSTRING_FLOAT #define _CRT_NON_CONFORMING_SWPRINTFS //#define _ATL_FREE_THREADED //#define _ATL_SINGLE_THREADED #define _ATL_APARTMENT_THREADED #if _ATL_VER 0x800 #define ATLASSUME(e)ATLASSERT(e) #endif // unDonut と unDonut+(mod) との非互換部分の切り替え #ifdef USE_ORG_UNDONUT_INI//+++ unDonut r13testの記述. #define STR_ADDRESS_BAR _T("AddresBar") #define STR_ENABLE_T("Enabel") #else//+++ unDonut+ より変更(typo修正された) #define STR_ADDRESS_BAR _T("AddressBar") #define STR_ENABLE_T("Enable") #endif #if 0 #define _CRTDBG_MAP_ALLOC #include stdlib.h #include crtdbg.h #endif // Win32API #include windows.h #ifdef USE_DLMALLOC//+++ new,deleteにdlmallocを用いてみる. #undef _CRTDBG_MAP_ALLOC// cランタイムなデバッグ関係は使えない #undef USE_ATLDBGMEM// atlのメモリデバッグ関係は使えない... #define USE_DL_PREFIX// 本物のmalloc,freeの置換は大変なので、dlmalloc名のまま使う. #include "dlmalloc.h" #if 0 //def USE_DLMALLOC #define malloc dlmalloc #define calloc dlcalloc #define realloc dlrealloc #define free dlfree #endif #endif #if 1//+++ メモリー+デバッグの辻褄あわせ等 #include new #if defined NDEBUG == 0 defined USE_ATL3_BASE_HOSTEX == 0 #if defined USE_ATLDBGMEM //#define _ATL_NO_TRACK_HEAP #include atldbgmem.h #endif #ifdef _CRTDBG_MAP_ALLOC #include malloc.h #include crtdbg.h #endif #pragma push_macro("new") #undef new #include xdebug #include xmemory #include xlocale #pragma pop_macro("new") #endif #endif //C Standard Library #include math.h #include stdio.h #include stdlib.h //#include string.h #include locale.h #include process.h #include ctype.h #include stdarg.h #include tchar.h #include time.h //#include io.h //STL(C++ Standard Library) #include vector #include list #include queue #include deque #include stack #include algorithm //#include functional #include boost/function.hpp #include utility #include iterator #include map #include memory using std vector; using std deque; using std pair; using std make_pair; using boost function; //using namespace std placeholders; using std unique_ptr; #define DBG_M() ErrorLogPrintf(_T("%s (%d)\n"), __FILE__, __LINE__) #ifdef USE_DLMALLOC #define _recallocrecalloc inline void* recalloc(void* p, size_t a, size_t b) { void* q = realloc(p,a*b); if (q) memset(q, 0, a*b); return q; } #endif //ATL/WTL #include atlbase.h #include atlapp.h extern CServerAppModule _Module;//アプリケーションインスタンス extern TCHARg_szIniFileName[MAX_PATH];//設定ファイル #include atlcom.h #if _ATL_VER 0x700 defined(USE_ATL3_BASE_HOSTEX) == 0 #define USE_ATL3_BASE_HOSTEX #endif #if defined USE_ATL3_BASE_HOSTEX == 0/*_ATL_VER = 0x700*///+++ //#include "AtlifaceEx.h"//+++ すでに不要のよう?. //#include "AtlifaceEx_i.c" //+++ すでに不要のよう?. //#include AtlHost.h //#include "AtlHostEx.h" #else #endif #include atlwin.h #include atlctl.h #include atlmisc.h #include atlframe.h //\\#include "WtlFixed/atlsplit.h" #include atlsplit.h #include atlctrls.h #include atlctrlw.h #include atlctrlx.h #include atldlgs.h #include atlctrlx.h #include atlcrack.h #include atlddx.h #include atldef.h //#include atlsync.h // etc #include winerror.h #include winnls32.h #include comdef.h //#include exdisp.h //#include guiddef.h //#include olectl.h //#include rpc.h //#include rpcndr.h //#include rpcproxy.h //#include urlmon.h #ifndef WM_THEMECHANGED #define WM_THEMECHANGED0x031A #endif //非XPでも動作するように動的リンクするようにした改造版ヘッダ #if _MSC_VER = 1500//+++ メモ undonutで使うWTL80側を改造したのでこちらを使ってもok. //+++ だが、ヘッダがそろってないとダメなようなんで、手抜きでコンパイラバージョンで切り替え #define _WTL_USE_VSSYM32 #include atltheme.h #else//+++ 古いコンパイラ用...だが、こっちのほうがサイズ小さくなるかも... #include "WtlFixed/atltheme_d.h" #endif //+++ Aero を使ってみるテスト. #ifdef USE_AERO #include atldwm.h #endif //IEコンポーネントで使う定義 #include shlobj.h #include wininet.h #include shlwapi.h //#include shlguid.h #include intshcut.h #include MsHTML.h #include mshtmdid.h #include mshtmcid.h #include MsHtmHst.h #include mshtml.h #include tlogstg.h #include urlhist.h #ifndef USE_DIET//XML用 //+++ 使うのはMSXML2の範囲?のようだし、xp64,vista64 には msxml3.dllがでデフォで入っているようなので、3にしてみる. //#import "msxml4.dll" named_guids//raw_interfaces_only #import "msxml3.dll" named_guids//raw_interfaces_only using namespace MSXML2; #endif //+++ 手抜きで 0 クリアをする new を用意. //メモリリーク確認用のnew/deleteオーバーロード #if defined USE_ATLDBGMEM #define DEBUG_NEWnew(__FILE__, __LINE__) #elif (defined USE_ZEROFILL_NEW) || (defined USE_MEMORYLOG defined _DEBUG) void *operatornew(size_t t); void *operatornew[] (size_t t); void operatordelete(void *p); void operatordelete[] (void *p); //#undef USE_MEMORYLOG #endif #if 0 //defined _DEBUG defined _CRTDBG_MAP_ALLOC void* operatornew(size_t sz, const char* fname, unsigned line); void* operatornew[](size_t sz, const char* fname, unsigned line); void operatordelete(void* p, const char* fname, unsigned line); void operatordelete[](void* p, const char* fname, unsigned line); #endif #include "dbg_wm.h" #include "DonutPFunc.h" #include "DonutDefine.h" #include "Misc.h" #include "dialog/DebugWindow.h" #ifdef USE_ATL3_BASE_HOSTEX/*_ATL_VER 0x700*/ //+++ #include "for_atl3/AtlifaceEx.h" #include "for_atl3/AtlHostEx_for_atl3.h" #endif #undef min #undef max using std min; using std max; #if _ATL_VER 0x700 namespace std { template typename T inline const T min(const T a, const T b) { return a b; } template typename T inline const T max(const T a, const T b) { return b a; } } #endif #if defined _M_IX86 #pragma comment(linker, "/manifestdependency \"type= win32 name= Microsoft.Windows.Common-Controls version= 6.0.0.0 processorArchitecture= x86 publicKeyToken= 6595b64144ccf1df language= * \"") #elif defined _M_IA64 #pragma comment(linker, "/manifestdependency \"type= win32 name= Microsoft.Windows.Common-Controls version= 6.0.0.0 processorArchitecture= ia64 publicKeyToken= 6595b64144ccf1df language= * \"") #elif defined _M_X64 #pragma comment(linker, "/manifestdependency \"type= win32 name= Microsoft.Windows.Common-Controls version= 6.0.0.0 processorArchitecture= amd64 publicKeyToken= 6595b64144ccf1df language= * \"") #else #pragma comment(linker, "/manifestdependency \"type= win32 name= Microsoft.Windows.Common-Controls version= 6.0.0.0 processorArchitecture= * publicKeyToken= 6595b64144ccf1df language= * \"") #endif //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ は前行の直前に追加の宣言を挿入します。 #endif// !defined(AFX_STDAFX_H__19D42987_EAF8_11D3_BD32_96A992FCCD39__INCLUDED_)