日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

Visual C++ 2011-07-18

發(fā)布時(shí)間:2025/3/15 c/c++ 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Visual C++ 2011-07-18 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

一.Keyboard Accelerators控件快捷鍵

參考:http://blog.csdn.net/Welson80/article/details/5808277

http://www.cnblogs.com/zengcan/archive/2010/01/25/1655908.html

相關(guān)函數(shù):
LoadAccelerators
TranslateAccelerator

二.WSARecvDisconnect && WSASendDisconnect

http://baike.baidu.com/view/567695.htm
http://baike.baidu.com/view/569168.html

三.判斷Window

  • IsWindow The IsWindow function determines whether the specified window handle identifies an existing window.
  • IsWindowEnabled The IsWindowEnabled function determines whether the specified window is enabled for mouse and keyboard input.
  • IsWindowVisible? The IsWindowVisible function retrieves the visibility state of the specified window.
  • 四.ATL宏

    1.OBJECT_ENTRY_AUTO

    指定一個(gè)COM可創(chuàng)建類(lèi),通常表示類(lèi)從CComCoClass繼承

    2.DECLARE_OBJECT_DESCRIPTION

    自定COM類(lèi)描述

    3.UpdateRegistry方法

    用于注冊(cè)類(lèi)信息到注冊(cè)表中,用4個(gè)宏表示

    3.1 DECLARE_NO_REGISTRY空實(shí)現(xiàn).表示COM類(lèi)不注冊(cè)

    3.2 DECLARE_REGISTRY 舊版本使用

    3.3 DECLARE_REGISTRY_RESOURCE && DECLARE_REGISTRY_RESOURCEID 使用腳本資源

    五.RGS腳本

    [NoRemove | ForceRemove | val] Name [ = s | d | m | b 'Value'] { ... optional script entries for subkeys }

    ForceRemove表示當(dāng)發(fā)生變更時(shí)則強(qiáng)制刪除,NoRemove則剛相反

    val表示鍵名,s | d | m | b表示鍵值類(lèi)型.下面是一個(gè)例子
    HKCR表示注冊(cè)表根路徑(HKEY_CLASSES_ROOT)

    HKCR {ForceRemove DuckDoer.DuckDoer.1 = s 'DuckDoer Class'{CLSID = s '{120B72A0-65BF-11D0-9DDC-00A0C9034892}'}ForceRemove DuckDoer.DuckDoer = s 'DuckDoer Class'{CurVer = s 'DuckDoer.DuckDoer.1'}NoRemove CLSID{ForceRemove {120B72A0-65BF-11D0-9DDC-00A0C9034892} = s 'DuckDoer Class'{ProgID = s 'DuckDoer.DuckDoer.1'VersionIndependentProgID = s 'DuckDoer.DuckDoer'LocalServer32 = s '%MODULE%'}} }

    六.腳本變量

    %MODULE%在被調(diào)用時(shí)會(huì)被GetModuleFileName方法替換

    自注冊(cè)變量,重寫(xiě)AddCommonRGSReplacements方法

    HRESULT AddCommonRGSReplacements(IRegistrarBase *pRegistrar) {BaseModule::AddCommonRGSReplacements( pRegistrar );OLECHAR wszDate [16]; SYSTEMTIME st;GetLocalTime(&st);wsprintfW(wszDate, L"%.4d/%.2d/%.2d", st.wYear,st.wMonth, st.wDay);pRegistrar->AddReplacement( OLESTR("INSTALLDATE"), wszDate ); }

    替換部分變量,可以在UpdateRegistry方法中手動(dòng)調(diào)用UpdateRegistryFromResource(本來(lái)由DECLARE_REGISTRY_RESOURCEID宏自動(dòng)完成)方法

    static HRESULT WINAPI UpdateRegistry(BOOL b) {OLECHAR wszDate [16]; SYSTEMTIME st;GetLocalTime(&st);wsprintfW(wszDate, L"%.4d/%.2d/%.2d", st.wYear,st.wMonth, st.wDay);_ATL_REGMAP_ENTRY rm[] = {{ OLESTR("INSTALLDATE"), wszDate},{ 0, 0 } };return _pAtlModule->UpdateRegistryFromResource(IDR_DEMAGOGUE, b, rm); }

    七.組件類(lèi)別

    // {0D22FF22-28CC-11d2-ABDD-00A0C9C8E50D} static const GUID CATID_ATLINTERNALS_SAMPLES = {0xd22ff22, 0x28cc, 0x11d2, {0xab, 0xdd, 0x0, 0xa0, 0xc9, 0xc8,0xe5, 0xd}};BEGIN_CATEGORY_MAP(CDemagogue) IMPLEMENTED_CATEGORY(CATID_ATLINTERNALS_SAMPLES) END_CATEGORY_MAP()

    八.ATL調(diào)試宏

  • ATLASSERT下斷點(diǎn)
  • AtlTrace輸出Debug視窗 即內(nèi)部調(diào)用了OutputDebugString
  • AtlTrace2參數(shù)更多,可以分類(lèi)別輸出
  • 轉(zhuǎn)載于:https://www.cnblogs.com/Clingingboy/archive/2011/07/19/2110963.html

    總結(jié)

    以上是生活随笔為你收集整理的Visual C++ 2011-07-18的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。