⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notepod.c

📁 C#一个实例源代码
💻 C
字号:
/*---------------------------------------
    NotePod.c
  ---------------------------------------*/

#include <windows.h>
#include <commdlg.h>
#include "resource.h"
#define  ID_EDIT 1
#define  UNTITLED TEXT("untitled")
#define EDITID 1


///CALLBACK
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
//////FILE
void DoCaption(HWND , TCHAR *);

void PodFileInitialize (HWND) ;
BOOL PodFileOpenDlg    (HWND, PTSTR, PTSTR) ;
BOOL PodFileSaveDlg    (HWND, PTSTR, PTSTR) ;
BOOL PodFileRead       (HWND, PTSTR) ;
BOOL PodFileWrite      (HWND, PTSTR) ;
//Globle
TCHAR szAppName[] = TEXT ("NotePod") ;
HINSTANCE hInst;
static HWND hDlgModeless;
//////////////////////////////////////////
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{

     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
	 HACCEL       hAccel;
	 
     hInst=hInstance;

     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     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  = szAppName ;
     wndclass.lpszClassName = szAppName ;
     
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("Program requires Windows NT!"), 
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
     
     hwnd = CreateWindow (szAppName, TEXT ("NotePod"),
                          WS_OVERLAPPEDWINDOW,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          CW_USEDEFAULT, CW_USEDEFAULT,
                          NULL, NULL, hInstance, NULL) ;
     
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
	 hAccel=LoadAccelerators(hInstance,szAppName);
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
		 if(hDlgModeless==NULL||!IsDialogMessage(hDlgModeless,&msg))
		 {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
		 }
     }
     return msg.wParam ;

}

//////////////////////////////////////////////

short AskAboutSave(HWND hwnd,TCHAR *szTitleName)
{
	TCHAR szBuffer[64+MAX_PATH];
	int iReturn;

	wsprintf(szBuffer,TEXT("Save current changes in %s?"),szTitleName[0]?szTitleName:UNTITLED);
    iReturn=MessageBox(hwnd,szBuffer,szAppName,MB_YESNOCANCEL|MB_ICONQUESTION);
     
	if(iReturn==IDYES)
		if(!SendMessage(hwnd,WM_COMMAND,IDM_FILE_SAVE,0))
			iReturn=IDCANCEL;

	return iReturn;
}


///////////////////////////////////////////////
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	 static BOOL   bNeedSave=0;
     static HWND   hwndEdit;
     static TCHAR  szTitleName[MAX_PATH],szFileName[MAX_PATH];
	 static int    iOffset;


     switch (message)
     {
	 case WM_CREATE:
		 hwndEdit=CreateWindow(TEXT("edit"),NULL,WS_CHILD|WS_VISIBLE|
			 WS_HSCROLL|WS_VSCROLL|WS_BORDER|ES_LEFT|ES_MULTILINE|
			 ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_NOHIDESEL,
			 0,0,0,0,hwnd,(HMENU)ID_EDIT,hInst,NULL);
		 SendMessage(hwndEdit,EM_LIMITTEXT,32000,0L);
		 PodFileInitialize(hwnd);

		 DoCaption(hwnd,szTitleName);

		 return 0;

	 case WM_SETFOCUS:
		 SetFocus(hwndEdit);
		 return 0;

     case WM_SIZE:
		 MoveWindow(hwndEdit,0,0,LOWORD(lParam),HIWORD(lParam),TRUE);
         return 0 ;

	 case WM_COMMAND:
		 if(lParam&&LOWORD(wParam)==EDITID)
		 {
			 switch(HIWORD(wParam))
			 {
			 case EN_UPDATE: 
				 bNeedSave=1;
				 return 0;
			 case EN_ERRSPACE:
			 case EN_MAXTEXT:
				 MessageBox(hwnd,TEXT("Edit control out of space."),
					             szAppName,MB_OK|MB_ICONSTOP);
				 return 0;
			 }
			 break;
		 }
		 switch(LOWORD(wParam))
		 {
		 case IDM_FILE_NEW:
			 if(bNeedSave&&IDCANCEL==AskAboutSave(hwnd,szTitleName))
				 return 0;
			 SetWindowText(hwndEdit,TEXT("\0"));
			 szFileName[0]='\0';
			 szTitleName[0]='\0';
			 DoCaption(hwnd,szTitleName);
			 bNeedSave=0;

			 return 0;

		 case IDM_FILE_OPEN:
			 if(bNeedSave&&IDCANCEL==AskAboutSave(hwnd,szTitleName))
			 return 0;
			 if(PodFileOpenDlg(hwnd,szFileName,szTitleName))
			 {
				if(!PodFileRead(hwndEdit,szFileName))
				{
					 MessageBox(hwnd,TEXT("Could not read file %s!"),TEXT("Warning!"),0);
					 szFileName[0]='\0';
					 szTitleName[0]='\0';
				 }
			 }
			 DoCaption(hwnd,szTitleName);
			 bNeedSave=0;
			 return 0;

		 case IDM_FILE_SAVE:
			 if(szFileName[0])
			 {
				 if(PodFileWrite(hwndEdit,szFileName))
				 {
					 bNeedSave=FALSE;
					 return 1;
				 }
				 else
				 {
					 MessageBox(hwnd,TEXT("Could not write file"),TEXT("Warning"),0);
					 return 0;
				 }
			 }
		 case IDM_FILE_SAVEAS:
			 if(PodFileSaveDlg(hwnd,szFileName,szTitleName))
			 {
				 DoCaption(hwnd,szTitleName);
				 if(PodFileWrite(hwndEdit,szFileName))
				 {
					 bNeedSave=0;
					 return 1;
				 }
				 else
				 {
					 MessageBox(hwnd,TEXT("Could not write file"),TEXT("Warning"),0);
					 return 0;
				 }
			 }
			 return 0;

		 }
		 break;
        
    	 case WM_CLOSE:
		 if(!bNeedSave||IDCANCEL!=AskAboutSave(hwnd,szTitleName))
			 DestroyWindow(hwnd);
		 return 0;

	 case WM_QUERYENDSESSION:
		 if(!bNeedSave||IDCANCEL!=AskAboutSave(hwnd,szTitleName))
			 return 1;
		 return 0;
          
     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
	 default:

		 break;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}


void DoCaption(HWND hwnd, TCHAR *szTitleName)
{
	TCHAR szCaption[64+MAX_PATH];
	wsprintf(szCaption,TEXT("%s-%s"),szAppName,szTitleName[0]?szTitleName:UNTITLED);
		SetWindowText(hwnd,szCaption);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -