« Delphi下获得TDBGRID的多选行innerHTML的使用 »

win32下使用CHOOSECOLOR,OPENFILENAME,CHOOSEFONT

//Test.cpp

#include<windows.h>
#include"Test.h"
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

static char lpszClassName[]="Test";
static char lpszTitle[]="Hello World!";
HWND hWndMain;
HINSTANCE hMainHInst;
OPENFILENAME ofn;
CHOOSECOLOR chc;
CHOOSEFONT chf;

/*
 *init WNDCLASS and regedit it
 */
BOOL InitWindowsClass(HINSTANCE hInstance)
{
 WNDCLASS wndclass;
    wndclass.style=0;
    wndclass.lpfnWndProc=WndProc;
    wndclass.cbClsExtra=0;
    wndclass.cbWndExtra=0;
    wndclass.hInstance=hInstance;
    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName=NULL;
    wndclass.lpszClassName=lpszClassName;
    if(! RegisterClass(&wndclass))
    {
        MessageBeep(0);
        return FALSE;
    }
 return TRUE;
}
/*
 *init windows and show it
 */
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
 HWND hwnd;
 HMENU hMenu;
 hMenu = LoadMenu(hInstance,"MENU");
 InitWindowsClass(hInstance);
    hwnd=CreateWindow(lpszClassName,
        lpszTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,
        CW_USEDEFAULT,CW_USEDEFAULT,
        NULL,
        hMenu,
        hInstance,
        NULL);
 if(!hwnd)
 {
  return FALSE;
 }
 hWndMain = hwnd;
    ShowWindow(hwnd,nCmdShow);
    UpdateWindow(hwnd);
 return TRUE;
}

/*
 * the interface of the programm
 */
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInst,
                   LPSTR     lpszCmdLine,
                   int       nCmdShow)

    MSG Msg;
 HACCEL hAccel;
 hMainHInst = hInstance;

 if(!InitWindowsClass(hInstance))
 {
  return FALSE;
 }
 if(!InitWindows(hInstance,nCmdShow))
 {
  return FALSE;
 }
 
    hAccel = LoadAccelerators(hInstance,"Menu");

    while(GetMessage(&Msg,NULL,0,0))
    {
  if(!TranslateAccelerator(hWndMain,hAccel,&Msg))
  {
   TranslateMessage(&Msg);
   DispatchMessage(&Msg);
  }
    }
    return (int)Msg.wParam;
}

/*
 *deal proc of the pragramm
 */
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM
                         IParam)
{
 static char lpstrFileName[] = "";
 static COLORREF clref[16] = {0x00ff0000};
    switch(message)
    {
 case WM_CREATE:
  //OPENFILENAME结构成员
  ofn.lStructSize = sizeof(OPENFILENAME);
  ofn.hwndOwner = hwnd;
  ofn.hInstance = hMainHInst;
  ofn.lpstrFilter = "Text File(*.TXT)\0*.txt\0All File(*.*)\0*.*\0";
  ofn.lpstrCustomFilter = NULL;
  ofn.nMaxCustFilter = 0;
  ofn.nFilterIndex = 1;
  ofn.lpstrFile = NULL;
  ofn.nMaxFile = 0;
  ofn.lpstrFileTitle=NULL;
  ofn.nMaxFileTitle = 0;
  ofn.lpstrInitialDir = NULL;
  ofn.lpstrTitle = NULL;
  ofn.Flags = 0;
  ofn.nFileOffset = 0;
  ofn.nFileExtension = 0;
  ofn.lpstrDefExt = NULL;
  ofn.lCustData = 0;
  ofn.lpfnHook = NULL;
  ofn.lpTemplateName = NULL;
  //选择颜色通用对话框
  chc.lStructSize = sizeof(CHOOSECOLOR);
  chc.hwndOwner = hwnd;
  chc.rgbResult = 0;
  chc.lpCustColors = clref;
  chc.Flags = 0;
  chc.lCustData = 0;
  chc.lpfnHook = NULL;
  chc.lpTemplateName = NULL;
  //选择字体通用对话框
  chf.lStructSize = sizeof(CHOOSEFONT);
  chf.hwndOwner = hwnd;
  chf.Flags = CF_BOTH|CF_TTONLY|CF_EFFECTS;
  break;
 case WM_COMMAND:    //deal the menu command
  switch(LOWORD(wParam))
  {
  case IDM_OPEN:
   ofn.Flags = OFN_FILEMUSTEXIST|OFN_HIDEREADONLY|OFN_PATHMUSTEXIST;
   ofn.lpstrTitle = "打开";
   GetOpenFileName(&ofn);
   break;
  case IDM_SAVEAS:
   ofn.Flags = OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT;
   ofn.lpstrTitle="另存为...";
   GetOpenFileName(&ofn);
   break;
  case IDM_FONT:
   ChooseFont(&chf);
   break;
  case IDM_COLOR:
   ChooseColor(&chc);
   break;
  case IDM_ABOUT:
   MessageBox(hwnd,"通用对话框程序示例","关于",MB_OK);
   break;
  case IDM_EXIT:
   SendMessage(hwnd,WM_DESTROY,0,0);
   break;
  }
  break;
    case WM_DESTROY:
        PostQuitMessage(0);
    default:
        return DefWindowProc(hwnd,message,wParam,IParam);
    }
    return(0);
}
 

//Test.h

#define IDM_OPEN  11
#define IDM_SAVEAS  12
#define IDM_EXIT  15
#define IDM_FONT  16
#define IDM_COLOR  17
#define IDM_ABOUT  19

//Test.rc

#include "Test.h"
MENU MENU DISCARDABLE
BEGIN
 POPUP "文件(&F)"
 BEGIN
  MENUITEM "打开(&O)\tCtrl+O",  IDM_OPEN
  MENUITEM "另存为(&S)\tCtrl+S",  IDM_SAVEAS
  MENUITEM SEPARATOR
  MENUITEM "退出\tCtrl+X",   IDM_EXIT
 END

 POPUP "编辑(&E)"
 BEGIN
  MENUITEM "字体(&F)",    IDM_FONT
  MENUITEM "颜色(&C)",    IDM_COLOR
 END

 POPUP "帮助(&H)"
 BEGIN
  MENUITEM "关于(&A)",    IDM_ABOUT
 END
END

MENU ACCELERATORS MOVEABLE PURE
BEGIN
 "^O", IDM_OPEN, ASCII
 "^S", IDM_SAVEAS, ASCII
 "^X", IDM_EXIT, ASCII
END

 

转载:http://blog.csdn.net/lyz84331/archive/2008/01/02/2008564.aspx

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。