首页
社区
课程
招聘
[求助]Windows SDK编程怎么用资源文件创建窗口啊?
发表于: 2006-12-28 22:45 9173

[求助]Windows SDK编程怎么用资源文件创建窗口啊?

2006-12-28 22:45
9173
有人知道Windows SDK怎么用资源文件创建窗口得吗?

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 380
活跃值: (106)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
2
早说过沙发是我了
2006-12-28 22:46
0
雪    币: 380
活跃值: (106)
能力值: ( LV13,RANK:370 )
在线值:
发帖
回帖
粉丝
3
最初由 b23526 发布
有人知道Windows SDK怎么用资源文件创建窗口得吗?

我也是新手,
你说的Windows SDK怎么创建窗口不知和
用SDK先注册窗口类,再创建窗口,显示窗口,更新窗口是否为同一事物
2006-12-28 22:51
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
4
//最简单的C代码(先用资源编辑器生成一个对话框资源,将对话框资源ID设为100,将下面的代码拷入,编译运行成功后就可以看到一个窗口)。
#include <windows.h>

BOOL WINAPI DlgProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInst,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
  DialogBoxParam(hInstance,100,0,(DLGPROC)&DlgProc,0);
  return 0;
}

BOOL WINAPI DlgProc(HWND hWnd,
                    UINT uMsg,
                    WPARAM wParam,
                    LPARAM lParam)
{
  switch(uMsg)
  {
    case WM_CLOSE:
      EndDialog(hWnd,FALSE);
      break;
    default:
      return FALSE;
  }
  return TRUE;
}
2006-12-28 23:25
0
雪    币: 4560
活跃值: (1037)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
谢谢版主回答偶,偶是要个窗口啦,不是对话框
2006-12-28 23:33
0
雪    币: 4560
活跃值: (1037)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
难道象VB、C++Builder、DELPHI都是对话框,没有窗口吗?
2006-12-28 23:35
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
7
资源文件生成的也可以说是窗口,系统内部也是使用CreateWindowEx函数生成的窗口。只是注册类和创建过程由系统代替了而已。如果你想自己生成窗口,那就只有这样写了。
#include <windows.h>

LRESULT CALLBACK WndProc      (HWND, UINT, WPARAM, LPARAM) ;

HINSTANCE hInstance;

int WINAPI WinMain (HINSTANCE hInst,
                    HINSTANCE hPrevInst,
                    LPSTR lpCmdLine,
                    int nCmdShow)
{
  static char *szAppName = "C++ Class";
  MSG msg ;
  HWND hWnd ;
  WNDCLASSEX wndclass ;
  hInstance = hInst;
  wndclass.cbSize = sizeof (wndclass) ;
  wndclass.style = CS_HREDRAW | CS_VREDRAW ;
  wndclass.lpfnWndProc = WndProc ;
  wndclass.cbClsExtra = 0 ;
  wndclass.cbWndExtra = 0 ;
  wndclass.hInstance = hInstance ;
  wndclass.hIcon = LoadIcon (NULL,100) ;
  wndclass.hCursor = LoadCursor(NULL, IDC_ARROW) ;
  wndclass.hbrBackground = COLOR_BTNFACE+1 ;
  wndclass.lpszMenuName = 0;
  wndclass.lpszClassName = szAppName ;
  wndclass.hIconSm = wndclass.hIcon ;
  RegisterClassEx(&wndclass) ;
  hWnd = CreateWindow(szAppName,
                      "MyWindow",
                      WS_OVERLAPPEDWINDOW,
                      200, 200,400, 200,
                      NULL, NULL, hInstance, NULL);
  ShowWindow (hWnd,SW_SHOWNORMAL) ;
  UpdateWindow (hWnd) ;
  while (GetMessage (&msg, NULL, 0, 0))
  {
    TranslateMessage (&msg) ;
    DispatchMessage (&msg) ;
  }
  return msg.wParam ;
}

LRESULT CALLBACK WndProc(HWND hWnd,
                         UINT uMsg,
                         WPARAM wParam,
                         LPARAM lParam)
{
  switch (uMsg)
  {
    case WM_DESTROY :
    PostQuitMessage(0) ;
    return 0 ;
  }
  return DefWindowProc(hWnd, uMsg, wParam, lParam) ;
}
2006-12-28 23:56
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
其实对话框和窗口没什么区别,相互的功能都能实现.
比如记事本那样的界面即使是对话框也可以做到.
2006-12-29 09:07
0
雪    币: 4560
活跃值: (1037)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
终于搞明白了,谢谢大家得帮助
2006-12-29 11:15
0
雪    币: 116
活跃值: (220)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
10
基础知识在书上都有的。。。
2006-12-29 12:05
0
雪    币: 253
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
呵呵..
MSDN上就有了..
2006-12-29 12:26
0
游客
登录 | 注册 方可回帖
返回