VC MFC 创建桌面快捷方式

合集下载

基于MFC的桌面应用程序开发与优化

基于MFC的桌面应用程序开发与优化

基于MFC的桌面应用程序开发与优化一、引言随着计算机技术的不断发展,桌面应用程序在日常生活和工作中扮演着越来越重要的角色。

MFC(Microsoft Foundation Class)作为Windows平台下的经典桌面应用程序开发框架,具有丰富的功能和强大的扩展性,被广泛应用于各种领域。

本文将重点探讨基于MFC的桌面应用程序开发与优化,旨在帮助开发人员更好地利用MFC框架构建高效、稳定的桌面应用程序。

二、MFC框架概述MFC是微软公司提供的一套C++类库,旨在简化Windows应用程序的开发过程。

通过MFC,开发人员可以快速构建具有丰富用户界面和功能的桌面应用程序。

MFC提供了诸多类和函数,涵盖了窗口管理、消息处理、控件设计等方方面面,为开发人员提供了强大的工具箱。

三、MFC应用程序的创建在开始开发基于MFC的桌面应用程序之前,首先需要创建一个MFC应用程序项目。

在Visual Studio中,选择“新建项目”->“Visual C++”->“MFC应用程序”,按照向导指引完成项目创建过程。

在创建项目时,可以选择不同类型的应用程序模板,如单文档应用程序、多文档应用程序等,根据实际需求选择合适的模板。

四、MFC应用程序开发实践1. 界面设计MFC提供了丰富的控件库,开发人员可以通过拖拽控件到对话框上的方式快速设计用户界面。

在设计界面时,需要考虑用户体验和美观性,合理布局各个控件,并确保界面风格统一。

2. 事件处理事件处理是MFC应用程序开发中至关重要的一环。

通过响应用户操作或系统消息,触发相应事件并执行相应操作。

在MFC中,可以通过消息映射表和消息处理函数来实现事件处理,确保应用程序能够正确响应用户操作。

3. 数据处理对于需要处理数据的桌面应用程序,数据处理是不可或缺的部分。

MFC提供了数据库支持和文件操作等功能,可以方便地进行数据读写操作。

开发人员需要合理设计数据结构和数据流程,确保数据的准确性和完整性。

VC++MFC基础教程

VC++MFC基础教程
DCB dcb; GetCommState(hCom,&dcb); dcb.BaudRate=9600; //波特率为 dcb.ByteSize=8; //每个字节有位
dcb.Parity=NOPARITY; //无奇偶校验位 dcb.StopBits=TWOSTOPBITS; //两个停止位 SetCommState(hCom,&dcb);
m_cComm.put_OutBufferSize(512); //设置输出缓冲区 m_cComm.put_Settings(TEXT("9600,n,8,1"));//波特率,无校验,个数
据位,个停止位
if(!m_cComm.get_PortOpen())
{
m_cComm.put_PortOpen(TRUE); //打开串口
B)修改控件属性
修改上面的示例编辑框属性: ID——IDC_EDIT_RECV;
Multiline——True; Want Return——True; Vertical Scroll——True; Auto VScroll——True;
修改下面的示例编辑框属性: ID——IDC_EDIT_SEND; Multiline——True; Vertical Scroll——True;
1.3、API 串口编程
按照步骤一新建 Serial 工程,这里不赘述了。
A)添加 API 串口初始化代码
1、在 SerialDlg.cpp 文件中添加全局变量:
HANDLE hCom; //全局变量,串口句柄 // CSerialDlg 对话框
2、在 SerialDlg.cpp 文件中的 OnInitDialog()函数添加如下代码:
AfxMessageBox("写串口失败!"); }

C#给Winform的button等控件添加快捷键三种方法

C#给Winform的button等控件添加快捷键三种方法

C#给Winform的button等控件添加快捷键三种方法第一种:Alt + *(按钮快捷键)在大家给button、label、menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1.text= "确定(&O)"。

就会有快捷键了,这时候按Alt+O就可以执行按钮单击事件。

