01 2013 档案
摘要:先说一个容易犯的错误,如果B继承A。B,A都是带参的构造函数,那么,在定义的时候容易出现:no appropriate default constructor available看以下代码:class A{public: A(int k);};A::A(int k){}class B:public A{public: B(int m,int n=1){}};由于在构造B时,须先构造A,但由于已经指定了带参的构造函数,编译器不会自动提供默认的无参构造函数了,所以,没办法给A传参,就无法构造A,应该在B的构造函数中给A传参如:B(int m,int n=1):A(1){}//注意,不能...
阅读全文
摘要:代码:int edita(int& b);int main(){ int a=100;edit(a); printf("a=%d",a);return 0;}int edit(int& b){b=88;return 0;}输出88
阅读全文
摘要:在mainframe的构造函数中创建了一个非模态对话框,在这个非模态对话框的构造函数中创建了另一个非模态对话框,发现第一次创建的非模态对话框将在最前,挡住后来创建的非模态框。把第二个非模态的创建改在第一个非模态的initialdialog中就解决了这一问题若有两个同级的非模态对话框(都在main中创建),那么后创建(create)的将档住先创建的,解决办法是:m_Sc300Form.Create(IDD_SC300_FORM, GetDesktopWindow());(将父窗口设为桌面)
阅读全文
摘要:转载自http://liouwei20051000285.blog.163.com/blog/static/2523674200911535253736/在OnCreat()中创建控件在OnInitUpdate()中初始化控件 int CYourView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFormView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code ...
阅读全文
摘要:#include#includetypedef struct node_t{int val;struct node_t* front;struct node_t* back;}node;node* creatdlist(node* head){int type_len;node* p=head;printf("输入链表长长度是:");scanf("%d",&type_len);head->front=NULL;while(type_len--){int type_val;node* r=(node*)malloc(sizeof(node))
阅读全文
摘要:#include #includeint num[10]={1,5,2,6,7,3,8,0,4,22};void swap(int* a,int*b){int tmp;tmp=*b;*b=*a;*a=tmp;}void sort(int* s_num,int left,int right){if(left>=right)return;int mid_elm=(left+right)/2;swap(&s_num[left],&s_num[mid_elm]);int last=left;for(int i=left+1;i<=right;i++)if(s_num[i]{
阅读全文
摘要:原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(struct a里存有struct b,b里有char,int,double等元素,那b应该从8的整数倍开始存储。)原则3、收尾工作:结构体的总大小,也就是sizeof的结果,必须是其内部最大成员的整数倍,不足的要补齐。有效对齐字节数=min(数据类
阅读全文
摘要:1 函数后带const,如:ResultType operator()( const unsigned char* a, const unsigned char* b, int size ) const;直接看例子:class R { public: R(int r1, int r2) { R1=r1; R2=r2; } void print(); void print() const; private: int R1, R2; }; void R::print() { cout<<R1<<R2<<endl;cout<<"it'
阅读全文
摘要:先来看普通函数调用。有类如下:class A{public:void callfunc(int a,int ,int ){printf("A::callfunc\r\n");}};int main(){A *pA=NULL;pA->callfunc();return 0;}惊奇地发现,调用函数无需任何空间,无需实例化类,只需定义一个类A的指针即可,这说明了,类内函数的调用,不依靠对像传递任何东西。只要编译器识别到指针的类型(属于哪个类)即可。当然,有一种情况例外,那就是。。。虚函数看以下代码:#include#includeclass A{public:void f1
阅读全文
摘要:1std::partition Syntax:#include <algorithm>bidirectional_iterator partition( bidirectional_iterator start,bidirectional_iterator end, Predicate p );算法partition按照谓词p的返回值是true或是false重新整理[start, end)之间的所有元素.换句话说, partition利用p将元素分成两组. 其返回值是一个指向false组第一个元素的迭代器partition以线性时间(linear time)运行直接看以下代码:bo
阅读全文
摘要:上面有博文已经分析过一件事,现在扩展一下,顺带提下this指针class Test{void callBackFun(){}};void main(void){Test::callBackFun();//非法,即使调用函数无需实例化,这样的直接调用也是不被允许的,因为参数 不够,参数表里还需一个(Test* this)Test* test;test->callBackFun();//合法,这里显然传入的this指针即为test,因test未指向任何值,故只能调 函数,取成员变量时即出错Test test_valid;test=&test_valid;test->callBa
阅读全文
摘要:没发现有这个事件,于是在PreTranslateMessage里拦截:BOOL CDMFCView::PreTranslateMessage(MSG* pMsg){// TODO: Add your specialized code here and/or call the base classif (pMsg->hwnd == m_flow_wt_edit.m_hWnd && pMsg->message ==WM_LBUTTONDOWN){。。。。。。。。。。。。。。。//响应事件m_flow_rd_edit.SetFocus();pMsg->hwnd =
阅读全文
摘要:例如已建一个MDI,有两个文档。首先要明确一个MDI里的哪些东西有句柄,各是怎么样的:看上图,红线框内的都是具有句柄的,其中,父窗口cstest的子窗口先必须是MDI Client(MDI Client是类型),MDI Client有两个子窗口,子窗口的句柄的text为1(或2),内含Dialog(类型为#32770),Dialog内含控件句柄。在VIEW类中直接使用HWND hWnd = AfxGetMainWnd()->m_hWnd;找到的是父窗口的句柄,即含有两个子文档的大窗口的句柄。在VIEW类中直接使用HWND hWnd=GetSafeHwnd();找到的是激活的子窗口的vie
阅读全文
摘要:1 调出控制台在APP类中的InitInstance()增加以下代码:AllocConsole();SetConsoleTitle(_T("Debug Output"));_tfreopen(_T("CONOUT$"), _T("w"), stdout);2 文本框显示默认的字符只要在OnInitDialog函数添加GetDlgItem(IDC_EDIT6)->SetWindowText("20");就可以了,就在对话框出现(OnInitDialog)之前显示文本框的默认字符(20)3 添加了slider后删
阅读全文
摘要:主要参考来源:http://wgq837051.iteye.com/blog/851915和http://www.cppblog.com/cs-xiaolee/archive/2011/12/01/161292.html(好博!)以上是针对不同文档需要不同类的,比如一个是原理图,一个是PCB的文档。如果所有文档采用同样的VIEW类,可以在初始化app的时候新建一个文档:pMainFrame->SendMessage(WM_COMMAND, ID_FILE_NEW, 0);怎么让当前的窗口响应当前窗口上的按钮呢?怎么让使用同一个类的不同窗口做不同的事呢?下面我用这个笨方法。。。1 用上述方
阅读全文
摘要:刚开始从C++向MFC过渡的时候,发现一个HELLO就要上百行语句,面对Wizard一头N个大,一打开电脑就问自己,这东西是从哪开始的啊,WinMain哪去了,我靠了,上百行写个HELLO还找不到WinMain,找不到WinMain我从哪开始学啊我?再后来发现不光是WinMain,注册窗口类,消息循环,窗口函数,CreateWindow通通没有,想改个窗口标题都没地找,在一大堆书和光盘中爬行了几个月后突然发现一个手工写的纯MFC程序就16行代码,可以正常编译运行,就拿出C++编程的那点底子,不就16行吗,一天一行半个月我也通了.果然经过一翻..啊..再结合以前看过的书和光盘,今天终于大功告成,
阅读全文
摘要:摘自百度百科:所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。这里说了"\"+asc2能表示ASC2码。所以\15和CR(asc2是13,八进制是15)和\r是一样的。
阅读全文
摘要:1 char和intchar a=(char)0x20 得a=32char a=(char)20 得a=20
阅读全文
浙公网安备 33010602011771号