zoukankan      html  css  js  c++  java
  • 日记6

    vc++ 6.0 专用

      1、如何增加、删除External Dependencies中的文件,External   Dependencies的意思是,没有把这里的文件加入到这个工程中,但是需要这里的文件的支持,工程中包含的头文件、库文件,若不包含在当前工程project下,就会放在external Dependencies下,External Dependencies是工程要用到的文件,可以不必理它

      2、头文件,库链接错误,解决办法,tools -> options -> directories,  vc6vc98 ,头文件包含,INCLUDE , MFCINCLUDE , ATLINCLUDE;库,LIB,MFCLIB,例如,#include "afxres.h", 编译出错,问题是头文件路径没有设置,Tool  -> Options -> Directories ,设置该头文件的包含路径,X:VC6VC98MFCInclude

      3、编译链接错误原因( error LNK2001: unresolved external symbol __)库函数没有,代码函数也没有,确引用了该函数(特别是多文件编译会发生)

      4、链接错误,如果你编写传统的C程序,必须建立Win32 Console程序,但VC里面默认的是Win32 Application,于是链接错误出现了。[Project] --> [Settings] --> 选择"Link"属性页,在Project Options中将/subsystem:windows改成/subsystem:console

      5、找不到msvcrtd.dll  mfc42d.dll mfco42d.dll解决办法,build->Set Active Configuration,xxx - Win32 Release OK

      6、vc++ 6.0注释的快捷键,默认是没有的,设定方法

      方法1,Tools->Macro,在出现的对话框中点击:Options,选择Load files,在出现的窗口中勾选Sample,关闭,再次打开Tools->Macro在出现的对话框,Macro File选中SAMPLE,以及列表框中的CommentOut,点击Options,点击KetStrokes,选中CommentOut,然后换到 Press new shortcut ,自己设定即可按下你想设定的键,点击Assign保存就OK了。

      方法2,Tools -> Customize ->Add-ins and Macro Files,把SAMPLE前面打上钩,Commands,Category选Macros,然后在Commands中把CommentOut拖曳到工具栏(会跳出来图标选择对话框,随便设定一下就行了)。

      方法3,安装Visual Assist X,tools->customize->keyboard->category(Add-ins),选择VAssistXSelectionBlockComment,设置快捷键

      7、中文输入没有可选项,安装第三方中文输入法,比如搜狗输入法

      8、OpenGL,绘制图形,去除控制台窗口, #pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"") 或者 vc6.0 ,Project->setting->Link->Project Options 在右下角的Project Options里面找到/subsytem:,并把其后面其后面的参数改成为windows,然后再找到/entry:,把其后面的值改成”mainCRTStartup”,如果找不到就添加

      9、vc简易窗口代码实现

    #include<windows.h>
    //#include<stdio.h>
    #pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")
    
    LRESULT CALLBACK WinDouProc(
        HWND hwnd,      // handle to window
        UINT uMsg,      // message identifier
        WPARAM wParam,  // first message parameter
        LPARAM lParam   // second message parameter
    );
    class CWnd
    {
    public:
         CWnd()
         {
              m_hWnd = NULL;
         }
         BOOL CreateEx(
              DWORD dwExStyle,      // extended window style
              LPCTSTR lpClassName,  // pointer to registered class name
              LPCTSTR lpWindowName, // pointer to window name
              DWORD dwStyle,        // window style
              int x,                // horizontal position of window
              int y,                // vertical position of window
              int nWidth,           // window width
              int nHeight,          // window height
              HWND hWndParent,      // handle to parent or owner window
             HMENU hMenu,          // handle to menu or child-window identifier
             HANDLE hInstance,     // handle to application instance
             LPVOID lpParam        // pointer to window-creation data
         );
         BOOL ShowWindow( int nCmdShow );
         BOOL UpdateWindow();
    public:
         HWND m_hWnd;
    };
    BOOL CWnd::CreateEx(
          DWORD dwExStyle,      // extended window style
          LPCTSTR lpClassName,  // pointer to registered class name
          LPCTSTR lpWindowName, // pointer to window name
          DWORD dwStyle,        // window style
          int x,                // horizontal position of window
          int y,                // vertical position of window
          int nWidth,           // window width
          int nHeight,          // window height
          HWND hWndParent,      // handle to parent or owner window
          HMENU hMenu,          // handle to menu or child-window identifier
          HANDLE hInstance,     // handle to application instance
          LPVOID lpParam        // pointer to window-creation data
    )
    {
         m_hWnd = ::CreateWindowEx  (dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,(HINSTANCE)hInstance,lpParam);
         if(m_hWnd != NULL)
              return TRUE;
         else
             return FALSE;
    }
    BOOL CWnd::ShowWindow(int nCmdShow)
    {
         return ::ShowWindow(m_hWnd,nCmdShow);
    }
    BOOL CWnd::UpdateWindow()
    {
         return ::UpdateWindow(m_hWnd);
    }
    //int WINAPI WinMain(
    int main(
      HINSTANCE hInstance,  // handle to current instance
      HINSTANCE hPrevInstance,  // handle to previous instance
      LPSTR lpCmdLine,      // pointer to command line
      int nCmdShow          // show state of window
    )
    {
        WNDCLASS wndclass;     //先设计窗口类
        wndclass.cbClsExtra = 0;
        wndclass.cbWndExtra = 0;
        wndclass.hbrBackground = (HBRUSH)GetStockObject(DKGRAY_BRUSH);
        wndclass.hCursor = LoadCursor(NULL,IDC_HELP);
        wndclass.hIcon = LoadIcon(NULL,IDI_WARNING);
        wndclass.hInstance = hInstance;
        wndclass.lpfnWndProc = WinDouProc;
        wndclass.lpszClassName = "Magic_Maggie";
        wndclass.lpszMenuName = 0;
        wndclass.style = CS_VREDRAW | CS_HREDRAW;
         //某一个变量 几个变量去掉一个特征,可以用取反(~)后再进行与(&)
         //例如:style上去掉CS_NOCLOSE,可以style&~CS_NOCLOSE;
        RegisterClass(&wndclass);     ///注意先建立再注册昂
        CWnd wnd;
         wnd.CreateEx(NULL,"Magic_Maggie","DouDou",WS_OVERLAPPEDWINDOW,0,0,800,600,NULL,NULL,hInstance,NULL);
         wnd.ShowWindow(SW_SHOWNORMAL);
         wnd.UpdateWindow();
         MSG msg;     //消息循环
         while(GetMessage(&msg,NULL,0,0))
        {
               TranslateMessage(&msg);
               DispatchMessage(&msg);   //触发WinDouProc
         }
        return 0;
    }
      
      
    LRESULT CALLBACK WinDouProc(
        HWND hwnd,      // handle to window
         UINT uMsg,      // message identifier
        WPARAM wParam,  // first message parameter
        LPARAM lParam   // second message parameter
    )
    {
     switch(uMsg)
     {
     case WM_LBUTTONDOWN:
          MessageBox(hwnd,"您按下了鼠标左键","mmmmmmmmmm",MB_OK);
          HDC hdc;
          hdc = GetDC(hwnd);    
         //The GetDC function retrieves a handle to a display device context for the client area of a specified window or for the entire screen. You can use the returned handle in subsequent GDI functions to draw in the device context.
          TextOut(hdc,0,0,"ttttttttt",strlen("ttttttttt"));
          ReleaseDC(hwnd,hdc);
          break;
      
    case WM_CHAR:
                char szChar[20];
    //            sprintf(szChar,"Char is %d",wParam);
                MessageBox(hwnd,szChar,"程序",MB_OK);
                break;
      
    case WM_PAINT:
          PAINTSTRUCT ps;
          HDC hDc;
          hDc = BeginPaint(hwnd,&ps);
          TextOut(hDc,0,0,"重绘",strlen("重绘"));
          EndPaint(hwnd,&ps);
          break;
      
    case WM_CLOSE:   //这个case与下边的destroy这个case不要弄错了,否则窗口不出现,但任务管理器中运行
          if(IDYES == MessageBox(hwnd,"您真的要退出么?","mmmmmmmm",MB_YESNO))
          {
               DestroyWindow(hwnd);
          }
          break;
      
    case WM_DESTROY:
          PostQuitMessage(0);
          //////////////////////////////////////////?????????????????????
          break;
      
    default:
         return DefWindowProc(hwnd,uMsg,wParam,lParam);  // 别忘记了return
      
      }
     return 0;
    }
    View Code

      10、把Microsoft Visual Studio 10.0VCin   下的cvtres.exe 重命名,解决vc2010链接错误(电脑中的版本高)

      11、VS2013调试窗口一闪而过的解决方法,右键单击当前工程,进入属性界面,链接器-系统-子系统,子系统配置"控制台(/SUBSYSTEM:CONSOLE)",然后执行运行即Ctrl+F5

      12、用VS2013生成的.obj文件、.lib库、.dll库、.exe执行文件,如果想查看其中这些文件或库包含了哪些函数以及相关的信息(符号清单),可以通过VS2013自带的dumpbin工具来完成,dumpbin.exe   D:Program Files (x86)Microsoft Visual Studio 12.0VCin

  • 相关阅读:
    Android获取View对应的Bitmap
    Android按需添加Google Play服务
    Android自定义View的构造函数
    两个Fragment之间如何传递数据
    SmartImageView
    onSingleTapUp()和onSingleTapConfirmed()的区别
    Android Fragment add/replace以及backstack
    InputStream与InputStreamReader的区别
    Android手动签名
    使用后台服务数据更新UI
  • 原文地址:https://www.cnblogs.com/GoldenEllipsis/p/13391463.html
Copyright © 2011-2022 走看看