Wince 开发问题汇总(更新中勿拍,有错误请指正谢谢)
来源:互联网 发布:it培训机构 知乎 编辑:程序博客网 时间:2024/05/18 17:01
1、对话框全屏显示
int iFullWidth = GetSystemMetrics(SM_CXSCREEN);
int iFullHeight = GetSystemMetrics(SM_CYSCREEN);
::SetWindowPos(this->m_hWnd, HWND_TOPMOST, 0, 0, iFullWidth, iFullHeight,SWP_NOOWNERZORDER|SWP_SHOWWINDOW|SWP_HIDEWINDOW);
2、按钮贴图
按钮属性 Owner Draw 设为true
//*.h
CBitmapButton m_btn;
//*.cpp
m_btn.AutoLoad(IDC_BUTTON1,this);
m_btn.LoadBitmaps(IDB_BITMAP1);
http://blog.csdn.net/zhangyulin54321/article/details/8154582
更多
http://blog.csdn.net/cwm_meng_home/article/details/21235103
http://blog.csdn.net/cwm_meng_home/article/details/21235103
3、如何贴图作为背景图,不覆盖掉文字
以上方法可以实现按钮控件得贴图,但是要自己绘制按钮,这样是实现贴图了,但是按钮上的文字就没有了。今天找到了一种,贴图只作为背景图的方法,不会覆盖掉按钮控件上的文字。其实在才是我最初想要的效果。
重写WM_CTLCOLOR消息的响应函数 OnCtlcolor();
HBRUSH CxxxxxxxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); RECT rect; CDC memDC;//定义一个设备上下文 CBitmap bmp;//定义位图对象 switch(nCtlColor) { case CTLCOLOR_BTN: GetDlgItem(pWnd->GetDlgCtrlID())->GetWindowRect(&rect); memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文 bmp.LoadBitmap(IDB_BITMAP1);//加载位图 memDC.SelectObject(&bmp);//选中位图对象 memDC.SetBkColor(RGB(255,255,255)); pDC->BitBlt(0,0,rect.right,rect.bottom,&memDC,1,1,SRCCOPY);//绘制位图 pDC->SetBkColor(RGB(255,255,255)); return (HBRUSH)GetStockObject(HOLLOW_BRUSH); break; default: break; }}
此方法不但能够为按钮控件重绘背景,其他很多控件都可通过此方法实现背景的重绘,效果还不错。
百科里面这样介绍nCtlColor的:
OnCtlColor是控件窗口函数,其画刷句柄效果提示信息函数( afx_msg HBRUSH OnCtlColor )构成:返回值,OnCtlColor必须返回一个刷子句柄,该刷子将被用于画出控件的背景。参数,pDC 包含了子窗口的显示设备环境的指针。可能是临时的。PWnd 包含了要求颜色的控件的指针。可能是临时的。 NCtlColor 包含了下列值,指定了控件的类型: CTLCOLOR_BTN 按钮控件 · CTLCOLOR_DLG 对话框 · CTLCOLOR_EDIT 编辑控件 · CTLCOLOR_LISTBOX 列表框控件 · CTLCOLOR_MSGBOX消息框 · CTLCOLOR_SCROLLBAR 滚动条控件 · CTLCOLOR_STATIC静态控件
4、ListControl 背景色问题
SetBkColor 设置整个列表的背景色
SetTextBkColor 设置列表中文字的背景色;
5、问题:希望当按下键盘上的上下左右按键可是实现列表框中行选中的同时执行其他的操作和控件之间的切换?
思路:只要但按键按下后能判断出是哪个按键按下了就可以解决问题了
尝试一:添加WM_KEYDOWN的响应函数OnKeyDown 尝试通过此消息获取按键按下的信息。
void CProgramDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags){switch(nChar) { case VK_UP://38 MessageBox(L"上"); break;case VK_DOWN: MessageBox(L"下"); break; case VK_LEFT: MessageBox(L"左"); break; case VK_RIGHT: MessageBox(L"右"); break; }CDialog::OnKeyDown(nChar, nRepCnt, nFlags);}
结果测试发现,该函数并没有响应,难道是按钮触发不了消息吗?消息没有发出吗?还是没有接收到呢?好吧,应该是按键按下后发出的消息被系统处理了,这就是为什么我们看到列表控件中选中行在变,我们自己定义但却没有响应的原因了吧!
尝试二:拦截消息,
BOOL CProgramDlg::PreTranslateMessage(MSG* pMsg){CString s;if (pMsg->message == WM_KEYDOWN){switch(pMsg->wParam){case VK_UP://38 MessageBox(L"上"); break;case VK_DOWN: MessageBox(L"下"); break; case VK_LEFT: MessageBox(L"左"); break; case VK_RIGHT: MessageBox(L"右"); break; } } return CDialog::PreTranslateMessage(pMsg);}
在系统响应这个消息之前我们先拿过来判断下,结果发现消息里面藏着按键的信息,找出来解析下搞定。
6、还是贴图。
现在有一张背景图片想贴到主对话框上,并在上面进行界面设置,防止各种控件,但放置Static控件时 Static的背景会覆盖掉刚贴上去的背景图片,这样想是在打补丁很是难看,那怎么办呢?!我只是想在主对话框上添加一些文字,背景仍然使用主对话框的响应位置的背景。这下问题来了!好吧试了很多种方法,没想到只需要稍作修改就可以喽!
现在有一张背景图片想贴到主对话框上,并在上面进行界面设置,防止各种控件,但放置Static控件时 Static的背景会覆盖掉刚贴上去的背景图片,这样想是在打补丁很是难看,那怎么办呢?!我只是想在主对话框上添加一些文字,背景仍然使用主对话框的响应位置的背景。这下问题来了!好吧试了很多种方法,没想到只需要稍作修改就可以喽!
HBRUSH CXXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);RECT rect;CDC memDC;//定义一个设备上下文CBitmap bmp;//定义位图对象if(nCtlColor == CTLCOLOR_STATIC){GetDlgItem(pWnd->GetDlgCtrlID())->GetWindowRect(&rect);memDC.CreateCompatibleDC(pDC);//创建兼容的设备上下文bmp.LoadBitmap(IDB_BITMAP3);//加载位图memDC.SelectObject(&bmp);//选中位图对象pDC->BitBlt(-rect.left,-rect.top,rect.right,rect.bottom,&memDC,1,1,SRCCOPY);//绘制位图pDC->SetBkMode(TRANSPARENT);return (HBRUSH)GetStockObject(HOLLOW_BRUSH); }return hbr;}
void CXXXXDlg::OnPaint(){RECT rect;CDC memDC;//定义一个设备上下文CBitmap bmp;//定义位图对象CPaintDC dc(this); // device context for paintingthis->GetWindowRect(&rect);memDC.CreateCompatibleDC(&dc);//创建兼容的设备上下文bmp.LoadBitmap(IDB_BITMAP3);//加载位图memDC.SelectObject(&bmp);//选中位图对象memDC.SetBkColor(RGB(255,255,255));dc.BitBlt(0,0,rect.right,rect.bottom,&memDC,1,1,SRCCOPY);//绘制位图}
static 控件的透镜效果 就这样完成了!
7、mfc开发wince串口通信问题
http://blog.csdn.net/pipi87/article/details/5860991
需要注意的是 用CreateFile打开串口的时候 串口名字为“COM1:”,要特别注意COM1后面的冒号!!!!否则打不开的!
更多 http://blog.csdn.net/cjdxzy2010/article/details/6120391
0 0
- Wince 开发问题汇总(更新中勿拍,有错误请指正谢谢)
- jenkins+tomcat配置(初学,有错误,还请指正)
- 二叉排序树(有问题还请指正!)
- eclipse jAVA build path 有不对的地方请指正,谢谢· ·
- 浅谈一下weex,如有错误,请阿里大神指正
- struts2执行流程(个人理解,有错误请批评指正)
- 前端笔试题--不断更新(答案来源网络,若有问题请指正)
- C语言实现trim函数,若有问题,请指正
- IOS开发错误问题汇总(更新中)
- 网站在线人数统计(貌似不能写入文件,有错请指正,谢谢!)
- 请教 我没学过VB,请问我这样声明可以吗?有什么语法错误?请指正 谢谢了!!!
- 微信小程序细节坑(自己刚开始做小程序中遇到的一些细节,如有错误,还请大佬指正,看心情更新。。。。)
- C++实现split,若有问题,请指正。(有用C实现过的,欢迎贴代码)
- 简述 对UITableView的封装 有改进或者错误的地方请各位大大指正
- 面试小结(欢迎指正,谢谢)
- qt tcp/ip协议简单的用户图书管理系统(若有错误,请提醒,谢谢)
- 初学JSP,一个小问题,请多关照!!!!谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!
- 典型J2EE系统架构图,该图为了自己使用而创建,如有什么不当的地方还请高手们指正,谢谢!
- Linux下创建eclipse的快捷方式
- 突破虚拟化极限,自由畅翔云端
- 获取PC硬件信息方法一:利用Java Applet
- 将客户端传来的东西写入file
- [2014-3-14]JAVA笔记_多态(Polymophism)、instanceof关键字
- Wince 开发问题汇总(更新中勿拍,有错误请指正谢谢)
- 2014-3-14日之任务
- (转)Java身份证工具类
- Ranorex 5 发布,支持SAP、Oracle Forms、MS Dynamics等
- ORACLE常用日期格式化方式
- fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 一步步学习SPD2010--第三章节--处理列表和库(13)----使用网站列
- 经典智力题:猜牌问题
- 搜索框js样式(通用型)