在Win32中打印对话框

时间:2014-05-30 15:26:04

标签: c++ winapi

我遇到了这个教程http://www.youtube.com/watch?v=BECw2Ouz4I0

我继续在我的代码中添加了基于该示例的打印对话框。我最终得到三个3error:

PRINTDLG未定义 PD_RETURNDC未定义 PrintDlg未定义

我如何定义这些?

  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);
    // Parse the menu selections:
    switch (wmId)
    {

    case IDM_ABOUT:
        DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
        break;
    case IDM_EXIT:
        DestroyWindow(hWnd);
        break;

    case IDM_PRINT:
        DestroyWindow(hWnd);            
   {
static PRINGDLG pDlg;
static DOCINFO dInfo;

dInfo.cbSize = sizeof (dInfo);
dInfo.lpszDocName = L"Printing!"; 

pDlg.Flags =  PD_RETURNDC;
pDlg.hInstance = (HINSTANCE) GetWindowLong(hWnd, GWL_HINSTANCE);
pDlg.IStructSize = sizeof(pDlg);
pDlg.hwndOwner - hWnd;

PrintDlg(&pDlg);

StartDoc(pDlg.hdc,&dInfo);

StartPage(pDlg.hdc);

TextOut(pDlg.hDC,0,0,L"Hello",6);

EndPage(pDlg.hdc);

EndDoc(pDlg.hdc);

ReleaseDC(hWnd, pDlg.hdc);

   } 

我会在cpp文件,rc或h文件中定义它们吗?

谢谢

   // Win32Lesson1.cpp : Defines the entry point for the application.
   //

  #include "stdafx.h"
  #include "Win32Lesson1.h"
  #include <windows.h>
  #include "Resource.h"

  #define MAX_LOADSTRING 100


  bool gbDrawLine1     = false;
  bool gbDrawEllipse1  = false;
  bool gbDrawRectangle1 = false; 
 bool gbDrawLine2 = false; 
 bool gbDrawRectangle2 = false; 
 bool gbDrawEllipse2  = false;






      // Global Variables:
    HINSTANCE hInst;        // current instance
   TCHAR szTitle[MAX_LOADSTRING];                   // The title bar text
   TCHAR szWindowClass[MAX_LOADSTRING];         // the main window class name

   // Forward declarations of functions included in this code module:
  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: Place code here.
MSG msg;
HACCEL hAccelTable;

// Initialize global strings
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_WIN32LESSON1, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);

// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
    return FALSE;
}

hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32LESSON1));

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

return (int) msg.wParam;
   }



 //
 //  FUNCTION: MyRegisterClass()
 //
//  PURPOSE: Registers the window class.
//
//  COMMENTS:
//
  //    This function and its usage are only necessary if you want this code
 //    to be compatible with Win32 systems prior to the 'RegisterClassEx'
//    function that was added to Windows 95. It is important to call this function
 //    so that the application will get 'well formed' small icons associated
 //    with it.
 //
 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_WIN32LESSON1));
wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_WIN32LESSON1);
wcex.lpszClassName  = szWindowClass;
wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

return RegisterClassEx(&wcex);
}

  //
 //   FUNCTION: InitInstance(HINSTANCE, int)
 //
    //   PURPOSE: Saves instance handle and creates main window
 //
   //   COMMENTS:
  //
   //        In this function, we save the instance handle in a global variable and
  //        create and display the main program window.
   //



   BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  {
  HWND hWnd;


  hInst = hInstance; // Store instance handle in our global variable

  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;
 }


   //
   //  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
     //
   //  PURPOSE:  Processes messages for the main window.
  //
  //  WM_COMMAND    - process the application menu
  //  WM_PAINT  - Paint the main window
  //  WM_DESTROY    - post a quit message and return

0 个答案:

没有答案