,后一个指定显示方式.后一个参 数值得说一下,比如泥用 SW_SHOWMAXMIZED 方式去加栽一个无最大化按 钮的 程序,呵呵就是 Neterm,calc 等等,就不会出现正常的 窗体,但是已经被 加到任务列表里了。ShellExecute 较 WinExex 灵活一点,可以指定
工作目录,下 面的 Example 就是直接打开 c:\temp\1.txt,而不用加栽与 txt 文件关联的应用程 来显示 Readme or Faq,偶猜就是这么 序,很多安装程序完成后都会打开一个窗口, 作的啦. ShellExecute(NULL,NULL,_T("1.txt"),NULL,_T("c:\\temp"),SW_SHOWMAXMIZ ED); CreateProcess 最复杂,一共有十个参数,不过大部分都可以用 NULL 代替,它可 以指定进程的安全属性,继承信息,类的优先级等等.来看个很简单的 Example: STARTUPINFO stinfo; //启动窗口的信息 PROCESSINFO procinfo; //进程的信息 CreateProcess(NULL,_T("notepad.exe"),NULL,NULL.FALSE, NORMAL_PRIORITY_ CLASS,NULL,NULL, &;stinfo,&;procinfo);
6. 确定应用程序的 路径
前些天好象有人问过这个问题. Use GetModuleFileName 获得应用程序的路径,然后去掉可执行文件名。 Example: TCHAR exeFullPath[MAX_PATH]; // MAX_PATH 在 API 中定义了吧, 好象是 128 GetModuleFileName(NULL,exeFullPath,MAX_PATH)
7. 获得各种目录信息
Windows 目录: 使用 GetWindowsDirectory() 函数 Windows 下的 system 目录: 使用 GetSystemDirectory ()函数 temp 目录: 使用 GetTempPath() 函数 当前目录: 使用 GetCurrentDirectory()函数 请注意前两个函数的第一个参数为目录变量名,后一个为缓冲区; 后两个相反. 这几个函数具体需 要带什么样的参数请查看 MSDN.
8. 如何自定义消息
也有人问过的,其实不难。 (1) 手工定义消息,可以这么写 #define WM_MY_MESSAGE(WM_USER+100), MS 推荐的至少是 WM_USER+100; (2)写消息处理函数,用 WPARAM,LPARAM 返回 LRESULT. LRESULT CMainFrame::OnMyMessage(WPARAM wparam,LPARAM lParam) { //加入你的处理
函数
} (3) 在类的 AFX_MSG 处进行声明,也就是常说的"宏映射"
9. 如何改变窗口的图标 如何改变窗口的图标?
向窗口发送 WM_SECTION 消息。 Example: HICON hIcon=AfxGetApp() ->LoadIcon(IDI_ICON); ASSERT(hIcon); AfxGetMainWnd() ->SendMessage(WM_SECTION,TRUE,(LPARAM) hIcon);
10. 如何改变窗口的缺省风格 如何改变窗口的缺省风格?
重栽 CWnd:: PreCreateWindow 并修改 CREATESTRUCT 结构来指定窗口风格 和其他 创建信息. Example: 去掉"Max"按钮并且设置窗口的原始位置和大小 BOOL CMainFrame:: PreCreateWindow (CREATESTRUCT &;cs) { cs.style &;=~WS_MAXINIZEMOX; cs.x=cs.y=0; cs.cx=GetSystemMetrics(SM_CXSCREEN/2); cs.cy=GetSystemMetrics(SM_CYSCREEN/2); return CMDIFramewnd ::PreCreateWindow(cs); }
11. 如何将窗口居中显示 如何将窗口居中显示?
直接调用函数 CWnd:: CenterWindows()可以把指定窗口居中显示 Example(1): CenterWindow( ); Example(2): CenterWindow(CWnd:: GetDesktopWindow( )); 示 Example(3): AfxGetMainWnd( ) -> Center Window( ); 显示 //在应用程序主框架中居中 // 在屏幕中居中显 //在父窗口中居中显示
12. 如何让窗口和 MDI 窗口一启动就最大化和最小 化?
先说窗口。 在 InitStance 函数中设定 m_nCmdShow 的 取值. m_nCmdShow=SW_SHOWMAXMIZED ; //最大化 m_nCmdShow=SW_SHOWMINMIZED ; //最小化 m_nCmdShow=SW_SHOWNORMAL ; //正常方式 MDI 窗口: 如果是创建新的应用程序,可以用 MFC AppWizard 的 Advanced 按钮并 在, MDI 子窗口风 格组中检测最大化或最小化; 还可以重载 MDI Window 的 PreCreateWindow 函 数,设置 WS_MAXMIZE or WS_MINMIZE; 如果从 CMDIChildWnd 派生,调用 OnInitialUpdate 函数中的 CWnd::ShowWindow 来指定 MDI Child Window 的风格