初学C++常遇到的问题

1,.h与.CPP切换的快捷键是光标选择类名按F12

2,注释是ctrl+K,ctr+C,取消是ctrl+K,ctrl+U;

 

3.MFC中将数值转化成字符串

CString str;
int a = 1;
str.Format("%d",a);
 
4.转义字符
用“\”,在iOS中也用的'\',是空格下面中哪个

 

5.抓取网页的js点击事件后呈现在的内空(难点)

得到IHTMLDocument2接口指针,使用all方法得到IHTMLElementCollection,然后通过length,item方法遍历得到IHTMLElement,通过IHTMLElement的getAttribute等方法判断是不是需要点击的按钮项,是的话调用IHTMLElement中的click方法

上面一段比较难懂,看了下面就明白多了:

        IE 浏览器,采用 DOM(文档对象模型)来管理网页的数据。它通过一个容器(IWebBrowser2/IHTMLWindow2)来装载网页文档(IHTMLDocument2),而一个文档,又可以由 0 或多个贞(frame)组成,管理这些贞的接口叫“框架集合(IHTMLFramesCollection2)”,而每个贞的容器又是IHTMLWindow2,和IWebBrowser2一样,它也装载着各自的文档(IHTMLDocument2)。因此,我们的第一个任务,就是想方设法能够得到IHTMLDocument2的接口。因为文档可能包含贞,而贞又包含着子文档,子文档可能再包含贞......,如此要得到所有的文档,这里有一个递归遍历的处理过程。
  得到文档(IHTMLDocument2)后,下一步任务就是要设法取得表单了(IHTMLFormElement)。因为在一个文档中可以包含 0 或多个表单(form),而管理这些表单的又是一个表单集合(IHTMLElementCollection),所以必须先得到集合,然后再枚举出所有的表单条目了。
  得到表单(IHTMLFormElement)后,接下来的事情就简单了,逐个提取表单中的元素(也叫表单域 IHTMLInputElement)就可以读写这些域的属性了。

 

 

6.自定义消息(重要)

首先要自定义一个宏,用来做用户消息,貌似格式应该是这样
#define 自定义的消息宏 WM_USER+任意一个数字
WM_USER表示windows message for users
也就是用户定义消息的最小值的 可以往后加

其次你需要把这个宏和一个函数名关联起来
详细的写法和mfc里以
afx_msg开头的函数是差不多的

举个例子吧
.h中
定义宏
#define WM_MYMSG WM_USER+1
定义消息函数
afx_msg LRESULT MyMsg(WPARAM wparam,LPARAM lparam)


.cpp
消息关联
ON_MESSAGE(WM_MYMSG,MyMsg)
接下来在.cpp中定义MyMsg就OK了
发送消息时可以用SendMessage或者PostMessage

 

7.句柄

句柄(HANDLE),资源的标识。
操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。

句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。

 
8. WPARAM和LPARAM及消息响应机制

在Win32中,wParam   lParam是用来传递消息数据的最常用的手段.
比如,对按键消息来说,鼠标的X和Y的坐标被压缩进lParam中
对MFC来说,消息可以用多样的类型参数来传递,对用户自定义消息
来说,只能用wParam和lParam来传递。

宏定义本来就是帮程序员理解变量的含义以提高程序可读性以及开发效率的,不同的宏名其源类型完全可以相同。就像HANDLE句柄是通用的,而同时有窗口句柄HWND、画笔句柄HPEN等等,无论是WPARAM还是LPARAM都是消息的参数,用不同的宏名是为了容易区分两个参数而不至于引起混淆。

消息响应机制

  1、消息的组成:一个消息由一个消息名称(UINT),和两个参数(WPARAM,LPARAM)。当用户进行了输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单选中之后会有WM_COMMAND消息发送,WPARAM的低字节(LOWORD(wParam))是命令的ID号,对菜单来讲就是菜单ID。 当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据。
  2、谁将收到消息:一个消息必须由一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以定义对WM_COMMAND进行处理的代码,如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。
  3、未处理的消息到那里去了:M$为窗口编写了默认的窗口过程,这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理。

  4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。

什么是消息机制:系统将会维护一个或多个消息队列,所有产生的消息都会被放入或是插入队列中。系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。

 

9.操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是Windows操作系统提供给应用程序编程的接口(Application Programming Interface),简称Windows API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口

 

10.事件作出反应的过程就是消息响应

 

11.

MSG结构定义如下:

typedef struct tagMSG {      

      HWND   hwnd;     

      UINT   message;

      WPARAM wParam;

      LPARAM lParam;

      DWORD  time;

      POINT  pt;

} MSG;

 

int WINAPI WinMain(

  HINSTANCEhInstance,      // handle to current instance

  HINSTANCEhPrevInstance,  // handle to previous instance

  LPSTRlpCmdLine,          // command line

  intnCmdShow              // show state

);

 

typedef struct  _WNDCLASS {

   UINT      style;

   WNDPROC  lpfnWndProc;

   int       cbClsExtra;

   int       cbWndExtra;

   HANDLE   hInstance;

   HICON     hIcon;

   HCURSOR   hCursor;

   HBRUSH    hbrBackground;

   LPCTSTR   lpszMenuName;

   LPCTSTR   lpszClassName; 

} WNDCLASS;

 

第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数,也称回调函数。

 

12.Afx application framework,x无意义

ex 表示扩展

 

13.CApp,CView,CMainFrame的关系

 

14. ::作用域符,如果前面什么也没,哪就是全局的,winSDK的方法,相当.net中的命名空间

 




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值