Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 更改Win32 API中按钮的文本类型_C_User Interface_Winapi_Graphics - Fatal编程技术网

C 更改Win32 API中按钮的文本类型

C 更改Win32 API中按钮的文本类型,c,user-interface,winapi,graphics,C,User Interface,Winapi,Graphics,我正在开发一个禁用Windows资源管理器的程序。我以前是用Python做的,但是当我用C构建它时,启动程序会更快 我希望按钮看起来优雅,像标题文本样式和字体。如何使按钮的文本看起来漂亮?我希望你能帮助我 我的代码: #include <windows.h> #define ID_BTNHI0 0 #define ID_BTNHI1 1 #define ID_BTNHI2 2 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM

我正在开发一个禁用Windows资源管理器的程序。我以前是用Python做的,但是当我用C构建它时,启动程序会更快

我希望按钮看起来优雅,像标题文本样式和字体。如何使按钮的文本看起来漂亮?我希望你能帮助我

我的代码:

#include <windows.h>
#define ID_BTNHI0 0
#define ID_BTNHI1 1
#define ID_BTNHI2 2

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

WNDCLASSEX class_;

int WINAPI WinMain(HINSTANCE hInstanciaAct, HINSTANCE hInstanciaPrev, LPSTR IpCmdLine, int iCmdShow){
    
    ShowWindow(GetConsoleWindow(), SW_HIDE);
    
    HWND hWnd;
    MSG msg;
    
    class_.cbSize = sizeof(WNDCLASSEX);
    class_.cbWndExtra = 0;
    class_.cbClsExtra = 0;
    class_.style = CS_HREDRAW|CS_VREDRAW;
    class_.lpfnWndProc = WndProc;
    class_.hInstance = hInstanciaAct;
    class_.hIcon = LoadImage(NULL, "icoff.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
    class_.hIconSm = LoadImage(NULL, "icoff.ico", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE);
    class_.hCursor = LoadCursor(NULL, IDC_ARROW);
    class_.lpszClassName = "MICLASE";
    class_.lpszMenuName = NULL;
    class_.hbrBackground = GetSysColorBrush(COLOR_WINDOW);
    
    if(!RegisterClassEx(&class_)){
        MessageBox(NULL, "NON", "ERROR", MB_ICONERROR);
        return EXIT_FAILURE;
    }
    
    hWnd = CreateWindowEx(0, "MICLASE", "Windows Explorer Toggle", WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, 340, 140, HWND_DESKTOP, NULL, hInstanciaAct, NULL);
    if(hWnd == NULL){
        MessageBox(NULL, "NON2", "ERROR", MB_ICONERROR);
        return EXIT_FAILURE;
    }
    
    ShowWindow(hWnd, iCmdShow);
    UpdateWindow(hWnd);
    
    while(GetMessage(&msg, NULL, 0, 0) > 0){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    
    return msg.wParam;
}

HWND hBtn0;
HWND hBtn1;
HWND hBtn2;

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
    switch(msg){
        case WM_CREATE:{
            hBtn0 = CreateWindow("BUTTON", "Disable Windows Explorer", WS_VISIBLE | WS_CHILD | BS_FLAT, 82.5, 24.5, 175, 22.5, hWnd, (HMENU)ID_BTNHI0, GetModuleHandle(NULL), NULL);
            //SetFocus(hBtn0);
            hBtn1 = CreateWindow("BUTTON", "Enable Windows Explorer", WS_VISIBLE | WS_CHILD | BS_FLAT, 82.5, 24.5, 175, 22.5, hWnd, (HMENU)ID_BTNHI1, GetModuleHandle(NULL), NULL); 
            ShowWindow(hBtn1, SW_HIDE);
            hBtn2 = CreateWindow("BUTTON", "Open Folder", WS_VISIBLE | WS_CHILD | BS_FLAT, 82.5, 48, 175, 22.5, hWnd, (HMENU)ID_BTNHI2, GetModuleHandle(NULL), NULL);
            break;
        }
        case WM_COMMAND:{
            switch(LOWORD(wParam)){
                case ID_BTNHI0:{
                    system("TASKKILL /F /IM explorer.exe");
                    //clase.hIcon = LoadImage(NULL, "icoff.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
                    //clase.hIconSm = LoadImage(NULL, "icoff.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
                    ShowWindow(hBtn0, SW_HIDE);
                    ShowWindow(hBtn1, SW_SHOW);
                    //SetFocus(hBtn1);
                    break;
                }
                case ID_BTNHI1:{
                    system("start %SystemRoot%\\explorer.exe");
                    //clase.hIcon = LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
                    //clase.hIconSm = LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE);
                    ShowWindow(hBtn1, SW_HIDE);
                    ShowWindow(hBtn0, SW_SHOW);
                    //SetFocus(hBtn0);
                    break;
                }
                case ID_BTNHI2:{
                    system("start .");
                    //SetFocus(hBtn0);
                    break;
                }
            }
            break;
        }
        case WM_DESTROY:{
            PostQuitMessage(0);
            break;
        }
        default:{
            return DefWindowProc(hWnd, msg, wParam, lParam);
        }
        
    }
    return 0;

}
#包括
#定义ID_BTNHI0
#定义ID_BTNHI1
#定义ID_BTNHI2 2
LRESULT回调WndProc(HWND HWND、UINT msg、WPARAM WPARAM、LPARAM LPARAM);
WNDCLASSEX类;
int WINAPI WinMain(HINSTANCE hInstanciaAct、HINSTANCE hInstanciaPrev、LPSTR IpCmdLine、int iCmdShow){
显示窗口(GetConsoleWindow(),SW_HIDE);
HWND-HWND;
味精;
类cbSize=sizeof(WNDCLASSEX);
类cbWndExtra=0;
类别cbClsExtra=0;
class_u.style=CS_HREDRAW | CS_VREDRAW;
类。lpfnWndProc=WndProc;
类.hInstance=hInstanciaAct;
class_uu.hIcon=LoadImage(NULL,“icoff.ico”,IMAGE_图标,0,0,LR_DEFAULTSIZE | LR_LOADFROMFILE);
class_uu.hIconSm=LoadImage(NULL,“icoff.ico”,IMAGE_图标,0,0,LR_DEFAULTSIZE | LR_LOADFROMFILE);
class.hCursor=LoadCursor(空,IDC箭头);
class.lpszClassName=“MICLASE”;
class.lpszMenuName=NULL;
class.hbrBackground=GetSysColorBrush(颜色窗口);
如果(!RegisterClassEx(&class))){
MessageBox(空,“非”,“错误”,MB_ICONERROR);
返回退出失败;
}
hWnd=CreateWindowEx(0,“MICLASE”,“Windows资源管理器切换”,WS|U重叠| WS|U最小化框| WS|U系统菜单,CW|U USEDEFAULT,CW|U USEDEFAULT,340,140,hWnd|U桌面,NULL,hinstanciact,NULL);
if(hWnd==NULL){
MessageBox(空,“非2”,“错误”,MB_ICONERROR);
返回退出失败;
}
显示窗口(hWnd、iCmdShow);
更新窗口(hWnd);
while(GetMessage(&msg,NULL,0,0)>0){
翻译信息(&msg);
发送消息(&msg);
}
返回msg.wParam;
}
HWND-hBtn0;
HWND-hBtn1;
HWND-hBtn2;
LRESULT回调WndProc(HWND HWND,UINT msg,WPARAM WPARAM,LPARAM LPARAM){
开关(msg){
案例WM_创建:{
hBtn0=CreateWindow(“按钮”,“禁用Windows资源管理器”,WS|U可见| WS|U子项| BS|U平面,82.5,24.5,175,22.5,hWnd,(HMENU)ID_BTNHI0,GetModuleHandle(NULL),NULL);
//SetFocus(hBtn0);
hBtn1=CreateWindow(“按钮”,“启用Windows资源管理器”,WS|u可见| WS|u子项| BS|u平面,82.5,24.5,175,22.5,hWnd,(HMENU)ID_BTNHI1,GetModuleHandle(NULL),NULL);
显示窗口(hBtn1,SW_隐藏);
hBtn2=CreateWindow(“按钮”,“打开文件夹”,WS|U可见| WS|U子项| BS|U平面,82.5,48,175,22.5,hWnd,(HMENU)ID_BTNHI2,GetModuleHandle(NULL),NULL);
打破
}
case WM_命令:{
开关(LOWORD(wParam)){
案例ID_BTNHI0:{
系统(“TASKKILL/F/IM explorer.exe”);
//clase.hIcon=LoadImage(NULL,“icoff.ico”,IMAGE\u图标,32,32,LR\u LOADFROMFILE);
//clase.hIconSm=LoadImage(NULL,“icoff.ico”,IMAGE\u图标,32,32,LR\u LOADFROMFILE);
显示窗口(hBtn0、SW_隐藏);
ShowWindow(hBtn1、SW_SHOW);
//SetFocus(hBtn1);
打破
}
案例ID_BTNHI1:{
系统(“启动%SystemRoot%\\explorer.exe”);
//clase.hIcon=LoadImage(NULL,“icon.ico”,IMAGE\u icon,32,32,LR\u LOADFROMFILE);
//clase.hIconSm=LoadImage(NULL,“icon.ico”,IMAGE\u icon,32,32,LR\u LOADFROMFILE);
显示窗口(hBtn1,SW_隐藏);
ShowWindow(hBtn0、SW_SHOW);
//SetFocus(hBtn0);
打破
}
案例ID_BTNHI2:{
系统(“启动”);
//SetFocus(hBtn0);
打破
}
}
打破
}
案例WM_销毁:{
PostQuitMessage(0);
打破
}
默认值:{
返回DefWindowProc(hWnd、msg、wParam、lParam);
}
}
返回0;
}

您需要去掉按钮上的
BS_FLAT
窗口样式,如果您还没有这样做,您的程序也需要这样做。然后按钮将具有现代外观。

您未能理解问题,首先按钮代码已经使用了“BS_FLAT”,这就是为什么它看起来像这样,即使您激活视觉样式,文本仍然以该样式显示,问题不是按钮,而是按钮内的文本。“你没能理解这个问题”-那是你解释得不够清楚的错。“按钮代码已经使用了“BS_FLAT”-我知道,我是说要摆脱它,所以按钮有一个更现代的3d外观。”如果你激活视觉样式,文本仍然以该样式显示“-按钮文本将采用活动主题的字体和样式,这是它应该做的。