CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

给个FindWindowEx()函数的例子!

楼主nevergone()2006-12-02 21:50:17 在 VC/MFC / 基础类 提问

如题,能不能给个FindWindowEx()函数的例子.最好用SDK方式.谢谢. 问题点数:20、回复次数:2Top

1 楼sgnaw(李逍遥)回复于 2006-12-02 22:43:21 得分 20

下面是用   FindWindowEx   在   About   窗口中修改一个按钮的名称(SDK方式)  
  1.在   VS2005   中新建一个标准的   Win32   项目,   名称为   AppTest   .  
  2.打开   about   对话框   IDD_ABOUTBOX  
  3.在其中添加一个按钮   IDC_BUTTON1,   名称为   Button1  
  4.   在确定按钮里,添加类似下面的代码:  
  //   用   FindWindowEx   查找   Button1   并改名为"Hello"  
  HWND   hButton1   =   FindWindowEx(hDlg,   NULL,   NULL,   _T("Button1"));  
  if   (hButton1)  
  {  
  SetWindowText(hButton1,   _T("Hello"));  
  MessageBox(hDlg,   _T("Yes   ,   I   found   it"),   _T("hi"),     MB_OK);  
  }  
  //   ...  
  EndDialog(hDlg,   LOWORD(wParam));  
   
  5.源程序为:  
  //   AppTest.cpp   :   定义应用程序的入口点。  
  //  
   
  #include   "stdafx.h"  
  #include   "AppTest.h"  
   
  #define   MAX_LOADSTRING   100  
   
  //   全局变量:  
  HINSTANCE   hInst; //   当前实例  
  TCHAR   szTitle[MAX_LOADSTRING]; //   标题栏文本  
  TCHAR   szWindowClass[MAX_LOADSTRING]; //   主窗口类名  
   
  //   此代码模块中包含的函数的前向声明:  
  ATOM MyRegisterClass(HINSTANCE   hInstance);  
  BOOL InitInstance(HINSTANCE,   int);  
  LRESULT   CALLBACK WndProc(HWND,   UINT,   WPARAM,   LPARAM);  
  INT_PTR   CALLBACK About(HWND,   UINT,   WPARAM,   LPARAM);  
   
  int   APIENTRY   _tWinMain(HINSTANCE   hInstance,  
                                            HINSTANCE   hPrevInstance,  
                                            LPTSTR         lpCmdLine,  
                                            int               nCmdShow)  
  {  
  UNREFERENCED_PARAMETER(hPrevInstance);  
  UNREFERENCED_PARAMETER(lpCmdLine);  
   
    //   TODO:   在此放置代码。  
  MSG   msg;  
  HACCEL   hAccelTable;  
   
  //   初始化全局字符串  
  LoadString(hInstance,   IDS_APP_TITLE,   szTitle,   MAX_LOADSTRING);  
  LoadString(hInstance,   IDC_APPTEST,   szWindowClass,   MAX_LOADSTRING);  
  MyRegisterClass(hInstance);  
   
  //   执行应用程序初始化:  
  if   (!InitInstance   (hInstance,   nCmdShow))  
  {  
  return   FALSE;  
  }  
   
  hAccelTable   =   LoadAccelerators(hInstance,   MAKEINTRESOURCE(IDC_APPTEST));  
   
  //   主消息循环:  
  while   (GetMessage(&msg,   NULL,   0,   0))  
  {  
  if   (!TranslateAccelerator(msg.hwnd,   hAccelTable,   &msg))  
  {  
  TranslateMessage(&msg);  
  DispatchMessage(&msg);  
  }  
  }  
   
  return   (int)   msg.wParam;  
  }  
   
   
   
  //  
  //     函数:   MyRegisterClass()  
  //  
  //     目的:   注册窗口类。  
  //  
  //     注释:  
  //  
  //         仅当希望  
  //         此代码与添加到   Windows   95   中的“RegisterClassEx”  
  //         函数之前的   Win32   系统兼容时,才需要此函数及其用法。调用此函数十分重要,  
  //         这样应用程序就可以获得关联的  
  //         “格式正确的”小图标。  
  //  
  ATOM   MyRegisterClass(HINSTANCE   hInstance)  
  {  
  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 =   LoadIcon(hInstance,   MAKEINTRESOURCE(IDI_APPTEST));  
  wcex.hCursor =   LoadCursor(NULL,   IDC_ARROW);  
  wcex.hbrBackground =   (HBRUSH)(COLOR_WINDOW+1);  
  wcex.lpszMenuName =   MAKEINTRESOURCE(IDC_APPTEST);  
  wcex.lpszClassName =   szWindowClass;  
  wcex.hIconSm =   LoadIcon(wcex.hInstance,   MAKEINTRESOURCE(IDI_SMALL));  
   
  return   RegisterClassEx(&wcex);  
  }  
   
  //  
  //       函数:   InitInstance(HINSTANCE,   int)  
  //  
  //       目的:   保存实例句柄并创建主窗口  
  //  
  //       注释:  
  //  
  //                 在此函数中,我们在全局变量中保存实例句柄并  
  //                 创建和显示主程序窗口。  
  //  
  BOOL   InitInstance(HINSTANCE   hInstance,   int   nCmdShow)  
  {  
        HWND   hWnd;  
   
        hInst   =   hInstance;   //   将实例句柄存储在全局变量中  
   
        hWnd   =   CreateWindow(szWindowClass,   szTitle,   WS_OVERLAPPEDWINDOW,  
              CW_USEDEFAULT,   0,   CW_USEDEFAULT,   0,   NULL,   NULL,   hInstance,   NULL);  
   
        if   (!hWnd)  
        {  
              return   FALSE;  
        }  
        ShowWindow(hWnd,   nCmdShow);  
        UpdateWindow(hWnd);  
   
        return   TRUE;  
  }  
   
  //  
  //     函数:   WndProc(HWND,   UINT,   WPARAM,   LPARAM)  
  //  
  //     目的:   处理主窗口的消息。  
  //  
  //     WM_COMMAND -   处理应用程序菜单  
  //     WM_PAINT -   绘制主窗口  
  //     WM_DESTROY -   发送退出消息并返回  
  //  
  //  
  LRESULT   CALLBACK   WndProc(HWND   hWnd,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)  
  {  
  int   wmId,   wmEvent;  
  PAINTSTRUCT   ps;  
  HDC   hdc;  
   
  switch   (message)  
  {  
  case   WM_COMMAND:  
  wmId         =   LOWORD(wParam);  
  wmEvent   =   HIWORD(wParam);  
  //   分析菜单选择:  
  switch   (wmId)  
  {  
  case   IDM_ABOUT:  
  DialogBox(hInst,   MAKEINTRESOURCE(IDD_ABOUTBOX),   hWnd,   About);  
  break;  
  case   IDM_EXIT:  
  DestroyWindow(hWnd);  
  break;  
  default:  
  return   DefWindowProc(hWnd,   message,   wParam,   lParam);  
  }  
  break;  
  case   WM_PAINT:  
  hdc   =   BeginPaint(hWnd,   &ps);  
  //   TODO:   在此添加任意绘图代码...  
  EndPaint(hWnd,   &ps);  
  break;  
  case   WM_DESTROY:  
  PostQuitMessage(0);  
  break;  
  default:  
  return   DefWindowProc(hWnd,   message,   wParam,   lParam);  
  }  
  return   0;  
  }  
   
  //   “关于”框的消息处理程序。  
  INT_PTR   CALLBACK   About(HWND   hDlg,   UINT   message,   WPARAM   wParam,   LPARAM   lParam)  
  {  
  UNREFERENCED_PARAMETER(lParam);  
  switch   (message)  
  {  
  case   WM_INITDIALOG:  
  return   (INT_PTR)TRUE;  
   
  case   WM_COMMAND:  
  if   (LOWORD(wParam)   ==   IDOK   ||   LOWORD(wParam)   ==   IDCANCEL)  
  {  
  //   用   FindWindowEx   查找   Button1   并改名为"Hello"  
  HWND   hButton1   =   FindWindowEx(hDlg,   NULL,   NULL,   _T("Button1"));  
  if   (hButton1)  
  {  
  SetWindowText(hButton1,   _T("Hello"));  
  MessageBox(hDlg,   _T("Yes   ,   I   found   it"),   _T("hi"),     MB_OK);  
  }  
  EndDialog(hDlg,   LOWORD(wParam));  
  return   (INT_PTR)TRUE;  
  }  
  break;  
  }  
  return   (INT_PTR)FALSE;  
  }Top

2 楼bushiliumang()回复于 2006-12-02 22:55:35 得分 0

啊!这么详细的解析。。。Top

相关问题

关键词

得分解答快速导航

  • 帖主:nevergone
  • sgnaw

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo