在MFC中使用ON_COMMAND_EX_RANGE宏

问题:
有时候我们希望用一个函数处理一系列的菜单命令

分析:
在处理菜单命令的函数中必须能知道菜单的ID;
以前用过ON_COMMANDRANGE宏;
在afxmsg
.h中发现有个ON_COMMAND_EX宏;

解决:

BEGIN_MESSAGE_MAP(CClassName, CBaseClass)
   ...
ON_COMMAND_EX_RANGE(ID_MENUITEM_FIRST,ID_MENUITEM_FIRST, OnMenuItemClicked)
...
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

因为

#define ON_COMMAND_EX_RANGE(id, idLast, memberFxn) 
{ WM_COMMAND, CN_COMMAND, (WORD)id, (WORD)idLast, AfxSig_bw, 
   (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT))&memberFxn },

而且

enum AfxSig{
   ...
    AfxSig_bw = AfxSig_bb,       // BOOL (UINT)
   ...
}

所以

BOOL CClassName::OnMiWlToSubDesk(UINT nID) 
{
   int nMenuIndex = nID - ID_MENUITEM_FIRST;
   return TRUE;
}

VC中响应未定义的消息

问题:
在MFC程序中需要响应显示器分辨率变化

分析:
如果分辨率变化会产生消息并发送给所有程序,那么只要响应该消息就可以了

解决:
通过在winuser.h中搜索DISPLAY找到

#define WM_DISPLAYCHANGE                 0x007E

由于VC的ClassWizard无法自动生成响应处理该消息的成员函数,
所以要手工增加消息映射

在afxmsg_.h中找到

#define ON_MESSAGE(message, memberFxn) 
{ message, 0, 0, 0, AfxSig_lwl, 
   (AFX_PMSG)(AFX_PMSGW) 
   (static_cast< LRESULT (AFX_MSG_CALL CWnd::*)(WPARAM, LPARAM) > 
   (memberFxn)) },

所以可以在相应的类中增加消息映射和函数:

函数:

// Generated message map functions
//{{AFX_MSG(CNuTsWMDlg)
virtual BOOL OnInitDialog();
...
afx_msg void OnDislayChanged(WPARAM wParam,LPARAM lParam);
...
//}}AFX_MSG
DECLARE_MESSAGE_MAP()

消息映射:
“c++
BEGIN_MESSAGE_MAP(CNuTsWMDlg, CDialog)
//{{AFX_MSG_MAP(CNuTsWMDlg)

ON_MESSAGE(WM_DISPLAYCHANGE,OnDislayChanged)

//}}AFX_MSG_MAP
END_MESSAGE_MAP()
“`

Configuring Apache2+PHP5+MySQL5

1) Install apache_2.0.59-win32-x86-no_ssl.msi ; php-5.2.0-Win32.zip ; mysql-essential-5.0.21-win32.msi

2) bakup apache2\conf\httpd.conf

3) edit httpd.conf,add following lines:

LoadModule php5_module “D:/program files/php5/php5apache2.dll”
AddType application/x-httpd-php .php
AddDefaultCharset GB2312

4) modify:

DocumentRoot “D:/Program Files/Apache Group/Apache2/htdocs” to
DocumentRoot “E:/My Documents/php projects”

5) add:

<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>

6) copy php5/php.ini to %system%\php.ini

7) decomment:

extension=php_mysql.dll

extension=php_gd2.dll

8) modify:

extension_dir = “./” to

extension_dir = “c:/php5/”  ;where your extension files reside


推荐
One Click Apache+MySQL+PHP Installer
http://wamp.sourceforge.net/

Posts navigation

1 2 3 4 5 6 7
Scroll to top