第二种:Ctrl+*及其他组合键在WinForm中设置要使用组合键的窗体的KeyPreview(向窗体注册键盘事件)属性为True;然后使用窗体的KeyDown事件(在首次按下某个键时发生).实例代码:private void ***_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.F && e.Control){button1.PerformClick(); //执行单击button1的动作}}注:1、***代表窗体名称,大家可以看一下”Keys”的枚举参数,以实现自己需要2、还有一个问题,当使用Ctrl + *快捷键时,对于焦点在可写的控件(如TextBox)上时,可能会将* 键值同时输入,则需要加另一句话将Handled设置为true,以取消 KeyPress 事件。

即:private void ***_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.F && e.Control){e.Handled = true; //将Handled设置为true,指示已经处理过KeyPress事件button1.PerformClick();}}第三种:还是以button为例。

给form添加一个contextMenuStrip1,将其邦定到button上,假设为button1。

给contextMenuStrip1添加一个item,然后为它设置快捷键(就是你想加在button上的快捷键),并且将它的Visible属性设为false。

MFC控件使用详细教程

MFC控件使用详细教程

MFC控件使用详细教程MFC(Microsoft Foundation Class)是微软推出的一套用于开发Windows应用程序的类库。

它提供了许多方便易用的控件,可以快速创建用户界面。

本教程将详细介绍如何使用MFC控件来创建Windows应用程序。

第一步:创建一个MFC应用程序项目要使用MFC控件,首先需要创建一个MFC应用程序项目。

在Visual Studio中,选择"文件"->"新建"->"项目",然后选择"MFC应用程序"模板。

在项目设置中,可以选择使用对话框或视图来作为应用程序的主界面。

第二步:设置控件属性第三步:添加控件消息处理程序控件不仅仅可以显示在界面上,还可以响应用户的操作。

例如,当用户点击按钮时,可以执行一些特定的操作。

要实现这个功能,需要添加控件消息处理程序。

可以通过右键单击控件,选择"添加事件处理程序"来添加控件消息处理程序。

在生成事件处理程序的对话框中,可以选择控件的事件(如点击事件、鼠标移动事件等)和消息的处理函数。

在消息处理函数中,可以编写代码来实现特定的功能。

第四步:编写控件的功能代码在控件的消息处理函数中,可以使用MFC类库提供的函数来实现控件的功能。

例如,如果用户点击了按钮控件,可以使用CButton类的GetWindowText函数来获取按钮的文本,并使用CMessageBox类的MessageBox函数来显示一个消息框。

可以使用类似的方式来处理其他控件的事件。

例如,当用户选择了一个列表框中的项时,可以使用CListBox类的GetCurSel函数来获取选择的项的索引,并根据索引来执行特定的操作。

第五步:编译和运行应用程序完成了控件的添加和功能编写后,可以使用Visual Studio的编译和运行功能来编译和运行应用程序。

在编译过程中,会生成可执行文件和相关的依赖文件。

vs2015之mfc简单实践项目

vs2015之mfc简单实践项目

vs2015之mfc简单实践项目在开始之前,确保您已经安装了Visual Studio 2015以及相应的MFC组件。

接下来,我们将按照以下步骤进行MFC实践项目的开发。

第一步:创建MFC项目打开Visual Studio 2015,选择“文件”->“新建”->“项目”,在弹出的对话框中选择“MFC应用程序”,然后点击“下一步”。

在下一个对话框中,输入项目名称和存储位置,然后点击“完成”按钮。

第二步:设计用户界面在MFC项目中,用户界面设计使用的是资源编辑器。

在解决方案资源视图中,双击“资源文件”文件夹,然后双击“*.rc”文件。

在资源编辑器中,您可以添加和编辑对话框、菜单、工具栏等控件,以创建您的用户界面。

第三步:添加事件处理在设计好用户界面后,我们需要为其中的控件添加事件处理。

在资源编辑器中,双击一个控件,比如按钮,然后在属性窗口中找到“消息映射器”属性。

点击旁边的“添加事件处理程序”按钮,选择要处理的事件,然后点击“确定”。

在弹出的对话框中,选择一个现有的函数或新建一个函数,该函数将在相应的事件发生时被调用。

第四步:编写C++代码在添加完事件处理后,点击“打开源文件”,将会打开对应的C++源文件。

在这里,您可以编写处理事件的代码。

您可以使用MFC 提供的各种类和函数来实现您的功能。

第五步:编译和运行完成代码编写后,点击“生成”->“生成解决方案”来编译项目。

如果编译成功,您可以点击“调试”->“开始调试”来运行您的MFC应用程序。

通过以上步骤,您可以在VS2015中使用MFC创建并开发一个简单的实践项目。

当然,这只是MFC的基础用法,MFC还有很多其他的功能和特性可以供开发者使用。

希望本文能够对您在MFC项目开发中有所帮助。

总结:本文介绍了如何在VS2015中使用MFC进行简单的实践项目开发。

通过创建MFC项目、设计用户界面、添加事件处理、编写C++代码以及编译和运行,您可以快速上手MFC开发。

如何使用visualstudio2019创建简单的MFC窗口(使用C++)

如何使用visualstudio2019创建简单的MFC窗口(使用C++)

如何使⽤visualstudio2019创建简单的MFC窗⼝(使⽤C++)本⽂介绍了如何使⽤visual studio2019创建简单的MFC窗⼝(使⽤C++)```cpp使⽤visual studio 2019 创建过程请参考Bili的上⼀篇⽂章⬇⬇→!使⽤visual studio 2019 创建简单的MFC窗⼝「使⽤底层的C语⾔」#include<windows.h> //底层实现窗⼝的头⽂件//6.处理窗⼝过程//CALLBACK 代表_stdcall 参数的传递顺序:从右到左依次⼊栈,并且函数返回前清空堆栈LRESULT CALLBACK WindowProc(HWND hand, //消息所属窗⼝句柄UINT uMsg, //具体消息名称 WM_XXXX消息名WPARAM wParam, //键盘附加消息LPARAM lParam) { //⿏标附加消息switch (uMsg){case WM_CLOSE://所有以XXXXWindow为结尾的⽅法,都不会进⼊到消息队列中,⽽是直接执⾏DestroyWindow(hand);//发送另⼀个消息WM_DESTROYbreak;case WM_DESTROY:PostQuitMessage(0);break;case WM_LBUTTONDOWN://⿏标左键按下{int xPos = LOWORD(lParam);int yPos = HIWORD(lParam);char buf[1024];wsprintf(buf, TEXT("x = %d,y = %d"),xPos,yPos);MessageBox(hand, buf, TEXT("按下⿏标左键"), MB_OK);break;}case WM_KEYDOWN: //键盘{MessageBox(hand, TEXT("键盘"), TEXT("按下键盘"), MB_OK);break;}case WM_PAINT: //画图{PAINTSTRUCT ps; //画图结构体HDC hdc = BeginPaint(hand, &ps);TextOut(hdc, 100, 100,TEXT("hello"), strlen("hello"));EndPaint(hand, &ps);break;}default:break;}//返回值⽤默认处理⽅式return DefWindowProc(hand, uMsg, wParam, lParam);}/*程序⼊⼝函数_In_ HINSTANCE hInstance,//应⽤程序实例句柄_In_opt_ HINSTANCE hPrevInstance,//上⼀个应⽤程序句柄,在WIN32环境下⼀般为NULL,不起作⽤了_In_ LPSTR lpCmdLine,//char * argv[]_In_ int nShowCmd//显⽰命令最⼤化、最⼩化、正常WINAPI 代表_stdcall 参数的传递顺序:从右到左依次⼊栈,并且函数返回前清空堆栈*/int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ) {/*1.设计窗⼝2.注册窗⼝3.创建窗⼝4.显⽰和更新5.通过循环取消息6.处理消息(窗⼝过程)*///1.设计窗⼝WNDCLASS wc;wc.cbClsExtra = 0; //类的额外的内存wc.cbWndExtra = 0; //窗⼝额外的内存wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //设置背景wc.hCursor = LoadCursor(NULL, IDC_HAND); //设置光标,如果第⼀个参数为null,代表使⽤系统提供的光标wc.hIcon = LoadIcon(NULL, IDI_ERROR); //图标,如果第⼀个参数为null,代表使⽤系统提供的图标wc.hInstance = hInstance; //应⽤程序的实例句柄,传⼊winmain的形参即可wc.lpfnWndProc = WindowProc; //回调函数窗⼝过程wc.lpszClassName = TEXT("WIN"); //指定窗⼝名称wc.lpszMenuName = NULL; //菜单名称wc.style = 0; //显⽰风格,0代表默认//2.注册窗⼝RegisterClass(&wc);//3.创建窗⼝/*lpszClassName,//类名lpWindowName, //标题名dwStyle, //风格 WC_OVERLAPPEDWINDOWx, //坐标 CW_USERDEFAULTy, //坐标nWidth, //宽nHeight, //⾼hWndParent, //⽗窗⼝ nullhMenu, //菜单 nullhInstance, //实例句柄lpParam //附加值⿏标附加值*/HWND hwnd = CreateWindow(wc.lpszClassName, TEXT("WINDOWS"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); //4.显⽰和更新ShowWindow(hwnd, SW_SHOWNORMAL);UpdateWindow(hwnd);/*HWND hwnd; //主窗⼝句柄UINT message; //具体消息名称WPARAM wParam; //附加消息键盘消息LPARAM lParam; //附加消息⿏标消息DWORD time; //消息产⽣时间POINT pt;*/ //附加消息⿏标消息 x,y//5.通过循环取消息MSG msg;/*_Out_ LPMSG lpMsg, //消息_In_opt_ HWND hWnd, //捕获窗⼝填null表⽰捕获所有窗⼝_In_ UINT wMsgFilterMin, //最⼤和最⼩的过滤消息⼀般填0_In_ UINT wMsgFilterMax);*/while (GetMessage(&msg, NULL, 0, 0)){/*if (GetMessage(&msg, NULL, 0, 0) == FALSE) {break;}*///翻译消息TranslateMessage(&msg);//不是false//分发消息DispatchMessage(&msg);}return 0;}划重点:项⽬->属性->常规->⾼级->将MFC的使⽤设置为在“共享dll中使⽤mfc”头⽂件mfc.h#include <afxwin.h>//mfc头⽂件class MyApp:public CWinApp{public:virtual BOOL InitInstance();};class MyFrame :public CFrameWnd {//窗⼝框架类public:MyFrame();//声明宏提⽰消息映射机制DECLARE_MESSAGE_MAP();afx_msg void OnLButtonDown(UINT,CPoint);afx_msg void OnChar(UINT,UINT,UINT);afx_msg void OnPaint();};源⽂件mfc.cpp#include “mfc.h”MyApp app;BOOL MyApp::InitInstance() {//创建窗⼝MyFrame* frame = new MyFrame;//显⽰和更新frame->ShowWindow(SW_SHOWNORMAL);frame->UpdateWindow();m_pMainWnd = frame;//保存指向应⽤程序的主窗⼝的指针return TRUE;//返回正常初始化}//分界宏BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)ON_WM_LBUTTONDOWN()//⿏标左键按下ON_WM_CHAR()ON_WM_PAINT()END_MESSAGE_MAP()MyFrame::MyFrame(){Create(NULL,TEXT(“windows”));}void MyFrame::OnLButtonDown(UINT, CPoint point){//TCHAR buf[1024];//wsprintf(buf, TEXT(“x = %d,y = %d”), point.x, point.y);//MessageBox(buf);CString str;str.Format(TEXT(“x = %d,y = %d”),point.x,point.y);MessageBox(str);}void MyFrame::OnChar(UINT key, UINT, UINT){CString str;str.Format(TEXT(“按下了%c键”),key);MessageBox(str);}void MyFrame::OnPaint(){CPaintDC dc(this);dc.TextOutW(100,100,TEXT(“为了部落”));dc.Ellipse(10,10,100,100);}到此这篇关于如何使⽤visual studio2019创建简单的MFC窗⼝(使⽤C++)的⽂章就介绍到这了,更多相关vs2019创建MFC窗⼝内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

如何在Windows系统中创建桌面快捷方式

如何在Windows系统中创建桌面快捷方式

如何在Windows系统中创建桌面快捷方式Windows作为最常用的操作系统之一,为用户提供了便捷的操作方式和丰富的功能。

创建桌面快捷方式是一项常见的需求,方便快速访问常用程序或文件。

本文将介绍在Windows系统中如何创建桌面快捷方式的方法。

一、使用拖拽方式创建桌面快捷方式在Windows系统中,最简单的创建桌面快捷方式的方法就是使用拖拽。

下面是具体步骤:1. 找到您想要创建快捷方式的程序或文件,在资源管理器中打开所在的目录。

2. 将鼠标指针移到程序或文件上,按住左键不放。

3. 同时按住鼠标左键,将程序或文件拖动到桌面上的空白区域。

4. 在桌面上释放鼠标左键。

这样,您就成功地在桌面上创建了一个快捷方式,可以通过点击它来打开相应的程序或文件。

二、使用右键菜单创建桌面快捷方式除了拖拽方式创建快捷方式,Windows系统还提供了使用右键菜单的方法。

下面是具体步骤:1. 找到您想要创建快捷方式的程序或文件,在资源管理器中打开所在的目录。

2. 在程序或文件上点击鼠标右键,打开右键菜单。

3. 在右键菜单中,将鼠标指针移到“发送到”选项上。

4. 在“发送到”选项的子菜单中,选择“桌面 (快捷方式)”选项。

这样,系统会自动在桌面上创建一个快捷方式,您可以随时点击它来打开相应的程序或文件。

三、使用快捷键创建桌面快捷方式除了以上两种方法,Windows系统还提供了使用快捷键的方式来创建桌面快捷方式。

下面是具体步骤:1. 找到您想要创建快捷方式的程序或文件,在资源管理器中打开所在的目录。

2. 在程序或文件上点击鼠标右键,打开右键菜单。

3. 在右键菜单中,将鼠标指针移到“发送到”选项上。

4. 在“发送到”选项的子菜单中,按住Alt键,同时点击键盘上的字母"D"键。

这样,系统会自动在桌面上创建一个快捷方式,并选中它。

您可以随时点击Enter键来打开相应的程序或文件。

总结:通过拖拽、右键菜单或快捷键的方式,您可以在Windows系统中轻松地创建桌面快捷方式。

MFC定制(右键)菜单和快捷键

MFC定制(右键)菜单和快捷键

1、打开菜单模板编辑器
2、插入空白菜单项
按Insert键,如果已有则编辑之3、编辑菜单(标题)
注:&D表示助记键为D
4、编辑下拉菜单
注:...表示将弹出对话框
5、插入分隔符
将空白菜单项属性的分隔符勾上
6、定制级联菜单
将下拉菜单项的弹出属性选上
7、添加菜单项说明,内容将在状态栏显示
定制快捷键
1、添加快捷键提示文本
即在菜单项标题属性中添加类似“\tCtrl+K”的字符串,其中“Ctrl+K”就是快捷键。

2、添加快捷键资源
打开快捷键编辑器;
双击最后一行,编辑快捷键属性;
注:ID标签与菜单项ID对应。

定制右键(浮动)菜单
1、定制菜单模板
注:和普通菜单定制方法一样,“浮动”是要通过代码来实现的。

2、代码实现:为视图类添加右键事件响应函数OnRButton Up
为视图类添加成员变量
3、修改右键事件响应函数OnRButtonUp.
4、将右键菜单资源添加到主框架类,为该类添加事件响应函数。

注:视图类接管处理按键和鼠标消息,当右键事件触发视图类的响应函数时将显示右键菜单;
而主框架类接管菜单项命令消息,当点击某菜单项就触发主框架类,进而调用响应函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VC MFC 创建桌面快捷方式
2010-06-30 15:12
BOOL CreateDesktopShotCut( CString strName, CString strSourcePath ) {
if(FAILED(CoInitialize(NULL)))
{
return FALSE;
}
int i;
char Path[MAX_PA TH+1];
CString strDestDir;
i=CSIDL_DESKTOPDIRECTORY;
LPITEMIDLIST pidl;
LPMALLOC pShell;
if(SUCCEEDED(SHGetMalloc(&pShell)))
{
if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,i,&pidl)))
{
if(!SHGetPathFromIDList(pidl,Path))
{
pShell->Free(pidl);
::CoUninitialize();
return FALSE;
}
pShell->Release();
strDestDir.Format("%s",Path);
strDestDir+="\\";
strDestDir+=strName;//设置桌面快捷方式的名字
strDestDir+=".lnk";
IShellLink* psl;
if(SUCCEEDED(CoCreateInstance(CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,IID_ IShellLink,(LPVOID*)&psl)))
{
psl->SetPath(strSourcePath);//设置快捷方式的目标位置
//比如目标位置为C:\windows\a.txt 起始位置就应该设置为C:\windows否则会导致不可预料的错误
//如果是文件夹的快捷方式起始位置和目标位置可以设置为一样
psl->SetWorkingDirectory(strSourcePath); //设置快捷方式的起始位置
IPersistFile* ppf;
if(SUCCEEDED(psl->QueryInterface(IID_IPersistFile,(LPVOID*)&ppf)))
{
WCHAR wsz[MAX_PA TH];
MultiByteToWideChar(CP_THREAD_ACP,MB_PRECOMPOSED,strDestDir,-1,wsz,MAX_PA T
H);//设置桌面快捷方式的名字
if(SUCCEEDED(ppf->Save(wsz,TRUE)))//保存快捷方式到桌面
{
ppf->Release();
psl->Release();
::CoUninitialize();
return TRUE;
}else
{
ppf->Release();
psl->Release();
::CoUninitialize();
return FALSE;
}
}else
{
ppf->Release();
psl->Release();
::CoUninitialize();
return FALSE;
}
}else
{
::CoUninitialize();
return FALSE;
}
}else
{
::CoUninitialize();
return FALSE;
}
}else
{
::CoUninitialize();
return FALSE;
}
}。

相关文档
最新文档