精华内容
下载资源
问答
  • Win10不能直接拖动文件打开的解决办法 大多数人安装好win10 后,很多软件的拖拽文件拖到软件上直接打开的功能失效,这时必须要用软件里的打开功能,这是非常麻烦的。经过测试有两种方法可以解决。 方法1 按...

    Win10不能直接拖动文件打开的解决办法

    大多数人安装好win10 后,很多软件的拖拽文件拖到软件上直接打开的功能失效,这时必须要用软件里的打开功能,这是非常麻烦的。经过测试有两种方法可以解决。

    方法1

    1. Windows+R,打开“运行”对话框:输入regedit,回车或确定。
    2. 依次找到以下键值:
      HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system
    3. 右键“EnableLUA 选“修改”。把值改成0,确定。然后重启电脑。

    方法2

    1. 按下“Win+R”,再出现的运行命令中输入“gpedit.msc”后回车。

    https://p.ssl.qhimg.com/t0198a42a07f025c2f7.png

    2. 在本地组策略编辑器界面,依次展开左侧面板:用户配置-〉管理模板-windows组件-〉任务计划程序,点击选中“任务计划程序”,在右侧窗口找到并蛋黄及打开“禁止拖放”。

    https://p.ssl.qhimg.com/t015454cc0a76ad72b7.png

    3. 在禁止拖放界面,点击选择“未配置”,或者“已禁用”后,点击确定后,重启电脑即可。

    展开全文
  • DuiLib教程--从win32窗口开始

    万次阅读 2017-04-26 12:42:57
    其实,万变不离其宗,DuiLib也只是一个ui界面库,还是得建立在win32程序的基础上的,还是得winmain这个狗洞钻进去。如果不搞懂win32的窗口消息机制,DuiLib的消息处理过程肯定得绕晕你。所以我建议大家建立一个空...

    win32窗口程序

    大家看到这个标题肯定会问“大哥,你是不是搞错了,我是来学DuiLib的,你给我扯什么win32程序”。其实,万变不离其宗,DuiLib也只是一个ui界面库,还是得建立在win32程序的基础上的,还是得从winmain这个狗洞钻进去。如果不搞懂win32的窗口消息机制,DuiLib的消息处理过程肯定得绕晕你。所以我建议大家建立一个空的win32应用程序,添加一个winmain.cpp,把下面的代码手打一遍,每一行的作用都搞懂(不会的windows API 一定要自己去查MSDN),就算是为学习DuiLib打下了一个良好的基础。

    #include <Windows.h>
    #include <stdio.h>
    #include <tchar.h>
    
    // 窗口过程
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
    	switch (message)
    	{
    	case WM_LBUTTONDOWN:
    		MessageBox(hWnd, "你单击了鼠标左键", "WM_LBUTTONDOWN", MB_OK);
    		break;
    	case WM_CHAR:
    		char szChar[64];
    		sprintf_s(szChar, 64, "你按下了键盘键:%c", wParam);
    		MessageBox(hWnd, szChar, "WM_CHAR", MB_OK);
    		break;
    	case WM_PAINT:
    		{
    			PAINTSTRUCT ps;
    			HDC hdc = BeginPaint(hWnd, &ps);
    			// TODO: 在此添加任意绘图代码...
    			SetTextColor(hdc, RGB(255,0,0));
    			SetBkColor(hdc, RGB(0,255,0));
    			TextOut(hdc, 200, 200, "Hello World!", strlen("Hello World!"));
    			EndPaint(hWnd, &ps);
    		}
    		break;
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		break;
    	default:
    		break;
    	}
    	return DefWindowProc(hWnd, message, wParam, lParam);
    }
    
    int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    					   LPTSTR    lpCmdLine, int       nCmdShow){
    	// 注册窗口类
    	WNDCLASSEX wcex;
    	wcex.cbSize = sizeof(WNDCLASSEX);
    	wcex.style			= CS_HREDRAW | CS_VREDRAW;
    	wcex.lpfnWndProc	= WndProc;
    	wcex.cbClsExtra		= 0;
    	wcex.cbWndExtra		= 0;
    	wcex.hInstance		= hInstance;
    	wcex.hIcon			= NULL;
    	wcex.hCursor		= LoadCursor(NULL, IDC_HAND);
    	wcex.hbrBackground	= (HBRUSH)(GetStockObject(BLACK_BRUSH));
    	wcex.lpszMenuName	= NULL;
    	wcex.lpszClassName	= "mywndclass";
    	wcex.hIconSm		= NULL;
    	RegisterClassEx(&wcex);
    
    	// 创建窗口
    	HWND hWnd = CreateWindowEx(0, "mywndclass", "This is a win32 wnd", WS_OVERLAPPEDWINDOW,
    		100, 100, 800, 600, NULL, NULL, hInstance, NULL);
    
    	// 显示窗口
    	ShowWindow(hWnd, nCmdShow);
    
    	// 窗口消息循环
    	MSG msg;
    	while (GetMessage(&msg, NULL, 0, 0)){
    		TranslateMessage(&msg);
    		DispatchMessage(&msg);
    	}
    
    	return (int) msg.wParam;
    }
    

    运行效果图如下:
    win32

    是不是很丑,怪我咯,我要是做的好看,那公司就不会给我们配个美美的UI设计师了。言归正传,大家可以修改下窗口背景刷、字体背景色和前景色,然后再看看效果,加深理解和印象。

    是不是so easy,只需要记住这条主线,注册窗口类->创建窗口->显示窗口->窗口消息循环,在接下来学习DUiLib的过程中我们就不会被绕晕了。

    使用DuiLib的CWindowWnd

    上面的win32窗口程序还是面向过程编程,C++是擅长面向对象编程OOP的,我们很自然的想到可以用一个类去封装窗口句柄HWND和对应创建窗口、显示窗口等方法,DuiLib中CWindowWnd就是这个窗口类,分别在UIBase.h和UIBase.cpp中声明和定义。

    拿到一个类,首先就是到头文件中去看她提供的方法,一个封装良好的类通过方法名就能大致猜出她的作用。所以在看我的DuiLib教程时一定要打开DuiLib工程find到对应的位置。我只会贴出关键的代码段讲解,其它的你应该到源代码中去自己有个大概了解,有兴趣的可以自己尝试去封装一个窗口类,再来对照看DuiLib中的CWindowWnd类,这样可以锻炼你的设计类能力。

    下面先创建一个空win32工程,在winmain.cpp添加如下代码测试下CWindowWnd类:

    #include "../../DuiLib/UIlib.h"
    using namespace DuiLib;
    
    #ifdef _DEBUG
    #   ifdef _UNICODE
    #       pragma comment(lib, "../../Lib/DuiLib_ud.lib")
    #   else
    #       pragma comment(lib, "../../Lib/DuiLib_d.lib")
    #   endif
    #else
    #   ifdef _UNICODE
    #       pragma comment(lib, "../../Lib/DuiLib_u.lib")
    #   else
    #       pragma comment(lib, "../../Lib/DuiLib.lib")
    #   endif
    #endif
    
    class CFrameWnd : public CWindowWnd
    {
    public:
    	virtual LPCTSTR GetWindowClassName() const{
    		return _T("FrameWnd");
    	}
    	virtual void OnFinalMessage(HWND hWnd){
    		delete this;
    	}
    };
    
    int APIENTRY _tWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 
    					   LPTSTR lpCmdLine, int nShowCmd ){
    	// new一个窗口对象
    	CFrameWnd* pFrame = new CFrameWnd;
    	// 注册窗口类、创建窗口
    	pFrame->Create(NULL, _T("sample01"), UI_WNDSTYLE_FRAME, UI_WNDSTYLE_EX_FRAME,
    		100, 100, 800, 600, NULL);
    	// 显示窗口、进入窗口消息循环
    	pFrame->ShowModal();
    	return 0;
    }
    
    

    使用CFrameWnd继承自CWindowWnd,CWindowWnd必须实现的一个纯虚接口是GetWindowClassName来表明她的窗口类名。在OnFinalMessage中delete this是因为DuiLib中需要使用new来生成一个窗口,delete可以防止内存泄漏(在后面的DuiLib程序中可以看到都只有new而没有delete,这是因为DuiLib内部在窗口销毁时已经做了delete的操作)。编译生成这段代码,运行后也能顺利创建显示一个窗口,让我们看一下关键的几个方法:

    一、创建窗口

    HWND CWindowWnd::Create(HWND hwndParent, LPCTSTR pstrName, DWORD dwStyle, DWORD dwExStyle, int x, int y, int cx, int cy, HMENU hMenu)
    {
        if( GetSuperClassName() != NULL && !RegisterSuperclass() ) return NULL;
        if( GetSuperClassName() == NULL && !RegisterWindowClass() ) return NULL;
        m_hWnd = ::CreateWindowEx(dwExStyle, GetWindowClassName(), pstrName, dwStyle, x, y, cx, cy, hwndParent, hMenu, CPaintManagerUI::GetInstance(), this);
        ASSERT(m_hWnd!=NULL);
        return m_hWnd;
    }
    

    可以发现在调用CreateWindowEx这个windows API前会先调用RegisterWindowClass注册窗口类。 还有一点需要注意的是 CreateWindowEx的最后一个参数将this指针作为参数传递了进去,这个玩意在后面可有妙用。

    二、显示窗口并进入消息循环

    UINT CWindowWnd::ShowModal()
    {
        ASSERT(::IsWindow(m_hWnd));
        UINT nRet = 0;
        HWND hWndParent = GetWindowOwner(m_hWnd);
        ::ShowWindow(m_hWnd, SW_SHOWNORMAL);
        ::EnableWindow(hWndParent, FALSE);
        MSG msg = { 0 };
        while( ::IsWindow(m_hWnd) && ::GetMessage(&msg, NULL, 0, 0) ) {
            if( msg.message == WM_CLOSE && msg.hwnd == m_hWnd ) {
                nRet = msg.wParam;
                ::EnableWindow(hWndParent, TRUE);
                ::SetFocus(hWndParent);
            }
            if( !CPaintManagerUI::TranslateMessage(&msg) ) {
                ::TranslateMessage(&msg);
                ::DispatchMessage(&msg);
            }
            if( msg.message == WM_QUIT ) break;
        }
        ::EnableWindow(hWndParent, TRUE);
        ::SetFocus(hWndParent);
        if( msg.message == WM_QUIT ) ::PostQuitMessage(msg.wParam);
        return nRet;
    }
    

    可以发现先调用了ShowWindow去显示窗口,然后进入了我们熟悉的GetMessage消息循环。考虑到可能是子窗口关闭WM_CLOSE 所以有些额外处理,CPaintManagerUI这玩意比较庞大,包揽了绘画细节和消息管理, 我们这集还不打算修理它,留到后面解剖。只需要知道TranslateMessage是进行了一个消息预处理过滤的功能。

    三、窗口过程

    LRESULT CALLBACK CWindowWnd::__WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        CWindowWnd* pThis = NULL;
        if( uMsg == WM_NCCREATE ) {
            LPCREATESTRUCT lpcs = reinterpret_cast<LPCREATESTRUCT>(lParam);
            pThis = static_cast<CWindowWnd*>(lpcs->lpCreateParams);
            pThis->m_hWnd = hWnd;
            ::SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LPARAM>(pThis));
        } 
        else {
            pThis = reinterpret_cast<CWindowWnd*>(::GetWindowLongPtr(hWnd, GWLP_USERDATA));
            if( uMsg == WM_NCDESTROY && pThis != NULL ) {
                LRESULT lRes = ::CallWindowProc(pThis->m_OldWndProc, hWnd, uMsg, wParam, lParam);
                ::SetWindowLongPtr(pThis->m_hWnd, GWLP_USERDATA, 0L);
                if( pThis->m_bSubclassed ) pThis->Unsubclass();
                pThis->m_hWnd = NULL;
                pThis->OnFinalMessage(hWnd);
                return lRes;
            }
        }
        if( pThis != NULL ) {
            return pThis->HandleMessage(uMsg, wParam, lParam);
        } 
        else {
            return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
        }
    }
    

    窗口过程因为是回调函数,所以声明成static类型,static类型是不能使用非static成员的,那么问题来了,他怎么去获取CWindowWnd对象指针,然后去调用CWindowWnd里面的方法呢。这就是之前CreateWindowEx将this指针传进去的原因了,在WM_NCCREATE时通过将lParam转化成LPCREATESTRUCT,里面的lpCreateParams就是this指针了,然后通过SetWindowLongPtr将this设置为用户数据,再处理其它的WM_消息时通过GetWindowLongPtr获取到this指针,进而可以调用CWindowWnd的方法了(比如这里调用了HandleMessage来处理感兴趣的WM_消息),这是我们自己封装窗口类难以想到的一点吧(小tips:在声明回调函数时我们一般将最后一个参数设置为用户数据)。当然有的同学会使用map容器将HWND与CWindowWnd对应起来,这也是一种方法,但总归没有使用用户数据来的直接简便。

    这集就先pass了CWindowWnd类,一步一个脚印我们终将走出DuiLib的沙漠。
    这里写图片描述

    展开全文
  • win32使用OPENFILENAME浏览文件窗口

    千次阅读 2012-04-09 09:49:32
    使用win32 API打开 浏览文件窗口,使用OPENFILENAME结构体来实现这个功能。 代码如下: OPENFILENAME ofn; WCHAR* szFile = new WCHAR[512]; WCHAR* szFileTitle = new WCHAR[512]; memset(&ofn, 0, sizeof...

    使用win32 API打开 浏览文件窗口,使用OPENFILENAME结构体来实现这个功能。

    代码如下:

    OPENFILENAME ofn;
    	WCHAR* szFile = new WCHAR[512];
    	WCHAR* szFileTitle = new WCHAR[512];
    	memset(&ofn, 0, sizeof(ofn));
    	memset(szFile, 0, sizeof(WCHAR)*512);
    	memset(szFileTitle, 0, sizeof(WCHAR)*512);
    
    	ofn.lStructSize = sizeof(ofn);
    	ofn.hwndOwner = yMain->m_hWnd;
    	ofn.hInstance = yMain->m_hInst;
    	ofn.lpstrFilter = L"All File\0*.*\0";
    	ofn.nFilterIndex = 1;
    	ofn.lpstrFile = szFile;
    	ofn.nMaxFile = sizeof(WCHAR)*512;
    	ofn.lpstrFileTitle = szFileTitle;
    	ofn.nMaxFileTitle = sizeof(WCHAR)*512;
    	ofn.Flags = OFN_FILEMUSTEXIST | OFN_EXPLORER;
    
    	// 按下确定按钮
    	BOOL ok = GetOpenFileName(&ofn);
    	if( ok ){
    		MessageBox(hWnd, L"23", L"44", MB_OK);
    	}
    
    	delete []szFile;
    	delete []szFileTitle;
    其中,有个地方需要注意一下,要是不使用以下的处理话,会出现无法弹出浏览窗口界面的问题:
    WCHAR* szFile = new WCHAR[512];
    WCHAR* szFileTitle = new WCHAR[512];

    关于这两个变量,最好就需要先分配空间,如果直接定义为数组的话,就会导致浏览文件的窗口弹不出来。原因在于,这两个变量是局部变量,定义为数组的话,空间占用太大了,无法自动分配出来,需要专门分配内存才行。

    上述代码在debug和release版中都测试过,可以正常的弹出打开的窗口。


    展开全文
  • win10环境下打开cmd命令行窗口,再cd至文件路径下异常麻烦,现get到一个奇技淫巧,可以如Ubuntu一般直接在相应目录下右键打开CMD,方法如下: step1:win+R快捷键,输入regedit后回车,打开注册表编辑器; step2:在...

    经测试,可用

    win10环境下打开cmd命令行窗口,再cd至文件路径下异常麻烦,现get到一个奇技淫巧,可以如Ubuntu一般直接在相应目录下右键打开CMD,方法如下:
    step1:win+R快捷键,输入regedit后回车,打开注册表编辑器;
    step2:在注册表编辑器中找到HKEY_CLASSES_ROOT\Directory\Background\shell,右键点击shell,新建项,命名为“打开CMD”;
    step3:右键点击“打开CMD”,新建项,命名为“command”;
    step4:双击“名称”下的“默认”,将“command”的数值数据修改为

    cmd.exe /s /k pushd "%V"
    

    关闭注册表,这时在任意路径下点击右键,这时你会发现右键菜单中多了一个“打开CMD”的选项,点击即可打开cmd窗口,而且路径就是当前文件夹,不需要cd操作,是不是很方便?
    来源
    链接:https://www.jianshu.com/p/c203aa1aa5b7

    展开全文
  • 在命令行下想要可视化查看文件,可以使用命令直接打开图形化窗口 1. Windows windows上可以使用explorer.exe打开资源管理器: explorer.exe . #.表示打开当前所在的文件夹 explorer.exe #会默认打开库的窗口...
  • Win10系统 打开cad文件不在同一窗口,有下面几种方法: 一系统问题 3.win+r 运行,regedit, 然后定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System, 在右侧找到EnableLUA,...
  • pythonwin-win32gui 窗口查找和遍历

    万次阅读 2016-05-06 11:12:55
    #coding=utf-8 __author__ = 'Administrator' ...本文件演如何使用win32gui来遍历系统中所有的顶层窗口, 并遍历所有顶层窗口中的子窗口 ''' import win32gui from pprint import pprint def gbk2utf8(s): retu
  • 可以用autoit和win32api解决,方法类似,可以博主之前的文章Python selenium —— 文件上传所有方法整理总结,今天这里博主主要想讲讲更漂亮的一种处理办法,那就是指定下载路径,不弹出弹框,直接下载到指定路径...
  • 大多数人安装好win10 后,很多软件的拖拽文件拖到软件上直接打开的功能失效,这时必须要用软件里的打开功能,这是非常麻烦的。经过测试有两种方法可以解决。方法1(麻烦一点点) 1 按Windows键+R,打开“运行”...
  • 选择需要提取路径的文件夹或文件,按下Shift键,同时单击右键。 选择“复制为路径”。成功! 方法二: 选择需要提取路径文件所处的文件夹,点击窗口中的“主页”的菜单项。 点击工具栏的“复制路径”。成功! ...
  • 这个应该很简单的,在开始菜单里直接输入cmd,就可以打开cmd窗口了,这是一般权限。点击右键的话,还可以以管理员方式运行cmd窗口,在有些python依赖库安装的时候,就需要管理员权限。2.切换目录 这个只需要在cm
  • win10相同文件粘贴覆盖直接产生副本

    千次阅读 2019-06-12 14:49:13
    打开我的电脑 点击“更改文件夹和搜索选项”菜单 找到“隐藏文件夹合并冲突”一项,把其前面的勾选去掉,最后点击确定按钮 ... 以后再复制文件的时候,替换或跳过文件询问窗口又显示出来了 ...
  • 用windows API注册生成的窗口类,能实现窗口的透明,无边框以及窗口的移动,该CPP文件直接在VC中新建一个空的WIN32应用程序就行
  • 1 基本思路做界面仿真时,经常需要在窗口上贴图,随着图片数量的增多,通过资源文件中添加位图的方式会变得越来越不控。所以本着“资源与程序分离“的原则,还是使用外部位图文件更加清晰明了。那么如何管理位图的...
  • 使用Win10系统的时候,大家在网上下载文件的时候,在电脑中不能直接打开下载的文件,会有安全警告“网络的文件可能会危害计算机”,很多人就害怕是病毒,其实这些文件并不是病毒。那么Win10下载的文件如何解除锁定?...
  • win10如何让窗口固定保持在最上层

    千次阅读 2020-05-01 15:43:32
    下载DeskPins:下载地址 下载后解压直接运行exe文件即可 软件真的非常小
  • Win8.1设置窗口背景颜色为护眼色

    万次阅读 热门讨论 2014-01-22 10:51:46
    win7里可以在个性化里设置,到win8的时候没有了。只能手动修改注册表,达到同样的效果: window+R ---》输入regedit(点击确定后进入注册表编辑器) ---》HKEY_CURRENT_USER ---》Control Panel--- 》 Colors,找到...
  • C语言 WIN32窗口实现 俄罗斯方块Tetris 源代码 游戏支持开始(包括暂停恢复和结束后重新开始)、暂停、空格键落地及基本功能,玩起来会更好一些。 全部游戏代码都在.c文件,编译即可,windows xp ,VS2010 WIN32下,...
  • win7下打开mysql命令窗口

    千次阅读 2016-08-10 12:05:13
    下面以phpstudy为例 mysql命令窗口和dos命令窗口是不一样的。 ...第二步:打开mysql命令...直接回车就可以成功进入mysql命令窗口: 或者 在自己安装的phpstudy里面找到mysql文件夹,打开mysql的bin文件
  • 最近使用了win10系统,结果发现对c盘的文件进行写入删改,在网上到处搜集资料,终于找到了解决方法,这里总结一下。 首先,本文针对的是win10家庭版,家庭版默认是不提供组策略功能,而我们需要给家庭版添加组策略...
  • 安装的java会自动关联jar文件,如果是执行的jar文件,双击就可以运行。可是,如何才能让绿色版的java也像安装版的一样呢?假设java路径为“D:\Java \jdk1.6.0_12”。 现象:  WIN7系统下打开Jar文件时报错,...
  • [Win32SDK基本] 窗口详解(超详细)

    万次阅读 多人点赞 2015-06-05 16:20:06
    Win32SDK创建窗口,虽然早已经烂大街了,但是那些资料太散,都不全面,无法满足我编程的需要,因此,有必要整理一下。 这篇文章包括一下几个部分: 1。窗口类详解 2。窗口样式详解 3。窗口显示更新详解 4。窗口回调...
  • 这对于从win7过来的用户就有一个很棘手的问题,就是在安装msi文件的使用鼠标右键没有按管理员运行的选项 网上给了很多教程,修改组策略等,见效不大 还是直接修改注册表吧,这个是最直接的 本教程完成后,暗转msi...
  • Win32窗体应用程序如何添加资源文件?  上一篇文章介绍了:如何创建一个最简单的Windows窗体应用程序。  按照上一篇文章的介绍,我们的HelloApp项目对应如下的窗体应用程序:    这一篇文章中,我们将在...
  • win10下.jar的文件打不开了,经网上查找,找到解决办法,记录一下,有需要的兄弟们可以看看。 解决办法1: 新建一个文本文档,输入内容"javaw -jar %1",并保存为批处理文件,例如"run.bat"。 右键点击....
  • office如何打开多个excel文件窗口

    万次阅读 2015-03-02 16:18:06
    当打开多个excel文件时,直接双击文件打开,你会发现多个excel是共用的同一个窗口。这样很不方便两个文件对比。有没有什么办法,可以让两个xlsx文件可以在两个窗口打开呢? 解决方法: 1> 先打开文件A,这时会...
  • 【DirectX】Win32窗口创建源码 by浅墨

    热门讨论 2012-11-12 02:36:46
    点击debug下的exe文件可以直接看到运行效果。 编写环境:VS2010 我的博客地址是http://blog.csdn.net/zhmxy555,源码结合配套文章一起效果更佳。 希望能和大家一起交流,共同学习,共同进步。 by浅墨

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,179
精华内容 53,671
关键字:

win直接可从窗口看文件内容