2011-10-10program

2011-10-10program
2011年10月10日
  1.使用ModifyStyleEx改变了控件风格无效
  答:修改之后,重绘一次,如果还不行的话,再试试看调用SetWindowPos(0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME);
  2.动态设置编辑框的ES_PASSWORD无效
  答:修改之后,需要调用一次SetPasswordChar('*');
  3.如何获取任务栏小图标?
  答:有网友提出,能不能在程序界面上显示当前的托盘图标,这样更直观一些。这一点我也曾想到过,也知道奥秘就在TBBUTTON这个结构体的dwData域里面,可惜这个域的结构在MSDN中没有描述。我也曾试着发送TB_GETIMAGELIST消息获取image list的句柄,然后用CImageList::FromHandle加载到CImageList中,但却都失败了。
  在csdn网友的帮助下,我弄清了dwData的结构,其实dwData有一个这样的机构,我们命名为TRAYDATA:
  struct TRAYDATA
  {
  HWND hwnd;
  UINT uID;
  UINT uCallbackMessage;
  DWORD Reserved[2];
  HICON hIcon; //托盘图标的句柄
  };
  要获取到这个hIcon,其实很简单:
  //分配虚拟内存
  lngAddress = VirtualAllocEx(hProcess, NULL, sizeof(TBBUTTON), MEM_COMMIT, PAGE_READWRITE);
  //将hProcess进程内,地址为lngAddress中的内容(大小为sizeof(TBBUTTON))获取到tb中
  ret = ::ReadProcessMemory(hProcess, LPVOID(long(lngAddress)), &tb, sizeof(TBBUTTON), 0);
  //将hProcess进程内,地址为tb.dwData中的内容(大小为sizeof(TRAYDATA))获取到tray中
  ret = ::ReadProcessMemory(hProcess, LPVOID(tb.dwData), &tray, sizeof(TRAYDATA), 0);
  然后就可以用tray.hIcon索引到这个图标句柄了
  //释放内存代码略
  4.BeginWaitCursor和EndWaitCursor无效
  答:SetCapture();BeginWaitCursor();....EndWaitCursor();ReleaseCapture();
  5.打印源码中文件名和行号常用的宏名是什么?
  答:文件名:__FILE__ 行号:__LINE__
  6.如何具体判断一个字符串中哪个是英文字母
  答:函数isalpha
  7.在注册表中如何得到所有安装了的应用程序程序的信息
  答:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall下面的子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值