简单win32窗体框架创建部分源码(包括工具栏,状态栏)

/**
* user_WNDCLASS.cpp(用户框架窗口文件)
* 窗口类资源文件

* aouther:Gu Mingyao
* time:2009-12-3
* Victor:1.1.001
*/

//系统头文件
#include <windows.h>
#include "Seky_Notepad.h"
#include <commctrl.h>
#include "resource2.h"

BOOL InitApp(HINSTANCE hInst)
{
 WNDCLASS wc;
 wc.style = CS_HREDRAW | CS_VREDRAW;
 wc.lpfnWndProc = WndProc; 
 wc.cbClsExtra = 0;
 wc.cbWndExtra = 0;
 wc.hInstance = hInst;     
 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
 wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 wc.lpszMenuName = "IDR_MENU1";   
 wc.lpszClassName = (LPCSTR)szClassName;
 return (RegisterClass(&wc));
}


BOOL InitInstance(HINSTANCE hInst, int nCmdShow)
{
 

 main_hWnd = CreateWindow(szClassName,
  "Status Bat test",
  G_MAINWINDOW_STYLES|SS_CENTER,
  100,
  100,
  600,
  400,
  NULL,       
  NULL,       
  hInst,       
  NULL);
 if (!main_hWnd)
  return FALSE;
  

  
 //LPRECT rect;
 //::GetWindowRect(hWnd,rect)
 //::SetWindowPos(hWnd,HWND_NOTOPMOST,rect->left,rect->top,rect->right-rect->left,rect->bottom-rect->top,SWP_NOMOVE|SWP_NOSIZE);
 ::SetWindowPos(main_hWnd,HWND_TOPMOST,100,100,600, 400,SWP_NOMOVE|SWP_NOSIZE);


 ShowWindow(main_hWnd, nCmdShow);
 UpdateWindow(main_hWnd);
 return TRUE;
}


LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
 int id;
 char str[256];
 char *str_org = "%02d:%02d:%02d";
 SYSTEMTIME STime;
 static HINSTANCE hInst;
 hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
 static HMENU hMenu;
 HWND hw;
 LPRECT rect;
 hMenu = GetMenu(hWnd);

 switch (msg) {
  case WM_CREATE:
   CreateMyStatus(hWnd, hInst);
   CreateMyToolbar(hWnd, hInst);


   
   ::GetWindowRect(main_hWnd,rect);
   //::SetWindowPos(hWnd,HWND_NOTOPMOST,rect->left,rect->top,rect->right-rect->left,rect->bottom-rect->top,SWP_NOMOVE|SWP_NOSIZE);
   hListWnd = CreateWindow("Edit","sdf",WS_POPUP|WS_DLGFRAME|WS_VISIBLE,rect->left,rect->top,(int)(rect->right-rect->left),(int)(rect->bottom-rect->top),main_hWnd,NULL,hInst,NULL);//LISTBOX
   ShowWindow(hListWnd,true);


   SetTimer(hWnd, ID_MYTIMER, 300, NULL);
   EnableMenuItem(hMenu, 1, MF_GRAYED);
   break;
  case WM_TIMER:
   //::SetWindowText(hListWnd,"123123");
   GetLocalTime(&STime);
   wsprintf(str, str_org, STime.wHour, STime.wMinute, STime.wSecond);
   SendMessage(hStatus, SB_SETTEXT, 255 | 0, (WPARAM)(LPSTR)str);
   break;
  case WM_SIZE:
   SendMessage(hStatus, WM_SIZE, wp, lp);
   break;
  case WM_COMMAND:
   switch (LOWORD(wp)) {
  case 3:
   SendMessage(hWnd, WM_CLOSE, 0L, 0L);
   break;
  case 1:
   ShowWindow(hStatus, SW_SHOW);
   EnableMenuItem(hMenu, 1, MF_GRAYED);
   EnableMenuItem(hMenu, 2, MF_ENABLED);
   break;
  case 2:
   ShowWindow(hStatus, SW_HIDE);
   EnableMenuItem(hMenu, 2, MF_GRAYED);
   EnableMenuItem(hMenu, 1, MF_ENABLED);
   }
   break;
  case WM_CLOSE:
   id = MessageBox(hWnd,
    (LPCSTR)"Do you want to exit?",
    (LPCSTR)"Confirmation",
    MB_YESNO | MB_ICONQUESTION);
   if (id == IDYES) {
    DestroyWindow(hWnd);
   }
   break;
  case WM_DESTROY:
   KillTimer(hWnd, ID_MYTIMER);
   PostQuitMessage(0);
   break;
  default:
   return (DefWindowProc(hWnd, msg, wp, lp));
 }
 return 0L;
}

HWND CreateMyStatus(HWND hWnd, HINSTANCE hInst)
{
 InitCommonControls();
 hStatus = CreateWindowEx(
  0,     
  STATUSCLASSNAME, 
  NULL,   
  WS_CHILD | SBARS_SIZEGRIP | CCS_BOTTOM | WS_VISIBLE,
  0, 
  0, 
  0,   
  0,   
  hWnd,   
  (HMENU)ID_STATUS, 
  hInst, 
  NULL);
 SendMessage(hStatus, SB_SIMPLE, TRUE, 0L);
 return hStatus;
}

HWND CreateMyToolbar(HWND hWnd, HINSTANCE hInst)
{
 HWND hwndToolBar=CreateToolbarEx(hWnd,             //工具栏所属窗口句柄
  WS_CHILD |WS_BORDER |TBSTYLE_FLAT | WS_VISIBLE | CCS_TOP,  //工具栏风格
  888,//ID_TOOLBAR                                            //预定义的工具栏ID号,需要在resource.h中用#define定义
  14,                                                    //图片数
  HINST_COMMCTRL,                                        //使用系统定义图标,用自定义图片时设为NULL
  IDB_STD_LARGE_COLOR,                                  //使用系统定义的小图标,自定义时应为图片句柄
  tbButtonsCreate,                                      //指定一个TBBUTTON结构体
  19,                                                    //按钮数,包括分割线
  16,16,16,16,                                          //各图标大小
  sizeof(TBBUTTON));         //size of TBBUTTON

 return hwndToolBar;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值