可以通过一系列的API的配合去调用这个打印机,但我觉得 Windows的打印机调用起来实在是太麻烦了,通过一番调查,可以直接使用Adobe acro Reader或Foxit Reader这两个软件的打... 印功能,将文件打出,下面的列出了代码供参考。 .../***** 框发消息在输入框中自动填入目标xps文件名,最后通过给保存按钮发消息来*******/ /***** 最后通过给保存按钮发消息来按下对话框中的保存按钮********...******************/ // 找到文件另存为对话框的窗口句柄 IntPtr hWnd = FindWindow("#32770", "文件另存为...FindWindowEx(hChild, IntPtr.Zero, "Edit", String.Empty); // File name edit control // 向输入框发送消息
2.对于AcroRd32.exe,传递给Shell命令的参数如下: /n-启动一个新的Reader实例,即使该实例已经打开 /s-不显示启动界面 /o-不显示打开文件对话框 /h-以最小化窗口打开 /p...-打开并直接进入打印对话框 /t -将文件打印到指定的打印机 3.确保使用双引号将EXE完整的路径和PDF文件完整路径名括起来。...还有一段更简单一些的代码可以实现: Declare FunctionapiShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _ ByVal hwnd...Long Public Sub PrintFile(ByVal strPathAndFilename As String) Call apiShellExecute(Application.hwnd
MainDlg.cpp中包含四个函数: 函数名 参数 功能 Main_Proc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 消息分流器,进行消息分流... return HANDLE_WM_CREATE((hwnd), (wParam), (lParam), (Main_OnInitDialog)) 可见,可见消息分流器的作用就是当消息出现时将控制权交给不同的程序...如WM_INITDIALOG等为消息,由操作系统传递给程序,根据MSDN,WM_INITDIALOG消息是在对话框马上要显示前(即对话框内存中已经准备好了,但还没有显示在屏幕上)发给程序的,程序可以在此时执行一些初始化操作...(hwnd, 0); } 可见,Main_Proc函数是一直在执行中的,时刻等待操作系统传递消息进来,根据不同消息将控制权交予不同的函数,包括初始化和关闭函数,当然实现功能最主要的在函数Main_OnCommand...“欢迎”对话框。
此时我们捕获消息就可以进行处理了. 子窗口其实就是绘制在主窗口的一个窗口. 这些窗口包含了 BUTTON (按钮控件) EDIT(编辑框控件) ........具体代码如下: 当主窗口创建消息来得时候.我们创建一个EDIT编辑框. // WindoS.cpp : 定义应用程序的入口点。...SetDlgItemText(hWnd, IDC_MY_EDIT_ONE, TEXT("设置到编辑框的内容")); //此API时设置指定窗口中控件ID的显示名称.我们给编辑框设置.所以ID是编辑框的...hWnd) { return FALSE; } ShowWindow(hWnd, SW_SHOW); UpdateWindow(hWnd); //4.消息循环....HWND, UINT, WPARAM, LPARAM) // // 目的: 处理主窗口的消息。
实现定时消息,功能类似于MessageBox。如果用户不回应,能定时关闭消息框。函数由user32.dll导出,windows2000及以下没有此函数。..., WORD wLanguageId, DWORD dwMilliseconds)[1] 参数: hwnd//消息框的拥有窗口。...lptext//消息框的内容。 lpCaption//消息框的标题。 uType//指定一个决定对话框的按钮类型和图标类型的位标志集。 wLanguageId//函数扩展,一般取0。...dwMilliseconds//消息框延迟关闭时间,单位:毫秒。 UTYPE取值: uType:按钮类型,以下给出常量,可相加。..., int time); //引用DLL 像这样: 2、 在按钮事件或者鼠标事件等其它事件中,加入如下代码: MessageBoxTimeoutA((IntPtr)0, "3秒后自动关闭", "消息框
---- int MessageBox( [in, optional] HWND hWnd,//父窗口句柄 [in, optional] LPCTSTR lpText,//显示在消息框中的文字...系统会根据存放的消息,找到对应程序的消息队列。 将消息投递到程序的消息队列中 根据消息和消息队列之间使用关系,将消息分成两类 队列消息-消息的发送和获取,都是通过消息队列完成。...对话框的关闭 BOOL EndDialog( [in] HWND hDlg,//关闭的对话框窗口 [in] INT_PTR nResult//关闭的返回值,能指定返回值就说明能接触阻塞 )...对话框的消息 WM_INITDIALOG-对话框创建之后在显示之前,通知对话框窗口处理函数,可以完成自己的初始化相关的操作。 ---- EndDialog销毁对话框,并且解除阻塞。...---- 无模式对话框 创建对话框 HWND CreateDialog( HINSTANCE hInstance,//应用程序实例句柄 LPCTSTR lpName,//模板资源ID
下面并不准备陈述对话框的技术细节,只与读者讨论两个相关问题:一是模态对话框的消息循环,二是对话框的命令消息路由。...即当模态对话框弹出时,禁止了它的父窗口及大部分兄弟窗口的操作;模态对话框关闭后,被禁用的窗口将恢复使用。...= NULL && ::IsWindowEnabled(hWndParent)) { //禁止父窗口也将间接地禁止父窗口的下属窗口,但不包括下属的重叠窗口和普通弹出窗口...(GetStyle() & WS_VISIBLE); HWND hWndParent = ::GetParent(m_hWnd); //设置对话框状态标志...模式循环既可以向父窗口发送WM_ENTERIDLE消息,也可以向当前窗口发送与空闲消息等同的WM_KICKIDLE消息,使得模态对话框有能力在空闲时完成一定的操作。同时允许刷新显示对话框。
1、函数原型及参数 function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer; hWnd:对话框父窗口句柄...,用户一定响应消息框。...用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢 出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。...MB_HELP:把一个Help按钮增加到消息框。选择Help按钮或按F1产生一个Help事件。 MB_RIGHT:将讯息文字向右对齐,文本为右调整。...MB_TOPMOST:将讯息视窗提至最前面,消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。
它的原型是 int MessageBox(HWND hwnd,LPCTSTR lptext, LPCTSTR lpcation,UINT utype) hwnd 句柄。...MB_ICONWARNING 一个惊叹号出如今消息框 MB_ICONINFORMATION 一个圆圈中小写字母i组成的图标出如今消息框 MB_ICONASTERISK 一个圆圈中小写字母i组成的图标出如今消息框...MB_ICONQUESTION 一个问题标记图标出如今消息框 MB_ICONSTOP 一个停止消息图标出如今消息框 MB_ICONERROR 一个停止消息图标出如今消息框 MB_ICONHAND...一个停止消息图标出如今消息框 形态: MB_APPLMODAL 在hwnd參数标识的窗体中继续工作曾经,用户一定响应消息框。...用系统模态消息框来改变各种各样的用户,基本的损坏错误须要马上注意(比如,内存溢出)。假设不是那些与hwnd联系的窗体。此标志对用户对窗体的相互联系没有影响。
对话框的伸缩功能是指当触发某一操作时只显示部分对话框的内容,再次触发时显示全部的对话框范围,就比如画图软件上的选择颜色对话框,我们可以使用系统预定义的颜色,也可以选择自定义颜色,当点击自定义的按钮时,对话框出现原先隐藏的另一边...为了实现这个功能,我们需要记录两个矩形范围:全部对话框的大小和我们希望显示的部分对话框的大小,利用函数SetWindowPos来设置显示的对话框的大小,该函数的原型如下: BOOL SetWindowPos...,x、y参数将被忽略; SWP_NOZORDER:忽略Z序,这个标志被设置时将忽略hWndInsertAfter参数; 具体的信息可以在MSDN中查找; 以下是具体的实现代码: //按钮的...WM_COMMAND消息处理 case WM_COMMAND: { if (LOWORD(wParam) == IDC_BUTTON) {...rtLarge.bottom - rtLarge.top, SWP_NOZORDER | SWP_NOMOVE); } } IDC_SPERATOR是一个分割线的ID,分割线我们采用的是一个图片控件,将这个控件的高度尽量缩小
消息框中返回一个整数值,该值指示用户单击了哪个按钮。...: 此参数代表消息框拥有的窗口。...如果为NULL,则消息框没有拥有窗口。 lpText : 消息框的内容。...MB_ICONWARNING 一个惊叹号出现在消息框 MB_ICONINFORMATION 一个圆圈中小写字母i组成的图标出现在消息框 MB_ICONASTERISK 一个圆圈中小写字母i组成的图标出现在消息框...MB_ICONQUESTION 一个问题标记图标出现在消息框 MB_ICONSTOP 一个停止消息图标出现在消息框 MB_ICONERROR 一个停止消息图标出现在消息框 MB_ICONHAND 一个停止消息图标出现在消息框
Windows是一个以消息为导向的系统,程序只能被动地等待用户操作的消息,不能主动地去读键盘、鼠标等的状态,也就是说,每当键盘上有个键被按下,或者鼠标在屏幕某个位置点击以后,系统就会发出一个消息(Message...当鼠标点击了程序的某个按钮只要鼠标移动一下,系统也会发出相应的消息,并把鼠标的坐标信息传给窗口。...当我们鼠标点击了我们程序的某个按钮时,会向系统的消息队列发送一个消息(Mseeage),此消息包含了你鼠标点击的位置、该程序的句柄以及鼠标点击时的状态(如是否按住ctrl键等等)。...,将要显示内容的时候发送的消息 7 //因此可以在WM_INITDIALOG消息响应函数中添加对编辑框控件的初始化和修改 8 case WM_INITDIALOG:...9 }//WM_INITDIALOG 10 return TRUE; 11 12 case WM_CLOSE: 13 { 14 //关闭程序时将信息保存
一般不会只显示部分列表项 LBS_NOREDRAW 列表框的大小在显示后不会改变,但是可以通过发 WM_SETREDRAW消息来取消这一风格 LBS_NOTIFY 当用户单击或双击时会发送一条消息到父窗口...,风格,父窗口将接收不到用户选择的项 LBS_OWNERDRAWFIXED 父窗口负责绘制列表框,这个时候列表框中的项的大小都一样 LBS_OWNERDRAWVARIABLE 列表项的大小可以不一样...LBS_WANTKEYBOARDINPUT 当列表框通过键盘获得焦点时会向父窗口发送 WM_VKEYTOITEM 或 WM_CHARTOITEM 消息,以便程序处理特殊的键盘消息 LBS_DISABLENOSCROLL...一般父窗口通过向列表框发送消息来控制列表框的行为,而发送的消息一般有以下几种: LB_ADDFILE 添加文件 LB_ADDSTRING 添加字符串 LB_DELETESTRING 删除字符串 LB_DIR...加入后新字符串不参加排序 LB_RESETCONTENT 清除所有列表项 LB_SELECTSTRING 从指定位置向后查找我们指定的字符串项,找到后将该项设置为选中状态 LB_SELITEMRANGE 在多选模式下,将某一区域内一个或多个项设置为选中状态
禁止文本框的右键功能,造成点击鼠标右键无效。是非常常见的一类实用功能。...======================================================'| 模 块 名 | TextBoxDisableAbility'| 说 明 | 禁止文本框的功能...dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (-4)Private Const WM_CUT = &H300 '-------------剪切消息...Private Const WM_COPY As Long = &H301 '-------------复制消息Private Const WM_PASTE As Long = &H302 '-----...--------粘贴消息Private Const WM_CLEAR = &H303 '-------------删除消息[右键菜单的删除]Private Const EM_UNDO = &HC7 '-
nIDEvent&,ByVal uElapse&, ByVal lpTimerFunc&) Private Declare Function KillTimer& Lib "user32"(ByVal hwnd...&, _ ByVal nIDEvent&) Public Const NV_INPUTBOX As Long = &H5000 Public Sub TimerProc(ByVal hwnd....Calculation =xlCalculationAutomatic .ScreenUpdating =True End With End Sub 运行test过程,将打开...C盘中名为test.xlsm的工作簿,并弹出如下图1所示的消息框。...图1 如果你在5秒内没有响应消息框,也就是说,没有单击“确定”按钮或者“取消”按钮,那么在5秒后会关闭该消息框并弹出“超时”消息框,如下图2所示。 ?
(hWnd, &ps); OnPaint(hDC); EndPaint(hWnd, &ps); break; case WM_KEYDOWN://按键消息处理 switch (wParam)...WM_CLOSE WM_DESTROY消息 KillTimer(hWnd, N_TIMER);//关闭定时器 PostQuitMessage(0);//产生退出消息,GetMessage读取Quit...消息的返回值为0 break; } return DefWindowProc(hWnd, uID, wParam, lParam);//让系统自动处理一些默认消息 } //**********...WM_CLOSE WM_DESTROY消息 KillTimer(hWnd, N_TIMER);//关闭定时器 PostQuitMessage(0);//产生退出消息,GetMessage读取Quit...消息的返回值为0 break; } return DefWindowProc(hWnd, uID, wParam, lParam);//让系统自动处理一些默认消息 } //**********
如我设想的需求,我将创建一个管理外框异形空心窗口的线程和一个“标题”窗口,那就多出两个线程。 我觉得我这两个窗口要处理的消息非常简单,同样也想做点与众不同。...,我们要判断是否是我们关心的消息,这样将减少我们处理消息的线程的工作量。...如果不是该消息,我们将判断该窗口是否为顶层窗口,且其窗口样式包含WS_SYSMENU(我试验了下,我所遇到的我认为该处理的窗口都有该属性,这个属于经验之谈,不一定准确)。...在被注入进程的顶层窗口接受到一些消息后,我们会将这些消息传递给我们的窗口,让其做一些处理。为了区分消息来源于顶层窗口还是自己,我将顶层窗口消息处理为一个用户自定义消息。...另一个很大的区别就是外框窗口是一个空心的异形窗口。
但也限制了代码的自由度 win32框架 目录 1、注册窗口类 RegisterClassEx 2、创建窗口 CreateWindowEx 3、在桌面显示窗口 ShowWindow 4、更新文本框...UpdateWindow 5、进入消息循环 获取消息 GetMessage 将消息发送到定义的MainWndProc函数处理 DispatchMessage 进入下一个循环 01 创建win32...UpdateWindow(hwnd); // 从消息堆中取出消息 MSG msg; while (::GetMessage(&msg, NULL, 0, 0))...{ // 转化键盘消息 TranslateMessage(&msg); // 将消息发送到相应的窗口函数 DispatchMessage(...例如将注册时的 szClassName 换成 DeRoy ,程序运行会弹出对话框。
)) { TranslateMessage(&msg); //翻译一些键盘消息 DispatchMessage(&msg); //将消息发送给窗口过程 } return msg.wParam...case WM_DESTROY: //将“退出”消息插入消息队列 PostQuitMessage(0); return 0; } //执行默认的消息处理 return DefWindowProc..., 0, rgb(255,0,0))); 删除 DeleteObject(SelectObject(hdc, hPen)); 六、键盘 6.1.击键消息 当用户按下一个键时,windows将WM_KEYDOWN...如果指定快捷键表中有项) ,然后将WM_COMMAND或WM_SYSCOMMAND消息直接发送到 //指定的窗口过程,则该函数会将WM_KEYDOWN或WM_SYSKEYDOWN消息转换为...lParam); } 十一、对话框 11.1.模态对话框 创建一个About1对话框 About1.rc // Microsoft Visual C++ generated resource script
#define RECT_UPPER_Y 0 //背景矩形框的左上角点的纵坐标 #define RECT_LOWER_X 300 //背景矩形框的右下角点的横坐标 #define RECT_LOWER_Y...);//隐藏返回0 非隐藏返回非0 //消息循环 while (GetMessage(&mSg, NULL, 0, 0))//Quit消息返回0 其他消息返回非0 { //翻译消息...(hWnd, &ps); OnPaint(hDC); EndPaint(hWnd, &ps); break; case WM_KEYDOWN://按键消息处理 switch (wParam)...WM_CLOSE WM_DESTROY消息 KillTimer(hWnd, N_TIMER);//关闭定时器 PostQuitMessage(0);//产生退出消息,GetMessage读取Quit...消息的返回值为0 break; } return DefWindowProc(hWnd, uID, wParam, lParam);//让系统自动处理一些默认消息 } //**********
领取专属 10元无门槛券
手把手带您无忧上云