zoukankan      html  css  js  c++  java
  • Visual C++ 2011526

    一.GetLastActivePopup

    参考:http://blog.163.com/zhyang@yeah/blog/static/13014384420102296245297/

    二.获取main函数参数

    使用__argc和__targv可以在其他函数中也可以获取main函数参数

    int argc=__argc;
    if(argc>0)
     char *pApp=__targv[0];
    

    三.控制音量

    用COM接口(Vista+)控制音量

    void VolumeUpDown(BOOL bIsUp)
    {
        HRESULT hr;
        IMMDeviceEnumerator *pDeviceEnumerator = NULL;
        IMMDevice *pDefaultDevice = NULL;
        IAudioEndpointVolume *pEndpointVolume = NULL;
    
        //
        // Create a enumerator to get default device in the system
        //
        CoInitialize(NULL);
        hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_INPROC_SERVER, __uuidof(IMMDeviceEnumerator),
            (LPVOID *)&pDeviceEnumerator);
    
        if ( hr != S_OK)
            goto exit;
    
        //
        // Get default device in the system
        //
        hr = pDeviceEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &pDefaultDevice);
    
        if (hr != S_OK)
            goto exit;
    
        hr = pDefaultDevice->Activate(__uuidof(IAudioEndpointVolume), CLSCTX_INPROC_SERVER, NULL, (LPVOID *)&pEndpointVolume);
    
        if (hr != S_OK || pEndpointVolume == NULL)
            goto exit;
        if(bIsUp)
        {
            pEndpointVolume->VolumeStepUp(&GUID_NULL);
        }
        else
        {
            pEndpointVolume->VolumeStepDown(&GUID_NULL);
        }
    
    
    exit:
        if (pDeviceEnumerator != NULL)
        {
            pDeviceEnumerator->Release();
            pDeviceEnumerator = NULL;
        }
    
        if (pDefaultDevice != NULL)
        {
            pDefaultDevice->Release();
            pDefaultDevice = NULL;
        }
    
        if (pEndpointVolume != NULL)
        {
            pEndpointVolume->Release();
            pEndpointVolume = NULL;
        }
    
        CoUninitialize();
    
    }
    void MuteInVista()
    {
        BOOL bMute = FALSE;
    
        if (m_pEndpoint == NULL)
        {
            return;
        }
    
        m_pEndpoint->GetMute(&bMute);
    
        if (bMute)
        {
            DrawIconOn();
            m_pEndpoint->SetMute(FALSE,NULL);
        }
        else
        {
            DrawIconOff();
            m_pEndpoint->SetMute(TRUE,NULL);
        }
    }

    XP下很麻烦,com接口极大简化了编程步骤

    四.CString的传参

    void Fun1(CString a)
    {
        ::GetCurrentDirectory(200,(LPWSTR)(LPCTSTR)a);
    }
    
    CString a=TEXT("");
    Fun1(a);
    

    函数内部将CString转成了指针,这样也可以?

    http://msdn.microsoft.com/zh-cn/library/cc468200(VS.71).aspx

    五.GetWindowLong和GetClassLong

    这两个函数困扰我很长时间…其实很简单

    创建窗体用CreateWindow函数,其中要输入很多参数

    HWND CreateWindow(      
                    LPCTSTR 
                lpClassName,
        LPCTSTR 
                lpWindowName,
        DWORD 
                dwStyle,
        int 
                x,
        int 
                y,
        int 
                nWidth,
        int 
                nHeight,
        HWND 
                hWndParent,
        HMENU 
                hMenu,
        HINSTANCE 
                hInstance,
        LPVOID 
                lpParam
    );
    
    

    那么在创建窗体之后就可以用GetWindowLong来获取窗体结构信息,如窗体样式,父窗体,窗体实例句柄(程序句柄),同时可以用SetWindowLong来动态修改窗体样式

    SetWindowLong (hwnd, 0, 1 ^ GetWindowLong (hwnd, 0)) ;

    那么同理GetClassLong也是如此.

    六.窗体子类化

    使用SetWindowLong函数给指定子控件指定一个窗体过程,这个貌似很有用

    OldScroll[i] = (WNDPROC)SetWindowLong (hwndScroll[i], GWL_WNDPROC, (LONG) ScrollProc) ;
    
    LRESULT CALLBACK ScrollProc (HWND hwnd, UINT message, 
                                 WPARAM wParam, LPARAM lParam)
    {
         int id = GetWindowLong (hwnd, GWL_ID) ;
              
         switch (message)
         {
         case WM_KEYDOWN :
                       break ;
                   
         case WM_SETFOCUS :
                      break ;
         }
         return CallWindowProc (OldScroll[id], hwnd, message, wParam, lParam) ;
    }
    
  • 相关阅读:
    盛京剑客系列21:再强调一遍:机会在MSCI成份,别走偏了
    盛京剑客系列20:平仓中兴通讯,获利45.51%,继续加仓优质个股
    盛京剑客系列19:推书《战胜华尔街》
    盛京剑客系列18:很多人因为恐惧脚下的小土坑,却丢掉了一米远处的大金矿
    盛京剑客系列17:市场暴跌下投资组合的调整
    盛京剑客系列16:推书《股市稳赚》
    盛京剑客系列15:割韭秘籍
    盛京剑客系列14:对高估值医药股要谨慎
    盛京剑客系列13:披露指数的密码,曙光就在前方
    leetcode -- Longest Valid Parentheses
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/2059242.html
Copyright © 2011-2022 走看看