mfc 学习笔记

本文介绍了MFC中的const指针用法,包括指向常量的指针和指针常量的区别,并讲解了CLR数组的一维和二维使用。同时,概述了MFC窗口执行流程、消息映射机制以及如何打开和管理对话框。还涉及了前台与后台数据交互的方法,如Text Field和Label的操作,以及图片控件实现凹分割线的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

const 在*号边,指针所指变量是常量,const在 * 号边,指针是常量!

指向常量的指针:普通指针,指针可被赋值,常量不能赋值。

const int num1 = 12;

const int num2= 15

const int* pNum = &num1;

 

*pNum = 15;//error:不能给常量赋值

pNum = &num2//ok 可以修改指针变量的指向;

 

指针常量:指针变量是常量,即指针不可再赋值。

int num1=12;

int * const pNum = &num1;//必须定义时就初始化

int num2 = 15;

pNum=$num2;//error:不能修改指针常量的值

 

CLR数组:

一维数组:

array<int>^ data;

data = gcnew array<int>(10);

或者

array<int>^ data = {0,2,4,5,6};

 

二维数组:

array<int,2>^ data = gcnew array<int,2>(3,4);

 

//赋值

data[row,col] = xx;//区别于data[row][col]

 

 

/ C++

//头文件

#include <stdio.h>//从系统目录搜索

#include "stdio.h" //从当前目录搜索

 

//Struct

c语言结构体中包含方法,c++中可以有

 

// MFC

//window 执行

WinMain()-> WNDCLASS- >RegisterClass->CreateWindow()->ShowWIndow->while(getMsg)->WinSunProc()

 

//MFC原理

cTestApp -> CWindApp->WinMain()->紧接着调用CTestApp的initInstance()- >CMainFrame,CView,CDialog等(申明WNDCLASS,注册类,创建窗口)->消息循环

 

//以消息映射代替消息循环

mfc采用方案:

表(类实例---窗口句柄)

产生消息->窗口句柄->类实例->父类(Cwnd等)的WindowProc()->OnWndMsg()-> 根据注释宏(消息函数映射)->找到事件响应函数;

 

其它不可行方案:

    在基类为每种消息申明虚函数。

 

//打开一个对话框

//创建一对话框

插入资源->添加对应类

//通过menu显示一个对话框

新建菜单项->属性->去掉pop_up选项(分配资源ID)->添加事->在事件函数类中引入对话框头文件

一模态对话框:

CTestDiag testDiag;

testDiag.doModel();

一飞模态对话框

CTestDiag * testDiag = new CtestDiag();//必须是成员变量,或者在堆内存分配。因为事件函数会自动销毁局部变量!

testDiag->Create(对话框资源ID,*parent);

testDiag->ShowWindow(SW_SHOW);

注意内存回收,非模态对话框不自动对资源销毁。点默认OK按钮,模态对话框通过父类执行虚函数销毁!

 

 

 

前台与后台数据交互

1.TextFiedl操作,Label(注意Label要勾选Styles->Notify才能接受消息)也可以通过资源ID关联成员变量方式

GetDlgItem("资源ID")->GetWindowText(str)

GetDlgItem("资源ID")->SetWindowText(str)

 

CString str;

GetDlgItemText(str) ,str=="xxx";

 

GetDlgItemInt()

2.资源ID关联成员变量方式

注意要使用UpdateData()

3.使用SendMessage成员函数改变数据交互

SendMessage(WM_GETTEXT,10,(LPARAM)ch2); 

 SendItemMessage(资源ID,WM_GETTEXT,10,(LPARAM)ch2);

 

 

 

 

//字符与数字转换

 

atoi,atof,itoa

用图片控件做凹分割线,做区域收缩

将图片控件拉成一个线,属性->style->勾选->Sunken

 static CRect rectLarge;

static CRect rectSmall;

GetWindowRect(&rectLarge);
GetDlgItem("图片ID")->GetWindowRect()
 
SetWinodwPos()//收缩

/TAB //

GetNextWindow()->SetFocus();

GetFocus()->GetNextWindow()->SetFocus();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值